feat(instructions): backlog skill — story readiness validation + human work breakdown (#307) - #318
feat(instructions): backlog skill — story readiness validation + human work breakdown (#307)#318isolomatov-gd wants to merge 11 commits into
Conversation
New `instructions/r3/core/skills/backlog/` — human/BSA-facing backlog skill with two modes behind one router. - `story-validator`: code-grounded readiness validation of an existing story. Intake (read-only via `data-collection`) -> business analysis -> user Q&A -> technical analysis -> parallel focused concerns -> user Q&A -> gated backlog write-back. Two independent verdicts driven by the enough-information test; toolbox of moves so an unready story becomes partially actionable instead of blocked. - `work-breakdown`: human WBS with EARS FRs. Owns the method previously reachable only through `planning`'s human branch. Three dispatch prompts stored as separate assets (business analysis, technical analysis, write-back). Tracker writes are preview-then-approve, per-operation for overwrites and closes, with no delete operation. `planning` keeps AI-session planning only and carries a single compatibility redirect for human-work-breakdown requests; its four `pl-*` assets move into the new skill, merged into `work-breakdown.md` plus a LARGE-only templates asset. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…erate plugins `APPLY SKILL FILE` resolves against the CURRENT skill, and a freshly spawned subagent has none — so a dispatch line naming `assets/...` had no anchor. Subagents now reach a dispatch prompt by using the `backlog` skill with a `dispatch` name, which the new `<dispatch>` branch in `SKILL.md` resolves. Mirrors the working `subagent-directives` EXECUTION_CONTROLLER pattern and keeps the prompt text out of the orchestrator's context. Also: `<templates>` names produced artifacts instead of restating `<modes>`; compression pass over the dispatch prompts; repoint the `hitl` README at the moved risk-register template; regenerate all plugin variants. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rosetta - Analysis dispatches return XML with stable `BA-nn` / `TA-nn` finding ids, so the write-back and report reference findings instead of re-deriving them - Workspace locations use TERM references (FEATURE PLAN folder); raw `plans/` paths removed — `load-project-context` owns the paths - Readiness report persists before write-back, so context loss does not cost the analysis - Q&A mechanics defer to `hitl` and `questioning` instead of restating them - Description tightened under the ~30-token auto-activation budget - Meta-notes and remaining full-sentence prose compressed Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A spawned subagent never runs the Rosetta prep steps, but it read the prep-steps gate in `core_concepts` before reaching `<dispatch>`. The branch now sits directly after `<when_to_use_skill>` and states explicitly that prep steps, mode classification, and orchestration belong to the orchestrator. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Rosetta Triage ReviewSummary: Adds a new Findings:
Caveats:
Clarifications:
Suggestions:
Automated triage by Rosetta agent |
story-validator: - Runs repeatedly on the same story ahead of implementation. New delta step classifies prior `Q-nn` questions answered / open / void and works only what changed, so an answered question is never re-asked and ids stay matchable - Open questions are a first-class report section an analyst can lift and take to stakeholders unchanged - Comments are the durable question channel: questions go out as `Q-nn` comments addressed to owners, and each run appends an analysis comment rather than editing an earlier one. Stakeholder comments are never edited - Settled facts are promoted onto the story into a delimited `## Established technical facts` block — the only place technical content enters a story body, so implementation reads facts instead of re-deriving them work-breakdown: - WBS always required; size scales its depth, not its existence - Estimates belong in the WBS because the team estimates. 2-4 hours of team effort per step, AI assistance included; above 4 splits, and a disjoint step under 2 stays its own step — unrelated work is never merged to hit the band - Human-oriented: no person and no agent is ever named, only the skills a step needs. Each step declares its shape, since people here work with AI agents: wide-and-shallow is sized by surface, deep-and-narrow by judgement, and a step that is both is split first - Input contract names the mode-1 handoff; steps trace to the findings they close - Requirements form now matches the size table; checklist is proof-oriented Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ose frontmatter Write-back is no longer dispatched. It holds the preview approval and the per-operation confirmations, which a subagent cannot obtain — a delegate would either bounce every payload back through the orchestrator or proceed on assumed approval, and the write binding forbids the latter. By step 8 nothing is left to discover, so the fresh-context benefit was absent while the full confirmed state had to be passed in anyway. The actor that made the promises to the user now makes the irreversible calls. `backlog-writeback` is gone from the valid dispatch names. Assets carry no frontmatter; the publisher tags them by path and filename. Removed non-operational rationale from asset bodies. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: isolomatov-gd <isolomatov@griddynamics.com>
The mode no longer mandates subagents for the business and technical passes. Both prompts apply in the mode's own context, sequentially, so the two lenses stay separate without a process boundary and the codebase orientation happens once instead of twice. One nudge covers the exception: story too big to fit -> spawn `engineer` per pass via the existing dispatch names. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…denser description - Focused concerns run in the mode's own context, so the citation rules apply without passing them into a dispatch. Delegating one reuses `technical-analysis` scoped to that concern, which inherits grounding too - Every subagent recommendation names `engineer` explicitly; ambiguity there is where an orchestrator picks wrong - Model recommendations dropped from the skill - Q&A gates defer to `hitl` instead of restating batching and TLDR rules - `<templates>` output line matches the size table: `wbs.md` at every size - `<dispatch>` states that write-back is never dispatched - Routing to another skill by concept is permitted, so the `planning` route is documented as a route, not as a deviation; `planning/README.md` wording tightened - Description carries triggers only Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Thanks for the careful read — six comments, six landed. Applied as suggested
Answered by design, with a clarity fix
Also from the automated triage: the Resolving these. Reopen any where the reasoning does not hold. |
…ction The router selects one mode per invocation, so "and" described a compound action the skill never performs and weakened matching when a user wants only one of the two. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The block is read only after the skill is already loaded, so its trigger lines addressed a decision already made by the frontmatter description, and they duplicated the routing `<modes>` already owns. `<dispatch>` now follows `<role>` directly, still ahead of the prep-steps gate. Scope boundaries stay in README, which never loads at runtime. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Closes #307.
What
New skill
instructions/r3/core/skills/backlog/— the human/BSA-facing backlog skill, two modes behind one router.story-validator(the issue's ask): decide whether an existing story is honestly ready for the next sprint, grounded in the actual code, and make an unready story partially actionable rather than blocked.Two verdicts, decided independently from the enough-information test — can this be built with no assumption and no hallucination? — applied as tracker labels and restated in the report:
ready-for-developmentnot-ready-for-developmenttech-readynot-tech-readywork-breakdown: human WBS with EARS FRs. This method previously lived as a secondary branch insideplanning, whose own SKILL.md targets AI session graphs. It now belongs to the skill whose subject it actually is.Files
backlog/SKILL.mdassets/story-validator.mdassets/story-validator-business-analysis.mdassets/story-validator-technical-analysis.mdassets/story-validator-backlog-writeback.mdassets/work-breakdown.mdpl-human+pl-wbsassets/work-breakdown-templates.mdbacklog/README.mdplanningkeeps AI-session planning only and carries one compatibility redirect so existing callers asking it for a human WBS still reach the owner. Its fourpl-*assets are removed; nothing outsideskills/planning/referenced them.Design notes for review
BA-nn/TA-nnids. The write-back and the report reference findings by id rather than re-deriving them, which is what keeps the write-back from quietly reinterpreting the analysis.INVOKE SUBAGENT engineerper pass. A focused concern that must be delegated reusestechnical-analysisscoped to that concern, so it still inherits the grounding rules. Batching across many stories is the caller's decision, not this skill's.APPLY SKILL FILEresolves against the current skill and a fresh subagent has none, so dispatch lines cannot nameassets/...directly —pa-rosetta.mdalias rule 8 requires expressing intent and letting the skill route. The<dispatch>branch sits ahead of<core_concepts>on purpose: a spawned subagent never runs the Rosetta prep steps, so it must reach the branch before that gate.load-project-contextowns the paths.backlogfromplanningis a concept reference, which the authoring rules permit — only naming another skill's files is forbidden. It is how existingplanningcallers reach this method.Validation
venv/bin/python scripts/pre_commit.pypasses; all plugin variants regenerated with the shipped--deterministic-hooks falseposturebacklogpresent in all seven targets plus light profiles; nopl-*remnants anywhere inplugins/hitl/README.mdrepointed at the moved template);instructions/r2untouched by designpa-hardening.md+pa-rosetta.md→ edit → dispatch-path simulation → review round applied🤖 Generated with Claude Code