Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Do not edit `CONTRIBUTING.md`, `assets/CONTEXT.md`, `assets/AGENTS.md`, or
shims, or cleanup of what earlier versions wrote.
- Starting or spawning quests stops at PR creation. It merges only on a
/quest-merge pick, the user's or the standing one /quest-complete gives a PR
with no user-facing behavior change, and only after repository checks and
with no user-facing behavior change that adds or expands no quests, and only after repository checks and
reviews pass.
- Pull requests land as squash merges.
- Do not comment on repositories outside kixelated/moq-dev without approval.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ scope and after required repository checks and reviews pass. Never block on a
CodeRabbit review; it is optional.
Quest execution stops at PR creation; it merges only on a /quest-merge pick.
`/quest-complete` picks a maintainer's PR that changes no user-facing behavior
without asking.
and adds or expands no quests without asking.

On a PR whose author has write access, the PR body's `## Review` record of a
local `quest review` round satisfies the required review `/quest-merge` describes when it names
Expand Down
20 changes: 11 additions & 9 deletions assets/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,22 +79,24 @@ Run it after creating or updating quests.

## Summaries

End every quest skill with a final summary in sections, such as the PRs and their states, the open decisions with recommendations, and suggested follow-ups, so a user returning to the session first sees what needs them.
End every quest skill with a final summary in sections, such as the PRs and their states, the open decisions with recommendations, and the follow-ups each PR adds, so a user returning to the session first sees what needs them.

## Creation

Quests are created in PRs and reviewed.
Search the tree and git history first before making a new quest.

Split independently completable work into separate quests.
A suggested follow-up becomes a quest only through `/quest-plan`, never as an agent-session task or a GitHub issue.
Suggest a follow-up only when it is worth a quest; drop one you would call optional or worth doing only if it matters.
Give each suggested follow-up a recommendation, to plan it or to drop it with the reason, so whoever plans them never has to ask which to take.
Only `/quest-merge` and `/quest-complete` plan follow-ups, once they queue the PR that suggests them: run `/quest-plan` on each recommended one in turn without offering first, one follow-up per run; its interview lets the user drop it.
`/quest-complete` plans them while its other agents keep running, but after any pick or decision question still waiting to be asked.
Every other skill and background agent leaves its follow-ups in its PR body for them.
Group related quests in an epic; its README holds the work no child owns.

Work found along the way that is worth a quest is a follow-up: add it to the PR that found it, as a new quest placed and sized by the rules here and the repository's, or as an edit to the quest that already owns the work; never as an agent-session task or a GitHub issue.
Drop one you would call optional or worth doing only if it matters.
Answer each of its decisions you can with your recommendation in its Plan, and list each you cannot as a `Maintainer:` decision item under its `Waiting`.
The PR body's `## Follow-ups` section links each one with its open decisions, which neither keep the PR a draft nor stop its pick.
A PR that adds follow-ups lands only on the user's pick: the round that picks it to merge, in any client, also asks which follow-ups to keep and each open decision, in the Questions form.
Before it lands, record each answer in its quest's Plan, removing that `Waiting` item, and remove each dropped follow-up, with `quest rm` for a new quest.
A follow-up for work another repository's quest tree owns stays in `## Follow-ups` for `/quest-plan` there.

A release or pin bump that unblocks work is its own quest.

So is anything waiting on an outside party or a human action (an upstream fix, a customer, a decision).
Expand Down Expand Up @@ -156,7 +158,7 @@ Only a decision left for the maintainer, an outside condition, or unfinished wor
Tools read only whether that heading is present; a draft without it still belongs to its starter.
Drafts handed back before `## Waiting` replaced it use `## Decisions needed`, which counts the same.
A draft suggests `/quest-iterate`; a PR ready for review suggests `/quest-merge`.
Include a summary of the changes made and suggest follow-up quests based on issues encountered; `/quest-merge` plans them.
Include a summary of the changes made and the `## Follow-ups` section Creation describes.
Add a closing keyword for every issue under `Closes`.

## Deletion
Expand Down Expand Up @@ -189,7 +191,7 @@ Stop one with `quest agent stop <worktree>`, and each you started that still run
Open each prompt with the context to answer it without opening the quest or PR: what the work is, the problem it hit, and what each option would change.
Name and explain anything the agent or its PR introduced, such as a new term, file, check, or credential, since the user may not have followed the work.
Then give your recommendation and ask synchronously with a blocking interactive question tool when available and allowed in the current mode.
Recommend in every prompt, a multiple-choice list included: mark each option you recommend, such as which follow-ups to plan, and give a one-line reason for each you would leave out.
Recommend in every prompt, a multiple-choice list included: mark each option you recommend, such as which follow-ups to keep, and give a one-line reason for each you would leave out.
An answer such as "whatever you recommend" picks your recommendations; act on them without asking again.
Do not use asynchronous question tools.

Expand Down
2 changes: 1 addition & 1 deletion assets/CONTEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,4 @@ Review findings fixed in the same PR are not culprits.
When the repository has a `quest/` directory, it plans work as quests: Markdown files there, each completed in one PR.

- Before creating, editing, claiming, or finishing a quest outside a `/quest-*` skill, run `quest guide` and follow it; skills carry the sections they need.
- A follow-up becomes a quest only through `/quest-plan`, never a GitHub issue or an agent-session task. Suggest follow-ups in the PR body, each with a recommendation: plan it, or drop it and why.
- Add follow-ups worth a quest to your PR as `quest guide` describes, never as GitHub issues or agent-session tasks.
8 changes: 4 additions & 4 deletions assets/skills/afk.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ Make no decisions, not even by acting on your own recommendation; skip each one

- Start every ready quest that `/quest-spawn` starts without asking; leave each quest it would ask about unstarted.
- Carry on each action the user already picked, such as a `/quest-merge` pick, until it lands or needs the user again.
- Dispatch the `/quest-iterate` that `/quest-complete` runs without asking, for a PR with no decision for the user. Pick no skip, `/quest-merge`, or `/quest-delete` for a PR the user has not, beyond the standing `/quest-merge` pick `/quest-complete` gives a PR that changes no user-facing behavior. A started agent still runs `/quest-review` itself when its quest finishes with no decisions, as `/quest-start` describes.
- Dispatch the `/quest-iterate` that `/quest-complete` runs without asking, for a PR with no decision for the user. Pick no skip, `/quest-merge`, or `/quest-delete` for a PR the user has not, beyond the standing `/quest-merge` pick `/quest-complete` gives. A started agent still runs `/quest-review` itself when its quest finishes with no decisions beyond its follow-ups', as `/quest-start` describes.
- Dispatch `/quest-review` for a draft whose reviewer outage has cleared, as `/quest-review` describes; it needs no decision. A reset still ahead is no reason to keep running: give its time in the summary.
- Answer no decision an agent reports. Its PR stays a draft whose `## Waiting` section lists the decision with a recommendation.
- Hold `/quest-plan` sessions, stale claims, and suggested follow-ups for the user.
- Answer no decision an agent reports. One on its quest keeps its PR a draft, listed under `## Waiting`; a follow-up's waits for the PR's pick round.
- Hold `/quest-plan` sessions and stale claims for the user.

As merges land, recompute the ready quests and start any that newly qualify.
Finish once every agent has reported, every picked action has landed or needs the user, and no quest remains that starts without asking.

Write the final summary so a new session can act on it without this one's context, letting the user start fresh on their return: link each quest and PR, give each skipped decision with its options and your recommendation, and describe every follow-up the agents suggested fully enough to hand to `/quest-plan`.
Write the final summary so a new session can act on it without this one's context, letting the user start fresh on their return: link each quest and PR, give each skipped decision with its options and your recommendation, and list each PR's follow-ups with their open decisions.
12 changes: 6 additions & 6 deletions assets/skills/complete.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ It fixes the PR, reviews it, and marks it ready; ask about the PR again when it
A PR with open decisions, such as those its `## Waiting` section lists or a significant issue you would solve differently, goes to the user instead: settle its decisions with the grill skill's rounds, then dispatch `/quest-iterate` with the answers in its brief.

A PR whose author has write access and that changes no user-facing behavior carries a standing `/quest-merge` pick, unless the repository's `CONTRIBUTING.md` opts out: run `/quest-merge` on it without asking, and name it as auto-picked in your summary.
That covers changes only to quests, tests, benchmarks, CI, internal docs or comments, or code whose behavior stays the same, such as a refactor.
A change to what users or other repositories get, such as CLI behavior or output, shipped skills or rules, user-facing docs, dependencies, or release artifacts, needs the user's pick.
That covers changes only to tests, benchmarks, CI, internal docs or comments, or code whose behavior stays the same, such as a refactor.
A change to what users or other repositories get, such as CLI behavior or output, shipped skills or rules, user-facing docs, dependencies, or release artifacts, needs the user's pick, as does adding or expanding quests, which would otherwise land unseen and get implemented.
Judge from the diff, not the title or body, and ask when unsure.
Judge each head again before every `/quest-merge` run on it, since `/quest-iterate` or a later push can add such a change: the standing pick ends at the first head that does not qualify, and the PR needs the user's pick from then on.
It also ends once a person takes the PR out of the queue.
Expand All @@ -36,8 +36,9 @@ A PR you would skip or delete rather than fix, such as one superseded by another
Leave a PR whose required checks or automated reviews are still running for a later refresh once they finish: it is not a skip.

Include a brief summary of each PR, naming its open decisions without answering them: the question picks only the action, and the grill skill settles the decisions.
Its follow-ups are the exception: ask which to keep and their open decisions with its pick, and put the answers in the brief of the `/quest-iterate` the pick dispatches.
Merge a PR only on the user's pick in this session or the standing pick above, and skip or delete one only on the user's pick, including PRs found on a later refresh.
A blanket answer the user gives on their own, such as "accept all" or "use your recommendations", picks your recommended action for every PR in scope, `/quest-merge` included; it settles none of their decisions.
A blanket answer the user gives on their own, such as "accept all" or "use your recommendations", picks your recommended action for every PR in scope, `/quest-merge` included; it settles none of their decisions beyond the follow-ups' asked with the pick.
A skip or hold stands until the user lifts it: do not ask about that PR again on a refresh, and state the hold in every sub-agent brief for it.
GitHub auto-merge is that pick: enabling it takes write access, and GitHub disables it when anyone without write access pushes.
Do not ask about a PR with auto-merge enabled; leave it to land.
Expand All @@ -61,8 +62,7 @@ Any other reason, such as a person removing it, is the user's call, so ask about
Keep going until all PRs have been decided, then wait for all spawned sub-agents to finish.
Refresh the open PR list whenever a sub-agent reports, and once more before finishing; ask about each new PR in scope the same way.

As each sub-agent reports, include a summary; its outstanding decisions go to the grill skill's rounds before its next `/quest-iterate` dispatch, never into a pick question.
Plan each queued PR's suggested follow-ups as the guide describes, without waiting for the other sub-agents to finish.
As each sub-agent reports, include a summary; its outstanding decisions go to the grill skill's rounds before its next `/quest-iterate` dispatch, never into a pick question, except its follow-ups'.
Dispatch already selected actions before asking the next question; background work can continue while the foreground waits.

Once every sub-agent has finished, remove local worktrees and branches whose tip is the head of a merged PR; squash merges leave that tip off the base branch.
Expand All @@ -72,7 +72,7 @@ Leave the worktree you are running in and any holding uncommitted work; list tho

Answer these requests at any point, without stopping running sub-agents:

- "finish up": ask about no new PR and dispatch nothing new, plan the follow-ups collected so far and each later one as its sub-agent reports, let running sub-agents report, then clean up and write the final summary. When a picked PR's sub-agent reports, still run `/quest-merge` on it, but dispatch nothing it hands back; list each pick left standing in the summary.
- "finish up": ask about no new PR and dispatch nothing new, let running sub-agents report, then clean up and write the final summary. When a picked PR's sub-agent reports, still run `/quest-merge` on it, but dispatch nothing it hands back; list each pick left standing in the summary.
- "pause": dispatch nothing new until the user says to resume; running sub-agents continue, and their reports are handled as usual.
- "status": a compact list of each sub-agent and PR in flight with its pick, state, and how long ago it was dispatched or last reported.

Expand Down
5 changes: 3 additions & 2 deletions assets/skills/iterate.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Iterate on an open PR to settle its open decisions, fix CI and review findings, and push.
guide: Format, Execution, Summaries
guide: Format, Creation, Execution, Summaries
skills: grill
---

Expand All @@ -19,13 +19,14 @@ Judge the approach before touching anything: would you take a different one?
Settle every decision this PR needs with the grill skill's interview, starting from the user's feedback: those its `## Waiting` section lists, those your judgment of the approach or the review findings raise, and any you find along the way.
Record the settled decisions in this PR description's `## Decisions` section as the paper trail, then implement them.
A sub-agent that cannot prompt leaves each in `## Waiting` with a recommendation.
Leave the open decisions of its follow-ups to the round that picks it to merge, and record answers your brief or the user gives as the guide's Creation section describes.

Fix merge conflicts and failing CI checks.
Address the automated review findings already posted, without waiting on optional reviewers: fix those you agree with and comment on any you decline.
One round only; never request a review, including by toggling a ready PR to draft and back.

If `quest status <pr>` shows auto-merge enabled, disable it with `gh pr merge <pr> --disable-auto` before any push: GitHub keeps it across a writer's push and would land the new head unreviewed.
Once nothing is unfinished and no decisions need the user, run `/quest-review` with your token, which reviews the branch, pushes, and marks the PR ready.
Once nothing is unfinished and no decisions beyond its follow-ups' need the user, run `/quest-review` with your token, which reviews the branch, pushes, and marks the PR ready.
Otherwise, before pushing to a PR that is ready for review, review the new head locally with `quest review --base <remote>/<base>`, following each round's `next` line; when another worktree holds the PR branch, work in a detached checkout of its head and pass `--branch <head-branch>`; then push and update the PR's summary.
Summarize the changes made.
Hand it back with `quest release <pr> <token>`, using the latest token printed, whenever you stop, including to ask.
Expand Down
6 changes: 3 additions & 3 deletions assets/skills/merge.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
description: Queue a PR to land, running /quest-iterate first when it needs work.
guide: Creation, Summaries
guide: Creation, Summaries, Questions
---

This skill runs inline in the session that picked it, never in its own sub-agent: it decides whether the PR's head can land as is, and queues it.
Expand All @@ -23,10 +23,11 @@ A failing optional check does not stop the pick, since the PR's own CI is only a

Otherwise run `/quest-iterate` on it, saying what it needs: a review of the head, fixes, or decisions, then run this skill again once it finishes; if it stops for the user instead, such as when it cannot push or reaches a design checkpoint, report that.
Run it in this session, where its grill interview can ask the user; under a coordinator such as `/quest-complete`, hand it back, and the coordinator dispatches it in a sub-agent.
A PR that adds follow-ups also needs the answers of the round that picked it recorded before queueing, as the guide's Creation section describes; when the user ran this skill directly, ask which to keep and their open decisions now, then run `/quest-iterate` with the answers unless the head already records them.
While its required checks are only pending, report that the pick stands until they pass; do not wait for them.

A review counts for the head whose SHA it names: a `## Review` record of a local `quest review` round, or a recorded skip.
Changes since that head need no new review only when they are conflict-free merges from the base branch, a reviewer's suggested patch applied unchanged, the fixes of a round whose findings were all low severity, a land fixer's recorded mechanical fix that changes no behavior, or changes, such as a hand-resolved merge, that leave the head's diff identical to the reviewed head's: `git diff <remote>/<base>...<head>` prints the same as `git diff <remote>/<base>...<reviewed-head>`.
Changes since that head need no new review only when they are conflict-free merges from the base branch, a reviewer's suggested patch applied unchanged, the fixes of a round whose findings were all low severity, a land fixer's recorded mechanical fix that changes no behavior, the pick round's answers recorded in the PR's follow-ups, or changes, such as a hand-resolved merge, that leave the head's diff identical to the reviewed head's: `git diff <remote>/<base>...<head>` prints the same as `git diff <remote>/<base>...<reviewed-head>`.
The repository's review policy decides whose record counts and may require more, such as a maintainer's review.
Where it says nothing, only a record on a PR whose author has write access counts: anyone else writes their own PR body, so review their head locally and rewrite the record before landing it.

Expand All @@ -41,6 +42,5 @@ On an ungated base without a merge queue, it refuses while auto-merge is disable
There, it also refuses a head that does not contain the current base: run `/quest-iterate` to merge the base.

Report once it is queued, and do not wait for it to merge.
Plan the PR's suggested follow-ups as soon as it is queued, as if it lands, rather than waiting for the merge, unless a coordinator such as `/quest-complete` called this skill and plans them behind its own questions.
A PR that left the queue unmerged shows why under `landing-stopped` in `quest status <pr>`; it needs the user's pick again, except where `/quest-complete` says an earlier pick still holds.
Never close a PR to unstick it, and never work around a refused merge; ask instead.
Loading