gm-continue

Installation
SKILL.md

gm-continue

This is the only allowed next step when a gm walk reaches phase=COMPLETE AND prd_pending_count=0. Never end that turn with prose alone -- dispatch this skill instead, every time, no exceptions for "it looks finished."

This skill itself has exactly two allowed ways to end, and no others. (1) Dispatch Skill(skill="gm") with the remaining PRD rows (found reachable work, or reopened an external/out-of-reach row, or this is the first confirming pass this session) -- gm then runs and, when it reaches COMPLETE again, calls back into this same skill. (2) Confirm there are no remaining PRD rows and none can be added -- a real, witnessed check (steps 2-4 below actually run, not assumed), not a feeling of "probably done." There is no third path: no prose-only stop that isn't outcome (2), no deferring to the user to decide whether to continue, no partial confirmation. Every dispatch of this skill lands in exactly one of these two states before the turn ends.

What this skill does

  1. Read .gm/exec-spool/.turn-summary.json for the current phase, prd_pending, and how many times this repo has already round-tripped through gm-continue this session (track via a counter file, see below).
  2. Read .gm/prd.yml and .gm/mutables.yml directly for any row marked blockedBy: [external]/[out-of-reach] or otherwise deferred. A prior external/out-of-reach marking is not a closed door -- it is remaining work by definition. Re-examine each one now: is the blocker still genuinely unreachable this turn, or was it marked that way under time/scope pressure when it was actually solvable? Anything reachable now goes back into scope, re-prd-add'd (re-scope the existing id, never delete-and-re-add) as work to actually solve, not left marked external.
  3. Fan out codesearch + recall against the ORIGINAL request's full closure, not against memory of what was already done -- a fresh look, same discipline as gm's own PLAN orient. 3a. Re-read the user's literal words from this turn, then exercise the live system now to check the shipped behavior against them. No test file, prior PRD witnessed mark, or recollection of the fix counts as evidence -- prd_pending_count=0 only proves no row is open, not that closed rows match what was actually asked, and a row resolved in the same pass as its own check can share that check's misreading. Run the real path the user would use and read the real output. Any mismatch is remaining work, prd-add'd fresh.
  4. If .gm/prd.yml has ANY items at all (pending, or reopened external rows from step 2), that alone is remaining work -- skip straight to the dispatch below, no further search needed.
  5. Two outcomes, decided by what steps 2-4 actually find:
    • Real remaining work found (any PRD item at all, a reopened external/out-of-reach row, an unaddressed noun from the request, an edge case never exercised, a residual never triaged, a sibling repo never checked): dispatch Skill(skill="gm") and instruct it explicitly to finish ALL remaining tasks in .gm/prd.yml and fix any issues that arise while doing so -- not a narrow slice, not "just the reopened ones." Tell it plainly what was found so it lands directly in PLAN with real rows, not a blind re-orient.
    • Nothing found, but this is the first gm-continue dispatch this session: dispatch Skill(skill="gm") anyway, once, to let a full independent PLAN pass confirm it from inside gm's own discipline (fresh codesearch/recall, prd_pending_count=0 reached with nothing new added). That confirming turn inside gm is the actual stopping point -- prose-only is earned there, not here.
    • Nothing found, and gm-continue already ran that confirming pass this session (counter >= 1): the loop is closed. Prose-only summary is authorized. Do not dispatch anything further.

When to load wfgy-method instead of gm

Installs
39
Repository
anentrypoint/gm
First Seen
Jul 10, 2026
gm-continue — anentrypoint/gm