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,126 @@
|
|
|
1
|
+
# Engineering Standards Template
|
|
2
|
+
|
|
3
|
+
Use this template when creating `docs/plans/ENGINEERING-STANDARDS.md`. Fill in concrete values based on tech stack decisions — **no TBDs allowed**.
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# [Project Name] — Engineering Standards
|
|
7
|
+
|
|
8
|
+
> **Architecture**: [link to architecture-design.md]
|
|
9
|
+
> **Date**: YYYY-MM-DD
|
|
10
|
+
> **Status**: Draft | Review | Approved
|
|
11
|
+
|
|
12
|
+
## Test Coverage
|
|
13
|
+
- Minimum unit test coverage: [e.g., 80%]
|
|
14
|
+
- Integration test requirement: [e.g., every API endpoint]
|
|
15
|
+
- E2E test requirement: [e.g., every critical user flow]
|
|
16
|
+
- Coverage tool: [e.g., vitest coverage-v8]
|
|
17
|
+
|
|
18
|
+
## Linting & Formatting
|
|
19
|
+
- Linter: [e.g., ESLint with strict config]
|
|
20
|
+
- Formatter: [e.g., Prettier]
|
|
21
|
+
- Type checker: [e.g., TypeScript strict mode]
|
|
22
|
+
- Pre-commit hooks: [yes/no, tool]
|
|
23
|
+
|
|
24
|
+
## Performance Budgets
|
|
25
|
+
|
|
26
|
+
> **Baseline**: Budgets target [device tier] on [network condition]. Every threshold must have a named enforcement tool — a threshold without an enforcement tool is incomplete.
|
|
27
|
+
|
|
28
|
+
### Web Vitals per page type (web/desktop surfaces only)
|
|
29
|
+
|
|
30
|
+
| Page Type | LCP target | INP target | CLS target | Enforcement Tool |
|
|
31
|
+
|-----------|-----------|-----------|-----------|-----------------|
|
|
32
|
+
| [e.g., Landing] | [e.g., ≤ 2.0 s] | [e.g., ≤ 150 ms] | [e.g., ≤ 0.05] | [e.g., Lighthouse CI] |
|
|
33
|
+
| [e.g., Dashboard] | [e.g., ≤ 2.5 s] | [e.g., ≤ 200 ms] | [e.g., ≤ 0.1] | [e.g., Lighthouse CI] |
|
|
34
|
+
| [e.g., Detail/Form] | [e.g., ≤ 2.0 s] | [e.g., ≤ 100 ms] | [e.g., ≤ 0.05] | [e.g., Lighthouse CI] |
|
|
35
|
+
|
|
36
|
+
### JS Bundle Size per page type (web/desktop surfaces only)
|
|
37
|
+
|
|
38
|
+
| Page Type | Initial JS (gzipped) | Total JS (gzipped) | Enforcement Tool |
|
|
39
|
+
|-----------|---------------------|-------------------|-----------------|
|
|
40
|
+
| [e.g., Landing] | [e.g., ≤ 80 KB] | [e.g., ≤ 150 KB] | [e.g., size-limit] |
|
|
41
|
+
| [e.g., Dashboard] | [e.g., ≤ 150 KB] | [e.g., ≤ 300 KB] | [e.g., size-limit] |
|
|
42
|
+
|
|
43
|
+
### API Response Time per tier
|
|
44
|
+
|
|
45
|
+
| Tier | Description | p50 | p95 | p99 | Enforcement Tool |
|
|
46
|
+
|------|------------|-----|-----|-----|-----------------|
|
|
47
|
+
| Tier 1 — Cached read | [e.g., Response from cache] | [e.g., ≤ 10 ms] | [e.g., ≤ 30 ms] | [e.g., ≤ 50 ms] | [e.g., k6] |
|
|
48
|
+
| Tier 2 — Uncached read | [e.g., Single-entity DB fetch] | [e.g., ≤ 30 ms] | [e.g., ≤ 80 ms] | [e.g., ≤ 150 ms] | [e.g., k6] |
|
|
49
|
+
| Tier 3 — Write | [e.g., Create, update, delete] | [e.g., ≤ 80 ms] | [e.g., ≤ 200 ms] | [e.g., ≤ 400 ms] | [e.g., k6] |
|
|
50
|
+
| Tier 4 — Background | [e.g., Async jobs, external calls] | [Best-effort] | [e.g., ≤ 1000 ms] | [e.g., ≤ 3000 ms] | [e.g., k6] |
|
|
51
|
+
|
|
52
|
+
### DB Query Time per tier
|
|
53
|
+
|
|
54
|
+
| Tier | Description | p50 | p95 | Enforcement Tool |
|
|
55
|
+
|------|------------|-----|-----|-----------------|
|
|
56
|
+
| Tier 1 — Indexed point lookup | [e.g., PK or unique-index fetch] | [e.g., ≤ 5 ms] | [e.g., ≤ 15 ms] | [e.g., pgbench] |
|
|
57
|
+
| Tier 2 — Indexed range scan | [e.g., Range or list on indexed column] | [e.g., ≤ 15 ms] | [e.g., ≤ 50 ms] | [e.g., pgbench] |
|
|
58
|
+
| Tier 3 — Aggregation | [e.g., COUNT, SUM, GROUP BY] | [e.g., ≤ 50 ms] | [e.g., ≤ 150 ms] | [e.g., pgbench] |
|
|
59
|
+
| Tier 4 — Full-text / vector / analytical | [e.g., Search, similarity, reports] | [e.g., ≤ 100 ms] | [e.g., ≤ 300 ms] | [e.g., pgbench] |
|
|
60
|
+
|
|
61
|
+
### Desktop surfaces (if applicable)
|
|
62
|
+
|
|
63
|
+
| Metric | Threshold | Enforcement Tool |
|
|
64
|
+
|--------|----------|-----------------|
|
|
65
|
+
| Cold start | [e.g., ≤ 2 s] | [e.g., platform profiler] |
|
|
66
|
+
| Memory (idle) | [e.g., ≤ 200 MB] | [e.g., platform profiler] |
|
|
67
|
+
| Memory (active) | [e.g., ≤ 500 MB] | [e.g., platform profiler] |
|
|
68
|
+
| Installer size | [e.g., ≤ 100 MB] | [e.g., CI size check] |
|
|
69
|
+
|
|
70
|
+
### Mobile surfaces (if applicable)
|
|
71
|
+
|
|
72
|
+
| Metric | Threshold | Enforcement Tool |
|
|
73
|
+
|--------|----------|-----------------|
|
|
74
|
+
| Cold launch | [e.g., ≤ 1.5 s] | [e.g., platform profiler] |
|
|
75
|
+
| Warm launch | [e.g., ≤ 0.5 s] | [e.g., platform profiler] |
|
|
76
|
+
| Battery drain (active) | [e.g., ≤ 5 %/hr] | [e.g., platform profiler] |
|
|
77
|
+
| Download size | [e.g., ≤ 50 MB] | [e.g., CI size check] |
|
|
78
|
+
|
|
79
|
+
### CLI surfaces (if applicable)
|
|
80
|
+
|
|
81
|
+
| Metric | Threshold | Enforcement Tool |
|
|
82
|
+
|--------|----------|-----------------|
|
|
83
|
+
| Execution time | [e.g., ≤ 500 ms for common operations] | [e.g., hyperfine] |
|
|
84
|
+
| Binary size | [e.g., ≤ 20 MB] | [e.g., CI size check] |
|
|
85
|
+
| Startup latency | [e.g., ≤ 100 ms] | [e.g., hyperfine] |
|
|
86
|
+
|
|
87
|
+
### CI Enforcement
|
|
88
|
+
|
|
89
|
+
| Budget Category | Enforcement Tool | Fail Condition | Fail vs. Warn |
|
|
90
|
+
|----------------|-----------------|----------------|---------------|
|
|
91
|
+
| Web Vitals | [e.g., Lighthouse CI] | [e.g., Score below threshold] | [Fail] |
|
|
92
|
+
| Bundle size | [e.g., size-limit] | [e.g., Exceeds per-page-type cap] | [Fail] |
|
|
93
|
+
| API response time | [e.g., k6] | [e.g., p95 exceeds tier target] | [Warn / Fail after baseline] |
|
|
94
|
+
| DB query time | [e.g., pgbench] | [e.g., p95 exceeds tier target] | [Warn / Fail after baseline] |
|
|
95
|
+
| Desktop/mobile | [e.g., platform profiler] | [e.g., Any metric exceeds threshold] | [Warn] |
|
|
96
|
+
|
|
97
|
+
## Accessibility
|
|
98
|
+
- WCAG level: [e.g., 2.1 AA] (web/mobile)
|
|
99
|
+
- Screen reader testing: [required/optional]
|
|
100
|
+
- Keyboard navigation: [all interactive elements]
|
|
101
|
+
- Platform accessibility APIs: [e.g., UIAccessibility for iOS, AccessibilityNodeInfo for Android]
|
|
102
|
+
|
|
103
|
+
## Security
|
|
104
|
+
- Dependency audit: [e.g., npm audit on every CI run]
|
|
105
|
+
- Dependency audit enforcement: [e.g., Fail on HIGH/CRITICAL, Warn on MODERATE]
|
|
106
|
+
- Secret scanning: [tool/approach]
|
|
107
|
+
- CSP policy: [strict/relaxed + details] (web surfaces)
|
|
108
|
+
- Code signing: [signing certificate strategy] (desktop/mobile surfaces)
|
|
109
|
+
- Security testing tool: [e.g., OWASP ZAP for web, MobSF for mobile, or none] (surface-specific dynamic security scan)
|
|
110
|
+
|
|
111
|
+
## Code Quality
|
|
112
|
+
- Max file length: [e.g., 300 lines]
|
|
113
|
+
- Max function length: [e.g., 50 lines]
|
|
114
|
+
- Max cyclomatic complexity: [e.g., 10]
|
|
115
|
+
- Required documentation: [public APIs / all exports / none]
|
|
116
|
+
|
|
117
|
+
## CI/CD Gates
|
|
118
|
+
- Tests must pass: [yes]
|
|
119
|
+
- Lint must pass: [yes]
|
|
120
|
+
- Type-check must pass: [yes]
|
|
121
|
+
- Build must succeed: [yes]
|
|
122
|
+
- Coverage threshold met: [yes]
|
|
123
|
+
|
|
124
|
+
## Validation Command
|
|
125
|
+
[The single command that enforces all of the above]
|
|
126
|
+
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Evolution Layer Guidance
|
|
2
|
+
|
|
3
|
+
Reference for `/evolve-feature-classify` Step 4 and `/evolve-feature-cascade` Step 1 — specifies what to write at each pipeline layer when evolving a feature.
|
|
4
|
+
|
|
5
|
+
## Entry Point Writing Depth
|
|
6
|
+
|
|
7
|
+
### Ideation Layer (`docs/plans/ideation/`)
|
|
8
|
+
|
|
9
|
+
1. **Placement**: Read `ideation-index.md` Structure Map. Identify the domain folder. Create new domain if needed.
|
|
10
|
+
2. **Classification Gate**: Apply Node Classification Gate from `.agent/skills/idea-extraction/SKILL.md` — leaf feature or sub-domain folder.
|
|
11
|
+
3. **Write**: Use `.agent/skills/prd-templates/references/fractal-feature-template.md`. Include:
|
|
12
|
+
- Feature description (what and why)
|
|
13
|
+
- Affected personas
|
|
14
|
+
- Success criteria
|
|
15
|
+
- Constraints
|
|
16
|
+
- Role Lens — which personas interact and how
|
|
17
|
+
4. **Update parent index**: Add to parent domain's `*-index.md` children table
|
|
18
|
+
5. **Update CX files**: If cross-domain interactions exist, update parent `*-cx.md` and/or `ideation-cx.md`
|
|
19
|
+
6. **Update `ideation-index.md`**: Add to MoSCoW Summary at appropriate priority
|
|
20
|
+
|
|
21
|
+
### Architecture Layer (`architecture-design.md`)
|
|
22
|
+
|
|
23
|
+
- Technical constraint description
|
|
24
|
+
- Affected components
|
|
25
|
+
- Non-functional requirements (performance, scalability, compliance)
|
|
26
|
+
- Integration points
|
|
27
|
+
|
|
28
|
+
### IA Layer (specific IA shard)
|
|
29
|
+
|
|
30
|
+
- Domain interactions (new/modified user flows)
|
|
31
|
+
- Contracts (new/modified API contracts)
|
|
32
|
+
- Data models (new entities, fields, relationships)
|
|
33
|
+
- Access control (RBAC implications)
|
|
34
|
+
|
|
35
|
+
### BE Layer (BE spec)
|
|
36
|
+
|
|
37
|
+
- New API endpoints
|
|
38
|
+
- Updated schemas
|
|
39
|
+
- Middleware requirements
|
|
40
|
+
- Validation rules
|
|
41
|
+
|
|
42
|
+
### FE Layer (FE spec)
|
|
43
|
+
|
|
44
|
+
- New components
|
|
45
|
+
- State management updates
|
|
46
|
+
- New routes
|
|
47
|
+
- Accessibility requirements
|
|
48
|
+
|
|
49
|
+
### Phase Plan
|
|
50
|
+
|
|
51
|
+
- New slices or updated slice acceptance criteria
|
|
52
|
+
|
|
53
|
+
## Cascade Layer Guidance
|
|
54
|
+
|
|
55
|
+
When cascading through downstream layers in `/evolve-feature-cascade`:
|
|
56
|
+
|
|
57
|
+
| Layer | What to Add |
|
|
58
|
+
|-------|------------|
|
|
59
|
+
| Architecture | New components, system diagram references, NFRs, integration points |
|
|
60
|
+
| IA | New domain interactions, updated contracts, data model changes, access control updates |
|
|
61
|
+
| BE | New API endpoints, updated schemas, middleware requirements, validation rules |
|
|
62
|
+
| FE | New components, state management updates, new routes, accessibility requirements |
|
|
63
|
+
| Phase plan | New slices or updated slice acceptance criteria |
|
|
64
|
+
|
|
65
|
+
## Impact Assessment Format
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
Implementation Impact
|
|
70
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
71
|
+
In-progress slices affected: [list or "none"]
|
|
72
|
+
Completed slices that may need revisiting: [list or "none"]
|
|
73
|
+
New slices needed: [list or "none"]
|
|
74
|
+
Phase plan update required: [yes/no]
|
|
75
|
+
|
|
76
|
+
Recommended action: [specific next step]
|
|
77
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Completion Summary Format
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
84
|
+
Feature Evolution Complete
|
|
85
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
86
|
+
Entry point: [document]
|
|
87
|
+
Layers updated: [list]
|
|
88
|
+
New content: [summary]
|
|
89
|
+
Implementation: [impact summary]
|
|
90
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Expansion Mode Options
|
|
2
|
+
|
|
3
|
+
Present these options after engagement tier selection. All input types see the same options.
|
|
4
|
+
|
|
5
|
+
| # | Mode | When to Recommend | Description |
|
|
6
|
+
|---|------|-------------------|-------------|
|
|
7
|
+
| 1 | **Full exploration** | 3+ domains | Breadth-before-depth with Deep Think |
|
|
8
|
+
| 2 | **Process as-is** | Thin input where user is confident | Proceed with what's captured |
|
|
9
|
+
| 3 | **Expand vertically** | Domains exist but are shallow | Drill deeper into existing features |
|
|
10
|
+
| 4 | **Expand horizontally** | Domains are deep but coverage gaps exist | Add new domains |
|
|
11
|
+
| 5 | **Cross-cutting concerns** | Domains mapped but interactions unexplored | Map feature interactions |
|
|
12
|
+
| 6 | **Combination** | User has specific priorities | User specifies dimensions and order |
|
|
13
|
+
| 7 | **Audit ambiguity first** | Unclear whether depth or breadth is needed | Inline ambiguity check before deciding |
|
|
14
|
+
|
|
15
|
+
## Default Recommendations
|
|
16
|
+
|
|
17
|
+
| Input Type | Default |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Rich document (≥3 domains) | Full exploration |
|
|
20
|
+
| Rich document (<3 domains) | Expand vertically |
|
|
21
|
+
| Thin document | Full exploration |
|
|
22
|
+
| Verbal / one-liner | Full exploration |
|
|
23
|
+
| Re-run (continue) | Audit ambiguity first |
|
|
24
|
+
|
|
25
|
+
## Recording
|
|
26
|
+
|
|
27
|
+
Write the selected mode to `ideation-index.md` under `## Expansion Mode` immediately after user selection.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# FE Classification — Accessibility & Conditional Rendering Procedures
|
|
2
|
+
|
|
3
|
+
Procedures used during `/write-fe-spec-classify` Step 4c to build accessibility inventories and conditional rendering matrices.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Accessibility Extraction Gate
|
|
8
|
+
|
|
9
|
+
Build an accessibility inventory table for every interactive component or interaction in this feature:
|
|
10
|
+
|
|
11
|
+
| Component/Interaction | WCAG Req | Keyboard Nav | Screen Reader | IA Source |
|
|
12
|
+
|-----------------------|----------|-------------|--------------|-----------|
|
|
13
|
+
| [component name] | [WCAG level + criterion] | [key bindings + focus order] | [aria-label / role / live region] | [IA shard § section] |
|
|
14
|
+
| [interaction name] | [WCAG level + criterion] | [key bindings + focus order] | [aria-label / role / live region] | [IA shard § section] |
|
|
15
|
+
|
|
16
|
+
**Thin a11y coverage flag**: If an interactive feature has **< 3 accessibility specifications** in the IA shard (fewer than 3 rows in the inventory table for a feature with interactive elements), flag it:
|
|
17
|
+
|
|
18
|
+
> ⚠️ **Thin accessibility coverage** for [feature name]: only [N] a11y specs found in IA shard. Options:
|
|
19
|
+
> 1. Resolve now — add missing WCAG requirements to the IA shard before proceeding
|
|
20
|
+
> 2. Accept thin coverage — proceed with what exists and flag as tech debt
|
|
21
|
+
|
|
22
|
+
**Wait for the user's choice before proceeding.**
|
|
23
|
+
|
|
24
|
+
**Carry-forward instruction**: The accessibility inventory table becomes inline annotations in the `## Component Inventory` section during `/write-fe-spec-write`. Each component's specification must include its WCAG requirements, keyboard navigation, and screen reader behavior directly — not as a separate accessibility section.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Conditional Rendering Enumeration (Step 4c.5)
|
|
29
|
+
|
|
30
|
+
Read the IA shard's `## Access Control` section. Build a **role × feature rendering matrix** for every feature-level component or interaction:
|
|
31
|
+
|
|
32
|
+
| Feature/Component | Free | Paid | Creator | Guardian | Junior | Business | Staff | Admin |
|
|
33
|
+
|-------------------|------|------|---------|----------|--------|----------|-------|-------|
|
|
34
|
+
| [component name] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] | [hidden/locked/read-only/full] |
|
|
35
|
+
|
|
36
|
+
**Values**: `hidden` (not rendered), `locked` (visible but disabled with upgrade prompt), `read-only` (visible, non-interactive), `full` (full access).
|
|
37
|
+
|
|
38
|
+
**Variant mapping**: Every non-trivial cell (any value other than `full` for the majority role) becomes a **named variant** in the component's `variants` spec in the FE spec. For example, if `Creator` gets `read-only` access to a component while `Paid` gets `full`, the component spec must include a `readOnlyCreator` variant (or equivalent named variant).
|
|
39
|
+
|
|
40
|
+
**Unspecified role × feature combinations**: If the IA shard's `## Access Control` does not specify the rendering state for a particular role × feature combination, flag it explicitly:
|
|
41
|
+
|
|
42
|
+
> ⚠️ **Unspecified role × feature combination**: [component] × [role] is not defined in the IA shard's access control.
|
|
43
|
+
> Options:
|
|
44
|
+
> 1. Define it now — specify the rendering state
|
|
45
|
+
> 2. Apply closest-tier default — inherit from the nearest tier (e.g., Free inherits from the most restrictive, Admin inherits `full`)
|
|
46
|
+
|
|
47
|
+
**Do not assume.** Every cell must be explicitly defined or explicitly defaulted with user confirmation.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# FE Spec Template
|
|
2
|
+
|
|
3
|
+
Use this template when writing FE specs to `docs/plans/fe/[NN-feature-name].md`.
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# [Feature] — Frontend Specification
|
|
7
|
+
|
|
8
|
+
> **BE Source**: [link to BE spec(s), or N/A for cross-cutting]
|
|
9
|
+
> **IA Source**: [link to IA shard, or N/A for cross-cutting]
|
|
10
|
+
> **Status**: Draft | Review | Complete
|
|
11
|
+
|
|
12
|
+
## Split Group _(include only if this spec resulted from a split)_
|
|
13
|
+
|
|
14
|
+
> **Split origin**: [IA shard that was split, e.g., `09-messaging`]
|
|
15
|
+
> **Companion specs**: [sibling FE spec files, e.g., `09b-agent-flow-ui.md`]
|
|
16
|
+
> **Shared entities**: [data models shared across companions, e.g., `Message`, `Thread`]
|
|
17
|
+
|
|
18
|
+
## Source Map
|
|
19
|
+
|
|
20
|
+
| FE Spec Section | Source | Section/Lines |
|
|
21
|
+
|-----------------|--------|---------------|
|
|
22
|
+
| Component Inventory | [be-spec.md or conventions] | § Response Contracts |
|
|
23
|
+
| Page/Route Definitions | [ia-shard.md or conventions] | § User Flows |
|
|
24
|
+
| Interactions | [ia-shard.md or conventions] | § User Flows + § Edge Cases |
|
|
25
|
+
| Accessibility | [ia-shard.md or conventions] | § Accessibility (lines N–M) |
|
|
26
|
+
| Responsive Behavior | [ia-shard.md or conventions] | § Device Strategy |
|
|
27
|
+
| Data Mapping | [be-spec.md or conventions] | § Request/Response Contracts |
|
|
28
|
+
|
|
29
|
+
## Design Requirements
|
|
30
|
+
**Direction**: [from brand-guidelines — confirmed direction]
|
|
31
|
+
**Typography**: [font/size/weight per text element]
|
|
32
|
+
**Colors**: [primary/secondary/accent for default, hover, active, disabled, error states]
|
|
33
|
+
**Motion**: [animation/transition behavior, or "none"]
|
|
34
|
+
**Anti-patterns**: [what AI slop looks like for this component and how to avoid it]
|
|
35
|
+
|
|
36
|
+
## Design System Compliance
|
|
37
|
+
**Page archetype(s)**: [name the archetype(s) from design-system.md]
|
|
38
|
+
**Navigation**: [confirm which nav elements this spec uses from the global component inventory]
|
|
39
|
+
**Loading states**: [confirm skeleton vs. spinner — cite design-system.md rule]
|
|
40
|
+
**Error states**: [confirm inline/toast/full-page/boundary — cite design-system.md rule for each context]
|
|
41
|
+
**Empty states**: [confirm illustration style and copy tone from design-system.md]
|
|
42
|
+
|
|
43
|
+
## Component Inventory
|
|
44
|
+
[Tree with props interfaces]
|
|
45
|
+
|
|
46
|
+
## Page/Route Definitions
|
|
47
|
+
[URL patterns, guards, redirects]
|
|
48
|
+
|
|
49
|
+
## State Management
|
|
50
|
+
[Server state, client state, URL state, loading/error/empty]
|
|
51
|
+
|
|
52
|
+
## Interaction Specification
|
|
53
|
+
[Click, hover, keyboard, form validation matching {{CONTRACT_LIBRARY}}]
|
|
54
|
+
|
|
55
|
+
## Responsive Behavior
|
|
56
|
+
[Breakpoints, component behavior per breakpoint]
|
|
57
|
+
|
|
58
|
+
## Accessibility
|
|
59
|
+
[ARIA roles, keyboard nav, screen reader, WCAG compliance]
|
|
60
|
+
|
|
61
|
+
## Data Mapping
|
|
62
|
+
[Which BE response fields map to which component props]
|
|
63
|
+
|
|
64
|
+
## Open Questions
|
|
65
|
+
|
|
66
|
+
## Changelog
|
|
67
|
+
|
|
68
|
+
| Date | Change | Workflow | Sections Affected |
|
|
69
|
+
|------|--------|----------|-------------------|
|
|
70
|
+
| [date] | Initial creation | /write-fe-spec | All |
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Quality Gates Checklist
|
|
74
|
+
|
|
75
|
+
Apply after writing every FE spec:
|
|
76
|
+
|
|
77
|
+
- [ ] Every component has a props interface
|
|
78
|
+
- [ ] Every interactive element has defined behavior
|
|
79
|
+
- [ ] Every data field maps to a BE response field (if applicable)
|
|
80
|
+
- [ ] Loading, error, and empty states defined for every data-fetching view
|
|
81
|
+
- [ ] Accessibility requirements meet WCAG 2.1 AA
|
|
82
|
+
- [ ] Responsive behavior specified for all breakpoints
|
|
83
|
+
- [ ] IA shard's accessibility section fully consumed (not re-derived from BE spec)
|
|
84
|
+
- [ ] IA shard's user flows reflected in interaction specification
|
|
85
|
+
- [ ] Account-tier conditional rendering rules from IA access model included
|
|
86
|
+
- [ ] Source Map is complete — no FE spec section lacks a traceable source
|
|
87
|
+
- [ ] Design Requirements section filled from brand-guidelines (not placeholders)
|
|
88
|
+
- [ ] Page archetype named and matches design-system.md
|
|
89
|
+
- [ ] All loading/error/empty states use the confirmed design language from design-system.md
|
|
90
|
+
- [ ] No global component re-invented (consuming from global inventory, not re-implementing)
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Feature Tracking Ledger Protocol
|
|
2
|
+
|
|
3
|
+
> **Purpose**: Track every ideation feature through the entire pipeline — from birth in ideation to final slice assignment. Catches dropped features that per-stage reconciliation tables miss.
|
|
4
|
+
|
|
5
|
+
## Ledger Location
|
|
6
|
+
|
|
7
|
+
`docs/plans/feature-ledger.md`
|
|
8
|
+
|
|
9
|
+
## Ledger Format
|
|
10
|
+
|
|
11
|
+
```markdown
|
|
12
|
+
# Feature Tracking Ledger
|
|
13
|
+
|
|
14
|
+
> Auto-generated by `/ideate-validate`. Updated by each pipeline stage.
|
|
15
|
+
> Each column is populated by the stage that owns it (see Column Ownership below).
|
|
16
|
+
|
|
17
|
+
| Feature ID | Feature Name | Domain | MoSCoW | IA Shard | IA Status | BE Spec | BE Status | FE Spec | FE Status | Phase | Slice |
|
|
18
|
+
|-----------|-------------|--------|--------|----------|-----------|---------|-----------|---------|-----------|-------|-------|
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Column Ownership
|
|
22
|
+
|
|
23
|
+
| Column(s) | Populated By | Stage |
|
|
24
|
+
|-----------|-------------|-------|
|
|
25
|
+
| Feature ID, Feature Name, Domain, MoSCoW | `/ideate-validate` Step 11.5 | Discovery |
|
|
26
|
+
| IA Shard, IA Status | `/decompose-architecture-validate` | Design |
|
|
27
|
+
| BE Spec, BE Status | `/write-be-spec-write` | Specification |
|
|
28
|
+
| FE Spec, FE Status | `/write-fe-spec-write` | Specification |
|
|
29
|
+
| Phase, Slice | `/plan-phase-write` Step 2.5 | Planning |
|
|
30
|
+
|
|
31
|
+
## Status Values
|
|
32
|
+
|
|
33
|
+
| Status | Meaning |
|
|
34
|
+
|--------|---------|
|
|
35
|
+
| ✅ | Covered — spec exists and includes this feature |
|
|
36
|
+
| ⚠️ deferred | Explicitly deferred with documented reason |
|
|
37
|
+
| ❌ missing | Not covered — no spec addresses this feature |
|
|
38
|
+
| — | Column not yet populated (upstream stage hasn't run) |
|
|
39
|
+
|
|
40
|
+
## Step 1 — Ledger Creation (`/ideate-validate`)
|
|
41
|
+
|
|
42
|
+
**When**: After Step 11 (compile vision), before Step 12 (request review).
|
|
43
|
+
|
|
44
|
+
**Procedure**:
|
|
45
|
+
|
|
46
|
+
1. Read `ideation-index.md` → Structure Map → get all domain paths
|
|
47
|
+
2. For each domain, read `{domain}-index.md` → Children table
|
|
48
|
+
3. For each leaf-level child (type = `feature`), create one ledger row:
|
|
49
|
+
- **Feature ID**: `{domain-name}/{feature-file-basename}` (e.g., `inventory/01-categories`)
|
|
50
|
+
- **Feature Name**: from the Children table Name column
|
|
51
|
+
- **Domain**: domain name
|
|
52
|
+
- **MoSCoW**: from `ideation-index.md` MoSCoW Summary (match by feature name), or from the feature's own priority field if available
|
|
53
|
+
4. All other columns → `—` (not yet populated)
|
|
54
|
+
5. Write to `docs/plans/feature-ledger.md`
|
|
55
|
+
|
|
56
|
+
> **Context management**: Read domain indexes one at a time, extract features, move on. Same pattern as the deep-ideation-loading protocol.
|
|
57
|
+
|
|
58
|
+
## Step 2 — IA Assignment (`/decompose-architecture-validate`)
|
|
59
|
+
|
|
60
|
+
**When**: After shard boundaries are approved and shard skeletons exist.
|
|
61
|
+
|
|
62
|
+
**Procedure**:
|
|
63
|
+
|
|
64
|
+
1. Read `docs/plans/feature-ledger.md`
|
|
65
|
+
2. For each IA shard skeleton in `docs/plans/ia/`:
|
|
66
|
+
- Read the shard's `## Sub-features` or features list
|
|
67
|
+
- For each feature, find the matching row in the ledger (match by Feature ID or Feature Name)
|
|
68
|
+
- Set **IA Shard** = shard name (e.g., `02-inventory`)
|
|
69
|
+
- Set **IA Status** = `✅`
|
|
70
|
+
3. **Orphan check**: Any row where IA Shard is still `—` after processing all shards → set IA Status = `❌ missing`
|
|
71
|
+
4. Write updated ledger
|
|
72
|
+
|
|
73
|
+
**If orphans are found**:
|
|
74
|
+
> ⚠️ **Feature ledger orphan check**: [N] features from ideation have no IA shard assignment:
|
|
75
|
+
> - `{Feature ID}`: {Feature Name}
|
|
76
|
+
>
|
|
77
|
+
> Options:
|
|
78
|
+
> 1. Add to an existing shard
|
|
79
|
+
> 2. Create a new shard
|
|
80
|
+
> 3. Mark as explicitly deferred (with reason)
|
|
81
|
+
|
|
82
|
+
**STOP** — wait for user decision on each orphan.
|
|
83
|
+
|
|
84
|
+
## Step 3 — BE Coverage (`/write-be-spec-write`)
|
|
85
|
+
|
|
86
|
+
**When**: After each BE spec is written.
|
|
87
|
+
|
|
88
|
+
**Procedure**:
|
|
89
|
+
|
|
90
|
+
1. Read `docs/plans/feature-ledger.md`
|
|
91
|
+
2. Read the newly written BE spec's endpoint list
|
|
92
|
+
3. For each endpoint, identify which Feature ID(s) it serves (from the IA shard → feature mapping)
|
|
93
|
+
4. For each matched Feature ID, set **BE Spec** = spec file name, **BE Status** = `✅`
|
|
94
|
+
5. Write updated ledger
|
|
95
|
+
|
|
96
|
+
> **Note**: Not all features produce BE endpoints (e.g., purely client-side UI features). These should have BE Status = `⚠️ deferred` with reason "client-only".
|
|
97
|
+
|
|
98
|
+
## Step 4 — FE Coverage (`/write-fe-spec-write`)
|
|
99
|
+
|
|
100
|
+
**When**: After each FE spec is written.
|
|
101
|
+
|
|
102
|
+
**Procedure**:
|
|
103
|
+
|
|
104
|
+
1. Read `docs/plans/feature-ledger.md`
|
|
105
|
+
2. Read the newly written FE spec's component list
|
|
106
|
+
3. For each component, identify which Feature ID(s) it serves
|
|
107
|
+
4. For each matched Feature ID, set **FE Spec** = spec file name, **FE Status** = `✅`
|
|
108
|
+
5. Write updated ledger
|
|
109
|
+
|
|
110
|
+
## Step 5 — Slice Assignment (`/plan-phase-write`)
|
|
111
|
+
|
|
112
|
+
**When**: After Step 2.5 (spec coverage verification).
|
|
113
|
+
|
|
114
|
+
**Procedure**:
|
|
115
|
+
|
|
116
|
+
1. Read `docs/plans/feature-ledger.md`
|
|
117
|
+
2. For each slice, identify which Feature ID(s) it covers (from its spec source map)
|
|
118
|
+
3. For each matched Feature ID, set **Phase** = phase number, **Slice** = slice ID
|
|
119
|
+
4. Write updated ledger
|
|
120
|
+
|
|
121
|
+
## Verification Gate (`/plan-phase-preflight`)
|
|
122
|
+
|
|
123
|
+
**When**: During the cross-layer consistency check.
|
|
124
|
+
|
|
125
|
+
**Procedure**:
|
|
126
|
+
|
|
127
|
+
1. Read `docs/plans/feature-ledger.md`
|
|
128
|
+
2. Count features by completeness:
|
|
129
|
+
- **✅ Complete**: All columns through FE Status are ✅ or ⚠️ deferred
|
|
130
|
+
- **⚠️ Partial**: Some columns filled, some still `—`
|
|
131
|
+
- **❌ Orphaned**: IA Status or BE Status or FE Status = `❌ missing`
|
|
132
|
+
3. Report:
|
|
133
|
+
|
|
134
|
+
> **Feature Ledger Verification**:
|
|
135
|
+
> - ✅ Complete: [N] features
|
|
136
|
+
> - ⚠️ Partial: [N] features (columns not yet populated by upstream stages)
|
|
137
|
+
> - ❌ Orphaned: [N] features (dropped between stages)
|
|
138
|
+
|
|
139
|
+
4. **If any ❌ orphans** → **BLOCKING GATE**: "Feature ledger shows [N] orphaned features. Resolve before planning."
|
|
140
|
+
5. **If any ⚠️ partial** → **WARNING**: "Feature ledger shows [N] features with incomplete coverage. These may be from stages not yet run."
|
|
141
|
+
|
|
142
|
+
## Anti-Patterns
|
|
143
|
+
|
|
144
|
+
| ❌ Wrong | ✅ Right |
|
|
145
|
+
|---------|---------|
|
|
146
|
+
| Skipping ledger updates "because it's just bookkeeping" | Every stage updates its columns — it's the only global tracking |
|
|
147
|
+
| Marking orphaned features as ⚠️ deferred without a reason | Orphans are ❌ missing until explicitly deferred with documented reasoning |
|
|
148
|
+
| Regenerating the ledger from scratch at each stage | Updating existing rows — the ledger is cumulative |
|
|
149
|
+
| Ignoring the orphan check at plan-phase-preflight | Blocking on orphans — they represent dropped features |
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Folder Seeding Protocol
|
|
2
|
+
|
|
3
|
+
Rules for creating the `docs/plans/ideation/` folder structure during `/ideate-extract`.
|
|
4
|
+
|
|
5
|
+
## Additive-Only Rule
|
|
6
|
+
|
|
7
|
+
The `docs/plans/ideation/` directory already exists in the kit with `.gitkeep` and `README.md`. You are ADDING files into this existing directory.
|
|
8
|
+
|
|
9
|
+
- Do NOT delete, overwrite, or replace the directory itself
|
|
10
|
+
- Do NOT remove any existing files (`.gitkeep`, `README.md`)
|
|
11
|
+
- Create new files alongside what already exists
|
|
12
|
+
|
|
13
|
+
## Base Structure (All Project Shapes)
|
|
14
|
+
|
|
15
|
+
After seeding, the folder should contain kit-shipped files PLUS new pipeline files:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
docs/plans/ideation/
|
|
19
|
+
├── .gitkeep ← KIT-SHIPPED — do not touch
|
|
20
|
+
├── README.md ← KIT-SHIPPED — do not touch
|
|
21
|
+
├── ideation-index.md ← NEW: super-index (from ideation-index-template)
|
|
22
|
+
├── ideation-cx.md ← NEW: global cross-cuts (from ideation-crosscut-template)
|
|
23
|
+
└── meta/ ← NEW: created by this step
|
|
24
|
+
├── problem-statement.md
|
|
25
|
+
├── personas.md
|
|
26
|
+
├── competitive-landscape.md
|
|
27
|
+
└── constraints.md
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
For multi-product projects, additionally create `surfaces/` with sub-folders per surface.
|
|
31
|
+
|
|
32
|
+
## Templates
|
|
33
|
+
|
|
34
|
+
Read these templates when creating files:
|
|
35
|
+
|
|
36
|
+
- `.agent/skills/prd-templates/references/ideation-index-template.md` (super-index)
|
|
37
|
+
- `.agent/skills/prd-templates/references/ideation-crosscut-template.md` (global CX)
|
|
38
|
+
- `.agent/skills/prd-templates/references/fractal-node-index-template.md` (node index)
|
|
39
|
+
- `.agent/skills/prd-templates/references/fractal-cx-template.md` (node CX)
|
|
40
|
+
- `.agent/skills/prd-templates/references/fractal-feature-template.md` (feature file)
|
|
41
|
+
|
|
42
|
+
## Domain Seeding Rules
|
|
43
|
+
|
|
44
|
+
Domains come from the **confirmed classification table** (Step 1.4.5), NOT from source headings.
|
|
45
|
+
|
|
46
|
+
### Placement by Structural Classification
|
|
47
|
+
|
|
48
|
+
| Classification | Placement |
|
|
49
|
+
|---|---|
|
|
50
|
+
| Single-surface | `docs/plans/ideation/{NN}-{slug}/` |
|
|
51
|
+
| Hub-and-spoke | Surface-exclusive in `surfaces/{surface}/{NN}-{slug}/`, shared in hub surface |
|
|
52
|
+
| Peer | Surface-exclusive in `surfaces/{surface}/{NN}-{slug}/`, shared in `shared/{NN}-{slug}/` |
|
|
53
|
+
|
|
54
|
+
### Node Type → Action
|
|
55
|
+
|
|
56
|
+
| Gate Result | Action |
|
|
57
|
+
|---|---|
|
|
58
|
+
| **Domain** | Create domain folder with `{slug}-index.md` + `{slug}-cx.md` |
|
|
59
|
+
| **Sub-domain** | Create sub-domain folder nested inside parent domain |
|
|
60
|
+
| **Feature** | Create feature file inside parent domain or sub-domain |
|
|
61
|
+
| **Cross-cut** | Add entries to appropriate CX files (domain-level or global) |
|
|
62
|
+
| **Not-a-product-domain** | Add notes to `meta/constraints.md` for `/create-prd` |
|
|
63
|
+
|
|
64
|
+
After all nodes are created, update `ideation-index.md` structure map with paths.
|
|
65
|
+
|
|
66
|
+
## Content Seeding by Input Type
|
|
67
|
+
|
|
68
|
+
| Input Type | Content Strategy |
|
|
69
|
+
|---|---|
|
|
70
|
+
| **Rich document** | Seed each node with content from source using classification table citations. Run fidelity check: every major concept in source must map to SOMETHING in the output. Add `> Source: path/to/original.md` to index. |
|
|
71
|
+
| **Chat transcript** | Noise filter → extract signal → seed domain folders with structured output |
|
|
72
|
+
| **Thin document** | Create domain folders with depth markers on feature files |
|
|
73
|
+
| **Verbal / one-liner** | Create domain folders with scaffolding. Feature files are `[SURFACE]`. |
|
|
74
|
+
|
|
75
|
+
## Post-Seeding Verification Gate
|
|
76
|
+
|
|
77
|
+
After creating all files, verify that `docs/plans/ideation/.gitkeep` and `docs/plans/ideation/README.md` still exist. If EITHER file is missing → **STOP**: "Kit-shipped files were destroyed during seeding. Restore `.gitkeep` and/or `README.md` to `docs/plans/ideation/` before continuing."
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# {Node Name} — Cross-Cuts
|
|
2
|
+
|
|
3
|
+
> **Level**: {surface | domain | sub-domain}
|
|
4
|
+
> **Scope**: Connections between children of [{parent}](../{parent}-index.md)
|
|
5
|
+
|
|
6
|
+
## Cross-Cut Map
|
|
7
|
+
|
|
8
|
+
| # | Source | Target | Relationship | Roles Affected | Confidence | Evidence |
|
|
9
|
+
|---|--------|--------|--------------|----------------|------------|----------|
|
|
10
|
+
| CX-01 | [child-A](./path) | [child-B](./path) | _what the interaction is_ | Tech, Owner | High | _specific evidence from exploration_ |
|
|
11
|
+
| CX-02 | [child-C](./path) | [{external-node}](../../path) | _cross-level interaction_ | Tech | Medium | _evidence_ |
|
|
12
|
+
|
|
13
|
+
> **Confidence levels:** High (confirmed with evidence), Medium (strong signal, needs validation), Low (hypothesis)
|
|
14
|
+
>
|
|
15
|
+
> **Cross-level references:** When a cross-cut spans levels (e.g., a feature in one surface touches a domain in another), record it here at the HIGHER level with a link path to the specific lower-level item. The detail of HOW they interact lives in the LOWER-level CX file.
|
|
16
|
+
>
|
|
17
|
+
> **Cross-references:** When referencing a CX entry from another file, use format `{filename}#CX-NN` (e.g., `ai-assistant-cx.md#CX-03`)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Cross-Cut Details
|
|
22
|
+
|
|
23
|
+
### CX-01: {Source} ↔ {Target}
|
|
24
|
+
|
|
25
|
+
**Relationship**: _Detailed description of how these two children interact. What data flows between them? What triggers what?_
|
|
26
|
+
|
|
27
|
+
**Role scoping**:
|
|
28
|
+
- **{Role 1}**: _what this role experiences at this intersection_
|
|
29
|
+
- **{Role 2}**: _what this role experiences_
|
|
30
|
+
- **{Role 3}**: _not affected / no visibility_
|
|
31
|
+
|
|
32
|
+
**Synthesis questions answered**:
|
|
33
|
+
1. **Shared state conflict**: _Who owns the entity? What's the merge strategy if both sides modify it?_
|
|
34
|
+
2. **Trigger chain**: _Does A trigger B? What happens if B fails — rollback? Compensating action? Is it sync or async?_
|
|
35
|
+
3. **Permission intersection**: _Does a permission in A affect what you can do in B?_
|
|
36
|
+
4. **Notification fan-out**: _Does an event in A notify actors in B?_
|
|
37
|
+
5. **State transition conflict**: _Can A and B race? What's the consistency impact?_
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
_Repeat the Cross-Cut Details section for each CX entry in the map._
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Rejected Pairs
|
|
46
|
+
|
|
47
|
+
| # | Source | Target | Reason for Rejection |
|
|
48
|
+
|---|--------|--------|---------------------|
|
|
49
|
+
| R-01 | _{child-A}_ | _{child-B}_ | _No shared state, no trigger dependency, independent lifecycles_ |
|
|
50
|
+
|
|
51
|
+
> **Notes for agents:**
|
|
52
|
+
> - This template is used at EVERY folder level in the fractal structure
|
|
53
|
+
> - CX files ONLY connect children at their own level — a surface CX connects domains, a domain CX connects sub-domains, a sub-domain CX connects features
|
|
54
|
+
> - CX entries use sequential `CX-NN` numbering within each file, starting at CX-01
|
|
55
|
+
> - Always include role scoping — every cross-cut affects specific roles, not all roles equally
|
|
56
|
+
> - Rejected pairs are valuable — they show the agent considered the interaction and dismissed it with reasoning
|
|
57
|
+
> - The 5 synthesis questions should be answered for EVERY confirmed cross-cut (CX entries with High confidence)
|
|
58
|
+
> - For Medium/Low confidence entries, the synthesis questions can be deferred to later drilling passes
|