@deftai/directive-content 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.agents/skills/deft/SKILL.md +6 -0
  2. package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
  3. package/.agents/skills/deft-directive-build/SKILL.md +10 -0
  4. package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
  5. package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
  6. package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
  7. package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
  8. package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
  9. package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
  10. package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
  11. package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
  12. package/.agents/skills/deft-directive-release/SKILL.md +12 -0
  13. package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
  14. package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
  15. package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
  16. package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
  17. package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
  18. package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
  19. package/LICENSE.md +22 -0
  20. package/QUICK-START.md +167 -0
  21. package/UPGRADING.md +517 -0
  22. package/coding/build-output.md +28 -0
  23. package/coding/coding.md +235 -0
  24. package/coding/debugging.md +110 -0
  25. package/coding/holzmann.md +96 -0
  26. package/coding/hygiene.md +127 -0
  27. package/coding/security.md +158 -0
  28. package/coding/testing.md +162 -0
  29. package/coding/toolchain.md +44 -0
  30. package/commands.md +300 -0
  31. package/context/context.md +57 -0
  32. package/context/deterministic-split.md +67 -0
  33. package/context/examples.md +26 -0
  34. package/context/fractal-summaries.md +69 -0
  35. package/context/long-horizon.md +46 -0
  36. package/context/spec-deltas.md +177 -0
  37. package/context/tool-design.md +34 -0
  38. package/context/working-memory.md +62 -0
  39. package/contracts/boundary-maps.md +65 -0
  40. package/contracts/deterministic-questions.md +59 -0
  41. package/contracts/hierarchy.md +77 -0
  42. package/conventions/content-manifest.json +399 -0
  43. package/conventions/machine-generated-banner.md +130 -0
  44. package/conventions/references.md +120 -0
  45. package/conventions/rule-ownership.json +382 -0
  46. package/conventions/task-caching.md +43 -0
  47. package/conventions/vbrief-filenames.md +70 -0
  48. package/deployments/README.md +37 -0
  49. package/deployments/agentuity/README.md +138 -0
  50. package/deployments/agentuity/via-cli.md +380 -0
  51. package/deployments/agentuity/via-cloud.md +425 -0
  52. package/deployments/agentuity/via-github-actions.md +664 -0
  53. package/deployments/agentuity/via-gravity-network.md +606 -0
  54. package/deployments/agentuity/via-vpc.md +607 -0
  55. package/deployments/aws/README.md +38 -0
  56. package/deployments/aws/via-app-runner.md +612 -0
  57. package/deployments/aws/via-ecs-fargate.md +561 -0
  58. package/deployments/aws/via-elastic-beanstalk.md +628 -0
  59. package/deployments/aws/via-lambda.md +649 -0
  60. package/deployments/azure/README.md +37 -0
  61. package/deployments/azure/via-aks.md +390 -0
  62. package/deployments/azure/via-app-service.md +564 -0
  63. package/deployments/azure/via-container-apps.md +599 -0
  64. package/deployments/azure/via-functions.md +552 -0
  65. package/deployments/cloud-gov/README.md +63 -0
  66. package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
  67. package/deployments/cloud-gov/agents.md +39 -0
  68. package/deployments/cloud-gov/cicd.md +64 -0
  69. package/deployments/cloud-gov/deployment.md +150 -0
  70. package/deployments/cloud-gov/logging.md +43 -0
  71. package/deployments/cloud-gov/manifest.md +121 -0
  72. package/deployments/cloud-gov/overview.md +58 -0
  73. package/deployments/cloud-gov/security.md +46 -0
  74. package/deployments/cloud-gov/services.md +72 -0
  75. package/deployments/cloud-gov/upstream/README.md +18 -0
  76. package/deployments/cloudflare/README.md +33 -0
  77. package/deployments/cloudflare/via-dashboard.md +83 -0
  78. package/deployments/cloudflare/via-git.md +90 -0
  79. package/deployments/cloudflare/via-github-actions.md +185 -0
  80. package/deployments/cloudflare/via-terraform.md +157 -0
  81. package/deployments/cloudflare/via-wrangler.md +165 -0
  82. package/deployments/fly-io/README.md +37 -0
  83. package/deployments/fly-io/via-dockerfile.md +648 -0
  84. package/deployments/fly-io/via-flyctl.md +653 -0
  85. package/deployments/fly-io/via-github-actions.md +695 -0
  86. package/deployments/fly-io/via-multi-region.md +598 -0
  87. package/deployments/google/README.md +34 -0
  88. package/deployments/google/via-app-engine.md +42 -0
  89. package/deployments/google/via-cloud-functions.md +23 -0
  90. package/deployments/google/via-cloud-run.md +330 -0
  91. package/deployments/google/via-gke.md +23 -0
  92. package/deployments/netlify/README.md +99 -0
  93. package/deployments/netlify/via-cli.md +17 -0
  94. package/deployments/netlify/via-functions.md +19 -0
  95. package/deployments/netlify/via-git.md +25 -0
  96. package/deployments/vercel/README.md +90 -0
  97. package/deployments/vercel/via-api.md +16 -0
  98. package/deployments/vercel/via-cli.md +17 -0
  99. package/deployments/vercel/via-git.md +24 -0
  100. package/docs/BROWNFIELD.md +179 -0
  101. package/docs/getting-started.md +137 -0
  102. package/docs/good-agents-md.md +137 -0
  103. package/events/README.md +89 -0
  104. package/events/event-record.schema.json +26 -0
  105. package/events/registry.json +166 -0
  106. package/events/registry.schema.json +71 -0
  107. package/glossary.md +145 -0
  108. package/incidents/README.md +81 -0
  109. package/incidents/_template.md +38 -0
  110. package/interfaces/cli.md +104 -0
  111. package/interfaces/rest.md +212 -0
  112. package/interfaces/tui.md +242 -0
  113. package/interfaces/web.md +123 -0
  114. package/languages/6502-DASM.md +132 -0
  115. package/languages/c.md +235 -0
  116. package/languages/commands.md +23 -0
  117. package/languages/cpp.md +132 -0
  118. package/languages/csharp.md +259 -0
  119. package/languages/dart.md +183 -0
  120. package/languages/delphi.md +218 -0
  121. package/languages/elixir.md +208 -0
  122. package/languages/go.md +78 -0
  123. package/languages/java.md +278 -0
  124. package/languages/javascript.md +163 -0
  125. package/languages/julia.md +175 -0
  126. package/languages/kotlin.md +193 -0
  127. package/languages/markdown.md +168 -0
  128. package/languages/mermaid.md +146 -0
  129. package/languages/officejs.md +392 -0
  130. package/languages/python.md +209 -0
  131. package/languages/r.md +163 -0
  132. package/languages/rust.md +216 -0
  133. package/languages/sql.md +216 -0
  134. package/languages/swift.md +153 -0
  135. package/languages/typescript.md +132 -0
  136. package/languages/vba.md +279 -0
  137. package/languages/vhdl.md +180 -0
  138. package/languages/visual-basic.md +151 -0
  139. package/languages/zig.md +196 -0
  140. package/meta/SOUL.md +27 -0
  141. package/meta/code-field.md +44 -0
  142. package/meta/morals.md +40 -0
  143. package/meta/philosophy.md +39 -0
  144. package/meta/project.md +49 -0
  145. package/meta/ralph.md +223 -0
  146. package/meta/security.md +80 -0
  147. package/meta/versioning.md +326 -0
  148. package/package.json +22 -0
  149. package/packs/lessons/lessons-pack-0.1.json +553 -0
  150. package/packs/patterns/patterns-pack-0.1.json +57 -0
  151. package/packs/rules/rules-pack-0.1.json +4767 -0
  152. package/packs/skills/skills-pack-0.1.json +262 -0
  153. package/packs/strategies/strategies-pack-0.1.json +167 -0
  154. package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
  155. package/patterns/executor-layer-credentials.md +227 -0
  156. package/patterns/llm-app.md +156 -0
  157. package/patterns/multi-agent.md +278 -0
  158. package/patterns/prompt-assembly-layer-ordering.md +154 -0
  159. package/patterns/role-as-overlay.md +179 -0
  160. package/platforms/2600.md +137 -0
  161. package/platforms/unity.md +329 -0
  162. package/references/composer-skill-porting.md +152 -0
  163. package/references/cost-models.md +163 -0
  164. package/references/ip-risk.md +246 -0
  165. package/references/plain-english-ux.md +275 -0
  166. package/resilience/context-pruning.md +67 -0
  167. package/resilience/continue-here.md +62 -0
  168. package/scm/changelog.md +276 -0
  169. package/scm/git.md +139 -0
  170. package/scm/github.md +265 -0
  171. package/secrets/.gitkeep +0 -0
  172. package/skills/deft-build/SKILL.md +20 -0
  173. package/skills/deft-directive-article-review/SKILL.md +156 -0
  174. package/skills/deft-directive-build/SKILL.md +302 -0
  175. package/skills/deft-directive-cost/SKILL.md +201 -0
  176. package/skills/deft-directive-debug/SKILL.md +140 -0
  177. package/skills/deft-directive-decompose/SKILL.md +96 -0
  178. package/skills/deft-directive-gh-arch/SKILL.md +160 -0
  179. package/skills/deft-directive-gh-slice/SKILL.md +199 -0
  180. package/skills/deft-directive-glossary/SKILL.md +118 -0
  181. package/skills/deft-directive-interview/SKILL.md +528 -0
  182. package/skills/deft-directive-pre-pr/SKILL.md +131 -0
  183. package/skills/deft-directive-probe/SKILL.md +127 -0
  184. package/skills/deft-directive-refinement/SKILL.md +403 -0
  185. package/skills/deft-directive-release/SKILL.md +266 -0
  186. package/skills/deft-directive-review-cycle/SKILL.md +401 -0
  187. package/skills/deft-directive-setup/SKILL.md +717 -0
  188. package/skills/deft-directive-swarm/SKILL.md +989 -0
  189. package/skills/deft-directive-sync/SKILL.md +288 -0
  190. package/skills/deft-directive-triage/SKILL.md +137 -0
  191. package/skills/deft-directive-write-skill/SKILL.md +169 -0
  192. package/skills/deft-interview/SKILL.md +16 -0
  193. package/skills/deft-pre-pr/SKILL.md +16 -0
  194. package/skills/deft-review-cycle/SKILL.md +16 -0
  195. package/skills/deft-roadmap-refresh/SKILL.md +16 -0
  196. package/skills/deft-setup/SKILL.md +20 -0
  197. package/skills/deft-swarm/SKILL.md +16 -0
  198. package/skills/deft-sync/SKILL.md +16 -0
  199. package/strategies/README.md +83 -0
  200. package/strategies/artifact-guards.md +85 -0
  201. package/strategies/bdd.md +115 -0
  202. package/strategies/brownfield.md +7 -0
  203. package/strategies/discuss.md +129 -0
  204. package/strategies/emit-hints.md +69 -0
  205. package/strategies/enterprise.md +193 -0
  206. package/strategies/interview.md +551 -0
  207. package/strategies/map.md +179 -0
  208. package/strategies/probe.md +151 -0
  209. package/strategies/rapid.md +155 -0
  210. package/strategies/research.md +155 -0
  211. package/strategies/roadmap.md +9 -0
  212. package/strategies/speckit.md +437 -0
  213. package/strategies/v0-20-contract.md +134 -0
  214. package/strategies/yolo.md +169 -0
  215. package/swarm/swarm.md +300 -0
  216. package/templates/COST-ESTIMATE.md +114 -0
  217. package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
  218. package/templates/agent-prompt-preamble.md +409 -0
  219. package/templates/agents-entry.md +211 -0
  220. package/templates/agents-entry.placeholders.md +75 -0
  221. package/templates/embed.go +20 -0
  222. package/templates/embed_test.go +36 -0
  223. package/templates/make-spec-example.md +9 -0
  224. package/templates/make-spec.md +246 -0
  225. package/templates/project.md.template +52 -0
  226. package/templates/specification.md +1 -0
  227. package/templates/swarm-greptile-poller-prompt.md +556 -0
  228. package/templates/user.md.template +31 -0
  229. package/tools/RWLDL.md +80 -0
  230. package/tools/greptile.md +141 -0
  231. package/tools/installer.md +23 -0
  232. package/tools/taskfile-migration.md +32 -0
  233. package/tools/taskfile.md +185 -0
  234. package/tools/telemetry.md +285 -0
  235. package/vbrief/schemas/cache-meta.schema.json +137 -0
  236. package/vbrief/schemas/candidates.schema.json +130 -0
  237. package/vbrief/schemas/codebase-map.schema.json +213 -0
  238. package/vbrief/schemas/lessons-pack.schema.json +134 -0
  239. package/vbrief/schemas/patterns-pack.schema.json +84 -0
  240. package/vbrief/schemas/rules-pack.schema.json +105 -0
  241. package/vbrief/schemas/skills-pack.schema.json +94 -0
  242. package/vbrief/schemas/slices.schema.json +87 -0
  243. package/vbrief/schemas/strategies-pack.schema.json +89 -0
  244. package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
  245. package/vbrief/schemas/vbrief-core.schema.json +1022 -0
  246. package/vbrief/vbrief.md +684 -0
  247. package/verification/integration.md +76 -0
  248. package/verification/plan-checking.md +85 -0
  249. package/verification/uat.md +60 -0
  250. package/verification/verification.md +117 -0
@@ -0,0 +1,551 @@
1
+ <!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
2
+ <!-- Purpose: rendered strategy -->
3
+ <!-- Source of truth: packs/strategies/strategies-pack-0.1.json -->
4
+ <!-- Regenerate with: task packs:render -->
5
+ <!-- Edit the source, not this file. Slice instead of loading every strategy: task packs:slice strategies by-trigger --trigger <kw> (or list) -->
6
+
7
+ # Interview Strategy
8
+
9
+ The standard Deft workflow: structured interview → SPECIFICATION. This is the
10
+ canonical source of truth for the interview process. All entry points (CLI via
11
+ `run spec`, agent via `deft-directive-setup` Phase 3, and `templates/make-spec.md`) MUST
12
+ follow this strategy.
13
+
14
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
15
+
16
+ **⚠️ See also**: [strategies/discuss.md](./discuss.md) | [strategies/yolo.md](./yolo.md) | [core/glossary.md](../glossary.md)
17
+
18
+ ## When to Use
19
+
20
+ - ! Default strategy for all new projects
21
+ - ~ Projects with unclear or evolving requirements
22
+ - ~ When stakeholder alignment is needed before implementation
23
+ - ? Skip to SPECIFICATION phase if requirements are already fully documented
24
+
25
+ ---
26
+
27
+ ## Chaining Gate
28
+
29
+ Before spec generation, offer the user a chance to run preparatory strategies
30
+ or switch to a different spec-generating strategy. This gate is the single
31
+ orchestration point for strategy composition.
32
+
33
+ ! The chaining gate MUST always be shown — even when the interview strategy is
34
+ invoked directly with no prior strategy.
35
+ ! The chaining gate is a **blocking question**. The AI MUST present the options
36
+ and wait for the user to choose before proceeding.
37
+ ⊗ Skip the chaining gate or proceed to the sizing gate without presenting it.
38
+
39
+ ### When It Appears
40
+
41
+ - ! Before the [Sizing Gate](#sizing-gate) on every entry to the interview strategy
42
+ - ! After each completed preparatory strategy (recursive — the gate reappears)
43
+ - ! After the [Acceptance Gate](#acceptance-gate) when the user chooses "Revise" or "Switch"
44
+
45
+ ### Options
46
+
47
+ Present two groups sourced from the `Type` column in
48
+ [strategies/README.md](./README.md#strategy-types):
49
+
50
+ **Default:**
51
+ 1. **Proceed to specification** (default) — continue to the [Sizing Gate](#sizing-gate)
52
+
53
+ **Preparatory strategies** (type: `preparatory` — loops back to this gate on completion):
54
+ - Research — investigate the domain, find libraries, identify pitfalls
55
+ - Discuss — lock key decisions using Feynman technique
56
+ - Probe — adversarially stress-test the plan; surface assumptions, edge cases, and risks
57
+ - Map — analyze existing codebase conventions
58
+
59
+ ~ Some preparatory strategies (currently map) also support standalone invocation
60
+ via `/deft:run:<name>` without entering the interview flow. When invoked standalone,
61
+ they present their own completion options instead of returning to this gate.
62
+ See `strategies/map.md` for standalone behavior.
63
+
64
+ **Switch spec-generating strategy** (type: `spec-generating` — replaces current pipeline):
65
+ - Yolo — auto-pilot, Johnbot picks all answers
66
+ - SpecKit — formal spec process with story readiness before implementation
67
+
68
+ ### Run Count Annotations
69
+
70
+ - ! Previously-run strategies MUST display with a run count (e.g., `Research (ran 1×)`)
71
+ - ! No strategy is ever removed from the gate — users can re-run any strategy
72
+ - ! Run counts are read from `completedStrategies` in
73
+ [`./vbrief/plan.vbrief.json`](../vbrief/vbrief.md#strategy-chaining-fields)
74
+
75
+ ### State Tracking
76
+
77
+ - ! On completion of a preparatory strategy, update `completedStrategies` in
78
+ `./vbrief/plan.vbrief.json`: increment `runCount`, append artifact paths
79
+ - ! Append all new artifact paths to the flat `artifacts` array
80
+ - ! The next strategy and eventual spec generation MUST load all artifacts
81
+ listed in `plan.vbrief.json`
82
+
83
+ ### Example Prompt
84
+
85
+ ```
86
+ Ready to generate the specification. Before we proceed, would you like to:
87
+
88
+ 1. Proceed to specification (default)
89
+
90
+ --- Preparatory (loops back) ---
91
+ 2. Run a research phase — investigate the domain, find libraries, identify pitfalls
92
+ 3. Run a discuss phase — lock key decisions using Feynman technique
93
+ 4. Run a probe phase — adversarially stress-test the plan; surface assumptions, edge cases, and risks
94
+ 5. Run a map phase — analyze existing codebase conventions
95
+
96
+ --- Switch strategy ---
97
+ 6. Switch to yolo — auto-pilot picks all answers
98
+ 7. Switch to speckit — formal spec process with story readiness before implementation
99
+
100
+ 8. Other (specify)
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Sizing Gate
106
+
107
+ Before the interview begins, determine project complexity to select the
108
+ appropriate path. The gate runs once, immediately after hearing what the user
109
+ wants to build.
110
+
111
+ ! The sizing gate is a **blocking question**. The AI MUST propose a size and
112
+ wait for the user to confirm or override before asking any interview questions.
113
+ ⊗ Combine the sizing proposal with the first interview question in the same message.
114
+ ⊗ Proceed to interview questions before the user has explicitly confirmed the path.
115
+
116
+ ### Sizing Signals
117
+
118
+ The AI SHOULD propose a size based on these signals; the user confirms or overrides:
119
+
120
+ - Number of features (≤5 → Light, >5 → Full)
121
+ - Number of components/services (1–2 → Light, 3+ → Full)
122
+ - Expected duration (days → Light, weeks/months → Full)
123
+ - Team/agent count (solo → Light, multi-agent/swarm → Full)
124
+ - Integration complexity (standalone → Light, external APIs/auth/DB → Full)
125
+
126
+ ### PROJECT-DEFINITION.vbrief.json Override
127
+
128
+ `PROJECT-DEFINITION.vbrief.json` narratives ? declare `"Process": "Light"` or `"Process": "Full"` to skip the
129
+ gate entirely. `PROJECT.md` (deprecated) may also carry this field. If the field is absent or empty, the AI MUST ask.
130
+
131
+ ## Workflow Overview
132
+
133
+ ```mermaid
134
+ flowchart LR
135
+ subgraph interview ["Interview Strategy"]
136
+ G{"⚖️ Sizing Gate"}
137
+ I_L["💬 Interview<br/><i>Light path</i>"]
138
+ I_F["💬 Interview<br/><i>Full path</i>"]
139
+ P["📄 PRD<br/><i>What to build</i>"]
140
+ S["📋 SPECIFICATION<br/><i>How to build it</i>"]
141
+ end
142
+
143
+ G -->|"Light"| I_L
144
+ G -->|"Full"| I_F
145
+ I_L -->|"Ambiguity resolved"| S
146
+ I_F -->|"Ambiguity resolved"| P
147
+ P -->|"Approved"| S
148
+ S -->|"Ready"| IMPL["🔨 Implementation"]
149
+
150
+ style G fill:#f0abfc,stroke:#a21caf,color:#000
151
+ style I_L fill:#c4b5fd,stroke:#7c3aed,color:#000
152
+ style I_F fill:#c4b5fd,stroke:#7c3aed,color:#000
153
+ style P fill:#fef08a,stroke:#ca8a04,color:#000
154
+ style S fill:#6ee7b7,stroke:#059669,color:#000
155
+ style IMPL fill:#7dd3fc,stroke:#0284c7,color:#000
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Interview Rules (shared by both paths)
161
+
162
+ - ~ Use Claude AskInterviewQuestion when available (emulate if not)
163
+ - ! Ask **ONE** focused, non-trivial question per step
164
+ - ⊗ Ask multiple questions at once or sneak in "also" questions
165
+ - ~ Provide numbered answer options when appropriate
166
+ - ! Include "other" option for custom/unknown responses
167
+ - ! Indicate which option is RECOMMENDED
168
+ - ! When making an opinionated recommendation, state the principle (1 sentence)
169
+ - ! When done, append all questions asked and answers given to the working document
170
+
171
+ ### Question Areas
172
+
173
+ - ! Missing decisions (language, framework, deployment)
174
+ - ! Edge cases (errors, boundaries, failure modes)
175
+ - ! Implementation details (architecture, patterns, libraries)
176
+ - ! Requirements (performance, security, scalability)
177
+ - ! UX/constraints (users, timeline, compatibility)
178
+ - ! Tradeoffs (simplicity vs features, speed vs safety)
179
+
180
+ ### Transition Criteria (interview complete)
181
+
182
+ - ! All major decisions have answers
183
+ - ! Edge cases are addressed
184
+ - ! User has approved key tradeoffs (Interview strategy) or Johnbot has chosen recommended options (Yolo strategy)
185
+ - ~ Little ambiguity remains
186
+
187
+ ---
188
+
189
+ ## Light Path (small/medium projects)
190
+
191
+ Interview → scope vBRIEFs (date-prefixed in proposed/) + PROJECT-DEFINITION.vbrief.json + rendered SPECIFICATION (v0.20 contract).
192
+
193
+ ### Flow
194
+
195
+ 1. Sizing gate selects Light
196
+ 2. Interview (rules above)
197
+ 3. Write scope vBRIEF(s) to `./vbrief/proposed/YYYY-MM-DD-<slug>.vbrief.json` (date-prefixed per vbrief filename convention) with `status: proposed`
198
+ 4. Run `task project:render` to create/update `./vbrief/PROJECT-DEFINITION.vbrief.json` (full project identity + items registry) and ensure all five lifecycle folders exist
199
+ 5. Summarize decisions, ask user to review
200
+ 6. On approval, use `task scope:promote` (or equivalent) to move scope vBRIEF(s) to `./vbrief/pending/` with `status: pending` / `approved`
201
+ 7. Run `task spec:render` (SPECIFICATION.md is a rendered derivative with deprecation sentinel; `specification.vbrief.json` is legacy and is NOT written by this strategy on the v0.20 path)
202
+
203
+ ! At the emission step (step 3 above), after writing the scope vBRIEF(s) to `./vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
204
+
205
+ ### SPECIFICATION Structure (Light)
206
+
207
+ ```markdown
208
+ # [Project Name] SPECIFICATION
209
+
210
+ ## Overview
211
+ Brief summary of the project.
212
+
213
+ ## Requirements
214
+
215
+ ### Functional Requirements
216
+ - FR-1: [requirement]
217
+ - FR-2: [requirement]
218
+
219
+ ### Non-Functional Requirements
220
+ - NFR-1: Performance — [requirement]
221
+ - NFR-2: Security — [requirement]
222
+
223
+ ## Architecture
224
+ High-level system design, components, data flow.
225
+
226
+ ## Implementation Plan
227
+
228
+ ### Phase 1: Foundation
229
+ #### Subphase 1.1: Setup
230
+ - Task 1.1.1: [description] (traces: FR-1)
231
+ - Dependencies: none
232
+ - Acceptance: [criteria]
233
+
234
+ #### Subphase 1.2: Core (depends on: 1.1)
235
+ - Task 1.2.1: [description] (traces: FR-2, NFR-1)
236
+
237
+ ### Phase 2: Features (depends on: Phase 1)
238
+ ...
239
+
240
+ ## Testing Strategy
241
+ How to verify the implementation meets requirements.
242
+
243
+ ## Deployment
244
+ How to ship it.
245
+ ```
246
+
247
+ - ! Requirements section MUST appear in SPECIFICATION.md (embedded, no separate PRD)
248
+ - ! Each task SHOULD reference which FR/NFR it implements via `(traces: FR-N)`
249
+ - ⊗ Create a separate PRD.md on the Light path
250
+
251
+ ---
252
+
253
+ ## Full Path (large/complex projects)
254
+
255
+ Interview → PRD → scope vBRIEFs (date-prefixed in proposed/) + PROJECT-DEFINITION.vbrief.json + rendered SPECIFICATION (v0.20 contract).
256
+
257
+ ### Flow
258
+
259
+ 1. Sizing gate selects Full
260
+ 2. Interview (rules above)
261
+ 3. Generate `PRD.md` — user approval gate
262
+ 4. Write scope vBRIEF(s) to `./vbrief/proposed/YYYY-MM-DD-<slug>.vbrief.json` (date-prefixed per vbrief filename convention) with `status: proposed`
263
+ 5. Run `task project:render` to create/update `./vbrief/PROJECT-DEFINITION.vbrief.json` (full project identity + items registry) and ensure all five lifecycle folders exist
264
+ 6. Summarize decisions, ask user to review
265
+ 7. On approval, use `task scope:promote` (or equivalent) to move scope vBRIEF(s) to `./vbrief/pending/` with `status: pending` / `approved`
266
+ 8. Run `task spec:render` (SPECIFICATION.md is a rendered derivative with deprecation sentinel; `specification.vbrief.json` is legacy and is NOT written by this strategy on the v0.20 path)
267
+
268
+ ! At the emission step (step 4 above), after writing the scope vBRIEF(s) to `./vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
269
+
270
+ ### PRD Structure (Full path only)
271
+
272
+ ```markdown
273
+ # [Project Name] PRD
274
+
275
+ ## Problem Statement
276
+ What problem does this solve? Who has this problem?
277
+
278
+ ## Goals
279
+ - Primary goal
280
+ - Secondary goals
281
+ - Non-goals (explicitly out of scope)
282
+
283
+ ## User Stories
284
+ As a [user type], I want [capability] so that [benefit].
285
+
286
+ ## Requirements
287
+
288
+ ### Functional Requirements
289
+ - FR-1: [requirement]
290
+ - FR-2: [requirement]
291
+
292
+ ### Non-Functional Requirements
293
+ - NFR-1: Performance — [requirement]
294
+ - NFR-2: Security — [requirement]
295
+
296
+ ## Success Metrics
297
+ How do we know this succeeded?
298
+
299
+ ## Open Questions
300
+ Any remaining decisions deferred to implementation.
301
+ ```
302
+
303
+ ### PRD Guidelines
304
+
305
+ - ! Focus on WHAT, not HOW
306
+ - ! Use RFC 2119 language (MUST, SHOULD, MAY)
307
+ - ! Number all requirements for traceability
308
+ - ~ Include acceptance criteria for each requirement
309
+ - ⊗ Include implementation details or architecture
310
+
311
+ ### PRD Transition Criteria
312
+
313
+ - ! All functional requirements documented
314
+ - ! Non-functional requirements specified
315
+ - ! User has reviewed and approved PRD
316
+ - ~ No blocking open questions remain
317
+
318
+ ### PRD Approval Menu (#740, refs #767)
319
+
320
+ ! After every PRD (Product Requirements Document) review, the agent MUST
321
+ present the canonical numbered approval menu defined in
322
+ [`../references/plain-english-ux.md`](../references/plain-english-ux.md)
323
+ `## Rule 4`. The menu replaces ambiguous `Accept / Refine / Edit`
324
+ buttons with action-shaped labels and follows the #767 framework rule
325
+ for deterministic numbered menus -- the **final two numbered options
326
+ MUST be `Discuss` and `Back`**, in that order.
327
+
328
+ ```
329
+ What would you like to do with the PRD (Product Requirements Document)?
330
+
331
+ 1. Approve and continue (lock the PRD, generate the SPECIFICATION)
332
+ 2. Suggest changes (you describe what to change; the agent rewrites)
333
+ 3. Edit yourself (you edit the PRD directly; the agent waits)
334
+ 4. Discuss
335
+ 5. Back
336
+
337
+ Enter confirm / b back / 0 discuss
338
+ ```
339
+
340
+ ! When `contracts/deterministic-questions.md` lands (Agent 1, #767), this
341
+ strategy MUST defer to that contract for canonical menu wording.
342
+
343
+ ! When the PRD review surfaces a red/green diff, the agent MUST emit a
344
+ non-alarming preface above it (per `references/plain-english-ux.md` Rule 5):
345
+
346
+ ```
347
+ Here's what changed since the previous draft. Red lines were removed,
348
+ green lines were added. Nothing here is broken -- this is a normal
349
+ review.
350
+ ```
351
+
352
+ ? Alternatively, the agent MAY hide the diff entirely on the first review
353
+ pass and present a plain-English summary of changes; show the diff only
354
+ on the second pass or when the user explicitly asks for it.
355
+
356
+ - ⊗ Use plain `Accept / Refine / Edit` buttons without explanatory
357
+ parentheticals.
358
+ - ⊗ Add a numbered approval menu where Discuss and Back are not the
359
+ final two options.
360
+ - ⊗ Show a red/green diff at first review without a non-alarming preface.
361
+
362
+ ### SPECIFICATION Structure (Full)
363
+
364
+ ```markdown
365
+ # [Project Name] SPECIFICATION
366
+
367
+ ## Overview
368
+ Brief summary and link to PRD.
369
+
370
+ ## Architecture
371
+ High-level system design, components, data flow.
372
+
373
+ ## Implementation Plan
374
+
375
+ ### Phase 1: Foundation
376
+ #### Subphase 1.1: Setup
377
+ - Task 1.1.1: [description] (traces: FR-1)
378
+ - Dependencies: none
379
+ - Acceptance: [criteria]
380
+
381
+ #### Subphase 1.2: Core (depends on: 1.1)
382
+ - Task 1.2.1: [description] (traces: FR-2, NFR-1)
383
+
384
+ ### Phase 2: Features (depends on: Phase 1)
385
+ ...
386
+
387
+ ## Testing Strategy
388
+ How to verify the implementation meets requirements.
389
+
390
+ ## Deployment
391
+ How to ship it.
392
+ ```
393
+
394
+ ---
395
+
396
+ ## SPECIFICATION Guidelines (both paths)
397
+
398
+ - ! Reference requirement IDs (FR-1, NFR-2, etc.) in each task
399
+ - ! Break into phases, subphases, tasks
400
+ - ! Mark ALL dependencies explicitly
401
+ - ! Design for parallel work (multiple agents)
402
+ - ! End each phase/subphase with tests that pass
403
+ - ~ Size tasks for 1-4 hours of work
404
+ - ~ Minimize inter-task dependencies
405
+ - ⊗ Write code (specification only)
406
+
407
+ ### Task Format
408
+
409
+ Each task SHOULD include:
410
+ - ! Clear description
411
+ - ! Dependencies (or "none")
412
+ - ! Acceptance criteria
413
+ - ~ Estimated effort
414
+ - ? Assigned agent (for swarm mode)
415
+
416
+ ### Transition Criteria
417
+
418
+ - ! All requirements mapped to tasks
419
+ - ! Dependencies form a valid DAG (no cycles)
420
+ - ! Scope vBRIEF(s) exist in `./vbrief/proposed/` (with date-prefixed filenames and `status: "proposed"`) or promoted to pending/active (with `status: "approved" / "pending"`)
421
+ - ! `./vbrief/PROJECT-DEFINITION.vbrief.json` is present (populated via `task project:render`)
422
+ - ! `SPECIFICATION.md` has been rendered via `task spec:render`
423
+ - ! Proceed to [Acceptance Gate](#acceptance-gate)
424
+
425
+ ---
426
+
427
+ ## Acceptance Gate
428
+
429
+ After spec generation, present the user with a final decision before
430
+ implementation begins.
431
+
432
+ ! The acceptance gate MUST appear after every spec generation (both Light and
433
+ Full paths).
434
+ ! The acceptance gate is a **blocking question**. The AI MUST present the
435
+ options and wait for the user to choose.
436
+
437
+ ### Options
438
+
439
+ 1. **Accept** — spec is approved, proceed to implementation
440
+ - ! Before handing off to implementation, verify the project toolchain is installed and functional — see [../coding/toolchain.md](../coding/toolchain.md); stop and report if any required tool is missing
441
+ 2. **Revise** — return to the [Chaining Gate](#chaining-gate) with all prior
442
+ context preserved (completed strategies, artifacts). Run additional
443
+ preparatory strategies or regenerate the spec.
444
+ 3. **Switch strategy** — return to the [Chaining Gate](#chaining-gate) to select
445
+ a different spec-generating strategy (e.g., switch from interview to speckit)
446
+
447
+ ### SPECIFICATION Approval Menu (#740, refs #767)
448
+
449
+ ! In addition to the structured Accept / Revise / Switch options above,
450
+ the agent MUST present the canonical numbered approval menu defined in
451
+ [`../references/plain-english-ux.md`](../references/plain-english-ux.md)
452
+ `## Rule 4`. The menu states what each choice will actually do, in
453
+ plain-English action-shaped labels, and follows the #767 framework rule
454
+ for deterministic numbered menus -- the **final two numbered options
455
+ MUST be `Discuss` and `Back`**, in that order.
456
+
457
+ ```
458
+ What would you like to do with the SPECIFICATION?
459
+
460
+ 1. Approve and continue (lock the SPEC, proceed to implementation)
461
+ 2. Suggest changes (you describe what to change; the agent rewrites)
462
+ 3. Edit yourself (you edit the SPEC directly; the agent waits)
463
+ 4. Discuss
464
+ 5. Back
465
+
466
+ Enter confirm / b back / 0 discuss
467
+ ```
468
+
469
+ ! Option 1 (`Approve and continue`) maps to the `Accept` option above
470
+ (which then runs the toolchain verification). Option 2 (`Suggest
471
+ changes`) and Option 3 (`Edit yourself`) both map to `Revise` (return to
472
+ the Chaining Gate with prior context preserved). The numbered menu is
473
+ the user-facing surface; the structured Accept / Revise / Switch above
474
+ is the agent's internal contract.
475
+
476
+ ! When `contracts/deterministic-questions.md` lands (Agent 1, #767), this
477
+ strategy MUST defer to that contract for canonical menu wording.
478
+
479
+ ! When the SPECIFICATION review surfaces a red/green diff, the agent
480
+ MUST emit a non-alarming preface above it (per
481
+ `references/plain-english-ux.md` Rule 5):
482
+
483
+ ```
484
+ Here's what changed since the previous draft. Red lines were removed,
485
+ green lines were added. Nothing here is broken -- this is a normal
486
+ review.
487
+ ```
488
+
489
+ ? Alternatively, the agent MAY hide the diff entirely on the first
490
+ review pass and present a plain-English summary of changes; show the
491
+ diff only on the second pass or when the user explicitly asks for it.
492
+
493
+ - ⊗ Add a numbered approval menu where Discuss and Back are not the
494
+ final two options.
495
+ - ⊗ Show a red/green diff at first review without a non-alarming preface.
496
+
497
+ ### Rejected Spec Archival
498
+
499
+ - ! When the user chooses "Revise" or "Switch", the current `SPECIFICATION.md`
500
+ MUST be archived to `history/specs/` before regeneration
501
+ - ! Archived name format: `SPECIFICATION-rejected-{ISO-timestamp}.md`
502
+ (e.g., `SPECIFICATION-rejected-2026-03-15T19-23-00Z.md`)
503
+ - ! If a `PRD.md` exists (Full path), it is NOT archived — only the spec
504
+ - ~ Include a one-line header in the archived file noting why it was rejected
505
+
506
+ ### State Preservation
507
+
508
+ - ! All `completedStrategies` and `artifacts` in `plan.vbrief.json` MUST be
509
+ preserved across revisions
510
+ - ! The chaining gate will show updated run counts reflecting the full session history
511
+
512
+ ---
513
+
514
+ ## Artifacts Summary
515
+
516
+ **Light path:**
517
+
518
+ | Artifact | Purpose | Created By |
519
+ |----------|---------|------------|
520
+ | `./vbrief/proposed/YYYY-MM-DD-*.vbrief.json` | Scope story vBRIEFs (date-prefixed, v0.20 contract) | Interview |
521
+ | `./vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + items registry | `task project:render` (triggered by strategy) |
522
+ | `SPECIFICATION.md` | Generated plan with embedded Requirements (rendered derivative; deprecation sentinel) | `task spec:render` |
523
+ | (no `specification.vbrief.json`) | Legacy artifact — omitted on v0.20 path | — |
524
+
525
+ **Full path:**
526
+
527
+ | Artifact | Purpose | Created By |
528
+ |----------|---------|------------|
529
+ | `PRD.md` | What to build (approval gate) | Interview |
530
+ | `./vbrief/proposed/YYYY-MM-DD-*.vbrief.json` | Scope story vBRIEFs (date-prefixed, v0.20 contract) | Post-PRD interview |
531
+ | `./vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + items registry | `task project:render` (triggered by strategy) |
532
+ | `SPECIFICATION.md` | Generated implementation plan (rendered derivative; deprecation sentinel) | `task spec:render` |
533
+ | (no `specification.vbrief.json`) | Legacy artifact — omitted on v0.20 path | — |
534
+
535
+ ## Invoking This Strategy
536
+
537
+ ```
538
+ /deft:run:interview [project name]
539
+ ```
540
+
541
+ Or explicitly:
542
+
543
+ ```
544
+ Use the interview strategy to plan [project].
545
+ ```
546
+
547
+ After completion:
548
+
549
+ ```
550
+ implement the scope vBRIEFs in ./vbrief/active/
551
+ ```