Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Roadmap concision rules, step decomposition efficiency, AC abstraction guidelines, and step-to-scenario mapping. Load when creating implementation roadmaps.
.claude/skills/nwave-ai-nw-roadmap-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 43% | 0% |
When this skill is loaded, these principles activate in addition to the agent's core principles:
Use ONLY compact nested format. See nWave/templates/roadmap-schema.json for fields/validation. Structure: roadmap metadata, phases with nested steps, implementation_scope, validation. Phase IDs: two digits ("01"). Step IDs: "NN-MM".
Token efficiency: crafter reads roadmap ~35 times (7 phases x 5 steps). 5000-token x 35 = 175k tokens. 1000-token x 35 = 35k (80% savings).
WHAT to build (one sentence) | WHY (brief business value) | Observable outcomes (testable AC) | Architectural constraints | Integration points
HOW to implement | code snippets/class names | algorithm descriptions | step-by-step instructions | tech tutorials | testing strategy (TDD standard) | motivational language | redundancy | examples when description clear
Bullets over prose | eliminate qualifiers | assume expertise | active voice | omit obvious
AC describe observable outcomes, never internal implementation.
Describe WHAT (behavior) not HOW (implementation) | Never reference private methods (underscore prefix) | Never reference internal class decomposition | Never prescribe signatures/params/return types | Crafter decides structure during GREEN + REFACTOR
Rule: steps_count / estimated_production_files <= 2.5 Violation = over-decomposition. Action: merge steps targeting same file.
Rule: if N steps differ only by substitution variable, batch into 1 step. Threshold: 3+ identical-pattern steps must batch. Bad: 4 separate steps for AgentsPlugin, CommandsPlugin, TemplatesPlugin, UtilitiesPlugin Good: 1 step creating all 4
Each step must add production code. Validation-only steps are not steps. Bad: "Step 02-05: Validate extraction with integration tests" Good: validation is part of preceding step's REVIEW phase
For roadmaps feeding DELIVER wave:
For each step mapped to a distilled acceptance scenario, populate:
test_file: relative path to the test file (e.g., tests/acceptance/test_auth.py)scenario_name: the scenario/test function name (e.g., test_login_with_valid_credentials)These fields enable the crafter to locate and unskip the exact pre-existing test during RED (3-phase canon per ADR-025; legacy logs record the same activation under the RED_ACCEPTANCE sub-step). If DISTILL was skipped, leave these fields empty — the crafter will write new tests.
Before any roadmap, verify: 1. Timing data shows WHERE time spent | 2. Impact ranking shows MOST contributing component | 3. Target validation provides evidence
Missing data: halt, request measurement, offer to help. Gate is blocking.
Before multi-phase (>3 steps), document rejected alternatives:
markdown## Rejected Simple Alternatives ### Alternative 1: {simplest approach} - What: {description} - Expected Impact: {% of problem solved} - Why Insufficient: {evidence-based reason} ### Why Complex Solution Necessary 1. Simple alternatives fail due to: {specific reason with evidence} 2. Complexity justified by: {benefit simple solutions cannot achieve}
Min 2 alternatives. Each: specific description, expected impact, evidence-based rejection.
Schema source-of-truth: nWave/templates/roadmap-schema.json (required step fields: id, name, criteria as liststr]).
json{ "id": "01-03", "name": "Order processing with payment integration", "criteria": [ "Order confirmed after successful payment", "Failed payment returns clear error to caller", "Order persists with payment reference" ], "files_to_modify": [ "src/order/application/order_service.py", "src/order/adapters/payment_gateway.py" ], "implementation_notes": "Payment gateway accessed through driven port; order aggregate maintains consistency." }
json{ "id": "01-03", "name": "Order processing pipeline with payment integration", "criteria": [ "Valid order request produces confirmed order with payment reference", "Invalid payment produces domain error value (not exception)", "Order state is immutable — processing produces new OrderConfirmed value" ], "files_to_modify": [ "src/order/pipeline.py", "src/order/payment_port.py" ], "implementation_notes": "Payment accessed through function-signature port (PaymentRequest -> Result); pipeline composed from pure transformations; effect boundary at adapter layer only." }
Same WHAT-level criteria as Example 1, adapted for FP. No function names or type definitions -- functional-software-crafter decides those.
json{ "id": "01-03", "name": "Implement PaymentProcessor class", "criteria": [ "_validate_card() returns CardValidationResult", "PaymentProcessor.charge() uses retry with exponential backoff" ] }
Crafter decides class names|method signatures|retry strategies.
Other measured skills in the registry, with their headline benchmark lift.