cfsa-antigravity 2.19.0 → 2.19.2
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/package.json +1 -1
- package/template/.agent/kit-sync.md +3 -3
- package/template/.claude/commands/audit-ambiguity-execute.md +6 -0
- package/template/.claude/commands/audit-ambiguity-rubrics.md +6 -0
- package/template/.claude/commands/audit-ambiguity.md +6 -0
- package/template/.claude/commands/bootstrap-agents-fill.md +6 -0
- package/template/.claude/commands/bootstrap-agents-provision.md +6 -0
- package/template/.claude/commands/bootstrap-agents.md +6 -0
- package/template/.claude/commands/create-prd-architecture.md +6 -0
- package/template/.claude/commands/create-prd-compile.md +6 -0
- package/template/.claude/commands/create-prd-design-system.md +6 -0
- package/template/.claude/commands/create-prd-security.md +6 -0
- package/template/.claude/commands/create-prd-stack.md +6 -0
- package/template/.claude/commands/decompose-architecture-structure.md +6 -0
- package/template/.claude/commands/decompose-architecture-validate.md +6 -0
- package/template/.claude/commands/evolve-contract.md +6 -0
- package/template/.claude/commands/evolve-feature-cascade.md +6 -0
- package/template/.claude/commands/evolve-feature-classify.md +6 -0
- package/template/.claude/commands/evolve-feature.md +6 -0
- package/template/.claude/commands/ideate-discover.md +6 -0
- package/template/.claude/commands/ideate-extract.md +6 -0
- package/template/.claude/commands/ideate-validate.md +6 -0
- package/template/.claude/commands/implement-slice-setup.md +6 -0
- package/template/.claude/commands/implement-slice-tdd.md +6 -0
- package/template/.claude/commands/plan-phase-preflight.md +6 -0
- package/template/.claude/commands/plan-phase-write.md +6 -0
- package/template/.claude/commands/propagate-decision-apply.md +6 -0
- package/template/.claude/commands/propagate-decision-scan.md +6 -0
- package/template/.claude/commands/propagate-decision.md +6 -0
- package/template/.claude/commands/remediate-pipeline-assess.md +6 -0
- package/template/.claude/commands/remediate-pipeline-execute.md +6 -0
- package/template/.claude/commands/remediate-pipeline.md +6 -0
- package/template/.claude/commands/remediate-shard-split.md +6 -0
- package/template/.claude/commands/resolve-ambiguity.md +6 -0
- package/template/.claude/commands/setup-workspace-cicd.md +6 -0
- package/template/.claude/commands/setup-workspace-data.md +6 -0
- package/template/.claude/commands/setup-workspace-hosting.md +6 -0
- package/template/.claude/commands/setup-workspace-scaffold.md +6 -0
- package/template/.claude/commands/sync-kit.md +6 -0
- package/template/.claude/commands/update-architecture-map.md +6 -0
- package/template/.claude/commands/validate-phase-quality.md +6 -0
- package/template/.claude/commands/validate-phase-readiness.md +6 -0
- package/template/.claude/commands/verify-infrastructure.md +6 -0
- package/template/.claude/commands/write-architecture-spec-deepen.md +6 -0
- package/template/.claude/commands/write-architecture-spec-design.md +6 -0
- package/template/.claude/commands/write-be-spec-classify.md +6 -0
- package/template/.claude/commands/write-be-spec-write.md +6 -0
- package/template/.claude/commands/write-fe-spec-classify.md +6 -0
- package/template/.claude/commands/write-fe-spec-write.md +6 -0
- package/template/.claude/skills/accessibility/SKILL.md +522 -0
- package/template/.claude/skills/accessibility/references/WCAG.md +162 -0
- package/template/.claude/skills/accessibility/references/ia-spec-checklist.md +35 -0
- package/template/.claude/skills/adversarial-review/SKILL.md +90 -0
- package/template/.claude/skills/antigravity-workflows/SKILL.md +81 -0
- package/template/.claude/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
- package/template/.claude/skills/api-design-principles/SKILL.md +169 -0
- package/template/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/template/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/template/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/template/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/template/.claude/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/template/.claude/skills/api-versioning/SKILL.md +166 -0
- package/template/.claude/skills/api-versioning/references/typescript.md +157 -0
- package/template/.claude/skills/architecture-mapping/SKILL.md +219 -0
- package/template/.claude/skills/bootstrap-agents/SKILL.md +258 -0
- package/template/.claude/skills/brainstorming/SKILL.md +177 -0
- package/template/.claude/skills/brand-guidelines/SKILL.md +44 -0
- package/template/.claude/skills/clean-code/SKILL.md +196 -0
- package/template/.claude/skills/clean-code/references/typescript.md +126 -0
- package/template/.claude/skills/code-review-pro/SKILL.md +152 -0
- package/template/.claude/skills/concise-planning/SKILL.md +107 -0
- package/template/.claude/skills/cross-layer-consistency/SKILL.md +117 -0
- package/template/.claude/skills/database-schema-design/SKILL.md +205 -0
- package/template/.claude/skills/database-schema-design/references/relational.md +228 -0
- package/template/.claude/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.claude/skills/design-anti-cliche/SKILL.md +159 -0
- package/template/.claude/skills/design-direction/SKILL.md +45 -0
- package/template/.claude/skills/error-handling-patterns/SKILL.md +226 -0
- package/template/.claude/skills/error-handling-patterns/references/go.md +162 -0
- package/template/.claude/skills/error-handling-patterns/references/python.md +262 -0
- package/template/.claude/skills/error-handling-patterns/references/rust.md +112 -0
- package/template/.claude/skills/error-handling-patterns/references/typescript.md +178 -0
- package/template/.claude/skills/find-skills/SKILL.md +145 -0
- package/template/.claude/skills/git-advanced/SKILL.md +972 -0
- package/template/.claude/skills/git-workflow/SKILL.md +420 -0
- package/template/.claude/skills/idea-extraction/SKILL.md +644 -0
- package/template/.claude/skills/logging-best-practices/SKILL.md +192 -0
- package/template/.claude/skills/logging-best-practices/references/go.md +49 -0
- package/template/.claude/skills/logging-best-practices/references/python.md +52 -0
- package/template/.claude/skills/logging-best-practices/references/typescript.md +215 -0
- package/template/.claude/skills/migration-management/SKILL.md +200 -0
- package/template/.claude/skills/migration-management/references/relational.md +214 -0
- package/template/.claude/skills/minimalist-surgical-development/SKILL.md +135 -0
- package/template/.claude/skills/parallel-agents/SKILL.md +165 -0
- package/template/.claude/skills/parallel-debugging/SKILL.md +135 -0
- package/template/.claude/skills/parallel-feature-development/SKILL.md +157 -0
- package/template/.claude/skills/performance-budgeting/SKILL.md +144 -0
- package/template/.claude/skills/pipeline-rubrics/SKILL.md +51 -0
- package/template/.claude/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
- package/template/.claude/skills/pipeline-rubrics/references/be-rubric.md +21 -0
- package/template/.claude/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
- package/template/.claude/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
- package/template/.claude/skills/pipeline-rubrics/references/scoring.md +32 -0
- package/template/.claude/skills/pipeline-rubrics/references/vision-rubric.md +12 -0
- package/template/.claude/skills/prd-templates/SKILL.md +107 -0
- package/template/.claude/skills/prd-templates/references/architecture-completeness-checklist.md +28 -0
- package/template/.claude/skills/prd-templates/references/architecture-design-template.md +88 -0
- package/template/.claude/skills/prd-templates/references/be-spec-classification.md +41 -0
- package/template/.claude/skills/prd-templates/references/be-spec-template.md +107 -0
- package/template/.claude/skills/prd-templates/references/bootstrap-verification-protocol.md +50 -0
- package/template/.claude/skills/prd-templates/references/constraint-exploration.md +41 -0
- package/template/.claude/skills/prd-templates/references/data-placement-template.md +74 -0
- package/template/.claude/skills/prd-templates/references/decision-confirmation-protocol.md +68 -0
- package/template/.claude/skills/prd-templates/references/decision-propagation.md +121 -0
- package/template/.claude/skills/prd-templates/references/decomposition-templates.md +226 -0
- package/template/.claude/skills/prd-templates/references/deep-ideation-loading-protocol.md +114 -0
- package/template/.claude/skills/prd-templates/references/design-system-decisions.md +198 -0
- package/template/.claude/skills/prd-templates/references/design-system-prerequisite-check.md +18 -0
- package/template/.claude/skills/prd-templates/references/domain-exhaustion-criteria.md +37 -0
- package/template/.claude/skills/prd-templates/references/engagement-tier-protocol.md +58 -0
- package/template/.claude/skills/prd-templates/references/engineering-standards-template.md +126 -0
- package/template/.claude/skills/prd-templates/references/evolution-layer-guidance.md +91 -0
- package/template/.claude/skills/prd-templates/references/expansion-modes.md +27 -0
- package/template/.claude/skills/prd-templates/references/fe-classification-procedures.md +47 -0
- package/template/.claude/skills/prd-templates/references/fe-spec-template.md +90 -0
- package/template/.claude/skills/prd-templates/references/feature-ledger-protocol.md +149 -0
- package/template/.claude/skills/prd-templates/references/folder-seeding-protocol.md +77 -0
- package/template/.claude/skills/prd-templates/references/fractal-cx-template.md +58 -0
- package/template/.claude/skills/prd-templates/references/fractal-feature-template.md +93 -0
- package/template/.claude/skills/prd-templates/references/fractal-node-index-template.md +55 -0
- package/template/.claude/skills/prd-templates/references/gate-applicability.md +92 -0
- package/template/.claude/skills/prd-templates/references/ideation-crosscut-template.md +36 -0
- package/template/.claude/skills/prd-templates/references/ideation-index-template.md +111 -0
- package/template/.claude/skills/prd-templates/references/ideation-meta-template.md +126 -0
- package/template/.claude/skills/prd-templates/references/infrastructure-report-template.md +71 -0
- package/template/.claude/skills/prd-templates/references/input-classification.md +23 -0
- package/template/.claude/skills/prd-templates/references/map-guard-protocol.md +65 -0
- package/template/.claude/skills/prd-templates/references/operational-templates.md +116 -0
- package/template/.claude/skills/prd-templates/references/persona-completeness-gate.md +20 -0
- package/template/.claude/skills/prd-templates/references/placeholder-guard-template.md +21 -0
- package/template/.claude/skills/prd-templates/references/placeholder-workflow-mapping.md +50 -0
- package/template/.claude/skills/prd-templates/references/shard-boundary-analysis.md +103 -0
- package/template/.claude/skills/prd-templates/references/shard-split-remediation.md +157 -0
- package/template/.claude/skills/prd-templates/references/skill-loading-protocol.md +36 -0
- package/template/.claude/skills/prd-templates/references/slice-completion-gates.md +29 -0
- package/template/.claude/skills/prd-templates/references/spec-coverage-sweep.md +44 -0
- package/template/.claude/skills/prd-templates/references/surface-model.md +61 -0
- package/template/.claude/skills/prd-templates/references/tdd-testing-policy.md +39 -0
- package/template/.claude/skills/prd-templates/references/vision-template.md +57 -0
- package/template/.claude/skills/prd-templates/references/workflow-checkpoint-protocol.md +112 -0
- package/template/.claude/skills/prd-templates/references/write-verification-protocol.md +57 -0
- package/template/.claude/skills/prompt-engineer/SKILL.md +203 -0
- package/template/.claude/skills/regex-patterns/SKILL.md +333 -0
- package/template/.claude/skills/regex-patterns/references/go.md +44 -0
- package/template/.claude/skills/regex-patterns/references/javascript.md +63 -0
- package/template/.claude/skills/regex-patterns/references/python.md +77 -0
- package/template/.claude/skills/regex-patterns/references/rust.md +43 -0
- package/template/.claude/skills/resolve-ambiguity/SKILL.md +278 -0
- package/template/.claude/skills/security-scanning-security-hardening/SKILL.md +231 -0
- package/template/.claude/skills/session-continuity/SKILL.md +732 -0
- package/template/.claude/skills/session-continuity/protocols/01-session-resumption.md +38 -0
- package/template/.claude/skills/session-continuity/protocols/02-progress-generation.md +85 -0
- package/template/.claude/skills/session-continuity/protocols/03-progress-update.md +70 -0
- package/template/.claude/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
- package/template/.claude/skills/session-continuity/protocols/05-session-close.md +37 -0
- package/template/.claude/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
- package/template/.claude/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
- package/template/.claude/skills/session-continuity/protocols/08-spec-pipeline-update.md +55 -0
- package/template/.claude/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
- package/template/.claude/skills/session-continuity/protocols/10-placeholder-verification-gate.md +83 -0
- package/template/.claude/skills/session-continuity/protocols/11-parallel-synthesis.md +21 -0
- package/template/.claude/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
- package/template/.claude/skills/skill-creator/SKILL.md +203 -0
- package/template/.claude/skills/skill-creator/references/.gitkeep +0 -0
- package/template/.claude/skills/skill-creator/scripts/.gitkeep +0 -0
- package/template/.claude/skills/spec-writing/SKILL.md +110 -0
- package/template/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/template/.claude/skills/systematic-debugging/SKILL.md +297 -0
- package/template/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/template/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/template/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/template/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
- package/template/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/template/.claude/skills/systematic-debugging/test-academic.md +14 -0
- package/template/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/template/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/template/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/template/.claude/skills/tdd-workflow/SKILL.md +186 -0
- package/template/.claude/skills/tdd-workflow/references/typescript.md +231 -0
- package/template/.claude/skills/tech-stack-catalog/SKILL.md +49 -0
- package/template/.claude/skills/tech-stack-catalog/references/constraint-questions.md +237 -0
- package/template/.claude/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
- package/template/.claude/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
- package/template/.claude/skills/technical-writer/SKILL.md +242 -0
- package/template/.claude/skills/testing-strategist/SKILL.md +319 -0
- package/template/.claude/skills/testing-strategist/references/typescript.md +328 -0
- package/template/.claude/skills/verification-before-completion/SKILL.md +97 -0
- package/template/.claude/skills/workflow-automation/SKILL.md +166 -0
- package/template/.claude/skills/workflow-automation/references/inngest.md +88 -0
- package/template/.claude/skills/workflow-automation/references/temporal.md +64 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Operational Templates
|
|
2
|
+
|
|
3
|
+
Templates for operational artifacts produced during planning, assessment, and provisioning workflows.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Slice Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
Use when writing slice entries during `/plan-phase` Step 4:
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
### Slice N: [Name]
|
|
13
|
+
**Size**: S/M/L
|
|
14
|
+
**Surfaces**: Contract, API, DB, UI
|
|
15
|
+
|
|
16
|
+
#### Tasks
|
|
17
|
+
- [ ] Contract: {{CONTRACT_LIBRARY}} schema for [entity] ← no tag (orchestrator handles sequentially)
|
|
18
|
+
- [ ] `BE` API endpoints for [entity] ← backend agent
|
|
19
|
+
- [ ] `FE` [entity] page and components ← frontend agent
|
|
20
|
+
- [ ] `QA` Integration tests for [entity] ← QA agent (runs FIRST to write failing tests, AND after BE+FE to verify)
|
|
21
|
+
|
|
22
|
+
#### Acceptance Criteria
|
|
23
|
+
- [ ] Given [context], when [action], then [result]
|
|
24
|
+
- [ ] Given [context], when [error condition], then [error response]
|
|
25
|
+
- [ ] [Performance/security criteria if applicable]
|
|
26
|
+
|
|
27
|
+
#### Dependencies
|
|
28
|
+
- Requires: Slice M
|
|
29
|
+
- Enables: Slice P
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Remediation State
|
|
35
|
+
|
|
36
|
+
Use when writing `docs/audits/remediation-state.md` during `/remediate-pipeline-assess`:
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
# Remediation State
|
|
40
|
+
|
|
41
|
+
> Generated: [ISO 8601 date]
|
|
42
|
+
|
|
43
|
+
## Layer Status
|
|
44
|
+
|
|
45
|
+
- vision: [confirmed-clean | unverified-clean | needs-audit | no-content]
|
|
46
|
+
- architecture: [confirmed-clean | unverified-clean | needs-audit | no-content]
|
|
47
|
+
- ia: [confirmed-clean | unverified-clean | needs-audit | no-content]
|
|
48
|
+
- be: [confirmed-clean | unverified-clean | needs-audit | no-content]
|
|
49
|
+
- fe: [confirmed-clean | unverified-clean | needs-audit | no-content]
|
|
50
|
+
|
|
51
|
+
## Current Layer
|
|
52
|
+
|
|
53
|
+
[layer — the layer to process next]
|
|
54
|
+
|
|
55
|
+
## Layers Confirmed Clean This Session
|
|
56
|
+
|
|
57
|
+
(none yet)
|
|
58
|
+
|
|
59
|
+
## Notes
|
|
60
|
+
|
|
61
|
+
[Any relevant context]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Installed Skills List
|
|
67
|
+
|
|
68
|
+
Use when updating `{{INSTALLED_SKILLS}}` during `/bootstrap-agents-provision` Step 8:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
### Default Skills
|
|
72
|
+
- fix-bug — TDD bug fix workflow
|
|
73
|
+
- refactor — Safe refactoring with test verification
|
|
74
|
+
- add-feature — Add feature to existing architecture
|
|
75
|
+
- deploy — Full deployment pipeline
|
|
76
|
+
- pr-review — Structured PR review
|
|
77
|
+
- security-audit — Security review across all layers
|
|
78
|
+
- main-workflow — General development workflow
|
|
79
|
+
- iterate-plan — Tech stack gap analysis
|
|
80
|
+
- setup-session — Session initialization
|
|
81
|
+
- using-git-worktrees — Isolated workspace management
|
|
82
|
+
- github-workflow-automation — GitHub CI/CD patterns
|
|
83
|
+
- audit-context-building — Deep code analysis
|
|
84
|
+
- context7-auto-research — Auto documentation lookup
|
|
85
|
+
- self-improving-agent — Learning from experiences
|
|
86
|
+
|
|
87
|
+
### Stack Skills
|
|
88
|
+
- [skill-name] — [description] (installed for [STACK_KEY]=[value])
|
|
89
|
+
- ...
|
|
90
|
+
|
|
91
|
+
### Surface Skills
|
|
92
|
+
- [skill-name] — [description] (installed for [surface] surface)
|
|
93
|
+
- ...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Sync Integration Inventory
|
|
99
|
+
|
|
100
|
+
Use when building the integration inventory during `/sync-kit` Step 5a:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## New Kit Content Since Last Sync
|
|
104
|
+
|
|
105
|
+
### New Rules
|
|
106
|
+
- [list new rules, e.g. boundary-not-placeholder]
|
|
107
|
+
|
|
108
|
+
### New Skills
|
|
109
|
+
- [list new skills, e.g. parallel-agents, parallel-debugging]
|
|
110
|
+
|
|
111
|
+
### Changed Rules/Instructions
|
|
112
|
+
- [list what changed, e.g. tdd-always now references BOUNDARY stubs]
|
|
113
|
+
|
|
114
|
+
### New Concepts
|
|
115
|
+
- [list new concepts, e.g. boundary stubs, file ownership, synthesis protocol]
|
|
116
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Persona Completeness Gate
|
|
2
|
+
|
|
3
|
+
Applies to every persona in `meta/personas.md` during ideation.
|
|
4
|
+
|
|
5
|
+
## Required Fields (6)
|
|
6
|
+
|
|
7
|
+
Every persona must have all 6 fields populated before proceeding past persona exploration:
|
|
8
|
+
|
|
9
|
+
1. **Name + specific role** — not generic ("Shop Owner" not "User")
|
|
10
|
+
2. **Specific pain point** — the problem this product solves for them
|
|
11
|
+
3. **Current workaround** — how they solve it today without this product
|
|
12
|
+
4. **Success criteria** — what "solved" looks like for them (measurable)
|
|
13
|
+
5. **Switching trigger** — what event would make them adopt this product
|
|
14
|
+
6. **Edge case or constraint** — at least one thing unique to this persona (regulatory, workflow, scale)
|
|
15
|
+
|
|
16
|
+
## Enforcement
|
|
17
|
+
|
|
18
|
+
If any field is absent for any persona → probe the user before proceeding.
|
|
19
|
+
|
|
20
|
+
Reference: `.agent/skills/pipeline-rubrics/references/ideation-rubric.md` Dimension 2.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Placeholder Guard — Hard Stop Template
|
|
2
|
+
|
|
3
|
+
Use this template in any workflow `## 0. Placeholder guard` step to emit a hard stop when required placeholders are unfilled.
|
|
4
|
+
|
|
5
|
+
## Hard Stop Message Format
|
|
6
|
+
|
|
7
|
+
Emit one block per unfilled placeholder:
|
|
8
|
+
|
|
9
|
+
> ❌ **Bootstrap incomplete — cannot proceed.**
|
|
10
|
+
>
|
|
11
|
+
> **Unfilled placeholder:** `{{PLACEHOLDER_NAME}}`
|
|
12
|
+
>
|
|
13
|
+
> **Recovery:** If `docs/plans/*-architecture-design.md` exists, read it and extract the confirmed [tech decision] value, then run `/bootstrap-agents` with `KEY=<confirmed-value>`. If no architecture design document exists, run `/create-prd-stack` first to confirm tech stack decisions.
|
|
14
|
+
>
|
|
15
|
+
> **Why this matters:** [specific step] cannot produce correct output without this skill — [concrete consequence of proceeding without it].
|
|
16
|
+
|
|
17
|
+
## Guard Procedure
|
|
18
|
+
|
|
19
|
+
1. For each placeholder listed in the workflow's `requires_placeholders` frontmatter, check whether the literal characters `{{` still appear in the value.
|
|
20
|
+
2. If **any** are unfilled, emit the hard stop message above (one block per unfilled placeholder) and **do not proceed** to the next step.
|
|
21
|
+
3. Only proceed when **all** required placeholders report no literal `{{` characters.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Map Column Reference
|
|
2
|
+
|
|
3
|
+
Maps surface stack map columns and cross-cutting categories to the workflows that consume them.
|
|
4
|
+
|
|
5
|
+
> **How workflows use the map**: See `.agent/instructions/tech-stack.md` for the surface stack map format and resolution rules. Workflows determine their surface context (from shard directory or slice surface tag), then look up the corresponding row and column.
|
|
6
|
+
|
|
7
|
+
## Per-Surface Columns
|
|
8
|
+
|
|
9
|
+
| Column | Workflows That Consume It |
|
|
10
|
+
|--------|--------------------------|
|
|
11
|
+
| **Languages** | write-be-spec-classify, write-fe-spec-classify, implement-slice-setup, implement-slice-tdd, evolve-contract |
|
|
12
|
+
| **BE Frameworks** | write-be-spec-classify |
|
|
13
|
+
| **FE Frameworks** | write-fe-spec-classify |
|
|
14
|
+
| **FE Design** | write-fe-spec-classify |
|
|
15
|
+
| **ORMs** | create-prd-architecture, write-be-spec-classify, implement-slice-setup, verify-infrastructure, validate-phase |
|
|
16
|
+
| **State Mgmt** | write-fe-spec-classify, implement-slice-setup |
|
|
17
|
+
| **Databases** | create-prd-architecture, write-architecture-spec-design, write-be-spec-classify |
|
|
18
|
+
| **Unit Tests** | create-prd-compile, write-be-spec-classify, implement-slice-setup, implement-slice-tdd, evolve-contract |
|
|
19
|
+
| **E2E Tests** | create-prd-compile, implement-slice-tdd, validate-phase |
|
|
20
|
+
| **Test Cmd** | implement-slice-tdd, validate-phase, evolve-contract |
|
|
21
|
+
| **Validation Cmd** | implement-slice-tdd, validate-phase, evolve-contract |
|
|
22
|
+
| **Lint Cmd** | validate-phase |
|
|
23
|
+
| **Build Cmd** | validate-phase |
|
|
24
|
+
| **Dev Cmd** | verify-infrastructure |
|
|
25
|
+
| **Package Mgr** | bootstrap-agents-fill |
|
|
26
|
+
|
|
27
|
+
## Cross-Cutting Categories
|
|
28
|
+
|
|
29
|
+
| Category | Workflows That Consume It |
|
|
30
|
+
|----------|--------------------------|
|
|
31
|
+
| **Auth** | create-prd-security, write-be-spec-classify |
|
|
32
|
+
| **CI/CD** | create-prd-compile, decompose-architecture-structure, plan-phase-write, verify-infrastructure, validate-phase |
|
|
33
|
+
| **Hosting** | create-prd-architecture, decompose-architecture-structure, plan-phase-write, verify-infrastructure, validate-phase |
|
|
34
|
+
| **Security** | create-prd-security, write-architecture-spec-design, validate-phase |
|
|
35
|
+
| **API Design** | create-prd-architecture, write-architecture-spec-design, write-be-spec-classify |
|
|
36
|
+
| **Accessibility** | write-fe-spec-classify, write-fe-spec-write, write-architecture-spec-design, validate-phase |
|
|
37
|
+
| **Contract Library** | tdd-contract-first rule, implement-slice-setup |
|
|
38
|
+
|
|
39
|
+
## Surface Context Resolution
|
|
40
|
+
|
|
41
|
+
How each workflow determines which surface's row to read:
|
|
42
|
+
|
|
43
|
+
| Workflow Type | Resolution Method |
|
|
44
|
+
|--------------|-------------------|
|
|
45
|
+
| Spec-writing (`write-be-spec`, `write-fe-spec`) | Shard directory path: `docs/plans/be/desktop/` → surface `desktop`; flat `docs/plans/be/` → surface `shared` |
|
|
46
|
+
| Implementation (`implement-slice`) | Slice's `surface:` tag from the phase plan |
|
|
47
|
+
| Planning (`plan-phase`) | Iterates ALL surfaces in the map |
|
|
48
|
+
| Validation (`validate-phase`) | Runs per-surface commands for all surfaces |
|
|
49
|
+
| Cross-cutting (`verify-infrastructure`) | Uses cross-cutting table + primary surface for commands |
|
|
50
|
+
| Architecture (`create-prd-*`) | Map may be incomplete during these workflows — falls back to inline conversation context |
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Shard Boundary Analysis
|
|
2
|
+
|
|
3
|
+
Reference data for the decompose-architecture workflow — shard boundary heuristics, load thresholds, classification types, and split proposal format.
|
|
4
|
+
|
|
5
|
+
## Fractal Tree Signals for Shard Boundaries
|
|
6
|
+
|
|
7
|
+
| Signal | What It Means for Sharding |
|
|
8
|
+
|--------|---------------------------|
|
|
9
|
+
| Deep fractal tree (3+ levels) | Domain is complex enough for its own shard |
|
|
10
|
+
| Many children (5+ features) | Consider splitting into multiple shards |
|
|
11
|
+
| Dense CX file (5+ cross-cuts) | High coupling — keep together in one shard, or isolate carefully |
|
|
12
|
+
| Rich Role Matrix (3+ roles with access) | Shard needs multi-role IA spec coverage |
|
|
13
|
+
| Hub-and-spoke shared domains | Shared domains often become `00-*` cross-cutting shards |
|
|
14
|
+
| Leaf features marked `[EXHAUSTED]` | Most confident for shard scoping — behavior is fully defined |
|
|
15
|
+
|
|
16
|
+
## Standard Boundary Heuristics
|
|
17
|
+
|
|
18
|
+
- Features that share the same data models belong together
|
|
19
|
+
- Features that can be developed/deployed independently are candidates for separation
|
|
20
|
+
- Features that share the same access control model may belong together
|
|
21
|
+
- Cross-cutting concerns (auth, API conventions, error handling) become `00-*` shards
|
|
22
|
+
|
|
23
|
+
## Shard Load Thresholds (Pre-check from Ideation)
|
|
24
|
+
|
|
25
|
+
| Ideation Sub-Areas | Pre-Check Action |
|
|
26
|
+
|---|---|
|
|
27
|
+
| ≤6 | ✅ No concern — proceed |
|
|
28
|
+
| 7–9 | ⚠️ **Pre-flag for split review** — note in the shard skeleton |
|
|
29
|
+
| ≥10 | 🚩 **Proactive split proposal** — present to user NOW before calibration gate |
|
|
30
|
+
|
|
31
|
+
## Sub-feature Count Thresholds (Calibration Gate)
|
|
32
|
+
|
|
33
|
+
Count sub-features using the **bullet/named-item rule**: count every bullet or named item under `## Features`, excluding group headers that introduce a group but are not themselves a concrete capability. Sub-bullets count independently. Test: "Would a product manager list this as a separate line item in a release note?"
|
|
34
|
+
|
|
35
|
+
| Sub-feature Count | Action |
|
|
36
|
+
|-------------------|--------|
|
|
37
|
+
| **≤6** | ✅ OK — proceed |
|
|
38
|
+
| **7–9** | ⚠️ Flag for user review — present sub-feature list and ask: "Keep as-is, or split?" |
|
|
39
|
+
| **≥10** | 🛑 **Hard stop** — present mandatory split proposal. No shard may exit with ≥10 sub-features. |
|
|
40
|
+
|
|
41
|
+
## Shard Document Type Classification
|
|
42
|
+
|
|
43
|
+
| Classification | Expected BE Specs |
|
|
44
|
+
|---------------|-------------------|
|
|
45
|
+
| **Feature domain** | 1 |
|
|
46
|
+
| **Multi-domain** | N (split along sub-feature boundaries) |
|
|
47
|
+
| **Cross-cutting** | 1 (`00-*`) |
|
|
48
|
+
| **Structural reference** | 0 |
|
|
49
|
+
|
|
50
|
+
Annotation format for shard skeletons:
|
|
51
|
+
```markdown
|
|
52
|
+
> **Document Type** (preliminary): Feature domain | Multi-domain | Cross-cutting | Structural reference
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Split Proposal Format
|
|
56
|
+
|
|
57
|
+
When a shard exceeds the ≥10 threshold:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Shard [NN] — [domain name] has [N] sub-features (threshold: ≥10 → mandatory split)
|
|
61
|
+
|
|
62
|
+
Current sub-features:
|
|
63
|
+
1. [sub-feature]
|
|
64
|
+
2. [sub-feature]
|
|
65
|
+
...
|
|
66
|
+
|
|
67
|
+
Proposed split:
|
|
68
|
+
[NN]a — [new domain name] → file: docs/plans/ia/[NN]a-[domain].md
|
|
69
|
+
Sub-features: 1, 3, 5
|
|
70
|
+
[NN]b — [new domain name] → file: docs/plans/ia/[NN]b-[domain].md
|
|
71
|
+
Sub-features: 2, 4, 6
|
|
72
|
+
|
|
73
|
+
Split rationale: [why these groups are independent]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**After any split**: Update `docs/plans/ia/decomposition-plan.md` with the revised table, re-run the Must Have coverage gate, **then run `/remediate-shard-split` to update all downstream cross-references. Do NOT proceed until zero stale parent references remain.** See `.agent/skills/prd-templates/references/shard-split-remediation.md` for scan patterns and matching heuristics.
|
|
77
|
+
|
|
78
|
+
**Companion spec tracking**: When writing BE or FE specs for split shards, populate the `## Split Group` section in each spec file (see `be-spec-template.md` / `fe-spec-template.md`). This enables downstream discovery of sibling specs during implementation.
|
|
79
|
+
|
|
80
|
+
## Total Shard Count Guidance
|
|
81
|
+
|
|
82
|
+
The decomposition should produce a shard count proportional to the ideation depth. Too few shards compress complex domains and lose detail. Too many create coordination overhead that exceeds agent context capacity.
|
|
83
|
+
|
|
84
|
+
### Expected Range by Ideation Scale
|
|
85
|
+
|
|
86
|
+
| Ideation Scale | Domains | Expected Shards (incl. `00-infrastructure`) | Notes |
|
|
87
|
+
|----------------|---------|---------------------------------------------|-------|
|
|
88
|
+
| **Small** | 3–5 | 4–8 | Most domains map 1:1 to shards |
|
|
89
|
+
| **Medium** | 6–8 | 7–14 | Some multi-domain splits expected |
|
|
90
|
+
| **Large** | 9–12 | 12–20 | Cross-cutting shards multiply; enforce sub-feature limits aggressively |
|
|
91
|
+
| **Deep** | 13+ | 16–25 | Maximum recommended. Beyond 25 → consider surface-level decomposition or domain grouping |
|
|
92
|
+
|
|
93
|
+
### Total Count Thresholds (Post-Skeleton Check)
|
|
94
|
+
|
|
95
|
+
After all shard skeletons are created in Step 5, count the total:
|
|
96
|
+
|
|
97
|
+
| Total Shards | Action |
|
|
98
|
+
|--------------|--------|
|
|
99
|
+
| **≤ 20** | ✅ Proceed |
|
|
100
|
+
| **21–25** | ⚠️ Warning — "Decomposition produced [N] shards. This will require [N × 3] spec documents (IA + BE + FE) and proportional phase planning. Confirm this is the intended scope or consider grouping related domains." |
|
|
101
|
+
| **> 25** | 🛑 **Hard stop** — "Decomposition produced [N] shards. This exceeds the recommended maximum for sequential agent processing. Present a domain grouping proposal that reduces shard count to ≤ 25." |
|
|
102
|
+
|
|
103
|
+
> **Why 25 max**: Each shard produces ~3 spec documents (IA + BE + FE). At 25 shards, that's 75 spec documents. Beyond this, cross-layer consistency checks become unreliable and phase planning produces impractical slice counts.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Shard Split Remediation Reference
|
|
2
|
+
|
|
3
|
+
Templates, formats, and scan patterns for `/remediate-shard-split` workflow.
|
|
4
|
+
|
|
5
|
+
## Sub-Shard Mapping Table Format
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
| Parent | Sub-Shard | Domain Name | Keywords |
|
|
9
|
+
|--------|-----------|-------------|----------|
|
|
10
|
+
| 00 | 00a | Consumer Identity | auth, identity, login, registration, session, token, OAuth, password |
|
|
11
|
+
| 00 | 00b | AI Gateway | AI, gateway, LLM, model, inference, prompt, embedding, agent |
|
|
12
|
+
| 00 | 00c | File Storage | file, storage, upload, media, blob, asset, image, document |
|
|
13
|
+
| 00 | 00d | Taxonomy | taxonomy, category, classification, tag, hierarchy, label |
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Keyword Extraction Rules
|
|
17
|
+
|
|
18
|
+
1. Read each sub-shard's `## Features` section
|
|
19
|
+
2. Extract nouns and domain terms from each feature bullet
|
|
20
|
+
3. Include the sub-shard's domain name words as keywords
|
|
21
|
+
4. Include obvious synonyms (e.g., "auth" → also "authentication", "login", "session")
|
|
22
|
+
5. Aim for 5–10 keywords per sub-shard — enough for matching, not so many they overlap
|
|
23
|
+
|
|
24
|
+
## Cross-Reference Scan Patterns
|
|
25
|
+
|
|
26
|
+
Grep the entire `docs/plans/` tree for the parent shard number using these patterns. The `NN` below represents the parent number (e.g., `00`, `01`, `02`).
|
|
27
|
+
|
|
28
|
+
### Primary Patterns (always scan)
|
|
29
|
+
|
|
30
|
+
| Pattern | Matches |
|
|
31
|
+
|---------|---------|
|
|
32
|
+
| `Depends on:.*NN` | Depends-on header lines |
|
|
33
|
+
| `Consumed by:.*NN` | Consumed-by header lines |
|
|
34
|
+
| `\| *NN *\|` | Dependency table cells containing the shard number |
|
|
35
|
+
| `NN — ` or `NN —` | Shard references with em-dash (e.g., "00 — Infrastructure") |
|
|
36
|
+
| `NN - ` or `NN -` | Shard references with hyphen |
|
|
37
|
+
| `(NN` followed by space or `)` | Parenthetical shard references |
|
|
38
|
+
| `shard NN` (case-insensitive) | Inline text references |
|
|
39
|
+
| `NN-[a-z]*.md` parent filename refs | Links to the parent file (e.g., `00-infrastructure.md`) |
|
|
40
|
+
|
|
41
|
+
### Scope
|
|
42
|
+
|
|
43
|
+
| Directory | Required |
|
|
44
|
+
|-----------|----------|
|
|
45
|
+
| `docs/plans/ia/` | Always |
|
|
46
|
+
| `docs/plans/be/` | If exists |
|
|
47
|
+
| `docs/plans/fe/` | If exists |
|
|
48
|
+
| `docs/plans/be/web/` | If exists |
|
|
49
|
+
| `docs/plans/fe/web/` | If exists |
|
|
50
|
+
| `docs/plans/be/desktop/` | If exists |
|
|
51
|
+
| `docs/plans/fe/desktop/` | If exists |
|
|
52
|
+
| `docs/plans/be/mobile/` | If exists |
|
|
53
|
+
| `docs/plans/fe/mobile/` | If exists |
|
|
54
|
+
|
|
55
|
+
### Exclusions
|
|
56
|
+
|
|
57
|
+
- The parent stub file itself (already marked SPLIT)
|
|
58
|
+
- `docs/audits/` (audit records, not active specs)
|
|
59
|
+
- `docs/plans/ideation/` (upstream of decomposition — doesn't use shard numbers)
|
|
60
|
+
|
|
61
|
+
## Context Matching Heuristics
|
|
62
|
+
|
|
63
|
+
When a stale reference includes a parenthetical description, match it against sub-shard keywords:
|
|
64
|
+
|
|
65
|
+
### Matching Algorithm
|
|
66
|
+
|
|
67
|
+
1. **Exact keyword match**: If the parenthetical contains a word that appears in exactly one sub-shard's keyword list → **clear match**
|
|
68
|
+
2. **Strongest keyword match**: If the parenthetical contains words that appear in multiple sub-shards' keyword lists, pick the sub-shard with the most keyword hits → **clear match** if gap ≥ 2 hits, **ambiguous** otherwise
|
|
69
|
+
3. **Contextual read**: If keyword matching is inconclusive, read the surrounding 5 lines in the downstream file for additional context clues (e.g., what feature is being described in that section)
|
|
70
|
+
4. **No match**: If the parenthetical is generic (e.g., just "Infrastructure" with no specifics) → **flag for user resolution**
|
|
71
|
+
|
|
72
|
+
### Multiple Dependency Detection
|
|
73
|
+
|
|
74
|
+
A downstream shard may legitimately depend on more than one sub-shard. Detect this when:
|
|
75
|
+
|
|
76
|
+
- The `Depends on:` section lists the parent *and* the downstream shard's features span multiple sub-shard domains
|
|
77
|
+
- The downstream shard's data model references entities owned by different sub-shards
|
|
78
|
+
|
|
79
|
+
In this case, propose expanding the single reference into multiple references:
|
|
80
|
+
```
|
|
81
|
+
Before: Depends on: 00 (Infrastructure)
|
|
82
|
+
After: Depends on: 00a (Consumer Identity), 00c (File Storage)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Remediation Display Format
|
|
86
|
+
|
|
87
|
+
### Clear Match
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
Reference N of X
|
|
92
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
93
|
+
Document: [path]
|
|
94
|
+
Line: [line number]
|
|
95
|
+
Current: [current text with stale reference]
|
|
96
|
+
Context: [extracted context clue]
|
|
97
|
+
Maps to: [proposed sub-shard] — [confidence: clear]
|
|
98
|
+
Fix to: [proposed replacement text]
|
|
99
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
|
+
[Y] Apply fix and move to next
|
|
101
|
+
[n] Skip this item
|
|
102
|
+
[e] Edit — provide custom replacement
|
|
103
|
+
[skip] Skip entire document
|
|
104
|
+
[stop-and-save] Save progress and stop
|
|
105
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Ambiguous Match
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
112
|
+
Reference N of X — AMBIGUOUS
|
|
113
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
114
|
+
Document: [path]
|
|
115
|
+
Line: [line number]
|
|
116
|
+
Current: [current text with stale reference]
|
|
117
|
+
Context: [extracted context clue]
|
|
118
|
+
Candidates:
|
|
119
|
+
[1] [sub-shard] — [domain] (keyword match: "[matched words]")
|
|
120
|
+
[2] [sub-shard] — [domain] (keyword match: "[matched words]")
|
|
121
|
+
[M] Multiple — expand to: [sub-shard1], [sub-shard2]
|
|
122
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
123
|
+
Which sub-shard? [1/2/M/skip/stop-and-save]
|
|
124
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Remediation Record Template
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
# Shard Split Remediation — [Parent NN] → [Sub-shards]
|
|
131
|
+
|
|
132
|
+
**Date**: [YYYY-MM-DD]
|
|
133
|
+
**Parent shard**: [NN] — [domain name]
|
|
134
|
+
**Sub-shards**: [list with domain names]
|
|
135
|
+
|
|
136
|
+
## Mapping Table Used
|
|
137
|
+
|
|
138
|
+
[copy of the confirmed mapping table]
|
|
139
|
+
|
|
140
|
+
## Changes Applied
|
|
141
|
+
|
|
142
|
+
| # | Document | Line | Before | After | Confidence |
|
|
143
|
+
|---|----------|------|--------|-------|------------|
|
|
144
|
+
| 1 | [path] | [N] | [old text] | [new text] | clear/user-resolved |
|
|
145
|
+
|
|
146
|
+
## Skipped References
|
|
147
|
+
|
|
148
|
+
| # | Document | Line | Text | Reason |
|
|
149
|
+
|---|----------|------|------|--------|
|
|
150
|
+
| 1 | [path] | [N] | [text] | [reason] |
|
|
151
|
+
|
|
152
|
+
## Verification
|
|
153
|
+
|
|
154
|
+
- **Final grep result**: 0 stale references remaining ✅
|
|
155
|
+
- **Documents scanned**: [N]
|
|
156
|
+
- **Documents modified**: [N]
|
|
157
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Skill Loading Protocol
|
|
2
|
+
|
|
3
|
+
Standard procedure for loading skills from the surface stack map before beginning spec or implementation work.
|
|
4
|
+
|
|
5
|
+
## How to Load Skills from the Surface Stack Map
|
|
6
|
+
|
|
7
|
+
1. **Determine the surface**: Identify which surface this work belongs to from the directory path or phase plan (e.g., `docs/plans/be/web/` → surface `web`; flat `docs/plans/be/` → surface `shared`).
|
|
8
|
+
|
|
9
|
+
2. **Read the surface stack map**: Open `.agent/instructions/tech-stack.md` and locate this surface's row.
|
|
10
|
+
|
|
11
|
+
3. **For each skill category** relevant to your workflow (Languages, Databases, BE Frameworks, FE Frameworks, FE Design, ORMs, Auth, Unit Tests, E2E Tests, State Mgmt, Accessibility, CI/CD, Hosting, Security):
|
|
12
|
+
- Read the skill name(s) listed in that cell
|
|
13
|
+
- For each skill directory name, read `.agent/skills/[skill]/SKILL.md`
|
|
14
|
+
- Follow its conventions (language, testing, framework, design, etc.)
|
|
15
|
+
|
|
16
|
+
4. **Cross-cutting skills**: Some categories (Auth, Security, CI/CD, Hosting, Accessibility) are in the cross-cutting section — not per-surface. Read those from the cross-cutting rows.
|
|
17
|
+
|
|
18
|
+
5. **Missing skill fallback**: If any skill in the bundle is not installed in `.agent/skills/` and is not in `.agent/skill-library/MANIFEST.md`, read `.agent/skills/find-skills/SKILL.md` and follow its discovery methodology to search for a community equivalent before proceeding without it.
|
|
19
|
+
|
|
20
|
+
## Which Categories to Load Per Workflow
|
|
21
|
+
|
|
22
|
+
| Workflow | Required Categories |
|
|
23
|
+
|----------|-------------------|
|
|
24
|
+
| `write-be-spec-classify` | Languages, Databases, Auth, BE Frameworks, ORMs, Unit Tests |
|
|
25
|
+
| `write-fe-spec-classify` | Languages, FE Frameworks, FE Design, Accessibility, State Mgmt |
|
|
26
|
+
| `write-architecture-spec-design` | Databases, Security, API Design |
|
|
27
|
+
| `setup-workspace-scaffold` | Languages, BE Frameworks, FE Frameworks |
|
|
28
|
+
| `setup-workspace-cicd` | CI/CD, Languages |
|
|
29
|
+
| `setup-workspace-hosting` | Hosting, CI/CD |
|
|
30
|
+
| `setup-workspace-data` | Databases, ORMs |
|
|
31
|
+
| `implement-slice-tdd` | Languages, Unit Tests, E2E Tests |
|
|
32
|
+
| `validate-phase` | Unit Tests, E2E Tests, CI/CD, Hosting, Accessibility, Security |
|
|
33
|
+
|
|
34
|
+
## Surface Stack Map Verification
|
|
35
|
+
|
|
36
|
+
Before loading, verify the required cells have filled values. If any required cell is empty → **HARD STOP**: tell the user to run `/create-prd` first to make tech stack decisions.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Slice Completion Gates
|
|
2
|
+
|
|
3
|
+
Checklists that must pass before a slice can be marked complete. Every unchecked item is a hard stop.
|
|
4
|
+
|
|
5
|
+
## UI Completeness Check (FE slices only)
|
|
6
|
+
|
|
7
|
+
- [ ] Every acceptance criterion mentioning "user sees", "user can", "displays", or "shows" has a rendered implementation — not just a passing test
|
|
8
|
+
- [ ] Every new route in this slice is wired into the app's navigation (not just exported as a component)
|
|
9
|
+
- [ ] Loading, error, and empty states are rendered in the UI — not just covered by tests
|
|
10
|
+
- [ ] The feature is reachable from the app's entry point via normal user navigation
|
|
11
|
+
|
|
12
|
+
Non-FE slices skip this block.
|
|
13
|
+
|
|
14
|
+
## Spec Traceability Gate (all slices)
|
|
15
|
+
|
|
16
|
+
- [ ] Re-read the BE spec section(s) for every endpoint in this slice — every response field, error code, and validation rule has a corresponding test tagged with the spec reference
|
|
17
|
+
- [ ] Re-read the IA shard's `## Edge Cases` section for this slice's domain — every edge case relevant to this slice has a `// IA-EDGE:` tagged test
|
|
18
|
+
- [ ] No `// DECISION:` annotations exist for behaviors that are actually specified in the BE spec or IA shard (i.e., no spec-defined behavior was treated as an undocumented implementation decision)
|
|
19
|
+
- [ ] The {{CONTRACT_LIBRARY}} contract written in Step 2 matches the delivered implementation field-for-field — no fields added, removed, or renamed during implementation without a corresponding contract update
|
|
20
|
+
|
|
21
|
+
## Resource Cleanup Gate (all slices)
|
|
22
|
+
|
|
23
|
+
- [ ] Every database client or connection created in this slice has a corresponding cleanup call (`disconnect`, `close`, `end`, `dispose`) in a `finally` block or lifecycle hook
|
|
24
|
+
- [ ] Every event listener or subscription registered in UI components has a corresponding cleanup in the component's unmount/destroy lifecycle
|
|
25
|
+
- [ ] Every `setInterval` or `setTimeout` with a stored reference has a corresponding `clearInterval`/`clearTimeout` on cleanup
|
|
26
|
+
- [ ] No file handles or streams are opened without corresponding `close`/`destroy` calls
|
|
27
|
+
- [ ] If using connection pools — pool size is configured (not left at framework default) and documented via code comment: `// POOL: max=N, reason=...`
|
|
28
|
+
|
|
29
|
+
> ❌ STOP — Do not call `notify_user` if any of the above are unchecked. Fix the gap and re-run the Test Cmd from the surface stack map.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Spec Coverage Sweep
|
|
2
|
+
|
|
3
|
+
Verifies that a phase's implementation delivered what the specs required — not just that tests pass.
|
|
4
|
+
|
|
5
|
+
## Procedure
|
|
6
|
+
|
|
7
|
+
For each slice in the phase plan (`docs/plans/phases/phase-N.md`):
|
|
8
|
+
|
|
9
|
+
### FE Spec Coverage
|
|
10
|
+
|
|
11
|
+
1. Read the slice's acceptance criteria
|
|
12
|
+
2. Identify the FE spec(s) referenced by this slice (via the FE spec's `## Source Map`)
|
|
13
|
+
3. For each named user flow in the relevant FE spec `## Interaction Specification` section that belongs to this slice:
|
|
14
|
+
- Verify a test exists in the test suite that covers this flow by name or by its acceptance criterion
|
|
15
|
+
- Verify the flow is implemented (not stubbed with `BOUNDARY:`) unless a valid boundary stub exists with a tracking issue
|
|
16
|
+
|
|
17
|
+
### BE Spec Coverage
|
|
18
|
+
|
|
19
|
+
4. Identify the BE spec section(s) for each endpoint in this slice
|
|
20
|
+
5. For each endpoint:
|
|
21
|
+
- Verify every {{CONTRACT_LIBRARY}}-validated field in the BE spec has a corresponding test
|
|
22
|
+
- Verify every error code defined in the BE spec has a corresponding test that asserts the **full error response shape** (status + error code + message), not just the HTTP status
|
|
23
|
+
- Verify every auth rule (role, ownership check) defined in the BE spec has a corresponding permission test
|
|
24
|
+
|
|
25
|
+
### IA Shard Coverage
|
|
26
|
+
|
|
27
|
+
6. For each slice, identify which IA shard(s) the slice's features originate from (using either the phase plan's domain references or the FE spec's `## Source Map`). For each identified IA shard:
|
|
28
|
+
- Read the shard's `## Accessibility` section (surface-conditional: apply only for `web`, `mobile`, or `desktop` surfaces). For each accessibility requirement, verify a corresponding test exists (e.g., axe-core check, keyboard navigation test, screen reader label test).
|
|
29
|
+
- Read the shard's acceptance criteria or testability section (look for Given/When/Then format or numbered acceptance criteria). For each criterion, verify it maps to at least one named test in the test suite.
|
|
30
|
+
- Flag any IA criterion with no test coverage as an uncovered item — apply the hard-stop rule below.
|
|
31
|
+
|
|
32
|
+
## Hard Stop Rule
|
|
33
|
+
|
|
34
|
+
If any flow, field, error code, auth rule, IA acceptance criterion, or accessibility requirement has no corresponding test:
|
|
35
|
+
|
|
36
|
+
> ❌ STOP — Do not mark this phase as complete. List the uncovered items. Either write the missing tests and re-run the Test Cmd from `.agent/instructions/commands.md`, or if the item was genuinely deferred (valid boundary stub + tracking issue), document the deferral explicitly in the phase validation report.
|
|
37
|
+
|
|
38
|
+
## Pass Criteria
|
|
39
|
+
|
|
40
|
+
Every named user flow, BE endpoint field, error code, auth rule, IA acceptance criterion, and accessibility requirement in the phase's scope has a corresponding passing test or a documented valid boundary stub.
|
|
41
|
+
|
|
42
|
+
## Report Section
|
|
43
|
+
|
|
44
|
+
Update report (`docs/audits/phase-N-validation.md`): Add a `## Spec Coverage` section listing the sweep results — covered items, uncovered items, boundary stubs, accessibility coverage, IA testability trace results, and the pass/fail verdict.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Surface Model Reference
|
|
2
|
+
|
|
3
|
+
This document defines two distinct models used throughout the kit. Understanding the distinction prevents confusion between surface types (what kind of thing you're building) and implementation layers (what a complete feature requires).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Surface Type Model
|
|
8
|
+
|
|
9
|
+
Used by: stack decisions, bootstrap key `SURFACES`, decomposition, `/plan-phase` Step 0.5
|
|
10
|
+
|
|
11
|
+
The surface type describes the *kind of deployment target* for the project.
|
|
12
|
+
|
|
13
|
+
| Surface Type | Description | Examples |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| `web` | Browser-based application | SaaS dashboard, marketing site, web app |
|
|
16
|
+
| `mobile` | Native or hybrid mobile app | iOS/Android app, React Native, Expo |
|
|
17
|
+
| `desktop` | Native desktop application | Electron, Tauri, native macOS/Windows |
|
|
18
|
+
| `cli` | Command-line interface | Developer tool, automation script, npm package |
|
|
19
|
+
| `api` | Headless API without a user-facing interface | REST API, GraphQL service, microservice |
|
|
20
|
+
| `extension` | Browser extension or plugin | Chrome extension, VS Code plugin |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Implementation Layer Model
|
|
25
|
+
|
|
26
|
+
Used by: `vertical-slices.md` completeness rule, phase planning, slice acceptance criteria
|
|
27
|
+
|
|
28
|
+
The implementation layer describes *what a complete vertical feature slice requires* — regardless of surface type.
|
|
29
|
+
|
|
30
|
+
| Layer | What It Is | Required For |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| **Data layer** | Schema, migrations, seed data, storage config | Every feature that persists state |
|
|
33
|
+
| **API layer** | Endpoints, validation, middleware, business logic | Every feature with server-side behavior |
|
|
34
|
+
| **User-facing layer** | The interface for the primary user of this feature | Every feature (form adapts to surface type) |
|
|
35
|
+
| **Admin layer** | Management interface for operators or privileged users | Every feature that needs operator control |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Reconciliation: Layers Are Always Present, Form Adapts
|
|
40
|
+
|
|
41
|
+
Every surface type has all four implementation layers — but the *form* of each layer adapts to the surface type.
|
|
42
|
+
|
|
43
|
+
| Surface Type | Data Layer | API Layer | User-Facing Layer | Admin Layer |
|
|
44
|
+
|---|---|---|---|---|
|
|
45
|
+
| `web` | DB schema + migrations | REST/GraphQL/tRPC endpoints | Browser UI (pages, components) | Admin dashboard or management UI |
|
|
46
|
+
| `mobile` | Local storage + remote sync | Mobile API endpoints | Native screens | Admin API or web admin |
|
|
47
|
+
| `desktop` | Local DB or file system | Internal IPC or local server | Native window UI | Settings/configuration panel |
|
|
48
|
+
| `cli` | Config files, local state | Internal command router | Command output, prompts, `--help` | Privileged commands, admin mode |
|
|
49
|
+
| `api` | DB schema | API endpoints | Response format (the interface for API consumers) | Admin endpoints or management API |
|
|
50
|
+
| `extension` | Extension storage | Background service worker | Popup or sidebar UI | Extension settings page |
|
|
51
|
+
|
|
52
|
+
**Key insight**: A CLI project has no "admin panel" in the web sense — but it has privileged commands and a management mode that fulfill the admin layer role. The layers are never absent; they just look different.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Related Rules and Workflows
|
|
57
|
+
|
|
58
|
+
- `vertical-slices.md` — uses the Implementation Layer Model to define feature completeness
|
|
59
|
+
- `/plan-phase` Step 0.5 — uses the Surface Type Model to condition completeness checks
|
|
60
|
+
- `bootstrap-agents-fill.md` — fills `{{SURFACES}}` with confirmed Surface Type values
|
|
61
|
+
- `decompose-architecture.md` — uses surface types to determine which skills to load
|