mandrel 1.59.0 → 1.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +14 -14
- package/.agents/docs/SDLC.md +129 -134
- package/.agents/docs/configuration.md +16 -16
- package/.agents/docs/workflows.md +6 -8
- package/.agents/instructions.md +12 -11
- package/.agents/personas/architect.md +1 -1
- package/.agents/personas/product.md +1 -1
- package/.agents/personas/project-manager.md +14 -14
- package/.agents/personas/technical-writer.md +1 -1
- package/.agents/rules/changelog-style.md +5 -5
- package/.agents/rules/git-conventions.md +3 -3
- package/.agents/schemas/agentrc.schema.json +3 -3
- package/.agents/schemas/dispatch-manifest.json +4 -4
- package/.agents/schemas/epic-spec.schema.json +15 -45
- package/.agents/schemas/lifecycle/README.md +1 -1
- package/.agents/schemas/lifecycle/story.dispatch.end.schema.json +1 -1
- package/.agents/schemas/lifecycle/story.dispatch.start.schema.json +1 -1
- package/.agents/schemas/lifecycle/story.heartbeat.schema.json +1 -1
- package/.agents/schemas/validation-evidence.schema.json +1 -1
- package/.agents/scripts/README.md +1 -1
- package/.agents/scripts/acceptance-eval.js +1 -1
- package/.agents/scripts/acceptance-spec-reconciler.js +2 -2
- package/.agents/scripts/analyze-execution.js +2 -2
- package/.agents/scripts/audit-to-stories.js +1 -1
- package/.agents/scripts/check-doc-links.js +2 -3
- package/.agents/scripts/diagnose-friction.js +1 -1
- package/.agents/scripts/dispatcher.js +2 -2
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/epic-audit-prepare.js +3 -3
- package/.agents/scripts/epic-deliver-note-intervention.js +2 -2
- package/.agents/scripts/epic-deliver-preflight.js +6 -6
- package/.agents/scripts/epic-deliver-prepare.js +1 -1
- package/.agents/scripts/epic-execute-record-wave.js +4 -4
- package/.agents/scripts/epic-plan-healthcheck.js +6 -10
- package/.agents/scripts/epic-plan-spec-validate.js +1 -1
- package/.agents/scripts/epic-reconcile.js +11 -29
- package/.agents/scripts/evidence-gate.js +1 -1
- package/.agents/scripts/generate-workflows-doc.js +1 -1
- package/.agents/scripts/hierarchy-gate.js +7 -11
- package/.agents/scripts/lib/ITicketingProvider.js +1 -1
- package/.agents/scripts/lib/audit-suite/selector.js +1 -1
- package/.agents/scripts/lib/audit-to-stories/seed-epic-from-findings.js +2 -2
- package/.agents/scripts/lib/baseline-snapshot.js +7 -7
- package/.agents/scripts/lib/bdd-runner-detect.js +1 -1
- package/.agents/scripts/lib/bdd-scenario-scanner.js +3 -3
- package/.agents/scripts/lib/bootstrap/baselines-layout-migration.js +1 -1
- package/.agents/scripts/lib/bootstrap/branch-protection.js +1 -1
- package/.agents/scripts/lib/bootstrap/ci-workflow-template.js +1 -1
- package/.agents/scripts/lib/bootstrap/commit-push.js +2 -2
- package/.agents/scripts/lib/codebase-snapshot.js +1 -1
- package/.agents/scripts/lib/config/explain.js +1 -1
- package/.agents/scripts/lib/config/runners.js +2 -2
- package/.agents/scripts/lib/config/runtime.js +1 -1
- package/.agents/scripts/lib/config/temp-paths.js +2 -2
- package/.agents/scripts/lib/config-settings-schema-delivery.js +2 -2
- package/.agents/scripts/lib/config-settings-schema-quality.js +1 -1
- package/.agents/scripts/lib/config-settings-schema.js +3 -3
- package/.agents/scripts/lib/duplicate-search.js +1 -1
- package/.agents/scripts/lib/dynamic-workflow/capability.js +1 -1
- package/.agents/scripts/lib/epic-plan-clarity.js +1 -1
- package/.agents/scripts/lib/epic-plan-ideation.js +1 -1
- package/.agents/scripts/lib/feedback-loop/memory-freshness.js +1 -1
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +1 -1
- package/.agents/scripts/lib/findings/classify-finding.js +1 -1
- package/.agents/scripts/lib/findings/promote-finding.js +10 -10
- package/.agents/scripts/lib/label-constants.js +3 -4
- package/.agents/scripts/lib/label-taxonomy.js +3 -8
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +1 -1
- package/.agents/scripts/lib/orchestration/code-review.js +5 -5
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +8 -9
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +3 -3
- package/.agents/scripts/lib/orchestration/detectors-phase.js +2 -2
- package/.agents/scripts/lib/orchestration/dispatch-engine.js +30 -38
- package/.agents/scripts/lib/orchestration/dispatch-pipeline.js +9 -25
- package/.agents/scripts/lib/orchestration/epic-cleanup.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-deliver-lease-guard.js +8 -8
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/creation.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/dag.js +7 -21
- package/.agents/scripts/lib/orchestration/epic-plan-decompose/phases/diagnostics.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-plan-lease-guard.js +26 -13
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/plan-epic.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/prompts.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/run-spec-phase.js +2 -2
- package/.agents/scripts/lib/orchestration/epic-plan-state-store.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-runner/concurrency-gate.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/deliver-phases.js +3 -3
- package/.agents/scripts/lib/orchestration/epic-runner/phases/build-wave-dag.js +6 -21
- package/.agents/scripts/lib/orchestration/epic-runner/phases/snapshot.js +7 -7
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/composition.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/signals.js +2 -2
- package/.agents/scripts/lib/orchestration/epic-runner/progress-reporter/transport.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/story-launcher.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-runner/story-run-progress-writer.js +8 -8
- package/.agents/scripts/lib/orchestration/epic-runner/sub-agent-return.js +4 -4
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-apply.js +7 -15
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-diff.js +72 -41
- package/.agents/scripts/lib/orchestration/epic-spec-reconciler-ops.js +2 -4
- package/.agents/scripts/lib/orchestration/file-assumptions.js +2 -2
- package/.agents/scripts/lib/orchestration/finalize/close-planning-tickets.js +1 -1
- package/.agents/scripts/lib/orchestration/finalize/open-or-locate-pr.js +2 -2
- package/.agents/scripts/lib/orchestration/finalize/sanitize-skip-ci.js +1 -1
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +3 -3
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-dispatch-end.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/emit-story-heartbeat.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/README.md +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-armer.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/automerge-predicate.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/branch-cleaner.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/finalizer.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/index.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/merge-watcher.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/notify-dispatcher.js +1 -1
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/watcher.js +1 -1
- package/.agents/scripts/lib/orchestration/manifest-builder.js +5 -5
- package/.agents/scripts/lib/orchestration/parked-follow-ons.js +2 -2
- package/.agents/scripts/lib/orchestration/plan-runner/plan-router.js +5 -5
- package/.agents/scripts/lib/orchestration/post-merge/phases/ticket-closure.js +3 -3
- package/.agents/scripts/lib/orchestration/preflight-cache.js +1 -1
- package/.agents/scripts/lib/orchestration/recurring-failure-detector.js +1 -1
- package/.agents/scripts/lib/orchestration/retro/phases/compose-body.js +1 -1
- package/.agents/scripts/lib/orchestration/retro/phases/gather-signals.js +2 -2
- package/.agents/scripts/lib/orchestration/retro-runner.js +3 -3
- package/.agents/scripts/lib/orchestration/review-depth.js +1 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +1 -1
- package/.agents/scripts/lib/orchestration/spec-freshness.js +1 -1
- package/.agents/scripts/lib/orchestration/spec-renderer.js +36 -73
- package/.agents/scripts/lib/orchestration/spec-section-validator.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/baseline-friction-body.js +1 -1
- package/.agents/scripts/lib/orchestration/story-close/phases/locked-pipeline.js +2 -2
- package/.agents/scripts/lib/orchestration/task-body-validator.js +6 -6
- package/.agents/scripts/lib/orchestration/ticket-lease.js +1 -1
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +2 -2
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +1 -10
- package/.agents/scripts/lib/orchestration/ticket-validator.js +25 -70
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +5 -12
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +8 -8
- package/.agents/scripts/lib/orchestration/ticketing/state.js +3 -3
- package/.agents/scripts/lib/orchestration/wave-record-notifications.js +2 -2
- package/.agents/scripts/lib/orchestration/wave-record-projection.js +1 -1
- package/.agents/scripts/lib/plan-phase-cleanup.js +1 -1
- package/.agents/scripts/lib/preflight-runner.js +1 -1
- package/.agents/scripts/lib/presentation/dispatch-manifest-render.js +4 -5
- package/.agents/scripts/lib/presentation/manifest-builder.js +28 -34
- package/.agents/scripts/lib/presentation/manifest-formatter.js +3 -4
- package/.agents/scripts/lib/presentation/manifest-helpers.js +1 -1
- package/.agents/scripts/lib/presentation/manifest-procedures.js +4 -4
- package/.agents/scripts/lib/presentation/manifest-render-waves.js +4 -23
- package/.agents/scripts/lib/presentation/manifest-renderer.js +1 -1
- package/.agents/scripts/lib/presentation/manifest-story-views.js +2 -11
- package/.agents/scripts/lib/signals/schema.js +1 -1
- package/.agents/scripts/lib/spec/index.js +1 -1
- package/.agents/scripts/lib/spec/loader.js +2 -2
- package/.agents/scripts/lib/spec/state.js +7 -16
- package/.agents/scripts/lib/story-init/context-resolver.js +3 -3
- package/.agents/scripts/lib/story-init/state-transitioner.js +2 -2
- package/.agents/scripts/lib/story-init/task-graph-builder.js +7 -7
- package/.agents/scripts/lib/story-lifecycle.js +8 -8
- package/.agents/scripts/lib/story-plan.js +1 -1
- package/.agents/scripts/lib/templates/decomposer-prompts.js +59 -52
- package/.agents/scripts/lib/wave-runner/tick.js +1 -1
- package/.agents/scripts/lifecycle-emit-story-dispatch.js +1 -1
- package/.agents/scripts/lifecycle-emit.js +1 -1
- package/.agents/scripts/providers/github/board-add.js +1 -1
- package/.agents/scripts/providers/github/errors.js +1 -1
- package/.agents/scripts/providers/github/mappers.js +2 -2
- package/.agents/scripts/providers/github/tickets.js +4 -4
- package/.agents/scripts/resync-status-column.js +1 -1
- package/.agents/scripts/retro-run.js +2 -2
- package/.agents/scripts/run-lint.js +1 -1
- package/.agents/scripts/single-story-init.js +1 -1
- package/.agents/scripts/stories-wave-tick.js +5 -5
- package/.agents/scripts/story-close.js +1 -1
- package/.agents/scripts/story-init.js +13 -16
- package/.agents/scripts/story-phase.js +5 -5
- package/.agents/scripts/story-plan.js +3 -3
- package/.agents/scripts/sync-branch-from-base.js +1 -1
- package/.agents/scripts/validate-docs-freshness.js +1 -1
- package/.agents/scripts/wave-tick.js +1 -1
- package/.agents/skills/core/analyze-execution/SKILL.md +2 -2
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +21 -26
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +23 -56
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +4 -4
- package/.agents/skills/core/hydrate-context/SKILL.md +2 -2
- package/.agents/skills/core/idea-refinement/SKILL.md +4 -4
- package/.agents/skills/core/knowledge-transfer/SKILL.md +2 -2
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +1 -1
- package/.agents/skills/core/scope-triage/SKILL.md +9 -10
- package/.agents/skills/core/using-agent-skills/SKILL.md +1 -1
- package/.agents/skills/skills.index.json +7 -7
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/workflows/agents-update.md +2 -2
- package/.agents/workflows/audit-architecture.md +2 -2
- package/.agents/workflows/audit-clean-code.md +2 -2
- package/.agents/workflows/audit-dependencies.md +1 -1
- package/.agents/workflows/audit-devops.md +1 -1
- package/.agents/workflows/audit-documentation.md +2 -2
- package/.agents/workflows/audit-lighthouse.md +1 -1
- package/.agents/workflows/audit-performance.md +2 -2
- package/.agents/workflows/audit-privacy.md +1 -1
- package/.agents/workflows/audit-quality.md +2 -2
- package/.agents/workflows/audit-security.md +2 -2
- package/.agents/workflows/audit-seo.md +1 -1
- package/.agents/workflows/audit-sre.md +1 -1
- package/.agents/workflows/audit-to-stories.md +10 -10
- package/.agents/workflows/audit-ux-ui.md +1 -1
- package/.agents/workflows/deliver.md +85 -0
- package/.agents/workflows/explain.md +3 -3
- package/.agents/workflows/git-merge-pr.md +1 -1
- package/.agents/workflows/git-pr-all.md +13 -10
- package/.agents/workflows/git-push.md +6 -3
- package/.agents/workflows/helpers/_merge-conflict-template.md +1 -1
- package/.agents/workflows/helpers/acceptance-self-eval.md +1 -1
- package/.agents/workflows/helpers/code-review.md +5 -5
- package/.agents/workflows/{epic-deliver.md → helpers/deliver-epic.md} +43 -43
- package/.agents/workflows/{story-deliver.md → helpers/deliver-stories.md} +25 -25
- package/.agents/workflows/helpers/diagnose.md +1 -1
- package/.agents/workflows/helpers/epic-audit.md +6 -6
- package/.agents/workflows/helpers/epic-deliver-story.md +13 -13
- package/.agents/workflows/helpers/epic-plan-decompose.md +23 -23
- package/.agents/workflows/helpers/epic-plan-spec.md +6 -6
- package/.agents/workflows/helpers/epic-testing.md +3 -3
- package/.agents/workflows/helpers/parallel-tooling.md +1 -1
- package/.agents/workflows/{epic-plan.md → helpers/plan-epic.md} +84 -84
- package/.agents/workflows/{story-plan.md → helpers/plan-story.md} +43 -43
- package/.agents/workflows/helpers/signals.md +1 -1
- package/.agents/workflows/helpers/single-story-deliver.md +11 -11
- package/.agents/workflows/helpers/worktree-lifecycle.md +18 -18
- package/.agents/workflows/onboard.md +17 -17
- package/.agents/workflows/plan.md +89 -0
- package/.agents/workflows/qa-explore.md +1 -1
- package/.agents/workflows/qa-run-harness.md +1 -1
- package/README.md +4 -12
- package/docs/CHANGELOG.md +1149 -0
- package/lib/cli/__tests__/update-changelog-surface.test.js +357 -0
- package/lib/cli/__tests__/update-reexec.test.js +513 -0
- package/lib/cli/init.js +31 -29
- package/lib/cli/update.js +413 -52
- package/package.json +2 -1
- package/.agents/scripts/lib/orchestration/reconciler.js +0 -137
|
@@ -13,7 +13,7 @@ description:
|
|
|
13
13
|
- Phase 1 MUST restate the idea as a "How Might We" statement, ask 3–5 sharpening questions via `AskUserQuestion`, and generate 5–8 variations (not 20+ shallow ones); do not proceed until target user and success criteria are explicit.
|
|
14
14
|
- Phase 2 grill loop poses **one** question at a time, each with a recommended answer + one-line rationale grounded in user input / codebase / first principles; never batch questions and never omit the recommendation.
|
|
15
15
|
- Re-enumerate open branches after every grill answer; stop only when no unresolved decisions remain. Take the off-ramp directly to Phase 3 when the idea is already crisply scoped.
|
|
16
|
-
- Phase 3 emits a markdown one-pager with the canonical five Epic headings exactly: `## Context`, `## Goal`, `## Non-Goals`, `## Scope`, `## Acceptance Criteria` (plus optional `## Open Questions`). No alternate heading text — the `/
|
|
16
|
+
- Phase 3 emits a markdown one-pager with the canonical five Epic headings exactly: `## Context`, `## Goal`, `## Non-Goals`, `## Scope`, `## Acceptance Criteria` (plus optional `## Open Questions`). No alternate heading text — the `/plan` clarity gate depends on this verbatim.
|
|
17
17
|
- Surface every key assumption inside `## Context` (or `## Scope`); assumptions do not get their own heading. Unresolved decisions MUST NOT carry into the one-pager.
|
|
18
18
|
- The `## Non-Goals` list is mandatory and each entry includes a reason — focus is created by explicit exclusion.
|
|
19
19
|
- Be honest, not supportive: push back on weak ideas with kindness; never function as a yes-machine.
|
|
@@ -35,7 +35,7 @@ structured divergent and convergent thinking.
|
|
|
35
35
|
|
|
36
36
|
## Activation
|
|
37
37
|
|
|
38
|
-
Called from `/
|
|
38
|
+
Called from `/plan` Phase 1 (ideation entry, when no `<epic#>` is
|
|
39
39
|
supplied or `--idea "<seed>"` is passed) and Phase 6 (Epic Clarity Gate,
|
|
40
40
|
when an existing Epic body fails the section-presence rubric). In Phase 6
|
|
41
41
|
the skill is seeded from the **current Epic body** — not a blank seed —
|
|
@@ -73,7 +73,7 @@ The final output is a markdown one-pager saved to `docs/ideas/[idea-name].md`
|
|
|
73
73
|
|
|
74
74
|
Assumptions and open questions are recorded in the body of the relevant
|
|
75
75
|
section (typically under Context or Scope) rather than carved into their
|
|
76
|
-
own headings — the canonical five drive the `/
|
|
76
|
+
own headings — the canonical five drive the `/plan` clarity gate.
|
|
77
77
|
|
|
78
78
|
## Detailed Instructions
|
|
79
79
|
|
|
@@ -213,7 +213,7 @@ it inside the grill loop, not after the one-pager is already written.
|
|
|
213
213
|
|
|
214
214
|
Produce a concrete artifact — a markdown one-pager that moves work forward.
|
|
215
215
|
The five canonical headings below match `.agents/templates/epic-from-idea.md`
|
|
216
|
-
and the `/
|
|
216
|
+
and the `/plan` clarity gate; emit them verbatim so the renderer can
|
|
217
217
|
substitute the body into a new Epic without translation.
|
|
218
218
|
|
|
219
219
|
```markdown
|
|
@@ -152,9 +152,9 @@ This skill is the engine behind two operator-facing entry points:
|
|
|
152
152
|
|
|
153
153
|
- [`/explain`](../../../workflows/explain.md) — runs the loop over a realized
|
|
154
154
|
change (a PR, branch, or diff).
|
|
155
|
-
- [`/
|
|
155
|
+
- [`/plan`](../../../workflows/helpers/plan-epic.md) **Phase 11 — Plan
|
|
156
156
|
Comprehension Gate** — runs the loop over a freshly planned backlog before
|
|
157
|
-
the operator hands off to `/
|
|
157
|
+
the operator hands off to `/deliver`. That phase decides *whether* to
|
|
158
158
|
run via an LM-judgment predicate; this skill owns *how* it runs once
|
|
159
159
|
invoked.
|
|
160
160
|
|
|
@@ -13,7 +13,7 @@ description:
|
|
|
13
13
|
> teaches how to slice and order work into verifiable units, independent
|
|
14
14
|
> of any particular ticket hierarchy. The word "task" below refers to a
|
|
15
15
|
> generic unit of work, not specifically to a Mandrel ticket. Under
|
|
16
|
-
> Mandrel's
|
|
16
|
+
> Mandrel's 2-tier hierarchy (Epic → Story), these units map
|
|
17
17
|
> onto acceptance/verification bullets inlined on the Story body, or
|
|
18
18
|
> onto sequential sibling Stories. The principles — vertical slicing,
|
|
19
19
|
> dependency ordering, sizing caps, explicit acceptance and
|
|
@@ -4,7 +4,7 @@ description:
|
|
|
4
4
|
Judge whether a piece of planned work is epic-sized or story-sized before the
|
|
5
5
|
planning ceremony is paid for. Emits one of three verdicts —
|
|
6
6
|
`epic` | `story` | `borderline` — over any planning artifact (a one-pager, an
|
|
7
|
-
Epic body, or a Story draft). Use from `/
|
|
7
|
+
Epic body, or a Story draft). Use from `/plan` Phase 1.5 and any other
|
|
8
8
|
planning gate that needs the canonical story-vs-epic rubric.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -32,9 +32,8 @@ description:
|
|
|
32
32
|
wrong in the `epic` direction is cheap — the Phase 8.3 consolidation pass and
|
|
33
33
|
the sizing validator catch an over-planned Story later. Being wrong in the
|
|
34
34
|
`story` direction is expensive — a story-sized scope pushed through the full
|
|
35
|
-
Epic ceremony pays a PRD + Tech Spec + Acceptance Spec +
|
|
36
|
-
`epic/<id>` integration-branch tax for a degenerate one-
|
|
37
|
-
output.
|
|
35
|
+
Epic ceremony pays a PRD + Tech Spec + Acceptance Spec + Story backlog +
|
|
36
|
+
`epic/<id>` integration-branch tax for a degenerate one-Story output.
|
|
38
37
|
- Keep the rubric prose **artifact-agnostic**. The thing under judgment may be a
|
|
39
38
|
sharpened one-pager, an existing Epic body, or a draft Story — the rubric
|
|
40
39
|
reads the same against all three so every consumer reuses it verbatim.
|
|
@@ -62,7 +61,7 @@ The work is a single shippable capability. Signals:
|
|
|
62
61
|
architectural decision and matches none of the `planning.riskHeuristics` in
|
|
63
62
|
`.agentrc.json` (destructive/irreversible changes, shared auth/security,
|
|
64
63
|
CI/CD gate changes, monorepo-wide rewrites, destructive migrations).
|
|
65
|
-
- **Decomposition would degenerate.** Running it through `/
|
|
64
|
+
- **Decomposition would degenerate.** Running it through `/plan` would
|
|
66
65
|
plausibly yield exactly **one Feature with one Story** — the shape the Phase
|
|
67
66
|
8.3 consolidation skill flags only after all the spec authoring is already
|
|
68
67
|
sunk cost.
|
|
@@ -90,18 +89,18 @@ option; a borderline scope surfaced as borderline is the correct output.
|
|
|
90
89
|
A workflow entered via a scope-triage **handoff** MUST NOT re-triage. A handoff
|
|
91
90
|
*is* a triage decision already made — re-running this gate on the receiving side
|
|
92
91
|
would re-litigate a settled call and risk a ping-pong between two planning
|
|
93
|
-
workflows. Handoff invocations identify themselves as such (e.g. `/
|
|
94
|
-
entered via a `/
|
|
95
|
-
via an `/
|
|
92
|
+
workflows. Handoff invocations identify themselves as such (e.g. `/plan`
|
|
93
|
+
entered via a `/plan` scope-triage escalation, or `/plan` entered
|
|
94
|
+
via an `/plan` Phase 1.5 handoff), and the receiving workflow skips its own
|
|
96
95
|
scope-triage gate when it detects the handoff marker.
|
|
97
96
|
|
|
98
97
|
## When to use
|
|
99
98
|
|
|
100
|
-
- **`/
|
|
99
|
+
- **`/plan` Phase 1.5** (ideation path only) — judge the sharpened
|
|
101
100
|
one-pager Phase 1 produced before the Epic ceremony is paid for. The verdict
|
|
102
101
|
folds into the existing Phase 1 HITL stop; on a `story` / `borderline`
|
|
103
102
|
verdict the operator may hand off to
|
|
104
|
-
[`/
|
|
103
|
+
[`/plan --from-notes`](../../../workflows/helpers/plan-story.md).
|
|
105
104
|
- Any other planning gate that needs the canonical story-vs-epic rubric. Keep
|
|
106
105
|
the rubric here as the SSOT; consumers reference this file rather than
|
|
107
106
|
forking the prose.
|
|
@@ -101,7 +101,7 @@ In that context:
|
|
|
101
101
|
2. If you genuinely cannot proceed, transition to `agent::blocked`, post a
|
|
102
102
|
`friction` structured comment naming the decision required and the
|
|
103
103
|
default assumption you would have made, and exit non-zero. The parent
|
|
104
|
-
`/
|
|
104
|
+
`/deliver` aggregator will surface the block.
|
|
105
105
|
3. **Never** stall waiting for input that will never arrive.
|
|
106
106
|
|
|
107
107
|
This is the only documented exception to the "Manage Confusion Actively"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-06-
|
|
2
|
+
"generatedAt": "2026-06-11T19:47:29.752Z",
|
|
3
3
|
"generator": "generate-skills-index.js@1",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"tier": "core",
|
|
8
8
|
"category": "core",
|
|
9
9
|
"path": ".agents/skills/core/analyze-execution/SKILL.md",
|
|
10
|
-
"description": "Aggregate per-Story or per-Epic execution signals into a structured perf-summary or perf-report and upsert it onto the corresponding GitHub ticket. Use after a Story closes (Story mode) or as part of `/
|
|
10
|
+
"description": "Aggregate per-Story or per-Epic execution signals into a structured perf-summary or perf-report and upsert it onto the corresponding GitHub ticket. Use after a Story closes (Story mode) or as part of `/deliver` Phase 6 (Epic mode). Reads NDJSON via `lib/signals/read` and writes a single structured comment.",
|
|
11
11
|
"policyCapsuleBullets": 8,
|
|
12
12
|
"allowedTools": ["Read", "Bash"],
|
|
13
13
|
"vendor": null
|
|
@@ -127,8 +127,8 @@
|
|
|
127
127
|
"tier": "core",
|
|
128
128
|
"category": "core",
|
|
129
129
|
"path": ".agents/skills/core/epic-plan-consolidate/SKILL.md",
|
|
130
|
-
"description": "Run a holistic, pre-persist consolidation pass over the draft
|
|
131
|
-
"policyCapsuleBullets":
|
|
130
|
+
"description": "Run a holistic, pre-persist consolidation pass over the draft Story ticket array an Epic's decompose phase produced. Use during Phase 8 of `/plan`, after `epic-plan-decompose-author` writes `temp/epic-<Epic_ID>/tickets.json` and before `epic-plan-decompose.js` validates and persists it. Reconciles the draft against the Tech Spec \"Delivery Slicing\" target via scope-preserving operations only.",
|
|
131
|
+
"policyCapsuleBullets": 8,
|
|
132
132
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
133
133
|
"vendor": null
|
|
134
134
|
},
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"tier": "core",
|
|
138
138
|
"category": "core",
|
|
139
139
|
"path": ".agents/skills/core/epic-plan-decompose-author/SKILL.md",
|
|
140
|
-
"description": "Author the
|
|
140
|
+
"description": "Author the Story ticket JSON for an Epic from the decomposer authoring context emitted by `epic-plan-decompose.js --emit-context`. Use during Phase 8 of `/plan` when the host LLM needs to write the ticket array before `epic-plan-decompose.js` validates and persists it.",
|
|
141
141
|
"policyCapsuleBullets": 12,
|
|
142
142
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
143
143
|
"vendor": null
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
"tier": "core",
|
|
148
148
|
"category": "core",
|
|
149
149
|
"path": ".agents/skills/core/epic-plan-spec-author/SKILL.md",
|
|
150
|
-
"description": "Author the PRD, Tech Spec, Acceptance Spec markdown, and risk-verdict JSON for an Epic from the planner authoring context emitted by `epic-plan-spec.js --emit-context`. Use during Phase 7 of `/
|
|
150
|
+
"description": "Author the PRD, Tech Spec, Acceptance Spec markdown, and risk-verdict JSON for an Epic from the planner authoring context emitted by `epic-plan-spec.js --emit-context`. Use during Phase 7 of `/plan` when the host LLM needs to write the four artifacts before `epic-plan-spec.js` persists them.",
|
|
151
151
|
"policyCapsuleBullets": 12,
|
|
152
152
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
153
153
|
"vendor": null
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
"tier": "core",
|
|
288
288
|
"category": "core",
|
|
289
289
|
"path": ".agents/skills/core/scope-triage/SKILL.md",
|
|
290
|
-
"description": "Judge whether a piece of planned work is epic-sized or story-sized before the planning ceremony is paid for. Emits one of three verdicts — `epic` | `story` | `borderline` — over any planning artifact (a one-pager, an Epic body, or a Story draft). Use from `/
|
|
290
|
+
"description": "Judge whether a piece of planned work is epic-sized or story-sized before the planning ceremony is paid for. Emits one of three verdicts — `epic` | `story` | `borderline` — over any planning artifact (a one-pager, an Epic body, or a Story draft). Use from `/plan` Phase 1.5 and any other planning gate that needs the canonical story-vs-epic rubric.",
|
|
291
291
|
"policyCapsuleBullets": 1,
|
|
292
292
|
"allowedTools": null,
|
|
293
293
|
"vendor": null
|
|
@@ -5,8 +5,8 @@ Version: {{PROTOCOL_VERSION}}
|
|
|
5
5
|
You are an AI coding assistant. This protocol governs your execution of the
|
|
6
6
|
current work unit. You must follow these rules strictly.
|
|
7
7
|
|
|
8
|
-
> **Hierarchy shape.** Mandrel uses a **
|
|
9
|
-
> (Epic →
|
|
8
|
+
> **Hierarchy shape.** Mandrel uses a **2-tier hierarchy**
|
|
9
|
+
> (Epic → Story). The work unit is the `type::story` issue
|
|
10
10
|
> itself, with acceptance criteria and verification inlined on the
|
|
11
11
|
> Story body. There is no per-Task sub-loop; the agent authors commit
|
|
12
12
|
> subjects directly per `.agents/rules/git-conventions.md` and
|
|
@@ -222,7 +222,7 @@ The four `quality-bootstrap` outcomes:
|
|
|
222
222
|
|
|
223
223
|
The `baselines-layout-migration` step relocates per-Epic snapshots
|
|
224
224
|
into the `temp/epic/<id>/baselines/` namespace (Story #1467: ephemeral
|
|
225
|
-
scratch state, not committed, reaped on `/
|
|
225
|
+
scratch state, not committed, reaped on `/deliver` merge with the
|
|
226
226
|
rest of the per-Epic temp tree):
|
|
227
227
|
|
|
228
228
|
- Loose `baselines/epic-<id>-{maintainability,crap}.json` files →
|
|
@@ -246,7 +246,7 @@ guarantee `agents-update`'s idempotence contract requires.
|
|
|
246
246
|
A framework bump frequently introduces new helper scripts and `node
|
|
247
247
|
.agents/scripts/<name>.js` invocations the consumer's
|
|
248
248
|
`.claude/settings.json` allowlist has never seen. Left alone, the next
|
|
249
|
-
`/
|
|
249
|
+
`/deliver` or `/deliver` run trips a fresh wave of
|
|
250
250
|
permission prompts that operators answer by hand — and those hand-tuned
|
|
251
251
|
allowlists drift across projects.
|
|
252
252
|
|
|
@@ -19,7 +19,7 @@ existing external APIs or business logic.
|
|
|
19
19
|
## Execution strategy (dual-path)
|
|
20
20
|
|
|
21
21
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
22
|
-
report contract (Step 3); downstream consumers (`/
|
|
22
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
23
23
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
24
24
|
|
|
25
25
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -72,7 +72,7 @@ degrade to the sequential path.
|
|
|
72
72
|
|
|
73
73
|
## Scope (Epic mode)
|
|
74
74
|
|
|
75
|
-
When this lens is invoked from `/
|
|
75
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
76
76
|
following block is populated with the Epic's change-set file list.
|
|
77
77
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
78
78
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ velocity.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -39,7 +39,7 @@ before this section existed.
|
|
|
39
39
|
## Execution strategy (dual-path)
|
|
40
40
|
|
|
41
41
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
42
|
-
report contract (Step 3); downstream consumers (`/
|
|
42
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
43
43
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
44
44
|
|
|
45
45
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -16,7 +16,7 @@ system stability.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ without making any immediate changes.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -49,7 +49,7 @@ semantic review beyond Step 1's deterministic checks.
|
|
|
49
49
|
|
|
50
50
|
## Scope (Epic mode)
|
|
51
51
|
|
|
52
|
-
When this lens is invoked from `/
|
|
52
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
53
53
|
following block is populated with the Epic's change-set file list.
|
|
54
54
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
55
55
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -71,7 +71,7 @@ before this section existed.
|
|
|
71
71
|
## Execution strategy (dual-path)
|
|
72
72
|
|
|
73
73
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
74
|
-
report contract (Step 3); downstream consumers (`/
|
|
74
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
75
75
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
76
76
|
|
|
77
77
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -31,7 +31,7 @@ inflate Performance scores misleadingly.
|
|
|
31
31
|
|
|
32
32
|
## Scope (Epic mode)
|
|
33
33
|
|
|
34
|
-
When this lens is invoked from `/
|
|
34
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
35
35
|
following block is populated with the Epic's change-set file list.
|
|
36
36
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
37
37
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -16,7 +16,7 @@ load.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -38,7 +38,7 @@ before this section existed.
|
|
|
38
38
|
## Execution strategy (dual-path)
|
|
39
39
|
|
|
40
40
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
41
|
-
report contract (Step 3); downstream consumers (`/
|
|
41
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
42
42
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
43
43
|
|
|
44
44
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -17,7 +17,7 @@ insecure storage, or unnecessary collection of sensitive data.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -26,7 +26,7 @@ integrations, and test environment stability.
|
|
|
26
26
|
|
|
27
27
|
## Scope (Epic mode)
|
|
28
28
|
|
|
29
|
-
When this lens is invoked from `/
|
|
29
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
30
30
|
following block is populated with the Epic's change-set file list.
|
|
31
31
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
32
32
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -48,7 +48,7 @@ before this section existed.
|
|
|
48
48
|
## Execution strategy (dual-path)
|
|
49
49
|
|
|
50
50
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
51
|
-
report contract (Step 3); downstream consumers (`/
|
|
51
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
52
52
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
53
53
|
|
|
54
54
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -16,7 +16,7 @@ potential attack vectors.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -38,7 +38,7 @@ before this section existed.
|
|
|
38
38
|
## Execution strategy (dual-path)
|
|
39
39
|
|
|
40
40
|
This lens runs along one of two execution paths. Both emit the **identical**
|
|
41
|
-
report contract (Step 3); downstream consumers (`/
|
|
41
|
+
report contract (Step 3); downstream consumers (`/deliver` Phase 4
|
|
42
42
|
epic-audit, `audit-to-stories`) are agnostic to which path produced it.
|
|
43
43
|
|
|
44
44
|
- **Orchestrated (dynamic-workflow) path.** When Claude Code's
|
|
@@ -20,7 +20,7 @@ indexes and AI-powered answer engines — without making any immediate changes.
|
|
|
20
20
|
|
|
21
21
|
## Scope (Epic mode)
|
|
22
22
|
|
|
23
|
-
When this lens is invoked from `/
|
|
23
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
24
24
|
following block is populated with the Epic's change-set file list.
|
|
25
25
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
26
26
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -17,7 +17,7 @@ actionable report that can be handed off for remediation before deployment.
|
|
|
17
17
|
|
|
18
18
|
## Scope (Epic mode)
|
|
19
19
|
|
|
20
|
-
When this lens is invoked from `/
|
|
20
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
21
21
|
following block is populated with the Epic's change-set file list.
|
|
22
22
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
23
23
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -3,7 +3,7 @@ description:
|
|
|
3
3
|
Convert findings produced by the audit-* workflows into actionable
|
|
4
4
|
GitHub Stories. Reads temp/audits/audit-*-results.md, groups findings
|
|
5
5
|
cross-audit, deduplicates against existing Issues by fingerprint, and
|
|
6
|
-
either chains into /
|
|
6
|
+
either chains into /plan --idea or opens standalone Stories.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# /audit-to-stories [audit-file-or-glob]
|
|
@@ -22,7 +22,7 @@ Dimension / Category, Current State, Recommendation, Agent Prompt).
|
|
|
22
22
|
`/audit-to-stories` closes the loop: it parses those reports, groups
|
|
23
23
|
related findings (including across audit dimensions), classifies each
|
|
24
24
|
group as eligible-to-create or already-tracked, and — at the operator's
|
|
25
|
-
choice — either chains into `/
|
|
25
|
+
choice — either chains into `/plan --idea` for a single planned
|
|
26
26
|
Epic or opens standalone Stories directly.
|
|
27
27
|
|
|
28
28
|
The audit producers themselves are **not modified** by this workflow.
|
|
@@ -117,8 +117,8 @@ Ask:
|
|
|
117
117
|
|
|
118
118
|
> How would you like these `<M>` Stories created?
|
|
119
119
|
>
|
|
120
|
-
> - **Single Epic via `/
|
|
121
|
-
> then chains into `/
|
|
120
|
+
> - **Single Epic via `/plan`** **[Recommended]** — opens one Epic,
|
|
121
|
+
> then chains into `/plan --idea` so the standard PRD / Tech Spec
|
|
122
122
|
> / WBS authoring handles decomposition. Grouped Stories become the
|
|
123
123
|
> seed for Phase 7 decomposition.
|
|
124
124
|
> - **Individual standalone Stories** — opens one GitHub Issue per
|
|
@@ -128,7 +128,7 @@ Ask:
|
|
|
128
128
|
|
|
129
129
|
## Phase 5a — Single-Epic path
|
|
130
130
|
|
|
131
|
-
Build the `/
|
|
131
|
+
Build the `/plan` idea seed from the filtered plan envelope:
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
134
|
node .agents/scripts/audit-to-stories.js --emit-epic-seed \
|
|
@@ -138,16 +138,16 @@ node .agents/scripts/audit-to-stories.js --emit-epic-seed \
|
|
|
138
138
|
|
|
139
139
|
The seed renders the canonical one-pager sections — Problem Statement,
|
|
140
140
|
Recommended Direction, Key Assumptions (with links to every source
|
|
141
|
-
report), MVP Scope (the M proposed Stories), Key Files (so `/
|
|
141
|
+
report), MVP Scope (the M proposed Stories), Key Files (so `/plan`
|
|
142
142
|
Phase 7 decompose has concrete anchors), Not Doing.
|
|
143
143
|
|
|
144
144
|
Chain into the existing planning entrypoint:
|
|
145
145
|
|
|
146
146
|
```text
|
|
147
|
-
/
|
|
147
|
+
/plan --idea "<path-to-seed>"
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
`/
|
|
150
|
+
`/plan` then runs ideation → duplicate-search → render Epic body
|
|
151
151
|
→ open Epic → Phase 7 / 8 decompose, as documented in its workflow.
|
|
152
152
|
Each Story it spawns from the seed carries `context::audit:
|
|
153
153
|
<reportLink>` and `audit-fingerprint: <sha>` in its body so future
|
|
@@ -225,7 +225,7 @@ summarising the run:
|
|
|
225
225
|
- Final tally: `"<M> groups planned · <K> created · <J> skipped (open)
|
|
226
226
|
· <L> skipped (re-occurring)"`.
|
|
227
227
|
|
|
228
|
-
When the Single-Epic path ran, link the Epic the chained `/
|
|
228
|
+
When the Single-Epic path ran, link the Epic the chained `/plan`
|
|
229
229
|
opened. When the Standalone-Stories path ran, list every Issue URL.
|
|
230
230
|
|
|
231
231
|
## Constraints
|
|
@@ -250,7 +250,7 @@ opened. When the Standalone-Stories path ran, list every Issue URL.
|
|
|
250
250
|
|
|
251
251
|
## See also
|
|
252
252
|
|
|
253
|
-
- [`/
|
|
253
|
+
- [`/plan`](helpers/plan-epic.md) — the planning pipeline `/audit-to-stories`
|
|
254
254
|
chains into for the Single-Epic grouping mode.
|
|
255
255
|
- [`lib/findings/route-finding.js`](../scripts/lib/findings/route-finding.js) —
|
|
256
256
|
the shared fingerprint/dedup/route helper this workflow and `qa-explore`
|
|
@@ -16,7 +16,7 @@ and cohesive.
|
|
|
16
16
|
|
|
17
17
|
## Scope (Epic mode)
|
|
18
18
|
|
|
19
|
-
When this lens is invoked from `/
|
|
19
|
+
When this lens is invoked from `/deliver` Phase 4 (epic-audit), the
|
|
20
20
|
following block is populated with the Epic's change-set file list.
|
|
21
21
|
Otherwise — for any manual `/audit-<dimension>` invocation — the block
|
|
22
22
|
renders the literal substitution token and you MUST treat it as **no
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
description:
|
|
3
|
+
Unified delivery entry point. Inspects the ticket type(s) and
|
|
4
|
+
Epic-reference state of the supplied IDs, then routes to the Epic wave
|
|
5
|
+
loop or the standalone multi-Story fan-out — preserving every flag and
|
|
6
|
+
the parallel-delivery contract of the retired commands.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /deliver [Epic ID] | [Story IDs...]
|
|
10
|
+
|
|
11
|
+
## Role
|
|
12
|
+
|
|
13
|
+
Router. `/deliver` owns input classification and path selection only — all
|
|
14
|
+
phase content lives in the two path helpers:
|
|
15
|
+
|
|
16
|
+
- [`helpers/deliver-epic.md`](helpers/deliver-epic.md) — the full Epic
|
|
17
|
+
delivery loop (preflight, wave loop fanning out
|
|
18
|
+
[`helpers/epic-deliver-story`](helpers/epic-deliver-story.md),
|
|
19
|
+
close-validation, epic-audit, code-review, retro, finalize, watch,
|
|
20
|
+
auto-merge gate, cleanup).
|
|
21
|
+
- [`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the
|
|
22
|
+
standalone multi-Story path (`stories-wave-tick.js` wave plan, operator
|
|
23
|
+
confirmation, parallel fan-out to
|
|
24
|
+
[`helpers/single-story-deliver`](helpers/single-story-deliver.md)).
|
|
25
|
+
|
|
26
|
+
## Input matrix (authoritative)
|
|
27
|
+
|
|
28
|
+
Fetch each supplied ID's labels and body (`type::*` label, `Epic: #N`
|
|
29
|
+
reference) before routing:
|
|
30
|
+
|
|
31
|
+
| Input | Route |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Exactly one `type::epic` ID | **Epic path** — run [`helpers/deliver-epic.md`](helpers/deliver-epic.md) Phases 1–9 unchanged. |
|
|
34
|
+
| One or more `type::story` IDs, none carrying an `Epic: #N` reference | **Standalone path** — run [`helpers/deliver-stories.md`](helpers/deliver-stories.md) Phases 0–3. |
|
|
35
|
+
| Any Story carrying an `Epic: #N` reference | **Error**, naming the fix: `Story #<id> belongs to Epic #<n> — run /deliver <n>`. |
|
|
36
|
+
| Mixed Epic + Story IDs, or more than one Epic | **Error**: separate invocations — one `/deliver <epicId>` per Epic, one `/deliver <id> [<id>...]` for the standalone set. |
|
|
37
|
+
|
|
38
|
+
## Flags (forwarded per path)
|
|
39
|
+
|
|
40
|
+
| Path | Flags |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| Epic | `--skip-epic-audit`, `--skip-code-review`, `--skip-retro`, `--full-retro`, `--steal`, `--as <handle>` |
|
|
43
|
+
| Story | `--dep <from>:<to>`, `--yes`, `--concurrency <n>` |
|
|
44
|
+
|
|
45
|
+
A flag passed to the wrong path is reported once as a no-op warning and
|
|
46
|
+
ignored — never an error.
|
|
47
|
+
|
|
48
|
+
**Multi-Story parallel contract (preserved verbatim).**
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
/deliver <id> <id> … --dep <from>:<to> --concurrency <n> --yes
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
behaves exactly as the retired multi-Story command did: the same
|
|
55
|
+
`stories-wave-tick.js` wave plan, the same operator confirmation gate
|
|
56
|
+
(suppressed by `--yes`), and the same parallel fan-out — one Agent call per
|
|
57
|
+
Story per wave, capped by the resolved `concurrencyCap` — to
|
|
58
|
+
[`helpers/single-story-deliver`](helpers/single-story-deliver.md).
|
|
59
|
+
|
|
60
|
+
## Procedure
|
|
61
|
+
|
|
62
|
+
1. **Parse args.** At least one positive-integer ID is required.
|
|
63
|
+
2. **Classify.** Fetch each ticket's labels + body and apply the input
|
|
64
|
+
matrix above. Refuse ambiguous input with the matrix's error messages —
|
|
65
|
+
never guess a route.
|
|
66
|
+
3. **Delegate.** Read the selected path helper **in full** and execute it
|
|
67
|
+
from its entry phase, forwarding the absorbed flags. The helper's phase
|
|
68
|
+
numbering, watchdogs, gates, and scripts are unchanged — this router
|
|
69
|
+
adds no phase content.
|
|
70
|
+
|
|
71
|
+
## Constraints
|
|
72
|
+
|
|
73
|
+
- `/deliver` requires a planned ticket: an Epic at `agent::ready` (the
|
|
74
|
+
Epic helper's preflight enforces this) or well-formed standalone Stories.
|
|
75
|
+
Planning happens in [`/plan`](plan.md); the plan-review gate between the
|
|
76
|
+
two commands is a hard boundary.
|
|
77
|
+
- The router performs no git or label mutations itself; the path helpers
|
|
78
|
+
own every script invocation.
|
|
79
|
+
|
|
80
|
+
## See also
|
|
81
|
+
|
|
82
|
+
- [`/plan`](plan.md) — the unified planning entry point.
|
|
83
|
+
- [`helpers/deliver-epic.md`](helpers/deliver-epic.md) /
|
|
84
|
+
[`helpers/deliver-stories.md`](helpers/deliver-stories.md) — the path
|
|
85
|
+
helpers.
|
|
@@ -14,7 +14,7 @@ description:
|
|
|
14
14
|
landed (or is about to) and you want to be sure you actually understand it —
|
|
15
15
|
the problem it solves, why it was solved this way, the design decisions, the
|
|
16
16
|
edge cases, and the blast radius. It is the after-the-fact counterpart to
|
|
17
|
-
[`/
|
|
17
|
+
[`/plan`](helpers/plan-epic.md) Phase 11 (which walks the operator through a
|
|
18
18
|
*plan* before delivery); both drive the same engine.
|
|
19
19
|
|
|
20
20
|
```text
|
|
@@ -39,7 +39,7 @@ contract.
|
|
|
39
39
|
| Understand a change that already merged | `/explain <PR#>` |
|
|
40
40
|
| Understand a branch before merging it | `/explain <branch>` |
|
|
41
41
|
| Understand what you are about to commit | `/explain --staged` |
|
|
42
|
-
| Understand a freshly planned Epic backlog | `/
|
|
42
|
+
| Understand a freshly planned Epic backlog | `/plan` Phase 11 (automatic) |
|
|
43
43
|
|
|
44
44
|
## Step 1 — Resolve the subject
|
|
45
45
|
|
|
@@ -111,7 +111,7 @@ structured-question mechanism when it sharpens understanding.
|
|
|
111
111
|
|
|
112
112
|
- [`core/knowledge-transfer`](../skills/core/knowledge-transfer/SKILL.md) —
|
|
113
113
|
the comprehension engine this command drives.
|
|
114
|
-
- [`/
|
|
114
|
+
- [`/plan`](helpers/plan-epic.md) — Phase 11 runs the same engine over a plan
|
|
115
115
|
before delivery.
|
|
116
116
|
- `/code-review` (Claude Code built-in) — correctness review of a diff. A
|
|
117
117
|
different concern: `/explain` builds *operator* understanding, not a defect
|
|
@@ -235,7 +235,7 @@ Merge the PR as a squash commit and delete the head branch. Call
|
|
|
235
235
|
|
|
236
236
|
After the merge command returns, perform a conflict marker scan to confirm no
|
|
237
237
|
stray markers entered the base branch. Delegate to `detect-merges.js` — it
|
|
238
|
-
owns the scan logic and is the same script used by `/
|
|
238
|
+
owns the scan logic and is the same script used by `/deliver` Phase 5.3.
|
|
239
239
|
|
|
240
240
|
```powershell
|
|
241
241
|
git checkout [BASE_BRANCH]
|