From e470cd3d1fb51aaf2fd4948472d793939895365e Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 21 Oct 2026 11:44:14 -0700 Subject: [PATCH 1/3] chore(quest): claim quest/m0/helpers/afk.md Co-Authored-By: Claude Opus 5.5 From 0c5ff6d32905f801ebc5a8f4dced18da082aa13a Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 21 Oct 2026 11:46:37 -0700 Subject: [PATCH 2/3] feat(skills): triage unattended with an afk argument /quest-complete afk and /quest-spawn afk act on their recommendations without asking, except merges and deletes, which still get one simple question each. Decisions that are not simple become skips noted in the summary, and /quest-plan sessions wait for the summary. Co-Authored-By: Claude Opus 5.5 --- README.md | 3 +++ assets/skills/complete.md | 8 ++++++++ assets/skills/spawn.md | 8 ++++++++ quest/m0/helpers/README.md | 1 - quest/m0/helpers/afk.md | 24 ------------------------ 5 files changed, 19 insertions(+), 25 deletions(-) delete mode 100644 quest/m0/helpers/afk.md diff --git a/README.md b/README.md index 577dd266..88686bea 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,9 @@ Use `/quest-plan` in Claude Code or `$quest-plan` in Codex. Skills coordinate within your agent session. A started quest stops at a pull request; merging is a separate invocation, so you review every change. +Before stepping away, add `afk` to `/quest-spawn` or `/quest-complete`: the +agent acts on its own recommendations and asks only before merging or deleting. + To bill spawned agents to API keys instead of your agent's account, export `QUEST_API_KEYS` with one or more whitespace-separated keys and run `/quest-spawn api`. Entries may be secret references such as 1Password `op://` diff --git a/assets/skills/complete.md b/assets/skills/complete.md index e1b55c51..e072658e 100644 --- a/assets/skills/complete.md +++ b/assets/skills/complete.md @@ -44,3 +44,11 @@ Dispatch already selected actions before asking the next question; background wo 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. Leave the worktree you are running in and any holding uncommitted work; list those in your summary. + +## Unattended + +With an `afk` argument, the user has stepped away: your recommendation stands in for their pick of skip, `/quest-ready`, or `/quest-iterate`, so dispatch it without asking. +Still ask about each `/quest-merge` and `/quest-delete` you recommend, as one simple question with your recommendation first. +Skip a PR whose decision is not simple, noting why in the summary instead of asking. +Hold suggested `/quest-plan` follow-ups for the summary, since planning is an interview. +The rest of the argument still filters the PRs in scope. diff --git a/assets/skills/spawn.md b/assets/skills/spawn.md index cb8f7b62..c41194d3 100644 --- a/assets/skills/spawn.md +++ b/assets/skills/spawn.md @@ -51,6 +51,14 @@ Run selected `/quest-plan` sessions in the foreground. 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. Leave the worktree you are running in and any holding uncommitted work; list those in your summary. +## Unattended + +With an `afk` argument, the user has stepped away: your recommendation stands in for their pick of `/quest-start`, skip, `/quest-ready`, or `/quest-iterate`, so act on it without asking. +Still ask about each `/quest-merge` and `/quest-delete` you recommend, as one simple question with your recommendation first. +Skip a quest or PR whose decision is not simple, noting why in the summary instead of asking. +Hold `/quest-plan` sessions, including deprioritizing and suggested follow-ups, for the summary, since planning is an interview. +The rest of the argument still filters the quests in scope. + ## API keys With an `api` argument, bill agents to API keys instead of this session's account: run each as a headless agent CLI process rather than a sub-agent. diff --git a/quest/m0/helpers/README.md b/quest/m0/helpers/README.md index 1fff2916..e3e75e39 100644 --- a/quest/m0/helpers/README.md +++ b/quest/m0/helpers/README.md @@ -54,7 +54,6 @@ commands from Sep-Oct. Session counts in each child come from that window. - [CI checks in wait](/quest/m0/helpers/wait-checks.md) - `quest wait` wakes on required check results for the head - [quest start](/quest/m0/helpers/start.md) - claim a quest with a draft PR, the `## Decisions needed` hand-back, `quest unblocked --unclaimed`, and CI on ready PRs only - [PR state commands](/quest/m0/helpers/pr-states.md) - `quest iterate`, `ready`, `merge`, and `release` label the one owner of a PR -- [Unattended triage](/quest/m0/helpers/afk.md) - an `afk` argument that only asks about merges and deletes - [Headless agents](/quest/m0/helpers/headless-agents.md) - `/quest-spawn api` launches, resumes, and stops billed agents through one command auto mode allows ## Related diff --git a/quest/m0/helpers/afk.md b/quest/m0/helpers/afk.md deleted file mode 100644 index a8adb98a..00000000 --- a/quest/m0/helpers/afk.md +++ /dev/null @@ -1,24 +0,0 @@ -# [XS] Triage unattended with an afk argument - -## Goal - -`/quest-complete afk` and `/quest-spawn afk` act on their recommendations -without asking, except merges and deletes. This replaces the prompt the -user keeps typing before stepping away: "skip/iterate any that you -recommend, and prompt for any that you recommend I merge... relatively -simple decisions only". - -## Plan - -- Decided 2026-10-19 (user): one shared `afk` argument for both skills, not - a new default and not limited to `/quest-complete`. -- In afk mode, dispatch recommended skip, `/quest-iterate`, and - `/quest-ready` picks without asking. Still ask about every merge and - delete, as one simple question each with the recommendation first. -- A decision that is not simple becomes a skip with a note in the summary - rather than a question. Suggested `/quest-plan` follow-ups wait for the - summary, since planning is an interview. -- The rest of the argument still filters the PRs or quests in scope, as - today. -- Edit `assets/skills/complete.md` and `assets/skills/spawn.md`, following - `PROMPTING.md`. From c67357aba72ec5401efc5dad2b613241667ec0ad Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Wed, 21 Oct 2026 12:02:55 -0700 Subject: [PATCH 3/3] fix(skills): answer simple agent decisions when afk Without this, /quest-spawn afk api still asked the user before resuming a headless agent, and /quest-complete afk prompted for sub-agent decisions. Co-Authored-By: Claude Opus 5.5 --- assets/skills/complete.md | 3 ++- assets/skills/spawn.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/skills/complete.md b/assets/skills/complete.md index e072658e..b419934d 100644 --- a/assets/skills/complete.md +++ b/assets/skills/complete.md @@ -48,7 +48,8 @@ Leave the worktree you are running in and any holding uncommitted work; list tho ## Unattended With an `afk` argument, the user has stepped away: your recommendation stands in for their pick of skip, `/quest-ready`, or `/quest-iterate`, so dispatch it without asking. +It also answers each simple decision a sub-agent reports. Still ask about each `/quest-merge` and `/quest-delete` you recommend, as one simple question with your recommendation first. -Skip a PR whose decision is not simple, noting why in the summary instead of asking. +Skip a PR or reported decision that is not simple, noting why in the summary instead of asking. Hold suggested `/quest-plan` follow-ups for the summary, since planning is an interview. The rest of the argument still filters the PRs in scope. diff --git a/assets/skills/spawn.md b/assets/skills/spawn.md index c41194d3..021b0838 100644 --- a/assets/skills/spawn.md +++ b/assets/skills/spawn.md @@ -54,8 +54,9 @@ Leave the worktree you are running in and any holding uncommitted work; list tho ## Unattended With an `afk` argument, the user has stepped away: your recommendation stands in for their pick of `/quest-start`, skip, `/quest-ready`, or `/quest-iterate`, so act on it without asking. +It also answers each simple decision an agent reports, including when you resume a headless agent. Still ask about each `/quest-merge` and `/quest-delete` you recommend, as one simple question with your recommendation first. -Skip a quest or PR whose decision is not simple, noting why in the summary instead of asking. +Skip a quest, PR, or reported decision that is not simple, noting why in the summary instead of asking. Hold `/quest-plan` sessions, including deprioritizing and suggested follow-ups, for the summary, since planning is an interview. The rest of the argument still filters the quests in scope.