mandrel 1.92.0 → 1.94.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/agents/acceptance-critic.md +129 -0
- package/.agents/agents/retro.md +42 -0
- package/.agents/agents/story-worker.md +162 -0
- package/.agents/docs/configuration.md +7 -1
- package/.agents/docs/execution-reference.md +27 -2
- package/.agents/instructions.md +43 -33
- package/.agents/personas/engineer.md +26 -112
- package/.agents/personas/security-engineer.md +1 -2
- package/.agents/rules/git-conventions-reference.md +225 -0
- package/.agents/rules/git-conventions.md +25 -200
- package/.agents/rules/security-baseline.md +5 -0
- package/.agents/rules/testing-standards.md +106 -13
- package/.agents/schemas/agentrc.schema.json +31 -1
- package/.agents/schemas/lifecycle/slice.end.schema.json +21 -0
- package/.agents/schemas/lifecycle/slice.heartbeat.schema.json +20 -0
- package/.agents/schemas/lifecycle/slice.start.schema.json +17 -0
- package/.agents/scripts/acceptance-eval.js +62 -18
- package/.agents/scripts/agents-bootstrap-github.js +1 -1
- package/.agents/scripts/bookkeeping-reconcile.js +117 -0
- package/.agents/scripts/check-context-budget.js +62 -5
- package/.agents/scripts/diagnose-friction.js +0 -6
- package/.agents/scripts/epic-deliver-prepare.js +272 -10
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +56 -18
- package/.agents/scripts/lib/close-validation/gates.js +159 -21
- package/.agents/scripts/lib/config/acceptance-eval.js +52 -5
- package/.agents/scripts/lib/config/delivery-routing.js +87 -0
- package/.agents/scripts/lib/config/explain.js +2 -0
- package/.agents/scripts/lib/config-resolver.js +1 -1
- package/.agents/scripts/lib/config-settings-schema-delivery.js +37 -3
- package/.agents/scripts/lib/config-settings-schema-quality.js +9 -0
- package/.agents/scripts/lib/doc-tiers.js +37 -2
- package/.agents/scripts/lib/observability/active-story-env.js +111 -2
- package/.agents/scripts/lib/observability/hook-heartbeat.js +219 -0
- package/.agents/scripts/lib/observability/tool-trace-hook.js +15 -4
- package/.agents/scripts/lib/orchestration/acceptance-clusters.js +111 -0
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +32 -4
- package/.agents/scripts/lib/orchestration/bookkeeping-outbox.js +270 -0
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +141 -0
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +3 -124
- package/.agents/scripts/lib/orchestration/deliver-route.js +173 -0
- package/.agents/scripts/lib/orchestration/epic-plan-spec/phases/authoring-context.js +1 -1
- package/.agents/scripts/lib/orchestration/epic-run-state-store.js +233 -0
- package/.agents/scripts/lib/orchestration/file-assumptions.js +68 -7
- package/.agents/scripts/lib/orchestration/lifecycle/emit-slice-lifecycle.js +270 -0
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/acceptance-reconciler.js +83 -2
- package/.agents/scripts/lib/orchestration/lifecycle/listeners/checkpoint-pointer-writer.js +6 -0
- package/.agents/scripts/lib/orchestration/plan-context.js +189 -3
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +3 -2
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +99 -0
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +38 -1
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +16 -1
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +1 -0
- package/.agents/scripts/lib/orchestration/story-close/pre-merge-validation.js +1 -0
- package/.agents/scripts/lib/orchestration/ticket-validator.js +19 -2
- package/.agents/scripts/lib/provider-factory.js +1 -1
- package/.agents/scripts/lib/templates/decomposer-prompts.js +1 -1
- package/.agents/scripts/plan-context.js +28 -10
- package/.agents/scripts/post-structured-comment.js +38 -0
- package/.agents/scripts/slice-phase.js +361 -0
- package/.agents/scripts/sync-claude-agents.js +165 -0
- package/.agents/scripts/update-ticket-state.js +31 -0
- package/.agents/scripts/wave-tick.js +138 -9
- package/.agents/skills/core/api-and-interface-design/SKILL.md +5 -3
- package/.agents/skills/core/code-review-and-quality/SKILL.md +63 -7
- package/.agents/skills/core/debugging-and-error-recovery/SKILL.md +1 -1
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +5 -5
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +8 -8
- package/.agents/skills/core/epic-plan-premortem/SKILL.md +4 -4
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +26 -56
- package/.agents/skills/core/gates-and-baselines/SKILL.md +149 -0
- package/.agents/skills/core/idea-refinement/SKILL.md +2 -8
- package/.agents/skills/core/qa-coverage-mapping/SKILL.md +7 -7
- package/.agents/skills/skills.index.json +11 -381
- package/.agents/workflows/deliver.md +47 -4
- package/.agents/workflows/helpers/acceptance-self-eval.md +38 -13
- package/.agents/workflows/helpers/deliver-epic-reference.md +18 -5
- package/.agents/workflows/helpers/deliver-epic-single.md +331 -0
- package/.agents/workflows/helpers/deliver-epic.md +51 -8
- package/.agents/workflows/helpers/deliver-stories.md +15 -5
- package/.agents/workflows/helpers/epic-deliver-story.md +12 -3
- package/.agents/workflows/helpers/mandrel-sync-config.md +1 -1
- package/.agents/workflows/helpers/plan-epic-reference.md +19 -8
- package/.agents/workflows/helpers/plan-epic.md +95 -27
- package/.agents/workflows/helpers/scope-triage-gate.md +9 -0
- package/.agents/workflows/mandrel-update.md +1 -1
- package/.agents/workflows/plan.md +16 -4
- package/docs/CHANGELOG.md +23 -0
- package/lib/cli/registry.js +95 -0
- package/package.json +4 -2
- package/.agents/personas/engineer-mobile.md +0 -120
- package/.agents/personas/engineer-web.md +0 -111
- package/.agents/personas/product.md +0 -94
- package/.agents/personas/refactorer.md +0 -113
- package/.agents/personas/sre.md +0 -86
- package/.agents/personas/ux-designer.md +0 -95
- package/.agents/scripts/epic-plan-decompose.js +0 -54
- package/.agents/scripts/epic-plan-spec.js +0 -64
- package/.agents/scripts/lib/orchestration/skill-capsule-loader.js +0 -109
- package/.agents/scripts/plan-critics.js +0 -227
- package/.agents/skills/core/baseline-refresh/SKILL.md +0 -181
- package/.agents/skills/core/ci-cd-and-automation/SKILL.md +0 -274
- package/.agents/skills/core/ci-cd-and-automation/examples.md +0 -211
- package/.agents/skills/core/code-simplification/SKILL.md +0 -389
- package/.agents/skills/core/context-engineering/SKILL.md +0 -309
- package/.agents/skills/core/context-engineering/examples.md +0 -58
- package/.agents/skills/core/deprecation-and-migration/SKILL.md +0 -250
- package/.agents/skills/core/frontend-ui-engineering/SKILL.md +0 -357
- package/.agents/skills/core/hydrate-context/SKILL.md +0 -123
- package/.agents/skills/core/idea-refinement/examples.md +0 -437
- package/.agents/skills/core/idea-refinement/frameworks.md +0 -135
- package/.agents/skills/core/incremental-implementation/SKILL.md +0 -271
- package/.agents/skills/core/introducing-a-baseline-gate/SKILL.md +0 -213
- package/.agents/skills/core/knowledge-transfer/SKILL.md +0 -180
- package/.agents/skills/core/mutation-survivor-remediation/SKILL.md +0 -117
- package/.agents/skills/core/performance-optimization/SKILL.md +0 -314
- package/.agents/skills/core/planning-and-task-breakdown/SKILL.md +0 -277
- package/.agents/skills/core/property-based-testing/SKILL.md +0 -148
- package/.agents/skills/core/refactoring-discipline/SKILL.md +0 -111
- package/.agents/skills/core/shipping-and-launch/SKILL.md +0 -328
- package/.agents/skills/core/spec-driven-development/SKILL.md +0 -252
- package/.agents/skills/core/test-driven-development/SKILL.md +0 -475
- package/.agents/skills/core/using-agent-skills/SKILL.md +0 -232
- package/.agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md +0 -31
- package/.agents/skills/stack/architecture/structured-output-zod/SKILL.md +0 -51
- package/.agents/skills/stack/architecture/subagent-orchestration/SKILL.md +0 -76
- package/.agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-hono-architect/examples/route-template.ts +0 -33
- package/.agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md +0 -31
- package/.agents/skills/stack/backend/cloudflare-workers/SKILL.md +0 -51
- package/.agents/skills/stack/backend/highlevel-crm/SKILL.md +0 -54
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md +0 -29
- package/.agents/skills/stack/backend/sqlite-drizzle-expert/examples/schema-template.ts +0 -30
- package/.agents/skills/stack/backend/stripe-integration/SKILL.md +0 -57
- package/.agents/skills/stack/backend/stripe-integration/scripts/listen-stripe.sh +0 -9
- package/.agents/skills/stack/backend/turso-sqlite/SKILL.md +0 -48
- package/.agents/skills/stack/frontend/astro/SKILL.md +0 -62
- package/.agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md +0 -30
- package/.agents/skills/stack/frontend/expo-react-native-developer/SKILL.md +0 -29
- package/.agents/skills/stack/frontend/google-analytics-v4/SKILL.md +0 -50
- package/.agents/skills/stack/frontend/tailwind-v4/SKILL.md +0 -58
- package/.agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md +0 -34
- package/.agents/skills/stack/qa/audit-accessibility/SKILL.md +0 -51
- package/.agents/skills/stack/qa/lighthouse-baseline/SKILL.md +0 -199
- package/.agents/skills/stack/security/backend-security-patterns/SKILL.md +0 -68
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-07-
|
|
2
|
+
"generatedAt": "2026-07-13T15:00:10.171Z",
|
|
3
3
|
"generator": "generate-skills-index.js@1",
|
|
4
4
|
"skills": [
|
|
5
5
|
{
|
|
@@ -22,16 +22,6 @@
|
|
|
22
22
|
"allowedTools": null,
|
|
23
23
|
"vendor": null
|
|
24
24
|
},
|
|
25
|
-
{
|
|
26
|
-
"name": "baseline-refresh",
|
|
27
|
-
"tier": "core",
|
|
28
|
-
"category": "core",
|
|
29
|
-
"path": ".agents/skills/core/baseline-refresh/SKILL.md",
|
|
30
|
-
"description": "Author a refresh commit for any of the unified-baseline snapshots (CRAP, maintainability, dead-exports, lighthouse). Use whenever an intentional code change resets a baseline key (rename, deliberate complexity bump, perf regression with operator sign-off) and the close-validation chain needs the refreshed snapshot to land on the same Story branch as the triggering edit.",
|
|
31
|
-
"policyCapsuleBullets": 10,
|
|
32
|
-
"allowedTools": ["Read", "Write", "Bash"],
|
|
33
|
-
"vendor": null
|
|
34
|
-
},
|
|
35
25
|
{
|
|
36
26
|
"name": "browser-testing-with-devtools",
|
|
37
27
|
"tier": "core",
|
|
@@ -42,43 +32,13 @@
|
|
|
42
32
|
"allowedTools": null,
|
|
43
33
|
"vendor": null
|
|
44
34
|
},
|
|
45
|
-
{
|
|
46
|
-
"name": "ci-cd-and-automation",
|
|
47
|
-
"tier": "core",
|
|
48
|
-
"category": "core",
|
|
49
|
-
"path": ".agents/skills/core/ci-cd-and-automation/SKILL.md",
|
|
50
|
-
"description": "Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate quality gates, configure test runners in CI, or establish deployment strategies.",
|
|
51
|
-
"policyCapsuleBullets": 9,
|
|
52
|
-
"allowedTools": null,
|
|
53
|
-
"vendor": null
|
|
54
|
-
},
|
|
55
35
|
{
|
|
56
36
|
"name": "code-review-and-quality",
|
|
57
37
|
"tier": "core",
|
|
58
38
|
"category": "core",
|
|
59
39
|
"path": ".agents/skills/core/code-review-and-quality/SKILL.md",
|
|
60
|
-
"description": "Conducts multi-axis code review. Use before merging any change
|
|
61
|
-
"policyCapsuleBullets":
|
|
62
|
-
"allowedTools": null,
|
|
63
|
-
"vendor": null
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"name": "code-simplification",
|
|
67
|
-
"tier": "core",
|
|
68
|
-
"category": "core",
|
|
69
|
-
"path": ".agents/skills/core/code-simplification/SKILL.md",
|
|
70
|
-
"description": "Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity.",
|
|
71
|
-
"policyCapsuleBullets": 9,
|
|
72
|
-
"allowedTools": null,
|
|
73
|
-
"vendor": null
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"name": "context-engineering",
|
|
77
|
-
"tier": "core",
|
|
78
|
-
"category": "core",
|
|
79
|
-
"path": ".agents/skills/core/context-engineering/SKILL.md",
|
|
80
|
-
"description": "Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks, or when you need to configure rules files and context for a project.",
|
|
81
|
-
"policyCapsuleBullets": 9,
|
|
40
|
+
"description": "Conducts multi-axis code review and runs the disciplined post-green refactor pass. Use before merging any change, when reviewing code written by yourself, another agent, or a human, or when the opt-in `delivery.refactorStage` checkpoint asks for a behaviour-preserving CRAP/duplication pass after the suite is green.",
|
|
41
|
+
"policyCapsuleBullets": 12,
|
|
82
42
|
"allowedTools": null,
|
|
83
43
|
"vendor": null
|
|
84
44
|
},
|
|
@@ -92,16 +52,6 @@
|
|
|
92
52
|
"allowedTools": null,
|
|
93
53
|
"vendor": null
|
|
94
54
|
},
|
|
95
|
-
{
|
|
96
|
-
"name": "deprecation-and-migration",
|
|
97
|
-
"tier": "core",
|
|
98
|
-
"category": "core",
|
|
99
|
-
"path": ".agents/skills/core/deprecation-and-migration/SKILL.md",
|
|
100
|
-
"description": "Manages deprecation and migration. Use when removing old systems, APIs, or features. Use when migrating users from one implementation to another. Use when deciding whether to maintain or sunset existing code.",
|
|
101
|
-
"policyCapsuleBullets": 10,
|
|
102
|
-
"allowedTools": null,
|
|
103
|
-
"vendor": null
|
|
104
|
-
},
|
|
105
55
|
{
|
|
106
56
|
"name": "diagnose-friction",
|
|
107
57
|
"tier": "core",
|
|
@@ -127,7 +77,7 @@
|
|
|
127
77
|
"tier": "core",
|
|
128
78
|
"category": "core",
|
|
129
79
|
"path": ".agents/skills/core/epic-plan-consolidate/SKILL.md",
|
|
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 `
|
|
80
|
+
"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 `plan-persist.js` validates and persists it. Reconciles the draft against the Tech Spec \"Delivery Slicing\" ceiling via scope-preserving operations only.",
|
|
131
81
|
"policyCapsuleBullets": 9,
|
|
132
82
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
133
83
|
"vendor": null
|
|
@@ -137,7 +87,7 @@
|
|
|
137
87
|
"tier": "core",
|
|
138
88
|
"category": "core",
|
|
139
89
|
"path": ".agents/skills/core/epic-plan-decompose-author/SKILL.md",
|
|
140
|
-
"description": "Author the Story ticket JSON for an Epic from the decomposer authoring context emitted by `
|
|
90
|
+
"description": "Author the Story ticket JSON for an Epic from the decomposer authoring context emitted by `plan-context.js --epic <Epic_ID>`. Use during Phase 8 of `/plan` when the host LLM needs to write the ticket array before `plan-persist.js` validates and persists it.",
|
|
141
91
|
"policyCapsuleBullets": 15,
|
|
142
92
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
143
93
|
"vendor": null
|
|
@@ -147,7 +97,7 @@
|
|
|
147
97
|
"tier": "core",
|
|
148
98
|
"category": "core",
|
|
149
99
|
"path": ".agents/skills/core/epic-plan-premortem/SKILL.md",
|
|
150
|
-
"description": "Run a fresh-context, code-reading pre-mortem critic over the draft Story ticket array an Epic's decompose phase produced. Use during Phase 8 of `/plan`, after `epic-plan-decompose-author` / `epic-plan-consolidate` write `temp/epic-<Epic_ID>/tickets.json` and before `
|
|
100
|
+
"description": "Run a fresh-context, code-reading pre-mortem critic over the draft Story ticket array an Epic's decompose phase produced. Use during Phase 8 of `/plan`, after `epic-plan-decompose-author` / `epic-plan-consolidate` write `temp/epic-<Epic_ID>/tickets.json` and before `plan-persist.js` validates and persists it. Reads the sectioned Epic body AND the cited code surfaces, then emits predicted-rework findings before any GitHub write.",
|
|
151
101
|
"policyCapsuleBullets": 7,
|
|
152
102
|
"allowedTools": ["Read", "Write", "Bash", "Grep"],
|
|
153
103
|
"vendor": null
|
|
@@ -157,19 +107,19 @@
|
|
|
157
107
|
"tier": "core",
|
|
158
108
|
"category": "core",
|
|
159
109
|
"path": ".agents/skills/core/epic-plan-spec-author/SKILL.md",
|
|
160
|
-
"description": "Author the Tech Spec, Acceptance Table markdown, and risk-verdict JSON for an Epic from the planner authoring context emitted by `
|
|
110
|
+
"description": "Author the Tech Spec, Acceptance Table markdown, and risk-verdict JSON for an Epic from the planner authoring context emitted by `plan-context.js --epic <Epic_ID>`. Use during Phase 7 of `/plan` when the host LLM needs to write the three artifacts before `plan-persist.js` folds them into the Epic body's managed sections.",
|
|
161
111
|
"policyCapsuleBullets": 14,
|
|
162
112
|
"allowedTools": ["Read", "Write", "Bash"],
|
|
163
113
|
"vendor": null
|
|
164
114
|
},
|
|
165
115
|
{
|
|
166
|
-
"name": "
|
|
116
|
+
"name": "gates-and-baselines",
|
|
167
117
|
"tier": "core",
|
|
168
118
|
"category": "core",
|
|
169
|
-
"path": ".agents/skills/core/
|
|
170
|
-
"description": "
|
|
119
|
+
"path": ".agents/skills/core/gates-and-baselines/SKILL.md",
|
|
120
|
+
"description": "Governs quality gates and the unified-baseline snapshots. Use when authoring a baseline refresh commit (CRAP, maintainability, dead-exports, lighthouse), when setting up or modifying CI quality gates, or when introducing a new gate that asserts on pre-existing state without turning the integration branch red.",
|
|
171
121
|
"policyCapsuleBullets": 9,
|
|
172
|
-
"allowedTools":
|
|
122
|
+
"allowedTools": ["Read", "Write", "Bash"],
|
|
173
123
|
"vendor": null
|
|
174
124
|
},
|
|
175
125
|
{
|
|
@@ -182,16 +132,6 @@
|
|
|
182
132
|
"allowedTools": null,
|
|
183
133
|
"vendor": null
|
|
184
134
|
},
|
|
185
|
-
{
|
|
186
|
-
"name": "hydrate-context",
|
|
187
|
-
"tier": "core",
|
|
188
|
-
"category": "core",
|
|
189
|
-
"path": ".agents/skills/core/hydrate-context/SKILL.md",
|
|
190
|
-
"description": "Hydrate a Story ticket into a structured ContextEnvelope (or the legacy `{ prompt }` stdout wrapper). Reads the ticket body, resolves the parent Epic, embeds the sectioned Epic body (acceptance-table section stripped), and assembles named sections with provenance and section-aware elision. Successor to the retired mandrel MCP `context.hydrate` tool.",
|
|
191
|
-
"policyCapsuleBullets": 7,
|
|
192
|
-
"allowedTools": ["Read", "Bash"],
|
|
193
|
-
"vendor": null
|
|
194
|
-
},
|
|
195
135
|
{
|
|
196
136
|
"name": "idea-refinement",
|
|
197
137
|
"tier": "core",
|
|
@@ -202,76 +142,6 @@
|
|
|
202
142
|
"allowedTools": null,
|
|
203
143
|
"vendor": null
|
|
204
144
|
},
|
|
205
|
-
{
|
|
206
|
-
"name": "incremental-implementation",
|
|
207
|
-
"tier": "core",
|
|
208
|
-
"category": "core",
|
|
209
|
-
"path": ".agents/skills/core/incremental-implementation/SKILL.md",
|
|
210
|
-
"description": "Delivers changes incrementally. Use when implementing any feature or change that touches more than one file. Use when you're about to write a large amount of code at once, or when a task feels too big to land in one step.",
|
|
211
|
-
"policyCapsuleBullets": 9,
|
|
212
|
-
"allowedTools": null,
|
|
213
|
-
"vendor": null
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
"name": "introducing-a-baseline-gate",
|
|
217
|
-
"tier": "core",
|
|
218
|
-
"category": "core",
|
|
219
|
-
"path": ".agents/skills/core/introducing-a-baseline-gate/SKILL.md",
|
|
220
|
-
"description": "Land a new CI check that asserts on a body of pre-existing state (doc-drift, lint-vocabulary, dependency-cycle, missing-test-coverage, unused-export). Use when introducing a gate whose first run would surface latent findings — the introducing Story MUST guarantee the gate exits 0 at merge, not just that the cited discrepancies pass.",
|
|
221
|
-
"policyCapsuleBullets": 6,
|
|
222
|
-
"allowedTools": null,
|
|
223
|
-
"vendor": null
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
"name": "knowledge-transfer",
|
|
227
|
-
"tier": "core",
|
|
228
|
-
"category": "core",
|
|
229
|
-
"path": ".agents/skills/core/knowledge-transfer/SKILL.md",
|
|
230
|
-
"description": "Verifies that a human operator actually understands a plan or a code change through restate-first probing, a why-ladder, incremental mastery gates, and a persistent comprehension checklist. Use \"explain\", \"walk me through\", \"help me understand\", \"teach me this change/plan\", or \"do I understand this?\" to trigger. Operator-facing and interactive only.",
|
|
231
|
-
"policyCapsuleBullets": 1,
|
|
232
|
-
"allowedTools": null,
|
|
233
|
-
"vendor": null
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
"name": "mutation-survivor-remediation",
|
|
237
|
-
"tier": "core",
|
|
238
|
-
"category": "core",
|
|
239
|
-
"path": ".agents/skills/core/mutation-survivor-remediation/SKILL.md",
|
|
240
|
-
"description": "Turn surviving mutants into killed ones. Use after a Stryker mutation run reports a leaky score, when the mutation gate regresses, or when you want to harden a specific module's tests. The mutation-score gate and baseline ratchet live in the mutation baseline kind and `stryker-runner.js`; this skill shows how to read the survivor report, pick targets, and write the test that kills each survivor without inflating the suite.",
|
|
241
|
-
"policyCapsuleBullets": 8,
|
|
242
|
-
"allowedTools": null,
|
|
243
|
-
"vendor": null
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
"name": "performance-optimization",
|
|
247
|
-
"tier": "core",
|
|
248
|
-
"category": "core",
|
|
249
|
-
"path": ".agents/skills/core/performance-optimization/SKILL.md",
|
|
250
|
-
"description": "Optimizes application performance. Use when performance requirements exist, when you suspect performance regressions, or when Core Web Vitals or load times need improvement. Use when profiling reveals bottlenecks that need fixing.",
|
|
251
|
-
"policyCapsuleBullets": 10,
|
|
252
|
-
"allowedTools": null,
|
|
253
|
-
"vendor": null
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
"name": "planning-and-task-breakdown",
|
|
257
|
-
"tier": "core",
|
|
258
|
-
"category": "core",
|
|
259
|
-
"path": ".agents/skills/core/planning-and-task-breakdown/SKILL.md",
|
|
260
|
-
"description": "Breaks work into ordered tasks. Use when you have a spec or clear requirements and need to break work into implementable tasks. Use when a task feels too large to start, when you need to estimate scope, or when parallel work is possible.",
|
|
261
|
-
"policyCapsuleBullets": 9,
|
|
262
|
-
"allowedTools": null,
|
|
263
|
-
"vendor": null
|
|
264
|
-
},
|
|
265
|
-
{
|
|
266
|
-
"name": "property-based-testing",
|
|
267
|
-
"tier": "core",
|
|
268
|
-
"category": "core",
|
|
269
|
-
"path": ".agents/skills/core/property-based-testing/SKILL.md",
|
|
270
|
-
"description": "Generative testing of invariants. Use when a unit has properties that should hold across a whole input domain — round-trips, idempotence, ordering, conservation — rather than a handful of hand-picked examples. The test-tier, mocking, and assertion-placement MUSTs live in `.agents/rules/testing-standards.md`; this skill shows how to find properties, pick the right per-stack library, and keep generative tests deterministic and fast.",
|
|
271
|
-
"policyCapsuleBullets": 8,
|
|
272
|
-
"allowedTools": null,
|
|
273
|
-
"vendor": null
|
|
274
|
-
},
|
|
275
145
|
{
|
|
276
146
|
"name": "qa-coverage-mapping",
|
|
277
147
|
"tier": "core",
|
|
@@ -282,16 +152,6 @@
|
|
|
282
152
|
"allowedTools": ["Read", "Bash"],
|
|
283
153
|
"vendor": null
|
|
284
154
|
},
|
|
285
|
-
{
|
|
286
|
-
"name": "refactoring-discipline",
|
|
287
|
-
"tier": "core",
|
|
288
|
-
"category": "core",
|
|
289
|
-
"path": ".agents/skills/core/refactoring-discipline/SKILL.md",
|
|
290
|
-
"description": "Run a post-green refactor pass that lowers CRAP and removes duplication without changing behaviour. Use after tests pass and gates are green, when a function's CRAP score is high but well-covered, or when the same logic is duplicated across files. Pairs with the `refactorer` persona and the opt-in `delivery.refactorStage` checkpoint; complements `core/code-simplification` (clarity) by focusing on the measured CRAP/duplication axes.",
|
|
291
|
-
"policyCapsuleBullets": 9,
|
|
292
|
-
"allowedTools": null,
|
|
293
|
-
"vendor": null
|
|
294
|
-
},
|
|
295
155
|
{
|
|
296
156
|
"name": "scope-triage",
|
|
297
157
|
"tier": "core",
|
|
@@ -312,216 +172,6 @@
|
|
|
312
172
|
"allowedTools": null,
|
|
313
173
|
"vendor": null
|
|
314
174
|
},
|
|
315
|
-
{
|
|
316
|
-
"name": "shipping-and-launch",
|
|
317
|
-
"tier": "core",
|
|
318
|
-
"category": "core",
|
|
319
|
-
"path": ".agents/skills/core/shipping-and-launch/SKILL.md",
|
|
320
|
-
"description": "Prepares production launches. Use when preparing to deploy to production. Use when you need a pre-launch checklist, when setting up monitoring, when planning a staged rollout, or when you need a rollback strategy.",
|
|
321
|
-
"policyCapsuleBullets": 9,
|
|
322
|
-
"allowedTools": null,
|
|
323
|
-
"vendor": null
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
"name": "spec-driven-development",
|
|
327
|
-
"tier": "core",
|
|
328
|
-
"category": "core",
|
|
329
|
-
"path": ".agents/skills/core/spec-driven-development/SKILL.md",
|
|
330
|
-
"description": "Creates specs before coding. Use when starting a new project, feature, or significant change and no specification exists yet. Use when requirements are unclear, ambiguous, or only exist as a vague idea.",
|
|
331
|
-
"policyCapsuleBullets": 9,
|
|
332
|
-
"allowedTools": null,
|
|
333
|
-
"vendor": null
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
"name": "test-driven-development",
|
|
337
|
-
"tier": "core",
|
|
338
|
-
"category": "core",
|
|
339
|
-
"path": ".agents/skills/core/test-driven-development/SKILL.md",
|
|
340
|
-
"description": "Drives development with tests. Use when implementing any logic, fixing any bug, or changing any behavior. The non-negotiable test-tier placement, mocking, assertion-placement, and coverage rules live in `.agents/rules/testing-standards.md`; this skill shows how to apply them via the TDD cycle, the Prove-It Pattern, and good-test style.",
|
|
341
|
-
"policyCapsuleBullets": 10,
|
|
342
|
-
"allowedTools": null,
|
|
343
|
-
"vendor": null
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
"name": "using-agent-skills",
|
|
347
|
-
"tier": "core",
|
|
348
|
-
"category": "core",
|
|
349
|
-
"path": ".agents/skills/core/using-agent-skills/SKILL.md",
|
|
350
|
-
"description": "Discovers and invokes agent skills. Use when starting a session or when you need to discover which skill applies to the current task. This is the meta-skill that governs how all other skills are discovered and invoked.",
|
|
351
|
-
"policyCapsuleBullets": 9,
|
|
352
|
-
"allowedTools": null,
|
|
353
|
-
"vendor": null
|
|
354
|
-
},
|
|
355
|
-
{
|
|
356
|
-
"name": "monorepo-path-strategist",
|
|
357
|
-
"tier": "stack",
|
|
358
|
-
"category": "architecture",
|
|
359
|
-
"path": ".agents/skills/stack/architecture/monorepo-path-strategist/SKILL.md",
|
|
360
|
-
"description": "Enforces strict workspace package routing and dependency boundaries. Use when working in a monorepo with workspace aliases (e.g. `@repo/shared/*`, `@repo/ui/*`) and you need to prevent deep relative imports, cross-workspace contamination, or dependencies added at the wrong package.json level.",
|
|
361
|
-
"policyCapsuleBullets": 5,
|
|
362
|
-
"allowedTools": null,
|
|
363
|
-
"vendor": null
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
"name": "structured-output-zod",
|
|
367
|
-
"tier": "stack",
|
|
368
|
-
"category": "architecture",
|
|
369
|
-
"path": ".agents/skills/stack/architecture/structured-output-zod/SKILL.md",
|
|
370
|
-
"description": "Validates external and structured data with Zod schemas. Use when accepting untrusted input at API boundaries, validating environment variables on startup, parsing third-party responses, or generating typed shapes via `z.infer`. Parse, don't validate.",
|
|
371
|
-
"policyCapsuleBullets": 7,
|
|
372
|
-
"allowedTools": null,
|
|
373
|
-
"vendor": "zod"
|
|
374
|
-
},
|
|
375
|
-
{
|
|
376
|
-
"name": "subagent-orchestration",
|
|
377
|
-
"tier": "stack",
|
|
378
|
-
"category": "architecture",
|
|
379
|
-
"path": ".agents/skills/stack/architecture/subagent-orchestration/SKILL.md",
|
|
380
|
-
"description": "Coordinates complex tasks via task-isolated subagents. Use when one objective is too large for a single agent or when independent work streams should run concurrently with minimal context bleed. One objective per subagent; summarize before returning to keep the orchestrator's context window clean. Applies recursively — an orchestrator at any supported nesting depth applies the same policy to its own children.",
|
|
381
|
-
"policyCapsuleBullets": 8,
|
|
382
|
-
"allowedTools": null,
|
|
383
|
-
"vendor": null
|
|
384
|
-
},
|
|
385
|
-
{
|
|
386
|
-
"name": "cloudflare-hono-architect",
|
|
387
|
-
"tier": "stack",
|
|
388
|
-
"category": "backend",
|
|
389
|
-
"path": ".agents/skills/stack/backend/cloudflare-hono-architect/SKILL.md",
|
|
390
|
-
"description": "Prevents Node.js module hallucinations in Cloudflare Worker (V8 isolate) edge environments. Use when writing Hono routes deployed to Workers — prefer Web APIs (Fetch, Web Crypto) over Node built-ins (`fs`, `path`, `child_process`, `crypto`), and access bindings via Hono's `c.env`.",
|
|
391
|
-
"policyCapsuleBullets": 5,
|
|
392
|
-
"allowedTools": null,
|
|
393
|
-
"vendor": "cloudflare"
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
"name": "cloudflare-queue-manager",
|
|
397
|
-
"tier": "stack",
|
|
398
|
-
"category": "backend",
|
|
399
|
-
"path": ".agents/skills/stack/backend/cloudflare-queue-manager/SKILL.md",
|
|
400
|
-
"description": "Ensures idempotent and resilient background job execution on Cloudflare Queues. Use when writing consumer handlers — design for at-least-once delivery, wrap processing in try/catch with `message.retry()`, and order cascading deletes so the database row drops last.",
|
|
401
|
-
"policyCapsuleBullets": 5,
|
|
402
|
-
"allowedTools": null,
|
|
403
|
-
"vendor": "cloudflare"
|
|
404
|
-
},
|
|
405
|
-
{
|
|
406
|
-
"name": "cloudflare-workers",
|
|
407
|
-
"tier": "stack",
|
|
408
|
-
"category": "backend",
|
|
409
|
-
"path": ".agents/skills/stack/backend/cloudflare-workers/SKILL.md",
|
|
410
|
-
"description": "Builds and deploys high-performance edge logic on Cloudflare Workers. Use when working within Workers' 128MB memory and 5–50ms CPU constraints, integrating KV/R2/D1 storage, or writing Wrangler-managed edge-first request/response code.",
|
|
411
|
-
"policyCapsuleBullets": 8,
|
|
412
|
-
"allowedTools": null,
|
|
413
|
-
"vendor": "cloudflare"
|
|
414
|
-
},
|
|
415
|
-
{
|
|
416
|
-
"name": "highlevel-crm",
|
|
417
|
-
"tier": "stack",
|
|
418
|
-
"category": "backend",
|
|
419
|
-
"path": ".agents/skills/stack/backend/highlevel-crm/SKILL.md",
|
|
420
|
-
"description": "Integrates with the HighLevel (GoHighLevel) CRM API v2 and its automation engine. Use when synchronizing data via OAuth 2.0, building custom widgets, handling sub-account `locationId` scoping, or implementing webhook-driven workflows with rate-limit-aware retries.",
|
|
421
|
-
"policyCapsuleBullets": 8,
|
|
422
|
-
"allowedTools": null,
|
|
423
|
-
"vendor": "highlevel"
|
|
424
|
-
},
|
|
425
|
-
{
|
|
426
|
-
"name": "sqlite-drizzle-expert",
|
|
427
|
-
"tier": "stack",
|
|
428
|
-
"category": "backend",
|
|
429
|
-
"path": ".agents/skills/stack/backend/sqlite-drizzle-expert/SKILL.md",
|
|
430
|
-
"description": "Enforces SQLite dialect for Drizzle ORM and Turso (libSQL). Use when writing schema or queries with `drizzle-orm/sqlite-core` — avoid PostgreSQL-only types (`serial`, `jsonb`, `uuid`), use `text()` for IDs and dates, and define relations explicitly via the `relations` API.",
|
|
431
|
-
"policyCapsuleBullets": 5,
|
|
432
|
-
"allowedTools": null,
|
|
433
|
-
"vendor": "drizzle"
|
|
434
|
-
},
|
|
435
|
-
{
|
|
436
|
-
"name": "stripe-integration",
|
|
437
|
-
"tier": "stack",
|
|
438
|
-
"category": "backend",
|
|
439
|
-
"path": ".agents/skills/stack/backend/stripe-integration/SKILL.md",
|
|
440
|
-
"description": "Implements secure Stripe payments and subscription billing. Use when handling card data (PCI compliance via Elements/Checkout), verifying webhook signatures, attaching `idempotencyKey` to mutations, or treating the server-side webhook as the source of truth for entitlement changes.",
|
|
441
|
-
"policyCapsuleBullets": 8,
|
|
442
|
-
"allowedTools": null,
|
|
443
|
-
"vendor": "stripe"
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
"name": "turso-sqlite",
|
|
447
|
-
"tier": "stack",
|
|
448
|
-
"category": "backend",
|
|
449
|
-
"path": ".agents/skills/stack/backend/turso-sqlite/SKILL.md",
|
|
450
|
-
"description": "Develops with Turso's distributed SQLite (libSQL) platform. Use when working with the `@libsql/client` driver — leverage edge replicas for low-latency reads, route writes to the primary, and use parameterized queries plus a versioned migration tool (drizzle-kit, atlas) for schema changes.",
|
|
451
|
-
"policyCapsuleBullets": 6,
|
|
452
|
-
"allowedTools": null,
|
|
453
|
-
"vendor": "turso"
|
|
454
|
-
},
|
|
455
|
-
{
|
|
456
|
-
"name": "astro-react-island-strategist",
|
|
457
|
-
"tier": "stack",
|
|
458
|
-
"category": "frontend",
|
|
459
|
-
"path": ".agents/skills/stack/frontend/astro-react-island-strategist/SKILL.md",
|
|
460
|
-
"description": "Maintains strict boundaries between Astro server components and React client islands in hybrid Astro/React workspaces. Use when keeping `.astro` files for static HTML/SEO and `.tsx` for interactive islands — embed React only with explicit `client:*` directives and pass serializable props.",
|
|
461
|
-
"policyCapsuleBullets": 5,
|
|
462
|
-
"allowedTools": null,
|
|
463
|
-
"vendor": "astro"
|
|
464
|
-
},
|
|
465
|
-
{
|
|
466
|
-
"name": "astro",
|
|
467
|
-
"tier": "stack",
|
|
468
|
-
"category": "frontend",
|
|
469
|
-
"path": ".agents/skills/stack/frontend/astro/SKILL.md",
|
|
470
|
-
"description": "Builds ultra-fast content-driven websites with Astro. Use when defaulting to SSG, opting into SSR only for dynamic data, picking the most restrictive `client:*` hydration directive, leveraging Server Islands (`server:defer`), Astro Actions for type-safe mutations, and the Content Layer with Zod- validated collections.",
|
|
471
|
-
"policyCapsuleBullets": 8,
|
|
472
|
-
"allowedTools": null,
|
|
473
|
-
"vendor": "astro"
|
|
474
|
-
},
|
|
475
|
-
{
|
|
476
|
-
"name": "expo-react-native-developer",
|
|
477
|
-
"tier": "stack",
|
|
478
|
-
"category": "frontend",
|
|
479
|
-
"path": ".agents/skills/stack/frontend/expo-react-native-developer/SKILL.md",
|
|
480
|
-
"description": "Prevents DOM element usage in React Native (Expo) workspaces. Use when writing components for Expo apps — `<View>`, `<Text>`, `<TouchableOpacity>` instead of `<div>`/`<span>`/`<p>`, no `window`/`document`, and styling through the project's established solution.",
|
|
481
|
-
"policyCapsuleBullets": 5,
|
|
482
|
-
"allowedTools": null,
|
|
483
|
-
"vendor": "expo"
|
|
484
|
-
},
|
|
485
|
-
{
|
|
486
|
-
"name": "google-analytics-v4",
|
|
487
|
-
"tier": "stack",
|
|
488
|
-
"category": "frontend",
|
|
489
|
-
"path": ".agents/skills/stack/frontend/google-analytics-v4/SKILL.md",
|
|
490
|
-
"description": "Implements privacy-compliant event tracking with Google Analytics 4. Use when wiring analytics that must comply with GDPR/CCPA via Consent Mode V2 — `snake_case` event names, no PII to GA servers, GTM-driven event firing, and DebugView verification before deploy.",
|
|
491
|
-
"policyCapsuleBullets": 8,
|
|
492
|
-
"allowedTools": null,
|
|
493
|
-
"vendor": "google"
|
|
494
|
-
},
|
|
495
|
-
{
|
|
496
|
-
"name": "tailwind-v4",
|
|
497
|
-
"tier": "stack",
|
|
498
|
-
"category": "frontend",
|
|
499
|
-
"path": ".agents/skills/stack/frontend/tailwind-v4/SKILL.md",
|
|
500
|
-
"description": "Implements maintainable styling with Tailwind CSS v4. Use when writing styles in v4 projects — CSS-first configuration via `@theme` blocks (never `tailwind.config.ts/js`), mobile-first breakpoints, full class names (no string interpolation), and no arbitrary `p-[13px]`-style values.",
|
|
501
|
-
"policyCapsuleBullets": 8,
|
|
502
|
-
"allowedTools": null,
|
|
503
|
-
"vendor": "tailwind"
|
|
504
|
-
},
|
|
505
|
-
{
|
|
506
|
-
"name": "ui-accessibility-engineer",
|
|
507
|
-
"tier": "stack",
|
|
508
|
-
"category": "frontend",
|
|
509
|
-
"path": ".agents/skills/stack/frontend/ui-accessibility-engineer/SKILL.md",
|
|
510
|
-
"description": "Enforces mobile-first Tailwind CSS and strict WCAG 2.1 AA compliance for user-facing UI. Use when building UI components — utility classes only (no custom CSS or inline `style={{}}`), mobile-first breakpoints, visible focus states, alt text, and 4.5:1 contrast.",
|
|
511
|
-
"policyCapsuleBullets": 7,
|
|
512
|
-
"allowedTools": null,
|
|
513
|
-
"vendor": "tailwind"
|
|
514
|
-
},
|
|
515
|
-
{
|
|
516
|
-
"name": "audit-accessibility",
|
|
517
|
-
"tier": "stack",
|
|
518
|
-
"category": "qa",
|
|
519
|
-
"path": ".agents/skills/stack/qa/audit-accessibility/SKILL.md",
|
|
520
|
-
"description": "Audits sites and apps for WCAG 2.1 Level AA compliance using automated and manual testing tools. Use when running an accessibility audit or building a remediation plan — semantic HTML, contrast, focus management, keyboard reachability, and axe-core integration in Vitest/Playwright.",
|
|
521
|
-
"policyCapsuleBullets": 8,
|
|
522
|
-
"allowedTools": null,
|
|
523
|
-
"vendor": null
|
|
524
|
-
},
|
|
525
175
|
{
|
|
526
176
|
"name": "gherkin-authoring",
|
|
527
177
|
"tier": "stack",
|
|
@@ -532,16 +182,6 @@
|
|
|
532
182
|
"allowedTools": null,
|
|
533
183
|
"vendor": null
|
|
534
184
|
},
|
|
535
|
-
{
|
|
536
|
-
"name": "lighthouse-baseline",
|
|
537
|
-
"tier": "stack",
|
|
538
|
-
"category": "qa",
|
|
539
|
-
"path": ".agents/skills/stack/qa/lighthouse-baseline/SKILL.md",
|
|
540
|
-
"description": "Codifies the capture-and-check baseline pattern for long-running quality signals (Lighthouse scores, bundle size, p95 latency, runtime memory). Use when wiring a new metric that needs a baseline file, paired :capture / :check npm scripts, a tolerance-bounded gate, and a weekly refresh cadence — the goal is a hard CI signal that ratchets only with intent.",
|
|
541
|
-
"policyCapsuleBullets": 8,
|
|
542
|
-
"allowedTools": null,
|
|
543
|
-
"vendor": null
|
|
544
|
-
},
|
|
545
185
|
{
|
|
546
186
|
"name": "playwright-bdd",
|
|
547
187
|
"tier": "stack",
|
|
@@ -591,16 +231,6 @@
|
|
|
591
231
|
"policyCapsuleBullets": 8,
|
|
592
232
|
"allowedTools": null,
|
|
593
233
|
"vendor": "vitest"
|
|
594
|
-
},
|
|
595
|
-
{
|
|
596
|
-
"name": "backend-security-patterns",
|
|
597
|
-
"tier": "stack",
|
|
598
|
-
"category": "security",
|
|
599
|
-
"path": ".agents/skills/stack/security/backend-security-patterns/SKILL.md",
|
|
600
|
-
"description": "Combined backend protocols for authentication (Clerk JWT verification) and PII-safe observability. Use when handling auth on the server, verifying Clerk webhooks via `svix`, scoping metadata via `publicMetadata`/ `privateMetadata`, or sanitizing logs to keep emails, tokens, and request bodies out of telemetry.",
|
|
601
|
-
"policyCapsuleBullets": 8,
|
|
602
|
-
"allowedTools": null,
|
|
603
|
-
"vendor": "clerk"
|
|
604
234
|
}
|
|
605
235
|
]
|
|
606
236
|
}
|
|
@@ -32,7 +32,7 @@ reference) before routing:
|
|
|
32
32
|
|
|
33
33
|
| Input | Route |
|
|
34
34
|
| --- | --- |
|
|
35
|
-
| Exactly one `type::epic` ID | **Epic path** —
|
|
35
|
+
| Exactly one `type::epic` ID | **Epic path** — resolve the Epic's delivery route (see [Epic delivery-route resolution](#epic-delivery-route-resolution) below), then run the selected helper's phases unchanged (single-segment plan; no confirmation prompt). |
|
|
36
36
|
| 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 (single-segment plan; no confirmation prompt). |
|
|
37
37
|
| Any combination of ≥1 `type::epic` IDs and ≥0 standalone `type::story` IDs | **Segment plan** — compose and execute the sequential segment plan below. |
|
|
38
38
|
| Any Story carrying an `Epic: #N` reference (alone or mixed into an otherwise-valid set) | **Error**, naming every affected ID and the fix: `Story #<id> belongs to Epic #<n> — run /deliver <n>`. |
|
|
@@ -40,6 +40,45 @@ reference) before routing:
|
|
|
40
40
|
Per-ID classification is unchanged: fetch the `type::*` label and probe the
|
|
41
41
|
body for an `Epic: #N` reference before routing. Never guess a route.
|
|
42
42
|
|
|
43
|
+
## Epic delivery-route resolution
|
|
44
|
+
|
|
45
|
+
Every `type::epic` segment resolves to one of two delivery shapes before its
|
|
46
|
+
helper runs. The routing is a pure function of the Epic's labels, its
|
|
47
|
+
`epic-plan-state` checkpoint, and the config kill-switch — implemented in
|
|
48
|
+
[`lib/orchestration/deliver-route.js`](../scripts/lib/orchestration/deliver-route.js)
|
|
49
|
+
(`resolveEpicDeliveryRoute(epic, checkpoint, config)`), mirroring how the
|
|
50
|
+
code-review depth resolver reads `planningRisk`/`decompose` off the same
|
|
51
|
+
checkpoint. Fetch the Epic's labels and read its `epic-plan-state` structured
|
|
52
|
+
comment, then apply the precedence (highest wins):
|
|
53
|
+
|
|
54
|
+
1. **Kill-switch — overrides all.** `delivery.routing.singleDelivery === false`
|
|
55
|
+
(default `true`, read via `getDeliveryRouting`) forces **fan-out** for
|
|
56
|
+
*every* Epic, even a single-marked one. This is the instant, per-consumer
|
|
57
|
+
global revert that ships before the default flips — no code rollback, no
|
|
58
|
+
re-plan.
|
|
59
|
+
2. **Single marker → single route.** The `delivery::single` label (primary)
|
|
60
|
+
**or** `decompose.shape === "single"` on the checkpoint (secondary). A
|
|
61
|
+
spec-only plan authored no Story tree; its `## Delivery Slicing` table is
|
|
62
|
+
the audit trail.
|
|
63
|
+
3. **No marker → fan-out.** A legacy Epic (no marker, an authored Story tree)
|
|
64
|
+
or a genuinely-wide DAG. Deliver-time width only *advises* — it never
|
|
65
|
+
reroutes a single-marked Epic (that would orphan a tree that does not
|
|
66
|
+
exist; re-route = re-plan).
|
|
67
|
+
|
|
68
|
+
**Route dispatch.**
|
|
69
|
+
|
|
70
|
+
- **`fan-out`** → run [`helpers/deliver-epic.md`](helpers/deliver-epic.md)
|
|
71
|
+
Phases 1–9 unchanged (the wave loop fanning out per-Story sub-agents).
|
|
72
|
+
- **`single`** → run
|
|
73
|
+
[`helpers/deliver-epic-single.md`](helpers/deliver-epic-single.md) (the
|
|
74
|
+
live flip, M4-B): a one-worktree in-session slice walk (prepare `--single` →
|
|
75
|
+
ordered `## Delivery Slicing` walk on `epic/<id>` → per-AC-cluster
|
|
76
|
+
acceptance critics) that **reuses `helpers/deliver-epic.md` Phases 3–9
|
|
77
|
+
byte-for-byte** for the merge tail. This is now the **default** shape for a
|
|
78
|
+
single-marked Epic. The kill-switch (`delivery.routing.singleDelivery=false`)
|
|
79
|
+
still forces this verdict back to `fan-out` — an instant global revert with
|
|
80
|
+
no code rollback.
|
|
81
|
+
|
|
43
82
|
## Segment plan (mixed / multi-Epic input)
|
|
44
83
|
|
|
45
84
|
When the supplied IDs span more than one Epic, or mix Epics with standalone
|
|
@@ -54,9 +93,13 @@ Stories, the router composes a **segment plan** and executes the segments
|
|
|
54
93
|
Phase 7.0 base-sync then integrates those merges naturally instead of
|
|
55
94
|
the Epic PR opening behind base.
|
|
56
95
|
2. **Epic segments in input order**: each `type::epic` ID forms its own
|
|
57
|
-
segment
|
|
58
|
-
|
|
59
|
-
unchanged
|
|
96
|
+
segment. Resolve its delivery route (see [Epic delivery-route
|
|
97
|
+
resolution](#epic-delivery-route-resolution)) and run the selected helper
|
|
98
|
+
unchanged — the `fan-out` route dispatches
|
|
99
|
+
[`helpers/deliver-epic.md`](helpers/deliver-epic.md) Phases 1–9, the
|
|
100
|
+
`single` route dispatches
|
|
101
|
+
[`helpers/deliver-epic-single.md`](helpers/deliver-epic-single.md) (which
|
|
102
|
+
reuses that helper's Phases 3–9 for the merge tail).
|
|
60
103
|
|
|
61
104
|
Sequential execution is a deliberate design decision: the Epic path assumes
|
|
62
105
|
a single main checkout (prepare's checkout guard, Phase 7.0
|
|
@@ -33,20 +33,45 @@ per-criterion, mid-delivery, and evaluates the actual work product.
|
|
|
33
33
|
## Per round
|
|
34
34
|
|
|
35
35
|
1. **Eval pass (fresh context, independent of the author).** Run a **separate
|
|
36
|
-
critic pass** — a fresh-context sub-agent (`Agent` tool,
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
critic pass** — a fresh-context sub-agent (`Agent` tool), *not* a
|
|
37
|
+
continuation of your implementing turn — so the evaluator does not grade its
|
|
38
|
+
own homework.
|
|
39
39
|
|
|
40
|
-
> **
|
|
41
|
-
>
|
|
42
|
-
>
|
|
43
|
-
>
|
|
44
|
-
>
|
|
45
|
-
>
|
|
46
|
-
>
|
|
47
|
-
>
|
|
48
|
-
>
|
|
49
|
-
> to
|
|
40
|
+
> **Sub-agent type + risk-routed ceremony (Epic #4478, M7-B).** When
|
|
41
|
+
> `delivery.routing.roleScopedAgents` is enabled (the **default**), dispatch
|
|
42
|
+
> the critic with `subagent_type: acceptance-critic` — it boots on the
|
|
43
|
+
> role-scoped [`acceptance-critic`](../../agents/acceptance-critic.md) context
|
|
44
|
+
> (its own system prompt, no `CLAUDE.md` @-closure) that carries the
|
|
45
|
+
> maker-blind invariant and the verdict schema standalone. When the
|
|
46
|
+
> kill-switch is **off** (`roleScopedAgents: false`), fall back to
|
|
47
|
+
> `subagent_type: general-purpose`.
|
|
48
|
+
>
|
|
49
|
+
> **Whether to spawn fresh at all is risk-routed** (mirrors the risk →
|
|
50
|
+
> review-depth and risk → audit-lens routers). Resolve it per cluster with
|
|
51
|
+
> `resolveCeremonyForRisk` from
|
|
52
|
+
> [`ceremony-routing.js`](../../scripts/lib/orchestration/ceremony-routing.js)
|
|
53
|
+
> using the Epic's `planningRisk.overallLevel` and
|
|
54
|
+
> `delivery.routing.freshCriticSampleRate`:
|
|
55
|
+
> **`high`/`medium` risk → `fresh`** (spawn the critic); **`low` risk →
|
|
56
|
+
> `inline`** (the contract-identical inline fallback below), **except** the
|
|
57
|
+
> `freshCriticSampleRate` fraction of low-risk clusters the sampling floor
|
|
58
|
+
> forces `fresh` so low risk never means zero independent checking; **missing
|
|
59
|
+
> / unknown risk → `fresh` + full ceremony** (fail-safe). This chooses
|
|
60
|
+
> fresh-vs-inline **per cluster only — it never changes the cluster count**.
|
|
61
|
+
>
|
|
62
|
+
> **Inline-critic path (low-risk-routed OR nesting-absent harness).** The
|
|
63
|
+
> verdict is authored **inline** whenever the risk router above resolves to
|
|
64
|
+
> `inline` (a low-risk cluster not caught by the sampling floor), and also as
|
|
65
|
+
> a **fallback** on any harness that cannot spawn the fresh critic.
|
|
66
|
+
> Dispatching the critic as a nested `Agent` is the fresh-context shape and
|
|
67
|
+
> works on any harness that carries `Agent` into sub-agents (Claude Code ≥
|
|
68
|
+
> 2.1.202; see [#2870](https://github.com/dsj1984/mandrel/issues/2870)). This
|
|
69
|
+
> eval loop itself runs inside a Story delivery sub-agent, so the nested
|
|
70
|
+
> critic sits at nesting depth 2. If the host does **not** support nested
|
|
71
|
+
> `Agent` dispatch at that depth — the tool is absent, or a spawn attempt
|
|
72
|
+
> returns an unsupported-capability error — do **not** stall the Story
|
|
73
|
+
> regardless of the risk verdict. Author the verdict **inline**: in a
|
|
74
|
+
> deliberately scoped,
|
|
50
75
|
> self-critical pass (re-read only the diff, the `acceptance[]` /
|
|
51
76
|
> `verify[]` arrays, and the `verify[]` command output — treat the
|
|
52
77
|
> implementation reasoning as untrusted and score against the criteria
|