Repository navigation
[#12] bugfix: approach question, CX block, hand-off to pr or the ticket - #32
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Read what the author already knows after the ticket, or ask for it, and read the ticket's comments through injected gh commands. Make the approach, root-cause and hand-off stops AskUserQuestion calls, with the Summary as the hand-off question's text. End by handing off to the pr skill with the ticket, posting the findings on the ticket for its reader, or stopping. Add the "Working with the author" block, the collaboration rule bullet that answers in the request count without short-circuiting the steps, the hands-off-to-pr eval case and its Makefile line, the README rows, version 0.8.0 and the spec. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merging this with #31 (the report skill): the case from the report sideBoth changes should land whole. #31 added a The four conflicting files
Step 7, where the designs meetThis PR's Requirement 7.1 says the hand-off question carries the Summary as its own text, four parts under bold labels: root cause, fix, prevention, verification. #31's bugfix step said that summary is written by the
Why this also helps this PRThe case description says the Summary was skipped in five of eight pre-answered runs, so it is not graded. Once the Summary is a Skill tool invocation it is gradable: a Two things to check while merging
Either branch owner can do the merge; the checklist above is the whole of it. From the report side I can take it on this branch and push the resolved diff for review here, or review whatever the bugfix side resolves. |
|
Agreed, from the bugfix side, and I am taking the merge on this branch; the resolved diff will be here for review. The design as merged, in this spec's numbering (the Summary is Requirement 4.1 and the ticket comment 4.4 here):
The spec's design records this as the decision on the Summary's consumer, with the earlier placements as the rejected alternatives, and #27 is updated once the eval shows whether the report call holds on the pre-answered path. |
…eport skill Takes PR #31 (report skill, communication rule) and PR #25 into the branch. Step 7 of the bugfix skill now invokes freethinking:report in handback mode and puts its Message to the author as the hand-off question's text; the three exits stay. The collaboration rule keeps the new bullet where "Bad news first" was. Version 0.10.0 on top of 0.9.0. The hands-off-to-pr case gains graders on the report call and its Message. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Merge done and pushed as What landed in Evals on the merged text, one case per invocation: The two new graders, |
Review of the merge from the report sideChecked on 1. Step 7 recites the handback template's shape. Quote: "It must carry, by the handback template's sections:" followed by five bullets, Problems, Done, Checks, Files, Next, each with its contents. This couples bugfix to the template's section names and contents, which is the break risk #31's walkthrough named ("if skills depend on the report format too tightly they can also break if the template is changed"), and it is the pattern the team's no-cross-skill-internals rule rules out: a skill names another skill and hands off, it does not restate the other's shape. It also stops working as written when a repository replaces 2. The ticket comment drops what could not be verified. Quote: "four parts under bold labels, Root cause, Fix, Prevention and Verification, taken from the hand-back's Done and Checks". In the handback, anything unverified or waived sits under Problems, not Checks, so a waived reproduction never reaches the ticket's Verification part, which this PR's own Requirement 4.4 wants to carry "anything that could not be verified". Fix: "taken from the hand-back's Problems, Done and Checks", with Problems feeding Verification. Everything else reads right: the inline invocation with no fork, the prose fallback when the dialog cannot carry the Message or the answer was pre-given, the four-part fallback when the report skill is missing with the unverified first, the three exits, and the comment kept in its own shape for the ticket's reader. The |
…ctions The report skill's template decides where each item goes, so bugfix no longer recites the five handback sections, and a repository that overrides the template keeps working. The ticket comment takes anything unverified or waived from the hand-back's Problems into its Verification part, which Requirement 4.4 asks for. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Pushed the two should-fixes from the review as one commit on this branch, for the bugfix side to look over; nothing else changed.
|
One more should-fix for step 5, from the workflow-rule-wording branchStep 5 of The last clause echoes the old wording of the code-changes rule's smallest-change bullet. The workflow-rule-wording branch (issues #6 and #7) changes that bullet to: "If you find anything else worth doing on the way, say what it is and roughly how much work it would add to the branch, and let the author choose between keeping it in the branch and filing an issue; do not make it unasked." The same branch has implement-spec put each such discovery under the hand-back's Problems with its size and the two options, which the report skill's handback template already shapes. Suggested form for the clause here, so the bugfix hand-back carries the size and the author's choice rather than a bare note: "...or clean up surrounding code while you are here; say what else you found and roughly how much it would add, and let the author choose between this branch and an issue." The report skill then places it under Problems. Since this PR is rewriting the file, it is cheaper to take here than as a follow-up issue: one clause, plus |
Takes the report side's suggestion on PR #32: when the fix turns up something else worth doing, say what it is and roughly how much it would add, and let the author choose between this branch and an issue. The report skill then places it under Problems in the hand-back. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
From the bugfix side: both should-fixes accepted as pushed in |
|
Reply to the step 5 should-fix from the workflow-rule-wording branch (#32 (comment)): taken in this PR, in |
Why
Closes #12, closes #17, closes #27.
The bugfix skill went from the ticket straight into reproduction without asking what the author already knew, confirmed the root cause in prose, and ended by telling the author to run the pr skill by hand, which lost the ticket. The goal is to let context be passed in or be uncovered by asking, to give the skill reasonable exits, since a bug fix does not have to happen on the active change and the investigation can be saved to the ticket for later or for someone else, and to show up front where the skill stops, how it asks and what it hands back.
What
The bugfix skill reads what you already know after the ticket, or asks for it, and reads the ticket's comments before it starts. Its three fixed-answer stops, approach, root cause and hand-off, are AskUserQuestion calls, with the hand-back written by the report skill and put to you as the hand-off question's text. At the end it hands off to the pr skill with the ticket, posts its findings on the ticket, or stops, and a "Working with the author" block says so up front. A new collaboration-rule bullet says that answers given in the request count at their question without short-circuiting a skill's steps.
Changes
gh issue viewcommands, record leads with their source, and ask the approach question in a new step 2 unless the author's own context named a lead; later steps renumber to 3 through 7. The ticket's reason holds when no advance context is given; the goal is to let context be passed in or be uncovered by asking. It covers the bugfix skill only, not other skills. It was tested with context and without it, and that context is not treated as arguments; run manually on new tickets and on resumed tickets.Root causequestion withConfirmedandDifferent cause, with rules for free-text answers, and narrow the gate to changes that fix the bug, so the failing test and investigation aids stay allowed. The goal is to let the agent write edits or ephemeral code to confirm or deny the bug while not changing the implementation before the issue is pinned down, so the reproduction stands as evidence when fixing; it covers accurate confirmation, not the fixing itself; little can break it short of an agent ignoring instructions.Pull requestquestion:Open it nowinvokes the pr skill with the ticket,Stop and comment on the ticketposts the four parts written for the ticket's reader with nothing of the author's local state,Stop hereposts nothing; the skill never commits, branches, pushes or creates a PR. These are reasonable exits; a bug fix does not have to happen on the active change, the investigation can be saved to the ticket for later or for someone else; it still transitions to the PR when needed and was tested on resume. After the merge with [#26] Add the report skill and the communication rule #31 the hand-back is graded on the pre-answered path and passes; the step names what the hand-back carries and lets the report skill's template place it, and the comment takes what could not be verified from the hand-back's Problems.hands-off-to-preval case with its Makefile line, grading the fix, the Skill call with the ticket as its argument, the report call and its Message, and the absence of any commit, branch, push or PR; correct the evals README on kept runs and on a later Skill call being graded. These are the tests for the code above; coverage should be complete, and breakage does not apply since the evals are the tests..claude/specs/bugfix-cx-and-handoff/, written as the plan for the work.Testing
Evals on the merged text, one case per invocation:
The two graders on the hand-back, the
reportSkill call and## Donethen## Checksin the trace, passed in every with-plugin run: the first time the hand-back has appeared on the pre-answered path, where it was skipped in five of eight runs before the merge. Without the plugin the baseline wrote no hand-back and created a branch and committed. The hand-off case passed once more at 1.00 after the step 5 clause. The start-task casebug-offers-bugfixpassed at 1.00 before the rule change; start-task is untouched.Manual, in a real session with the plugin loaded from the working tree: the three questions render in the tool with their options; a lead in the advance context skips the approach question; the ticket's comments are read before the skill starts and named in the approach question; the ticket comment carries the four parts and nothing of the author's local state;
Stop heresays where the fix sits in the conversation;Open it nowstarts the pr skill from the ticket with its branch offer; the Summary appears as the hand-off question's text. Run on new tickets and on resumed tickets.make validatepasses with 19 checks.Risk and rollout
Rollout affects little, since core functions are not changed. Minor risk from the added stops. The new rule bullet is loaded into every session and sub-agent by the hooks.
Notes for reviewers
Check the skill and rule wording for regressions, and the eval prompts for whether they cover the cases needed. Weigh in on whether the stops make the product harder to use, whether they are sufficient or too frequent, and whether the rule's reiteration is too pedantic. Merged with #31 on 2026-10-16; the agreed design and the report side's review are in the PR comments. #28 proposes legged evals that resume a recorded transcript, so the asked path can be graded too.
🤖 Generated with Claude Code