requirement-convergence
Separates the outcome a change must produce from the requirements proposed to reach it, records what the user excluded, and bands cost from structure. Use when a requirement enters a workflow, before design begins.
Install
npx skills add https://github.com/shinpr/claude-code-workflows/tree/main/dev-workflows-frontend/skills/requirement-convergence
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install shinpr-claude-code-workflows@llmmart
git clone https://github.com/shinpr/claude-code-workflows.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole shinpr/claude-code-workflows collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Requirement Convergence
Purpose
Requirements arrive bloated, ambiguous, or aimed at the wrong outcome. A capable model reconciles all three into a coherent plan and builds it faithfully — delivering exactly what was asked for when what was asked for was wrong.
This skill converges what to build. How to build it, and which documents the change requires, are settled after the what is.
Convergence Fields
| Field | Pass condition |
|---|---|
outcome |
One observable result. A requirement that does not serve it is excess. |
requirements[] |
Every build-relevant item labeled current-state or desired-future. |
nonGoals[] |
Authored by the user, or the user stated there are none. |
cost |
A band with the structural evidence that places it, plus the unknowns that remain. |
cost is a rough band, not the effort estimate a work plan schedules against; requirements cannot support person-days. Its unknowns carry more decision weight than its size.
Classify from the user's own retained wording, not from an analyzer's restatement of it: wording that asks for an evaluation, describes a speculative idea, or suggests a mechanism stays in active convergence context as a judgment-only candidate. requirements[] and durable documents receive a candidate only after explicit user confirmation.
Each field carries a readiness label: ready, weak, or weak-but-explicit (weak, and the user agreed to leave it unresolved). Only the user sets weak-but-explicit. Requirements are converged when every applicable field is ready or weak-but-explicit.
Judgment rules per field: references/criteria.md.
Hearing Protocol
Run the hearing after scope analysis has produced the facts needed to judge the convergence fields. The workflow using this skill owns the interaction method and routing; this skill defines the hearing content and pass conditions.
Register these steps before starting and record each step's evidence as it completes:
| Step | Action | Completion evidence |
|---|---|---|
| 1 | Render the Scope Confirmation below, asking only about the fields below ready |
Each fact cites the analysis output it came from, and User decisions holds one question per field below ready |
| 2 | Record each answer as that field's value | The value uses wording the user supplied, not wording the hearing offered |
| 3 | Re-ask once when a recorded value still fails its pass condition, then mark the field weak-but-explicit when the user agrees to leave the second answer as it stands |
Two recorded answers, or the user's agreement to stop |
| 4 | Hand the record to the step that judges the fields | An updated record returned from that step |
Step 2's evidence is what keeps the hearing reviewable: a value restating the hearing's own candidates fails it, so the user's judgment survives however the question was put.
Scope Confirmation
Render this shape at every requirements confirmation stop, whether or not the hearing ran, using only what can change the user's requirement decision or the workflow route.
| Section | Contents |
|---|---|
| Confirmed scope | The requirements and exclusions the user has already selected, in the user's wording |
| Decision evidence | Each material observed fact with its source, followed by what that fact can change about scope, outcome, or cost |
| User decisions | Each unresolved product, UX, or operational question, followed by the scope, outcome, or cost effects of its materially different answers |
| Workflow | Rough cost band with the unknowns that remain, Structural Scale, and the selected document and workflow route |
Keeping the first three sections separate is what makes the decision informable: merged, the reader cannot tell which line is the user's own settled boundary, which is a repository observation, and which is still open.
Only an explicit user answer moves an item from User decisions into Confirmed scope. Because Step 2 records the user's own wording, pose each open decision as a question and let the user supply its answer. The orchestrator owns Workflow and presents it as a selected route.
Storage Protocol
| Carrier | Holds | Written by |
|---|---|---|
| The convergence record in the judging step's output | Every field with its readiness label | The judging step |
PRD Success Criteria and Future / Out of Scope |
outcome; user-authored nonGoals |
The PRD production step |
Design Doc Requirement Convergence |
The same when no PRD exists, and the fields left weak-but-explicit in every case |
The Design Doc production step |
A flow that produces neither document carries the record in its own context to the next step.
Reference Protocol (For Downstream Consumers)
- Read the convergence record from the prompt.
- Treat
nonGoalsas excluded from the current change anddesired-futurerequirements as buildable scope. Evaluation requests, speculative ideas, prescribed mechanisms, and agent-proposed capabilities that were not promoted create no downstream obligation; an accepted ADR may retain evaluated options as decision history. - Treat a
weak-but-explicitfield as a recorded open question rather than a settled decision. When work depends on it, return the missing decision and its effect to the owning workflow.
Quality Checklist
- Scope facts were presented before questions were asked
-
nonGoalscame from the user, or the user stated there are none - Every applicable field is
ready, orweak-but-explicitby the user's agreement
References
- references/criteria.md — judgment rules per field, cost inputs, challenge intensity, solution-in-disguise test
Files (claude-code-workflows)
-
references
-
criteria.md 3.7 KB
# Convergence Criteria Judgment rules for the four convergence fields. Read when eliciting or evaluating them. ## outcome One observable result the change must produce, not a feature list. A requirement that cannot be traced to the outcome is excess: drop it, or have the user widen the outcome to cover it. ## requirements[] — layer separation | Layer | Meaning | Buildable now | |-------|---------|---------------| | `current-state` | Behavior that already exists | No — these are facts, not work | | `desired-future` | The change the user is asking for | Yes | Evaluation requests, speculative ideas, and prescribed mechanisms stay in active request context as candidates. `requirements[]` and durable requirement/design documents receive only candidates explicitly promoted by the user to `desired-future`; an accepted ADR may retain evaluated options as decision history. Flattening current state, desired future, and candidates into one requirement list makes a bloated plan look coherent because every item then reads as equally required. Label each build-relevant item; ask when its current-state or desired-future role is unclear rather than inferring it. ## nonGoals[] Capabilities deliberately excluded from this change, authored by the user. Present the cost band and its unknowns first, then ask what to leave out. `userAgreedNone` records that the user considered exclusions and found none — an agent cannot set it. An adjacent capability the agent noticed stays out of both `requirements[]` and the exclusion hearing. The user need not reject a capability they did not request. ## cost Cost follows structure and count, not behavior, so it is decided from these inputs alone: | Input | How it is obtained | |-------|--------------------| | Number and kind of targets to change | Grep/Glob over the affected files | | Number of boundaries crossed | Affected path composition plus import and caller tracing | | Whether an equivalent already exists (reuse or new) | Grep for a similar name or shape | | Whether persisted state needs converting | Whether a schema or migration path is in the change set | | Whether verification support already exists | Glob for the area's existing test harness | | What remains unknown | WebSearch for a dependency's current capability; anything the above cannot resolve | Reading what the code *does* answers whether the change is correct, not what it costs, and belongs to the codebase analysis that precedes design. Record `cost` as one band, the inputs above that place it, and the remaining unknowns. A flow declares `cost` out of scope only where its own steps say so. ## Challenge intensity The band's only job is to select a row here, so cheap requirements stay cheap to accept. | Band | Meaning | Challenge | |------|---------|-----------| | `low-reversible` | Additive, flagged, or easily deleted | Record the fields and accept the requirement | | `medium` | Reverting would touch other work | Present the cost and one lower-cost alternative | | `high-irreversible` | Public contract, persisted data shape, or dependency swap | Present the trade-off and require a user decision before design | Report an unknown that would move the band up as a blocking question rather than assuming the lower band. ## Solution-in-disguise test When a request names a mechanism rather than an outcome ("add a cache layer", "introduce a queue"), first determine whether selecting that mechanism is required to confirm the current outcome or scope. If it is, compare only the materially distinct repository-supported routes needed for that decision and include the named mechanism as one candidate. If it is not, retain the mechanism as an unelected candidate and continue without generating alternatives.
-
-
SKILL.md 6 KB
--- name: requirement-convergence description: Separates the outcome a change must produce from the requirements proposed to reach it, records what the user excluded, and bands cost from structure. Use when a requirement enters a workflow, before design begins. --- # Requirement Convergence ## Purpose Requirements arrive bloated, ambiguous, or aimed at the wrong outcome. A capable model reconciles all three into a coherent plan and builds it faithfully — delivering exactly what was asked for when what was asked for was wrong. This skill converges **what to build**. How to build it, and which documents the change requires, are settled after the what is. ## Convergence Fields | Field | Pass condition | |-------|----------------| | `outcome` | One observable result. A requirement that does not serve it is excess. | | `requirements[]` | Every build-relevant item labeled `current-state` or `desired-future`. | | `nonGoals[]` | Authored by the user, or the user stated there are none. | | `cost` | A band with the structural evidence that places it, plus the unknowns that remain. | `cost` is a rough band, not the effort estimate a work plan schedules against; requirements cannot support person-days. Its unknowns carry more decision weight than its size. Classify from the user's own retained wording, not from an analyzer's restatement of it: wording that asks for an evaluation, describes a speculative idea, or suggests a mechanism stays in active convergence context as a judgment-only candidate. `requirements[]` and durable documents receive a candidate only after explicit user confirmation. Each field carries a readiness label: `ready`, `weak`, or `weak-but-explicit` (weak, and the user agreed to leave it unresolved). Only the user sets `weak-but-explicit`. Requirements are converged when every applicable field is `ready` or `weak-but-explicit`. Judgment rules per field: [references/criteria.md](references/criteria.md). ## Hearing Protocol Run the hearing after scope analysis has produced the facts needed to judge the convergence fields. The workflow using this skill owns the interaction method and routing; this skill defines the hearing content and pass conditions. Register these steps before starting and record each step's evidence as it completes: | Step | Action | Completion evidence | |------|--------|---------------------| | 1 | Render the Scope Confirmation below, asking only about the fields below `ready` | Each fact cites the analysis output it came from, and **User decisions** holds one question per field below `ready` | | 2 | Record each answer as that field's value | The value uses wording the user supplied, not wording the hearing offered | | 3 | Re-ask once when a recorded value still fails its pass condition, then mark the field `weak-but-explicit` when the user agrees to leave the second answer as it stands | Two recorded answers, or the user's agreement to stop | | 4 | Hand the record to the step that judges the fields | An updated record returned from that step | Step 2's evidence is what keeps the hearing reviewable: a value restating the hearing's own candidates fails it, so the user's judgment survives however the question was put. ## Scope Confirmation Render this shape at every requirements confirmation stop, whether or not the hearing ran, using only what can change the user's requirement decision or the workflow route. | Section | Contents | |---------|----------| | **Confirmed scope** | The requirements and exclusions the user has already selected, in the user's wording | | **Decision evidence** | Each material observed fact with its source, followed by what that fact can change about scope, outcome, or cost | | **User decisions** | Each unresolved product, UX, or operational question, followed by the scope, outcome, or cost effects of its materially different answers | | **Workflow** | Rough cost band with the unknowns that remain, Structural Scale, and the selected document and workflow route | Keeping the first three sections separate is what makes the decision informable: merged, the reader cannot tell which line is the user's own settled boundary, which is a repository observation, and which is still open. Only an explicit user answer moves an item from **User decisions** into **Confirmed scope**. Because Step 2 records the user's own wording, pose each open decision as a question and let the user supply its answer. The orchestrator owns **Workflow** and presents it as a selected route. ## Storage Protocol | Carrier | Holds | Written by | |---------|-------|------------| | The convergence record in the judging step's output | Every field with its readiness label | The judging step | | PRD `Success Criteria` and `Future / Out of Scope` | `outcome`; user-authored `nonGoals` | The PRD production step | | Design Doc `Requirement Convergence` | The same when no PRD exists, and the fields left `weak-but-explicit` in every case | The Design Doc production step | A flow that produces neither document carries the record in its own context to the next step. ## Reference Protocol (For Downstream Consumers) 1. Read the convergence record from the prompt. 2. Treat `nonGoals` as excluded from the current change and `desired-future` requirements as buildable scope. Evaluation requests, speculative ideas, prescribed mechanisms, and agent-proposed capabilities that were not promoted create no downstream obligation; an accepted ADR may retain evaluated options as decision history. 3. Treat a `weak-but-explicit` field as a recorded open question rather than a settled decision. When work depends on it, return the missing decision and its effect to the owning workflow. ## Quality Checklist - [ ] Scope facts were presented before questions were asked - [ ] `nonGoals` came from the user, or the user stated there are none - [ ] Every applicable field is `ready`, or `weak-but-explicit` by the user's agreement ## References - [references/criteria.md](references/criteria.md) — judgment rules per field, cost inputs, challenge intensity, solution-in-disguise test
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.