chore(claude): trim resolve-issue from six narrated steps to seven rules - #254
Open
joshukraine wants to merge 3 commits into
Open
chore(claude): trim resolve-issue from six narrated steps to seven rules#254joshukraine wants to merge 3 commits into
joshukraine wants to merge 3 commits into
Conversation
Phase 5 of #252. 649 → 386 words (40%). The skill was the clearest instance of the "one, then two, then three, then four" shape that current models do not need: six numbered steps with per-step progress reporting, where most step bodies described what any competent agent already does. Cut the scaffolding and the derivable bodies — "track your progress through the 6 steps below", reading the issue you were handed, the codebase search, the task breakdown, confirming your own commits exist, and a trailing "Important" block that restated verbatim what two earlier steps had already said. Kept every rule that is not derivable: the small-vs-complex checkpoint policy, branch reuse including autopilot worktree re-entry, the branch prefix table, never referencing the issue number in a commit, the 3-8 working-commit cadence, the acceptance-criteria checkbox recipe, and the stop-before-PR handoff to /simplify and /create-pr. One addition rather than a trim: the prefix table now defers to the project's own branch convention where one exists, which is decision D3 (narrowest scope) applied to a skill that runs across many repos. Cuts are quarantined in the attic with the reasoning per removal, and the attic title now covers skills as well as the global file.
5 tasks
First live run of the trimmed skill (comix_distro #512) surfaced a regression. The trim cut Step 1's "extract title, description, labels, and comments" as GENERIC, leaving only `gh issue view N` — which prints the body but not the comment thread. On #512 the three comments held roughly a third of the real scope plus one that superseded an acceptance criterion still written in the body, so following the skill literally would have shipped incomplete work while ticking every AC. That session read them anyway out of habit, which is not something to rely on across sessions or model versions. Verified against the live CLI before fixing: - `gh issue view N` returns the body only. Its header does carry a `comments: N` count, but in a metadata block that is easy to skim past. - `gh issue view N --comments` returns the comments only, omitting title and body — so it is not a drop-in replacement for the first call. The fetch step now runs both unconditionally, with the rationale inline: the body is the oldest artifact on an issue, and comments carry scope added later, sequencing, and decisions that supersede it. Also switches the acceptance-criteria write-back from `--body "$var"` to a file round-trip with `--body-file`. Issue bodies routinely contain backticks, and a file keeps them out of shell parsing entirely — the same reasoning that survived the Q1 commit-protocol test. Logged as the stumble log's first entry, and the attic entry for Step 1 is annotated as partially reverted rather than quietly amended. The distinction it sharpened is recorded as D7 on the tracking issue: a skill handing over an incomplete command is a command bug, not a behavioral correction, and is out of ablation scope — the instruction introduces the gap rather than failing to prevent one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 5 of #252. 649 → 386 words (40%). Does not close the issue.
resolve-issuewas the clearest instance in the toolset of the pattern Anthropic singles out as the common failure mode with current models — "I want you to do this, but I want you to do it in this way, this way, this way. You must do like one, then two, then three, then four." Six numbered steps with per-step progress reporting, where most step bodies described what any competent agent does unprompted.Cut
gh issue view, extract title/labels/commentsgh pr list --search "fix issue N", rarely hit anything: it assumes "fix issue" appears in a PR title, which Conventional Commits makes unlikely.git log --onelineto confirm commits exist, "verify the issue is resolved"Kept
Every survivor is something an agent would otherwise get wrong or have no way to know:
/autopilot-batch's fan-outghmechanic/simplify→/create-prOne addition
The prefix table now defers to the project's own branch convention where one exists. That's decision D3 (narrowest scope) applied to a skill that runs across many repos — ComixDistro's
<type>/gh-<issue#>-<desc>should win over a generic table, not compete with it.Note on the observation window
This lands mid-Phase-2, so the global trim and this skill trim are both in flight. Accepted deliberately: the failure modes are distinguishable (a misfiring skill is localized and obvious within one invocation), and testing this against a real issue beats reasoning about it in the abstract. Revert is
git reverton one commit if it misbehaves.Quarantined in
docs/attic-2026-08.mdwith per-removal reasoning; the attic title now covers skills as well as the global file.Second commit — the experiment already paid off, against itself
This skill ran live on
comix_distro#512 before merge, and found a regression in its own trim. Final word count 560 (up from 386); still a 14% cut from the original 649, and the file now says less while covering more.What broke
The trim cut Step 1's "extract title, description, labels, and comments" as GENERIC, leaving only
gh issue view N— which does not print the comment thread.On #512 the three comments carried roughly a third of the actual scope, plus one that superseded an acceptance criterion still written in the body. Following the trimmed skill literally would have shipped incomplete work while ticking every AC — a silent, confident miss. The live session caught it only because it reached for the
--jsonform out of habit, which is not something to rely on across sessions or model versions.Verified before fixing
gh issue view Ncomments: Ncount — contrary to the initial report — but in a metadata block that is easy to skim past.gh issue view N --commentsThe fetch step now runs both calls unconditionally, with the rationale inline: the body is the oldest artifact on an issue; comments carry scope added later, sequencing, and decisions that supersede it.
Also in this commit
The acceptance-criteria write-back moves from
--body "$var"to a file round-trip with--body-file. Issue bodies routinely contain backticks, and a file keeps them out of shell parsing entirely — the same reasoning that survived the Q1 commit-protocol test.What it taught the method — D7 on #252
Honest accounting: the original was already self-contradictory — an incomplete command paired with an instruction to extract something that command does not return. The trim did not create the flaw, but it removed the one word that prompted going around it. Logged as the stumble log's first entry, and the attic's Step 1 entry is annotated as partially reverted rather than quietly amended.