lvlup-sw/exarchos

plan

Decompose the unified docs/specs/ artifact into parallelizable tasks — the Decomposition section of the same document whose Design & Rationale section holds the DR-N source.

Voir la source

Mode d’emploi

  1. Copiez la commande et examinez le paquet avant de l’installer dans votre environnement agent.
  2. Consultez le document original pour les outils, identifiants et environnements requis.
  3. Décrivez les entrées et le livrable souhaité ; comparez la sortie aux sources.
npx skills add https://github.com/lvlup-sw/exarchos --skill plan

Avant de commencer

  • L’installation n’inclut ni abonnement au modèle, ni quota API, ni accès aux fichiers.
  • Étoiles et installations reflètent l’activité, pas un test indépendant de qualité ou de sécurité.
Document Skill original

Rendu depuis le dépôt source en conservant titres, exemples, code, tableaux, liens et images.

Implementation Planning Skill

Overview

Author the ## Decomposition section of the one unified `docs/specs/` artifact — granular, parallelizable tasks tracing to the DR-N requirements in the same document's ## Design & Rationale section. There is no second file: traceability resolves within one doc. Ensures complete coverage through explicit, internal traceability. The artifact shape is owned by references/spec-template.md — author against it.

For a complete worked example, see references/worked-example.md.

Triggers

Activate this skill when:

  • User runs plan command
  • User wants to break a spec into tasks
  • A unified docs/specs/ artifact's Design & Rationale section needs decomposition
  • User says "plan the implementation" or similar
  • Auto-chained from ideate after the Design & Rationale section is written
  • Run directly (no prior ideate): at thin/standard depth, author the whole unified spec — light/standard Design & Rationale section plus Decomposition — in one pass
  • Auto-chained from plan-review with --revise flag (gaps found)

Revision Mode (--revise flag)

When invoked with --revise, plan-review found gaps. Read .planReview.gaps from state, re-read the design, add tasks to address each gap, update the plan file, then clear gaps via exarchos:exarchos_workflow action: "update".

Revision Loop Guard

Max revisions: 3 per plan.

After 3 failed revisions:

  1. Set planReview.revisionsExhausted = true
  2. Output: "Plan revision failed after 3 attempts. Design may be incomplete."
  3. Escalate: Suggest ideate --redesign to revisit design
MANDATORY: Before accepting any rationalization for skipping tests, planning, or TDD steps, consult references/rationalization-refutation.md. Every common excuse is catalogued with a counter-argument and the correct action.

The Verification Ladder

Verification depth matches blast radius. The deeper rungs add tests, an adequacy kill-probe, and integration coverage — judged by outcome, test-after, not by a universal failing-test-first law. Each task gets the cheapest verification that still captures its risk:

Risk tierWhat it addsWhy
lowStatic analysis (typecheck + lint) sufficesA docs/config/rename-only edit has near-zero blast radius; a test ceremony is pure overhead.
mediumScoped tests + the check_test_adequacy kill-probeThe kill-probe recaptures test-first's one real guarantee — that a test can actually fail — at lower cost, judged test-after instead of mandating a failing test first on every commit.
highThe integration suite (and mutation-adequacy at the boundary) on top of mediumSchema/type/API/shared-contract surfaces span the codebase; here adequacy-judged coverage plus real-collaborator integration across the seam earns its cost.

The planner stamps each task's riskTier (and boundaryTouching); the classifier derives it from blast radius when the planner does not override. The dispatched implementer prompt and the gate sequence both scale off that stamp — so the verification effort is data-driven, not a blanket rule.

For a high-tier task, the discipline is outcome-based (write the behavior and its tests in whatever order is natural — test-after is fine):

  1. Cover the new/changed behavior with scoped tests that pin its contract
  2. Let the check_test_adequacy kill-probe prove the tests can actually fail (it reverts your source and asserts at least one test goes red)
  3. Add real-collaborator integration coverage across the seam

Verify high-tier test adequacy after implementation — the keeper gate (the test-FIRST ordering gate check_tdd_compliance was retired):

typescript
exarchos_orchestrate({
  action: "check_test_adequacy",
  featureId: "<featureId>",
  taskId: "<taskId>",
  branch: "feature/<name>",
  riskTier: "high"
})
  • `passed: true` — Reverting the task's source makes at least one new/changed test fail: the tests are not vacuous
  • `passed: false` — A test still passes against the reverted source; strengthen it

Planning Process

Step 1: Analyze the Design & Rationale section

Read the unified spec's ## Design & Rationale section thoroughly (if ideate ran, it is already written; otherwise author it at thin/standard depth now, per references/spec-template.md). From it, extract:

  • Problem Statement — Context (no tasks, but informs scope)
  • Chosen Approach — Architectural decisions to implement
  • Requirements (DR-N) — the provenance anchors every task must trace to
  • Technical Design — Core implementation requirements
  • Integration Points — Integration and glue code tasks
  • Open Questions — Decisions to resolve or explicitly defer

Step 1.5: Spec Tracing (Required)

Create a traceability matrix mapping DR-N requirements to planned tasks within the unified document. Consult references/spec-tracing-guide.md for the methodology and template.

Pre-populate the matrix using the traceability generator — pass the unified docs/specs/ artifact as both designFile and planFile (DR-N is parsed from its ## Design & Rationale region, tasks from its ## Decomposition region — one file):

typescript
exarchos_orchestrate({
  action: "generate_traceability",
  designFile: "docs/specs/<date>-<feature>.md",
  planFile: "docs/specs/<date>-<feature>.md",
  outputFile: "docs/specs/<date>-<feature>-traceability.md"
})
  • `passed: true` — Matrix generated; review and fill in "Key Requirements" column
  • `passed: false` — Parse error; the spec may lack expected ##/### headers

Step 2: Decompose into Tasks

Each task follows the TDD format in references/task-template.md.

Implements: DR-N and the task id are fields of the spec and of the task.completed event — that is where the provenance chain reads them. They must not be carried into code comments, which state their constraint in words and name no planning ordinal; see Ordinals are artifact metadata, not code in references/task-template.md. Write each task's verification prose as a description of the behavior to produce, so an implementer echoing that language writes the constraint rather than the ordinal.

Granularity Guidelines:

  • Each task: 2-5 minutes of focused work
  • One test = one behavior
  • Prefer many small tasks over few large ones

Assign a testingStrategy to each task using references/testing-strategy-guide.md to control which verification techniques agents apply. Auto-determine propertyTests and benchmarks flags by matching each task's description and file paths against the category tables — do not leave these for the implementer to decide.

Task Ordering:

  1. Foundation first (types, interfaces, data structures)
  2. Core behaviors second
  3. Edge cases and error handling third
  4. Integration and glue code last

Step 3: Identify Parallelization

Analyze dependencies to find sequential chains and parallel-safe groups that can run simultaneously in worktrees.

Step 4: Author the Decomposition section

Write the ## Decomposition section into the unified spec at docs/specs/YYYY-MM-DD-<feature>.md, using references/spec-template.md. Its ## Decomposition carries the task breakdown, with traceability resolved within this single document against the ## Design & Rationale DR-N source above it.

The legacy two-file split (references/plan-document-template.md → docs/plans/) is retained only for in-flight workflows already on the old path; new features author the one docs/specs/ artifact.

Step 5: Plan Verification

Run deterministic verification scripts instead of manual checklist review. Each takes the unified `docs/specs/` artifact as both designPath and planPath — the handlers parse DR-N from its design region and tasks from its decomposition region.

5a. Coverage — verify every Design & Rationale requirement maps to a task (the folded design-completeness acceptance-criteria check rides here now):

typescript
exarchos_orchestrate({
  action: "check_plan_coverage",
  featureId: "<id>",
  designPath: "docs/specs/<date>-<feature>.md",
  planPath: "docs/specs/<date>-<feature>.md"
})
  • passed: true — All requirements covered; proceed to 5a-ii
  • passed: false — Gaps found; add tasks for uncovered requirements or defer with rationale
  • error — Usage error or empty spec; check arguments

5a-ii. Provenance chain verification — verify every DR-N requirement maps to a task via Implements: field:

typescript
exarchos_orchestrate({
  action: "check_provenance_chain",
  featureId: "<id>",
  designPath: "docs/specs/<date>-<feature>.md",
  planPath: "docs/specs/<date>-<feature>.md"
})
  • passed: true — All DR-N requirements traced; proceed to 5b
  • passed: false — Block: gaps or orphan references found. Add **Implements:** DR-N to tasks for each uncovered requirement before proceeding. Every DR-N requirement MUST trace to at least one task.
  • error — No DR-N identifiers in design (exit 2); if design doesn't use DR-N identifiers, this check is skipped (exempt)

5a-iii. D5: Task decomposition quality (advisory) — verify each task has clear description, file targets, and test expectations; dependency graph is a valid DAG; parallelizable tasks don't modify the same files:

typescript
exarchos_orchestrate({
  action: "check_task_decomposition",
  featureId: "<id>",
  planPath: "docs/specs/<date>-<feature>.md"
})
  • passed: true — All tasks well-decomposed; proceed to 5b
  • passed: false — Findings recorded as D5 gate events for the ConvergenceView. Present findings to the user for awareness but do not block plan approval.
  • error — Input error (missing file, no task headers); check arguments

Advisory: This gate verifies task structure quality but does not block plan approval. Findings are recorded for convergence tracking.

5b. Spec coverage check — validate the planned test paths as declarations:

typescript
exarchos_orchestrate({
  action: "spec_coverage_check",
  featureId: "<feature-id>",
  planFile: "docs/specs/<date>-<feature>.md",
  repoRoot: ".",
  coveragePhase: "plan"
})

Pass coveragePhase: "plan" here. At planning time a declared test file does not exist yet, so the check validates the path is a well-formed test-path declaration rather than requiring it on disk. Omitting the parameter falls back to post-implementation, which demands every declared file exist and its tests run — a bar no plan can clear.

  • `passed: true` — Every declared test path is a valid forward declaration; plan verification complete
  • `passed: false` — A declared path is not a well-formed test path; fix the paths in the plan

For reference, consult references/spec-tracing-guide.md for the underlying methodology.

Anti-Patterns

Don'tDo Instead
Ship medium/high-tier behavior with no testsCover it with adequacy-judged tests (test-after is fine)
Mandate red-green-refactor on every taskScale verification to the task's riskTier; RGR is a high-tier opt-in
Create large tasksBreak into 2-5 min chunks
Skip dependency analysisIdentify parallel opportunities
Vague test descriptionsSpecific: MethodScenarioOutcome
Assume your tests can failLet check_test_adequacy prove they can (revert source, re-run, expect red)
Add "nice to have" codeOnly what the behavior requires

Rationalization Debunking

The ladder already prices in genuinely low-risk work — so these excuses apply to medium/high-tier tasks, where they are rationalizations rather than reasonable tier choices:

ExcuseReality
"This is too simple for a test" (on a medium/high-tier task)If it touches a high-blast surface, its tier is not low. Test it at the tier the ladder assigns.
"I'll add tests after"You won't. Or they'll be weak — and check_test_adequacy will catch tests that can't fail.
"Tests slow me down"Debugging an untested medium/high-tier change is slower.
"The design is obvious"Obvious to you now. Not in 3 months.

State Management

On spec save, record the artifact and transition phase based on workflowType: feature → plan-review, refactor → overhaul-plan-review. Set artifacts.plan to the unified `docs/specs/` path — this is the key the planArtifactExists guard reads, and it points at the one unified doc (the same path ideate recorded as artifacts.spec). Artifacts and phase are two separate calls — update is non-phase mutation only; phase changes go through the HSM-guarded transition action:

text
action: "update", featureId: "<id>", updates: {
  "artifacts": { "plan": "docs/specs/<date>-<feature>.md" },
  "tasks": [{ "id": "001", "title": "...", "status": "pending", "branch": "...", "blockedBy": [] }, ...]
}
action: "transition", featureId: "<id>", target: "<plan-review-phase>"

Phase Transitions and Guards

For the full transition table, consult @skills/checkpoint/references/phase-transitions.md.

Quick reference: The plan → plan-review transition requires guard plan-artifact-exists — set artifacts.plan to the unified docs/specs/ path before the transition call.

Schema Discovery

Use exarchos_workflow({ action: "describe", actions: ["update", "init"] }) for parameter schemas and exarchos_workflow({ action: "describe", playbook: "feature" }) (or "debug", "refactor") for phase transitions, guards, and playbook guidance. Use exarchos_orchestrate({ action: "describe", actions: ["check_plan_coverage", "check_provenance_chain"] }) for orchestrate action schemas.

Completion Criteria

  • [ ] Design document read and understood
  • [ ] Spec traceability table created (exarchos_orchestrate({ action: "generate_traceability" }))
  • [ ] Scope declared (full or partial with rationale)
  • [ ] Tasks decomposed to 2-5 min granularity
  • [ ] Each task carries a riskTier (and boundaryTouching) stamp; medium/high-tier tasks carry adequacy-judged tests (test-after), high-tier adds the integration suite
  • [ ] Dependencies mapped
  • [ ] Parallel groups identified
  • [ ] Plan verification passed — exarchos_orchestrate({ action: "check_plan_coverage" }) returns passed: true
  • [ ] Provenance chain checked — exarchos_orchestrate({ action: "check_provenance_chain" }) passed (blocking; gaps must be resolved before proceeding)
  • [ ] Task decomposition checked — exarchos_orchestrate({ action: "check_task_decomposition" }) run (advisory; findings presented but non-blocking)
  • [ ] Spec coverage check passed — exarchos_orchestrate({ action: "spec_coverage_check", featureId: "<feature-id>" }) passed: true
  • [ ] Coverage thresholds met — exarchos_orchestrate({ action: "check_coverage_thresholds", featureId: "<feature-id>" }) passed: true:
typescript
exarchos_orchestrate({
  action: "check_coverage_thresholds",
  featureId: "<feature-id>",
  coverageFile: "coverage/coverage-summary.json",
  lineThreshold: 80,
  branchThreshold: 70,
  functionThreshold: 100
})
  • [ ] Unified spec saved to docs/specs/ (Design & Rationale + Decomposition in one doc)
  • [ ] State file updated with artifacts.plan = unified spec path and tasks

Transition

After decomposition completes, auto-continue to plan-review. Transition to the appropriate review phase (feature: plan-review, refactor: overhaul-plan-review). Plan-review is no longer an inline plan-vs-design delta (one artifact now) — it is a dispatched, fresh-context, adversarial read-only pass over the unified artifact (DR-10): a clean reviewer provisioned with only {artifact + spec} (never this authoring transcript), prompted to refute the plan, its adversarial depth scaled by the frozen designDepth. Provision it via exarchos_orchestrate({ action: "prepare_review", scope: "plan", artifact: "docs/specs/<...>", designDepth: "<frozen>" }).

  • Refuted (gaps): set .planReview.gaps, auto-loop back to plan --revise
  • Survives: present to user for approval (the single human checkpoint)
  • On approval: set .planReview.approved = true, invoke delegate

REQUIRED: Run exarchos_orchestrate({ action: "check_plan_coverage" }) over the unified artifact. If passed: false → auto-invoke plan --revise. If passed: true → transition to the plan-review phase and only invoke delegate after plan-review approval.

Exarchos Integration

Phase transitions auto-emit workflow.transition events via exarchos_workflow set. No manual exarchos_event append needed.

Troubleshooting

IssueCauseResolution
check_plan_coverage returns passed: falseDesign sections not mapped to tasksAdd tasks for uncovered sections or add explicit deferral rationale
spec_coverage_check passed: falsePlanned test files missing or failingCreate missing test stubs, verify file paths in plan match actual paths
generate_traceability passed: falseDesign doc missing expected ##/### headersVerify design uses standard Markdown headings
Revision loop (3+ attempts)Persistent gaps between design and planSet planReview.revisionsExhausted = true, suggest ideate --redesign

Performance Notes

  • Complete each step fully before advancing — quality over speed
  • Do not skip validation checks even when the change appears trivial
  • Trace every design section to at least one task. Do not leave uncovered sections without explicit rationale.

Tâches connexes

du même dépôt

Autres Skills

Tous les Skills