cfsa-antigravity 2.2.2 → 2.3.1

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/README.md CHANGED
@@ -22,6 +22,14 @@ This installs the `.agent/` folder, `docs/` structure, and agent config files in
22
22
  | `cfsa-antigravity init --dry-run` | Preview what would be installed |
23
23
  | `cfsa-antigravity init --path ./dir` | Install into specific directory |
24
24
 
25
+ ### ⚠️ Important Note on `.gitignore`
26
+ If you are using AI-powered editors like **Cursor** or **Windsurf**, adding the `.agent/` folder to your `.gitignore` may prevent the IDE from indexing the workflows. This results in slash commands (like `/plan`, `/debug`) not appearing in the chat suggestion dropdown.
27
+
28
+ **Recommended Solution:**
29
+ To keep the `.agent/` folder local (not tracked by Git) while maintaining AI functionality:
30
+ 1. Ensure `.agent/` is **NOT** in your project's `.gitignore`.
31
+ 2. Instead, add it to your local exclude file: `.git/info/exclude`
32
+
25
33
  ## Get Started
26
34
 
27
35
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cfsa-antigravity",
3
- "version": "2.2.2",
3
+ "version": "2.3.1",
4
4
  "description": "CFSA Pipeline — Constraint-First Specification Architecture for AI agents. Production-grade from line one.",
5
5
  "scripts": {
6
6
  "changeset": "changeset",
@@ -191,6 +191,11 @@ The key question: **"Does this thing have its own internal features that interac
191
191
  | Creating a domain for every feature mentioned | Grouping related features under their parent domain/sub-domain |
192
192
  | Pre-creating 4 levels of empty folders | Creating depth reactively as complexity is discovered |
193
193
  | Putting a shared domain in `shared/` when hub-and-spoke is active | Putting it inside the hub surface, with CX references from spokes |
194
+ | Using source document headings as the domain map | Extracting concepts from the content and classifying each through the gate |
195
+ | Creating a domain folder for every heading in the source | Only creating domain folders for concepts that pass the gate as true domains |
196
+ | Collapsing a rich multi-system area into a single domain | Recognizing 2+ interacting capabilities = sub-domain or promoted domain |
197
+ | Creating "Data Architecture" or "Tech Stack" as product domains | Noting architectural concerns for `/create-prd` — they are not product domains |
198
+ | Creating folders before presenting the classification to the user | Always presenting the classification table and getting user confirmation first |
194
199
 
195
200
  ---
196
201
 
@@ -268,16 +273,68 @@ Before starting, classify what the user has provided and select the right mode.
268
273
 
269
274
  **The job:** Don't lose information. Organize, validate, and fill gaps.
270
275
 
271
- **Process:**
276
+ > **CRITICAL**: Extraction mode uses the SAME interview question framework as Interview mode.
277
+ > The document is the interviewee. The only difference is that the document provides answers
278
+ > silently (the agent reads them) instead of interactively (the agent asks the user). Every
279
+ > answer extracted from the document must cite where in the document it came from. Every
280
+ > question the document doesn't answer becomes a real interview question for the user in Phase 2.
281
+ >
282
+ > **The source document's organization is a hint, not the truth.** Headings, section numbers,
283
+ > and document structure tell you where to LOOK for concepts. They do NOT tell you what those
284
+ > concepts ARE (domain, sub-domain, feature, cross-cut, or not-a-product-domain). The Node
285
+ > Classification Gate determines what each concept is. NEVER mirror source headings as domains.
286
+
287
+ **Process — Phase 1: Interview the Document** (silent — no user interaction)
288
+
272
289
  1. Read/ingest every document provided
273
290
  2. **Run Structural Classification** — determine project shape before creating any files
274
- 3. Identify natural domain boundaries in the content
275
- 4. Create fractal folder structure run the **Node Classification Gate** for each domain
276
- 5. Seed each domain folder (index + CX + feature files) with content from the source
277
- 6. Present the organized inventory: "Here's what I extracted, organized by domain"
278
- 7. Identify gaps domains/sub-topics not covered
279
- 8. For each gap, switch to Interview Mode
280
- 9. Run Deep Think: "Based on your content, I would also expect [X] and [Y]. Are those relevant?"
291
+ 3. **BLOCKING GATE Extract concepts, not headings.** Read the entire document and identify every concept — a capability, system, feature, workflow, cross-cutting concern, or architectural note. For each concept, record:
292
+ - Concept name (what it is, in your words not the source heading)
293
+ - Source location (line numbers or section reference this is the citation)
294
+ - What the document says about it (summary of the content)
295
+ - How many distinct interacting capabilities it contains (the sub-domain test)
296
+ - Whether it is surface-exclusive, shared, or cross-cutting
297
+ Do NOT use source document headings as concept names unless they happen to be accurate after classification. The concept name must reflect what the thing actually IS after gate analysis.
298
+ 4. **BLOCKING GATE — Classify every concept.** Run the Node Classification Gate on EACH extracted concept individually. For each concept, answer the gate questions explicitly:
299
+ - "Does it belong to an EXISTING domain?" → if YES, it's a sub-domain or feature of that domain
300
+ - "Does it have 2+ distinct capabilities that interact with each other?" → if YES, it's a sub-domain (folder); if NO, it's a feature (file)
301
+ - "Is it surface-exclusive?" → determines placement
302
+ - "Is it an architectural concern, not a product domain?" → note for `/create-prd`, do NOT create a domain
303
+ - "Is it a cross-cutting concern?" → log in CX files, do NOT create a domain
304
+ Produce a **classification table**:
305
+
306
+ | Concept | Source Location | Gate Result | Reasoning |
307
+ |---------|----------------|-------------|----------|
308
+ | Inventory System | lines 982–1017 | Sub-domain of Shop Software | 4+ interacting capabilities (purgatory model, alerts, visibility, pre-auth billing) |
309
+ | In-Platform Messaging | lines 759–788 | Feature of Consumer Platform | Single capability with role-based routing, no internal sub-features |
310
+ | Data Architecture | lines 1261–1282 | NOT a product domain | Architectural concern — database selection, sync strategy → note for /create-prd |
311
+ | Analytics & Insights | lines 730–758 | Cross-cutting concern | Three tiers serving all domains, no exclusive features of its own |
312
+
313
+ 5. **BLOCKING GATE — Build proposed domain map.** From the classification table, group concepts into a proposed domain hierarchy:
314
+ - Only concepts classified as **domain** become domain folders
315
+ - Concepts classified as **sub-domain** nest inside their parent domain
316
+ - Concepts classified as **feature** become leaf files inside their parent
317
+ - Concepts classified as **cross-cut** go in the appropriate CX files
318
+ - Concepts classified as **not-a-product-domain** are noted in `meta/constraints.md` for `/create-prd`
319
+ 6. **Identify gaps** — interview questions the document doesn't answer. These become Phase 2 interview questions.
320
+
321
+ **Process — Phase 2: Present and Interview the User**
322
+
323
+ 7. **BLOCKING GATE — Present classification and get confirmation.** Show the user:
324
+ - The classification table (every concept, its source, its gate result, and reasoning)
325
+ - The proposed domain map (the folder hierarchy that would be created)
326
+ - The gap list (questions the document didn't answer)
327
+ Ask: "Here's how I classified your content. Does this look right?" **Wait for user confirmation or corrections. Do NOT create any folders until the user confirms.**
328
+ 8. **Apply corrections** — if the user reclassifies any concept, update the table and domain map
329
+ 9. **Create fractal folder structure** from the CONFIRMED domain map and seed with content from the source document
330
+ 10. **Interview the user for gaps** — switch to Interview Mode for every gap identified in step 6. Use the same Deep Think questions, same exhaustion protocol, targeted at what the document didn't cover.
331
+ 11. Run Deep Think: "Based on your content, I would also expect [X] and [Y]. Are those relevant?"
332
+
333
+ **Enforcement rules:**
334
+ - Do NOT create any domain folders before Step 9 (after user confirmation in Step 7)
335
+ - Do NOT mirror source document headings as domains — they are hints for finding concepts, not the classification itself
336
+ - Every concept in the classification table MUST show which gate questions were asked and how they were answered
337
+ - If a concept's classification is uncertain, present it to the user in Phase 2 with your best guess and reasoning — do not silently guess
281
338
 
282
339
  ### Expansion Mode — Thin Input
283
340
 
@@ -19,7 +19,7 @@ pipeline:
19
19
 
20
20
  Explore domains through recursive breadth-before-depth with the Deep Think protocol. Write to the fractal folder structure — every node gets an index, CX file, and children.
21
21
 
22
- **Prerequisite**: If invoked standalone, verify `docs/plans/ideation/ideation-index.md` exists with the fractal folder structure seeded. If not, prompt the user to run `/ideate-extract` first.
22
+ **Prerequisite**: If invoked standalone, verify `docs/plans/ideation/ideation-index.md` exists with the fractal folder structure seeded. If this file does not exist → **STOP**: "Extraction output missing — the fractal folder structure has not been seeded. Run `/ideate-extract` first before proceeding to discovery." Do not proceed without this output.
23
23
 
24
24
  ---
25
25
 
@@ -38,9 +38,9 @@ Classify what the user has provided. This determines which mode the `idea-extrac
38
38
  **For rich inputs (Extraction mode):**
39
39
  1. Read/ingest all provided documents
40
40
  2. **Proportionality check**: If source >50KB, total ideation output must be ≥30% of source line count
41
- 3. Identify natural domain boundaries in the content
42
- 4. Present organized inventory for user confirmation
43
- 5. Identify gaps — note for Interview Mode in `/ideate-discover`
41
+ 3. **Interview the document**: Run the interview question framework from `idea-extraction/SKILL.md` Extraction Mode Phase 1. Extract concepts (not headings) with citations. Classify every concept through the Node Classification Gate. Build the classification table and proposed domain map.
42
+ 4. **BLOCKING GATE Do NOT proceed to Step 1.5 until the classification table is built.** The classification table is a required artifact. No domain folders can be created without it.
43
+ 5. Identify gaps — questions the document doesn't answer → these become Phase 2 user interview questions
44
44
  6. Use idea-extraction skill to refine, not re-derive
45
45
 
46
46
  **For thin inputs (Expansion mode):**
@@ -90,6 +90,29 @@ Before seeding, check whether `docs/plans/ideation/ideation-index.md` already ex
90
90
  - **Start fresh** → archive to `docs/plans/ideation-archive-[timestamp]/`, then seed
91
91
  - If it **does not exist**: proceed with seeding.
92
92
 
93
+ ## 1.4.5. Classification Confirmation (Extraction mode only)
94
+
95
+ > **BLOCKING GATE**: Before creating ANY domain folder, you MUST complete this step.
96
+ > This step exists because the test revealed that the Node Classification Gate was being
97
+ > bypassed — the agent mirrored source document headings as domains instead of classifying
98
+ > each concept. This gate makes classification a hard prerequisite for folder creation.
99
+
100
+ 1. **Verify the classification table exists.** Step 1 item 3 must have produced a completed classification table. If it doesn't exist, STOP — go back and run Extraction Mode Phase 1 from `idea-extraction/SKILL.md`.
101
+ 2. **Present the classification table and proposed domain map to the user.** Show:
102
+ - Every concept with its source location, gate result, and reasoning
103
+ - The proposed domain hierarchy (what folders would be created and where)
104
+ - The gap list (questions the document didn't answer)
105
+ 3. **Ask**: "Here's how I classified your content. Does this look right?"
106
+ 4. **Wait for user confirmation or corrections.** Do NOT proceed until the user responds.
107
+ 5. **Apply any corrections** the user provides — update the classification table and domain map.
108
+
109
+ **The classification table must show for each concept:**
110
+ - Concept name and source location (line numbers or section reference)
111
+ - Gate result: domain / sub-domain / feature / cross-cut / not-a-product-domain
112
+ - Gate reasoning: which gate questions were asked and how they were answered
113
+
114
+ **Do NOT mirror source document headings as domains.** Source headings are hints for finding concepts. The Node Classification Gate determines what each concept is.
115
+
93
116
  ## 1.5. Seed fractal `ideation/` folder
94
117
 
95
118
  Read these templates:
@@ -101,13 +124,17 @@ Read these templates:
101
124
 
102
125
  Read `.agent/skills/technical-writer/SKILL.md` and follow its methodology.
103
126
 
104
- **Create the base structure** (all project shapes):
127
+ **ADDITIVE ONLY** — The `docs/plans/ideation/` directory already exists in the kit with `.gitkeep` and `README.md`. You are ADDING files into this existing directory. Do NOT delete, overwrite, or replace the directory itself. Do NOT remove any existing files. Create new files alongside what already exists.
128
+
129
+ **Create the base structure** (all project shapes). This is what the folder should contain AFTER seeding — kit-shipped files plus new pipeline files:
105
130
 
106
131
  ```
107
132
  docs/plans/ideation/
108
- ├── ideation-index.md super-index (from ideation-index-template)
109
- ├── ideation-cx.md global cross-cuts (from ideation-crosscut-template)
110
- └── meta/
133
+ ├── .gitkeep KIT-SHIPPED do not touch
134
+ ├── README.md KIT-SHIPPED do not touch
135
+ ├── ideation-index.md ← NEW: super-index (from ideation-index-template)
136
+ ├── ideation-cx.md ← NEW: global cross-cuts (from ideation-crosscut-template)
137
+ └── meta/ ← NEW: created by this step
111
138
  ├── problem-statement.md
112
139
  ├── personas.md
113
140
  ├── competitive-landscape.md
@@ -116,20 +143,29 @@ docs/plans/ideation/
116
143
 
117
144
  **For multi-product projects**, additionally create `surfaces/` with sub-folders per surface.
118
145
 
119
- **Seed domains using the Node Classification Gate** (from `idea-extraction/SKILL.md`):
146
+ **Post-seeding verification gate**: 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."
147
+
148
+ **Seed domains from CONFIRMED classification table** (not from source headings):
149
+
150
+ > **CRITICAL**: The domain list comes from the classification table confirmed in Step 1.4.5.
151
+ > Do NOT re-derive domains from the source document. Do NOT fall back to source headings.
152
+ > If Step 1.4.5 was not completed, STOP — you cannot seed without a confirmed classification.
120
153
 
121
- For each domain identified in Step 1:
122
- 1. Run the Classification Gate determine placement:
154
+ For each concept classified as **domain** in the confirmed table:
155
+ 1. Determine placement from the structural classification:
123
156
  - Single-surface → create `docs/plans/ideation/{NN}-{slug}/`
124
157
  - Hub-and-spoke → surface-exclusive in `surfaces/{surface}/{NN}-{slug}/`, shared in hub surface
125
158
  - Peer → surface-exclusive in `surfaces/{surface}/{NN}-{slug}/`, shared in `shared/{NN}-{slug}/`
126
159
  2. Create the domain folder with: `{slug}-index.md` + `{slug}-cx.md`
127
- 3. For rich document inputs, parse sub-areas into feature files within each domain folder
128
- 4. Update `ideation-index.md` structure map with paths
160
+ 3. For concepts classified as **sub-domain**, create sub-domain folders nested inside their parent domain
161
+ 4. For concepts classified as **feature**, create feature files inside their parent domain or sub-domain
162
+ 5. For concepts classified as **cross-cut**, add entries to the appropriate CX files (domain-level or global)
163
+ 6. For concepts classified as **not-a-product-domain**, add notes to `meta/constraints.md` for `/create-prd`
164
+ 7. Update `ideation-index.md` structure map with paths
129
165
 
130
- **Seeding behavior by input type:**
166
+ **Seeding content by input type:**
131
167
 
132
- - **Rich document**: Parse by domain create fractal folders + feature files seed with content. Run fidelity check: every major source section maps to a domain folder. Add `> Source: path/to/original.md` to index.
168
+ - **Rich document**: Seed each domain/sub-domain/feature with content from the source document using the source citations in the classification table. Run fidelity check: every major concept in the source must map to SOMETHING in the output (domain, sub-domain, feature, CX entry, or `/create-prd` note). Add `> Source: path/to/original.md` to index.
133
169
  - **Chat transcript**: Noise filter → extract signal → seed domain folders with structured output.
134
170
  - **Thin document**: Create domain folders with depth markers on feature files.
135
171
  - **Verbal / one-liner**: Create domain folders with scaffolding. Feature files are `[SURFACE]`.
@@ -42,6 +42,23 @@ Transform a raw idea into comprehensive, structured ideation output through exha
42
42
 
43
43
  ---
44
44
 
45
+ ## 0. Prerequisite gate
46
+
47
+ Check whether `docs/plans/ideation/ideation-index.md` already exists.
48
+
49
+ - **If it does NOT exist** → This is a fresh ideation. Proceed to Shard 1.
50
+ - **If it DOES exist** → **STOP**. Present to the user:
51
+
52
+ > ⚠️ **Ideation output already exists** at `docs/plans/ideation/ideation-index.md`.
53
+ >
54
+ > Running `/ideate` again will overwrite the existing ideation output.
55
+ >
56
+ > **Overwrite** (start fresh) or **Abort**?
57
+
58
+ **Do not proceed** to any shard until the user explicitly confirms "Overwrite." If the user says "Abort," end the workflow immediately.
59
+
60
+ ---
61
+
45
62
  ## Shard Overview
46
63
 
47
64
  | # | Shard | What It Does |
@@ -45,7 +45,7 @@ Executes the TDD cycle (RED: write failing tests → GREEN: implement → REFACT
45
45
 
46
46
  ## Quality Gate
47
47
 
48
- You may not call `notify_user` until:
48
+ **BLOCKING GATE** — You may NOT call `notify_user` until ALL items pass:
49
49
  - [ ] All tests pass (Test Cmd from surface stack map)
50
50
  - [ ] Full validation passes (Validation Cmd from surface stack map)
51
51
  - [ ] All 4 progress tracking files updated (slice, phase, index, memory)
@@ -21,6 +21,13 @@ Break a phase into TDD vertical slices, each spanning all four surfaces (contrac
21
21
  **Input**: Approved specs (IA + BE + FE) and the phasing section from architecture design
22
22
  **Output**: Phase plan with ordered slices and acceptance criteria
23
23
 
24
+ **Prerequisite**: Approved specs across all three layers must exist. Verify:
25
+ 1. `docs/plans/ia/index.md` exists and all shards show ✅
26
+ 2. `docs/plans/be/index.md` exists and all specs show ✅
27
+ 3. `docs/plans/fe/index.md` exists and all specs show ✅
28
+
29
+ If any index is missing or contains incomplete specs → **STOP**: "Spec layers are not complete. Run `/write-architecture-spec`, `/write-be-spec`, and/or `/write-fe-spec` to complete all specs before planning a phase."
30
+
24
31
  ---
25
32
 
26
33
  ## Shard 1: Pre-flight — `/plan-phase-preflight`
@@ -130,10 +130,7 @@ If `docs/plans/ideation/` doesn't exist, create the scaffold:
130
130
  ```
131
131
  docs/plans/ideation/
132
132
  ├── .gitkeep
133
- ├── README.md ← copy from upstream
134
- ├── domains/.gitkeep
135
- ├── meta/.gitkeep
136
- └── cross-cuts/.gitkeep
133
+ └── README.md ← copy from upstream
137
134
  ```
138
135
 
139
136
  ### 4.5c. Flag for re-ideation
@@ -45,7 +45,7 @@ Runs production readiness checks: API documentation sync, accessibility audit, p
45
45
 
46
46
  ## Quality Gate
47
47
 
48
- You may not call `notify_user` until:
48
+ **BLOCKING GATE** — You may NOT call `notify_user` until ALL items pass:
49
49
  - [ ] All code quality checks pass (Shard 1)
50
50
  - [ ] All production readiness checks pass (Shard 2)
51
51
  - [ ] Validation report written to `docs/audits/phase-N-validation.md`
@@ -122,18 +122,24 @@ Read `.agent/skills/session-continuity/protocols/ambiguity-gates.md` and run the
122
122
 
123
123
  ## 14. Request review and propose next steps
124
124
 
125
+ > [!CAUTION]
126
+ > **FORBIDDEN next steps from this workflow**: You may ONLY propose `/write-architecture-spec` (next shard) or `/write-be-spec` as the next step. Proposing `/plan-phase`, `/implement-slice`, or any workflow that comes after BE/FE specs is **strictly forbidden** from this point in the pipeline. The IA layer feeds into the BE and FE spec layers — those layers MUST be completed before planning or implementation can begin, regardless of project type (web app, CLI tool, bash script, API-only, etc.). Every project has backend contracts and interface specifications, even if the "frontend" is a terminal or a CLI `--help` output.
127
+
125
128
  You may only notify the user of completion if you have completed the Cross-Reference check, the Dependency Graph validation, and the Ambiguity gate.
126
129
 
127
130
  Use `notify_user` to present the completed IA shard for review. Your message MUST include:
128
131
  1. **The shard created** (link to the file)
129
132
  2. **Cross-reference verification** (confirmation that links are bidirectional)
130
133
  3. **Ambiguity Gate confirmation** (confirmation that no implementer would need to guess)
131
- 4. **The Pipeline State** (propose the next task from the options below)
134
+ 4. **The Pipeline State** (propose the next task from the **ONLY** permitted options below)
132
135
 
133
136
  Do NOT proceed to the next step until the user sends a message explicitly approving this output. Proposing next steps is not the same as receiving approval. Wait for explicit approval before continuing.
134
137
 
135
138
  Read `.agent/progress/spec-pipeline.md` to determine the pipeline state, then propose the appropriate next step:
136
139
 
137
140
  - **More skeleton shards remain** → "Next: Run `/write-architecture-spec` for shard [next-shard-number]"
138
- - **All IA shards complete** → "All IA shards complete and /audit-ambiguity ia has already run (mandatory Step 13 above). If it scored 0%, proceed to /write-be-spec. If it found gaps, resolve them and re-run /audit-ambiguity ia as a fresh invocation before proceeding."
141
+ - **All IA shards complete** → "All IA shards complete and /audit-ambiguity ia has already run (mandatory Step 13 above). If it scored 0%, proceed to `/write-be-spec`. If it found gaps, resolve them and re-run /audit-ambiguity ia as a fresh invocation before proceeding."
139
142
  - **Self-audit found unresolvable issues** → Present the issues for discussion before proposing next step
143
+
144
+ > [!IMPORTANT]
145
+ > **No other next steps are valid.** If you believe this project does not need BE or FE specs, you are wrong. Every project type maps to the pipeline's spec layers — CLI tools have command contracts (BE) and terminal output specs (FE), bash scripts have function contracts (BE) and usage/help specs (FE), API-only services have endpoint contracts (BE) and client SDK/docs specs (FE). The pipeline does not skip layers.
@@ -51,7 +51,7 @@ Runs multiple deepening passes (cross-section consistency, "what if" scenarios,
51
51
 
52
52
  ## Quality Gate
53
53
 
54
- Before presenting to the user, verify:
54
+ **BLOCKING GATE** — Do NOT call `notify_user` or proceed to the next step until ALL items pass:
55
55
 
56
56
  Read .agent/skills/code-review-pro/SKILL.md and apply its adversarial review discipline.
57
57
 
@@ -61,3 +61,10 @@ Read .agent/skills/code-review-pro/SKILL.md and apply its adversarial review dis
61
61
  - [ ] Access control covers all roles and all interaction types
62
62
  - [ ] Edge cases cover concurrent access, deletion cascades, and state conflicts
63
63
  - [ ] Cross-shard dependencies are bidirectional
64
+
65
+ ---
66
+
67
+ ## Post-Completion: Mandatory Next Step
68
+
69
+ > [!CAUTION]
70
+ > After completing all IA shards, the **only** valid next step is `/write-be-spec`. Do NOT propose `/plan-phase` or `/implement-slice` — those require completed BE and FE specs. This applies to ALL project types: web apps, CLI tools, bash scripts, APIs, desktop apps. No project skips the BE/FE spec layers.
@@ -35,7 +35,7 @@ Write the BE spec(s) to `docs/plans/be/`, update indexes, run quality checks, an
35
35
 
36
36
  **Rule**: For every unspecced expected endpoint, either add it to the spec immediately or add an explicit `[Deferred to Phase N — reason]` note in the Notes column. An empty Notes column for an unspecced endpoint is a spec failure.
37
37
 
38
- **Gate**: Do not write the spec sections until every expected endpoint is either specced or explicitly deferred. This reconciliation table becomes the first section of the spec file after `## Classification`.
38
+ **BLOCKING GATE**: Do NOT write the spec sections until every expected endpoint is either specced or explicitly deferred. This reconciliation table becomes the first section of the spec file after `## Classification`.
39
39
 
40
40
  Read .agent/skills/technical-writer/SKILL.md and follow its methodology.
41
41
  Read .agent/skills/spec-writing/SKILL.md and follow its completeness testing and cross-reference checking methodology.
@@ -90,10 +90,20 @@ If this BE spec introduces a technology not already in the project's tech stack:
90
90
 
91
91
  ## 14. Request review and propose next steps
92
92
 
93
+ > [!CAUTION]
94
+ > **FORBIDDEN next steps from this workflow**: You may ONLY propose `/write-be-spec` (next shard) or `/write-fe-spec` as the next step. Proposing `/plan-phase` or `/implement-slice` from this workflow is **strictly forbidden** — those require completed FE specs. This applies to ALL project types including CLI tools, bash scripts, and API-only services.
95
+
93
96
  Read .agent/skills/verification-before-completion/SKILL.md and follow its methodology.
94
97
 
95
98
  Use `notify_user` presenting:
96
99
  1. **Spec created** (link)
97
100
  2. **Cross-reference verification**
98
101
  3. **Ambiguity Gate confirmation**
99
- 4. **Pipeline State** — read `.agent/progress/spec-pipeline.md` and propose next step
102
+ 4. **Pipeline State** — read `.agent/progress/spec-pipeline.md` and propose the next step from the **ONLY** permitted options below:
103
+
104
+ - **More BE specs remain** → "Next: Run `/write-be-spec` for shard [next-shard-number]"
105
+ - **All BE specs complete** → "All BE specs complete and `/audit-ambiguity be` has already run (mandatory Step 12 above). If it scored 0%, proceed to `/write-fe-spec`. If it found gaps, resolve them and re-run `/audit-ambiguity be` before proceeding."
106
+ - **Self-audit found unresolvable issues** → Present the issues for discussion before proposing next step
107
+
108
+ > [!IMPORTANT]
109
+ > **No other next steps are valid.** `/plan-phase` requires both BE AND FE specs to be complete. After all BE specs pass audit, the mandatory next workflow is `/write-fe-spec`.
@@ -62,7 +62,7 @@ Writes the BE spec(s) to `docs/plans/be/`, updates the BE index, runs cross-refe
62
62
 
63
63
  ## Quality Gate
64
64
 
65
- Before presenting to the user, verify:
65
+ **BLOCKING GATE** — Do NOT call `notify_user` or proceed to the next step until ALL items pass:
66
66
 
67
67
  Read .agent/skills/code-review-pro/SKILL.md and apply its adversarial review discipline to each checklist item.
68
68
 
@@ -83,7 +83,14 @@ Use `notify_user` presenting:
83
83
  1. **Spec created** (link)
84
84
  2. **Cross-reference verification**
85
85
  3. **Ambiguity Gate confirmation**
86
- 4. **Pipeline State** — read `.agent/progress/spec-pipeline.md` and propose next step
86
+ 4. **Pipeline State** — read `.agent/progress/spec-pipeline.md` and propose the next step from the **ONLY** permitted options below:
87
+
88
+ - **More FE specs remain** → "Next: Run `/write-fe-spec` for shard [next-shard-number]"
89
+ - **All FE specs complete** → "All FE specs complete and `/audit-ambiguity fe` has already run (mandatory Step 11 above). If it scored 0% and the Navigation Completeness Check passes (Step 14 below), proceed to `/plan-phase`. If gaps remain, resolve them first."
90
+ - **Self-audit found unresolvable issues** → Present the issues for discussion before proposing next step
91
+
92
+ > [!IMPORTANT]
93
+ > `/plan-phase` is valid ONLY from this workflow, and ONLY when all FE specs show ✅, `/audit-ambiguity fe` scores 0%, and the Navigation Completeness Check (Step 14) passes.
87
94
 
88
95
  ## 14. Navigation Completeness Check
89
96
 
@@ -59,7 +59,7 @@ Writes the FE spec to `docs/plans/fe/`, updates the FE index, runs cross-referen
59
59
 
60
60
  ## Quality Gate
61
61
 
62
- Before presenting to the user, verify:
62
+ **BLOCKING GATE** — Do NOT call `notify_user` or proceed to the next step until ALL items pass:
63
63
 
64
64
  Read .agent/skills/code-review-pro/SKILL.md and apply its adversarial review discipline to each checklist item.
65
65
 
File without changes
File without changes
File without changes