@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,179 @@
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
+ # Map Strategy
8
+
9
+ Structured analysis of an existing codebase before adding features.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/interview.md](./interview.md) | [strategies/discuss.md](./discuss.md) | [core/glossary.md](../glossary.md)
14
+
15
+ > Adapted from [GSD](https://github.com/gsd-build/get-shit-done) map-codebase workflow.
16
+
17
+ ---
18
+
19
+ ## When to Use
20
+
21
+ - ! When adding features to an existing codebase the agent hasn't seen before
22
+ - ~ When onboarding to a project with unknown conventions
23
+ - ! When exploring an unfamiliar codebase before deciding what to build
24
+ - ? Skip if the codebase is small (<10 files) or the agent already has context
25
+
26
+ ## Invocation Modes
27
+
28
+ Map supports two modes, determined automatically by context:
29
+
30
+ - **Standalone** -- invoked directly via `/deft:run:map` with no active interview or
31
+ spec workflow. Runs mapping, presents artifacts, and offers next-step options.
32
+ - **Chained** -- invoked from the [chaining gate](./interview.md#chaining-gate) during
33
+ an active interview/spec workflow. Runs mapping, registers artifacts, and returns to
34
+ the chaining gate.
35
+
36
+ The mapping workflow and artifact format are identical in both modes. Only the
37
+ completion behavior differs (see [Completion](#completion) below).
38
+
39
+ ## Workflow
40
+
41
+ ```
42
+ Map Codebase → Review Artifacts → Next Steps
43
+ ```
44
+
45
+ Mapping produces artifacts that feed into planning so the agent **follows existing conventions** instead of inventing new ones.
46
+
47
+ ---
48
+
49
+ ## Mapping Artifacts
50
+
51
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
52
+
53
+ Produce a single `vbrief/proposed/{project}-codebase-map.vbrief.json` with four narratives:
54
+
55
+ ! After emitting this scope vBRIEF, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
56
+
57
+ ### `Stack` narrative -- Technology inventory
58
+
59
+ - ! Languages, versions, runtimes
60
+ - ! Frameworks and key dependencies
61
+ - ! Build tools and package managers
62
+ - ~ Environment configuration approach
63
+
64
+ ### `Architecture` narrative -- System design
65
+
66
+ - ! Layers/components and their responsibilities
67
+ - ! Data flow between components
68
+ - ! Entry points (API routes, CLI, server start)
69
+ - ~ Error handling strategy
70
+
71
+ ### `Conventions` narrative -- How code is written here
72
+
73
+ - ! Naming conventions (files, functions, variables)
74
+ - ! Import patterns and module organization
75
+ - ! Testing patterns (framework, file naming, assertion style)
76
+ - ! **Be prescriptive**: "Use camelCase for functions" not "some functions use camelCase"
77
+
78
+ ### `Concerns` narrative -- Technical debt and risks
79
+
80
+ - ~ TODO/FIXME/HACK inventory with file paths
81
+ - ~ Large files (>500 lines) that may need splitting
82
+ - ~ Stubs and placeholder implementations
83
+ - ~ Missing test coverage areas
84
+
85
+ ---
86
+
87
+ ## Mapping Rules
88
+
89
+ - ! Include **file paths** with backticks — vague descriptions are not actionable
90
+ - ! Write **current state only** — never what was or what you considered
91
+ - ! Be **prescriptive** — "Use X pattern" guides future work; "X pattern is used" doesn't
92
+ - ! Answer **"where do I put new code?"** — not just what exists
93
+ - ⊗ Read `.env` contents or expose secrets — note existence only
94
+ - ~ Keep each artifact under 200 lines — detail over brevity, but focused
95
+
96
+ ## How Artifacts Feed Downstream
97
+
98
+ - ! **Planning** loads relevant mapping narratives based on feature type
99
+ - ! **Execution** references `Conventions` narrative to match existing patterns
100
+ - ! **Verification** uses `Concerns` narrative to avoid introducing more debt
101
+
102
+ ---
103
+
104
+ ## Completion
105
+
106
+ ### Artifact Registration (both modes)
107
+
108
+ - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
109
+ - Update `completedStrategies`: increment `runCount` for `"map"`,
110
+ append artifact path (`vbrief/proposed/{project}-codebase-map.vbrief.json`)
111
+ - Append the path to the flat `artifacts` array
112
+ - ! The mapping narratives MUST inform subsequent strategies and spec generation:
113
+ - `Conventions` -> implementation constraints
114
+ - `Architecture` -> where new code fits
115
+ - `Concerns` -> things to avoid or fix
116
+
117
+ ### Chained Mode (invoked from chaining gate)
118
+
119
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
120
+ - ⊗ End the session after mapping without returning to the chaining gate
121
+
122
+ ### Standalone Mode (invoked directly)
123
+
124
+ After presenting the mapping narratives to the user, offer next steps:
125
+
126
+ ```
127
+ Mapping complete. Here's what I found:
128
+ - Stack: [brief summary]
129
+ - Architecture: [brief summary]
130
+ - Conventions: [brief summary]
131
+ - Concerns: [brief summary]
132
+
133
+ Artifact: vbrief/proposed/{project}-codebase-map.vbrief.json
134
+
135
+ What would you like to do next?
136
+
137
+ 1. Start an interview — build a specification informed by this analysis
138
+ 2. Run a discuss phase — lock key decisions using Feynman technique
139
+ 3. Run a research phase — investigate libraries, alternatives, pitfalls
140
+ 4. Done for now — review the artifact and come back later
141
+ ```
142
+
143
+ - ! Present the narrative summary before offering options
144
+ - ! If the user chooses a strategy, invoke it (the artifact persists in `vbrief/proposed/`)
145
+ - ! If the user chooses "done", confirm the artifact location and exit cleanly
146
+ - ~ Recommend option 1 (interview) when the user's goal is to build or extend
147
+ - ~ Recommend option 4 (done) when the user's goal is exploration or onboarding
148
+
149
+ **Handoff rule for chained strategies:** When invoking discuss or research from
150
+ standalone map, the chaining gate does not exist. On completion of the invoked
151
+ strategy, the agent MUST return to this standalone next-step menu instead of
152
+ looking for `interview.md`'s chaining gate.
153
+
154
+ - ! Tell the invoked strategy that the return target is the standalone map menu
155
+ - ! After the invoked strategy completes and registers its artifacts, re-present
156
+ the standalone next-step options above (with updated run counts)
157
+
158
+ ---
159
+
160
+ ## Invoking This Strategy
161
+
162
+ ```
163
+ /deft:run:map
164
+ ```
165
+
166
+ Standalone — explore a codebase without starting an interview:
167
+ ```
168
+ Map this codebase so I can understand it.
169
+ ```
170
+
171
+ Before an interview — analysis-first, then spec:
172
+ ```
173
+ Map this codebase, then use the interview strategy to plan [feature].
174
+ ```
175
+
176
+ Or set in PROJECT-DEFINITION.vbrief.json narratives:
177
+ ```json
178
+ "Strategy": "strategies/map.md"
179
+ ```
@@ -0,0 +1,151 @@
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
+ # Probe Strategy
8
+
9
+ Stress-test a plan before committing to it — relentless interrogation until every branch of the decision tree is resolved.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/discuss.md](./discuss.md) | [strategies/interview.md](./interview.md) | [core/glossary.md](../glossary.md)
14
+
15
+ > Inspired by [grill-me](https://github.com/mattpocock/skills/tree/main/grill-me) from [mattpocock/skills](https://github.com/mattpocock/skills). Adapted to directive's preparatory strategy pattern.
16
+
17
+ ---
18
+
19
+ ## When to Use
20
+
21
+ - ~ Before committing to any significant design decision or architecture choice
22
+ - ~ When a plan has been drafted but not yet stress-tested
23
+ - ! When the user explicitly asks to be probed or challenged on their plan
24
+ - ? Skip when the path forward is unambiguous and small in scope
25
+
26
+ ## Core Principle
27
+
28
+ The goal is not alignment — that's `discuss`. Probe is adversarial discovery. It assumes the plan has holes and sets out to find them. Every assumption is challenged, every edge case explored, every dependency branch walked until nothing is unresolved. Where `discuss` builds consensus, `probe` finds what's missing.
29
+
30
+ ---
31
+
32
+ ## Workflow
33
+
34
+ ### Step 1: Establish the plan
35
+
36
+ - ! Read whatever plan, design, or spec exists in the conversation context
37
+ - ~ If no plan is in context, ask ONE question: "What's the plan you want me to probe?"
38
+ - ~ If codebase context is relevant, explore it to answer what you can before asking
39
+ - ⊗ Ask follow-up questions before reading available context
40
+
41
+ ### Step 2: Interrogate relentlessly
42
+
43
+ Walk the decision tree depth-first. For each unresolved branch:
44
+
45
+ - ! Ask **ONE** focused question per message
46
+ - ! For each question, provide your recommended answer with brief reasoning
47
+ - ! If the codebase can answer a question, explore it instead of asking the user
48
+ - ~ Follow the thread — if an answer opens new branches, pursue them before moving on
49
+ - ⊗ Ask multiple questions at once
50
+ - ⊗ Accept vague answers — push back: "What does that mean concretely?"
51
+ - ⊗ Move to the next branch before the current one is fully resolved
52
+
53
+ ### Question focus areas
54
+
55
+ - ! **Assumptions** — "This assumes X is guaranteed — is it?"
56
+ - ! **Edge cases** — "What happens when Y is empty / null / at the limit?"
57
+ - ! **Dependencies** — "This requires Z to exist — what if it doesn't?"
58
+ - ! **Failure modes** — "How does this fail? How is that surfaced to the user?"
59
+ - ! **Scaling** — "Does this hold at 10× the expected volume?"
60
+ - ~ **Security surface** — "Who can reach this? What's the blast radius if it's wrong?"
61
+ - ~ **Reversibility** — "Can this decision be changed later? What's the migration cost?"
62
+
63
+ ### Transition criteria (probe complete)
64
+
65
+ - ! All major decision branches have been resolved
66
+ - ! No open assumptions remain
67
+ - ~ User has acknowledged the risks of any deliberately deferred decisions
68
+ - ~ No new branches are surfaced by the last 2–3 questions
69
+
70
+ ---
71
+
72
+ ## Output
73
+
74
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
75
+
76
+ ### Mechanical guard (`scripts/probe_session.py`)
77
+
78
+ Probe completion is enforced mechanically — not by prose alone. A per-clone
79
+ session file at `.deft/probe-session.json` records whether the session is still
80
+ `interrogate` or `complete`, plus the probe `target`, `currentBranch`, and
81
+ `resolvedDecisions`.
82
+
83
+ - ! At probe start, record the session:
84
+ `uv run python scripts/probe_session.py start --target <scope>`
85
+ - ! While interrogating, record locked/deferred/risk-accepted decisions and
86
+ branch focus with `record` / `set-branch` subcommands as branches resolve
87
+ - ! Before writing probe output or registering `completedStrategies.probe`,
88
+ mark the session complete:
89
+ `uv run python scripts/probe_session.py complete`
90
+ - ! Immediately before artifact or plan registration, run the guard:
91
+ - `uv run python scripts/probe_session.py guard-artifact --path vbrief/proposed/{scope}-probe.vbrief.json`
92
+ - `uv run python scripts/probe_session.py guard-plan-registration`
93
+ - ⊗ Write probe artifacts or update `completedStrategies.probe` while the
94
+ session state is still `interrogate` — the guard exits non-zero with an
95
+ actionable recovery message
96
+
97
+ **Recovery when the guard blocks handoff:** continue interrogation until the
98
+ [transition criteria](#transition-criteria-probe-complete) are met, record
99
+ decisions with `probe_session.py record`, run `probe_session.py complete`,
100
+ then retry the guard before writing artifacts or updating `plan.vbrief.json`.
101
+
102
+ `{scope}` is the project name from `PROJECT-DEFINITION.vbrief.json`, or the
103
+ feature/component name if probing a sub-scope. Use the same value consistently
104
+ throughout the session. Examples: `my-app-probe`, `auth-probe`.
105
+
106
+ - ! Produce a `vbrief/proposed/{scope}-probe.vbrief.json` scope vBRIEF with three mandatory narratives:
107
+ - `LockedDecisions` — what was resolved and why
108
+ - `SurfacedRisks` — concerns raised, even if not fully resolved
109
+ - `DeferredDecisions` — explicitly acknowledged items with justification
110
+ - ! Each entry in a narrative includes: **question asked**, **answer given**, **status** (locked / deferred / risk-accepted)
111
+ - ! This vBRIEF is injected into all downstream work: planning, execution, verification
112
+ - ! Persist significant decisions as vBRIEF narratives on the relevant plan items
113
+ - ⊗ Write probe output to a hand-authored markdown file — use vBRIEF narratives for token-efficient, machine-consumable agent consumption (mirrors the [discuss](./discuss.md) and [research](./research.md) output contracts so the chaining-gate flow-through guarantee is mechanical, not aspirational)
114
+
115
+ ! After emitting the probe scope vBRIEF to `vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
116
+
117
+ ---
118
+
119
+ ## Then: Chaining Gate
120
+
121
+ After the probe is complete and `vbrief/proposed/{scope}-probe.vbrief.json` is
122
+ written, return to the [chaining gate](./interview.md#chaining-gate).
123
+
124
+ - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
125
+ - Update `completedStrategies`: increment `runCount` for `"probe"`,
126
+ append artifact path (`vbrief/proposed/{scope}-probe.vbrief.json`)
127
+ - Append the path to the flat `artifacts` array
128
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
129
+ - ! The `LockedDecisions`, `SurfacedRisks`, and `DeferredDecisions` narratives from `vbrief/proposed/{scope}-probe.vbrief.json` MUST flow
130
+ into subsequent strategies and spec generation:
131
+ - Locked decisions become constraints in the specification
132
+ - Surfaced risks become NFRs or explicit acceptance criteria
133
+ - Deferred decisions appear as open questions in the spec
134
+ - ⊗ End the session after probe without returning to the chaining gate
135
+ or the invoking strategy's next-step menu
136
+
137
+ ! **Standalone context:** If invoked from a standalone strategy (e.g. map's
138
+ standalone next-step menu) rather than from the interview chaining gate,
139
+ return to the invoking strategy's menu instead.
140
+
141
+ ---
142
+
143
+ ## Anti-Patterns
144
+
145
+ - ⊗ Accepting "we'll figure it out later" without marking it as explicitly deferred
146
+ - ⊗ Asking generic checklist questions instead of following the decision tree
147
+ - ⊗ Letting vague answers pass without pushing for concrete specifics
148
+ - ⊗ Using codebase exploration as a substitute for asking the user about deliberate design choices
149
+ - ⊗ Stopping when the conversation feels comfortable — stop when no new branches emerge
150
+ - ⊗ Ending after probe without chaining back to the gate (chained mode; in standalone context, returning to the invoking strategy's menu satisfies the completion requirement per the [standalone-context rule](#then-chaining-gate))
151
+ - ⊗ Writing probe output to a plain markdown file (`{scope}-probe.md`) instead of the canonical `vbrief/proposed/{scope}-probe.vbrief.json` scope vBRIEF — plain markdown bypasses the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light) and breaks the downstream-consumer flow-through guarantee
@@ -0,0 +1,155 @@
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
+ # Rapid Strategy
8
+
9
+ Quick prototyping workflow -- v0.20 date-prefixed story vBRIEF output with minimal gates and fast iteration.
10
+
11
+ **v0.20 note (s5-migrate-speckit-rapid-enterprise / #1166):** Rapid now emits only the canonical v0.20 shape (date-prefixed story vBRIEFs in proposed/, full PROJECT-DEFINITION.vbrief.json via task project:render, seeded lifecycle folders, no legacy specification.vbrief.json). See the dedicated ## v0.20 Output Shape section and the canonical contract `strategies/v0-20-contract.md` (s1-contract of #1166).
12
+
13
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
14
+
15
+ **⚠️ See also**: [strategies/interview.md](./interview.md) | [strategies/yolo.md](./yolo.md) | [strategies/README.md](./README.md) | [strategies/v0-20-contract.md](./v0-20-contract.md) | [artifact-guards.md](./artifact-guards.md)
16
+
17
+ > Ship a throwaway prototype fast. Skip the PRD, skip approval gates, produce a
18
+ > date-prefixed vBRIEF in proposed/ + PROJECT-DEFINITION and start building. Suited for spikes, proof-of-concepts, and
19
+ > disposable experiments where learning speed matters more than long-term quality.
20
+
21
+ ---
22
+
23
+ ## When to Use
24
+
25
+ - ~ Throwaway prototypes, spikes, and proof-of-concept experiments
26
+ - ~ Validating a technical approach before committing to a full spec cycle
27
+ - ~ Solo explorations where the cost of rework is low
28
+ - ? Time-boxed experiments (e.g. "spend 2 hours proving this works")
29
+ - ⊗ Production features, shared libraries, or anything with downstream consumers
30
+
31
+ ---
32
+
33
+ ## Workflow
34
+
35
+ ### Step 1: State the Goal
36
+
37
+ ! Describe the prototype goal in one sentence: what are you trying to learn or prove?
38
+
39
+ - ! Record the goal in a new date-prefixed story vBRIEF written to `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json` (e.g. as the plan title or a brief narrative in the v0.6 schema). Use today's date for the prefix and a descriptive slug.
40
+ - ~ Include a time-box if applicable (e.g. "4-hour spike")
41
+ - ⊗ Skip this step -- even throwaway work needs a clear objective
42
+
43
+ ### Step 2: Minimal Interview
44
+
45
+ ! Ask only the questions needed to unblock implementation. Skip sizing gate, skip PRD.
46
+
47
+ - ! Identify: target platform, primary language, key dependency or API
48
+ - ~ 3-5 questions maximum -- bias toward defaults and moving fast
49
+ - ⊗ Run the full interview questionnaire -- that defeats the purpose of rapid
50
+
51
+ ### Step 3: Generate date-prefixed vBRIEF in proposed/ (Forced-Light Path)
52
+
53
+ ! Before writing output artifacts, follow the guards in [artifact-guards.md](./artifact-guards.md) (Preparatory Guard for proposed/ scope items; Spec-Generating Guard for PROJECT-DEFINITION).
54
+
55
+ ! Write a slim story scope vBRIEF to `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json` -- no PRD, no approval gate. Decompose the rapid plan into one or more focused, buildable story vBRIEFs (v0.6 schema) rather than a monolithic legacy spec.
56
+
57
+ - ! Use the Light path from [interview.md](./interview.md) unconditionally
58
+ - ! Mark `plan.status` as `draft` (not `approved`) to signal prototype quality
59
+ - ! After the proposed/ vBRIEF(s) are written, invoke `task project:render` (from repo root) to generate/refresh the complete `vbrief/PROJECT-DEFINITION.vbrief.json`
60
+ - ~ Keep tasks coarse-grained -- 3-5 tasks is typical for a spike
61
+ - ⊗ Generate a PRD or require approval -- rapid skips both
62
+ - ⊗ Hand-author `SPECIFICATION.md` directly -- it is a rendered derivative only (see v0.20 Output Shape)
63
+
64
+ ! After emitting the proposed/ story vBRIEF(s), surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
65
+
66
+ ### Step 4: Build
67
+
68
+ ! Implement against the spec. Quality gates are relaxed but not absent.
69
+
70
+ - ! Tests are still required, but coverage gate is relaxed to ≥50%
71
+ - ~ Favour working code over clean code -- refactor later if the prototype graduates
72
+ - ! `task check` must still pass (lint + fmt + tests)
73
+ - ⊗ Skip `task check` entirely -- even prototypes must compile and pass basic checks
74
+
75
+ ### Step 5: Evaluate
76
+
77
+ ! At the end of the time-box (or when the prototype is done), decide next steps.
78
+
79
+ - ! Record findings: what worked, what didn't, what surprised you
80
+ - ~ Options: discard, iterate, or graduate to a full spec cycle via [interview.md](./interview.md)
81
+ - ! If graduating: start a fresh interview -- do not carry forward the rapid spec as-is
82
+
83
+ ---
84
+
85
+ ## Output Artifacts
86
+
87
+ - `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (one or more) -- lightweight story scope vBRIEF(s) with `draft` status (primary artifact; date-prefixed per v0.20 contract)
88
+ - `vbrief/PROJECT-DEFINITION.vbrief.json` -- complete project gestalt + items registry (via `task project:render` invoked by Rapid)
89
+ - `vbrief/{proposed,pending,active,completed,cancelled}/` -- all five lifecycle folders seeded
90
+ - (optional derivative) `SPECIFICATION.md` -- read-only human-readable export (includes deprecated-redirect sentinel; via `task spec:render` if invoked)
91
+ - Prototype code (may be discarded)
92
+ - Findings summary (inline in the proposed/ vBRIEF or as a separate note)
93
+
94
+ ---
95
+
96
+ ## Fits into Chaining Gate
97
+
98
+ Rapid is a **spec-generating** strategy. Selecting it at the chaining gate produces date-prefixed story vBRIEF(s) in `vbrief/proposed/` (and refreshes `vbrief/PROJECT-DEFINITION.vbrief.json` via `task project:render`) and moves directly to implementation. There is no chaining back to preparatory strategies. See the v0.20 Output Shape section below for the exact contract.
99
+
100
+ ---
101
+
102
+ ## Anti-Patterns
103
+
104
+ - ⊗ Using rapid for production features -- rapid output is explicitly throwaway
105
+ - ⊗ Graduating a rapid prototype without a fresh spec cycle -- the shortcuts compound
106
+ - ⊗ Running the full interview or PRD path -- that's interview strategy, not rapid
107
+ - ⊗ Skipping `task check` -- even prototypes must pass basic quality checks
108
+ - ⊗ Omitting the goal statement -- undirected spikes waste time
109
+ - ⊗ Emitting the legacy singular specification artifact or bare-named vBRIEFs -- violates the v0.20 contract (see strategies/v0-20-contract.md)
110
+
111
+ ---
112
+
113
+ ## v0.20 Output Shape (s5-migrate-speckit-rapid-enterprise / #1166)
114
+
115
+ This strategy has been migrated to the full v0.20 output shape so rapid-generated projects are accepted by the build skill Pre-Cutover Detection Guard with zero errors on first attempt (resolves the rapid row from the #1166 inconsistency table and the s5 story acceptance criteria).
116
+
117
+ - ! Seed the five lifecycle folders under `vbrief/` if any are missing: `proposed/`, `pending/`, `active/`, `completed/`, `cancelled/`.
118
+ - ! Emit story scope items exclusively as date-prefixed scope vBRIEFs: `vbrief/proposed/YYYY-MM-DD-<kebab-slug>.vbrief.json` (use the run's creation date for the prefix; choose descriptive slugs). Decompose the rapid plan into one or more focused, buildable story vBRIEFs (v0.6 schema) rather than a monolithic legacy spec.
119
+ - ! After the proposed/ stories are written, invoke `task project:render` (run from the repo root) to generate/refresh the complete `vbrief/PROJECT-DEFINITION.vbrief.json` (items registry is derived from the lifecycle folders).
120
+ - ⊗ Never emit `vbrief/specification.vbrief.json` (or any legacy dual-write).
121
+ - ~ `SPECIFICATION.md` at the project root, if produced at all, must be only a read-only derivative (e.g. via `task spec:render` after the vbriefs exist) that includes the v0.20 deprecated-redirect sentinel. The source of truth is the vbrief/ lifecycle stories + PROJECT-DEFINITION.
122
+ - ! Before writing any proposed/ stories or PROJECT-DEFINITION, follow the guards in [artifact-guards.md](./artifact-guards.md) (Preparatory Guard for scope items in proposed/; Spec-Generating Guard for PROJECT-DEFINITION).
123
+ - ! Final output tree must pass the deterministic v0.20 strategy output validation gate (s2-deterministic-gate) and the build Pre-Cutover Detection Guard with zero warnings/errors. See full acceptance in the s5 vBRIEF and the 1166 decomposition.
124
+ - ! Cite the canonical contract `strategies/v0-20-contract.md` (s1-contract) for the exact shape and the per-strategy table row.
125
+
126
+ ---
127
+
128
+ ## Artifacts Summary (v0.20)
129
+
130
+ **Rapid (Forced-Light path):**
131
+
132
+ | Artifact | Purpose | Created By |
133
+ |----------|---------|------------|
134
+ | `vbrief/proposed/YYYY-MM-DD-*.vbrief.json` (one or more) | Focused story scope items (date-prefixed per vbrief convention and v0.20 contract) | Rapid |
135
+ | `vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + complete scope items registry | `task project:render` (invoked by Rapid) |
136
+ | `vbrief/{proposed,pending,active,completed,cancelled}/` | All five lifecycle folders seeded | Rapid |
137
+ | (optional derivative) `SPECIFICATION.md` | Human-readable plan (includes deprecated-redirect sentinel) | `task spec:render` (if invoked) |
138
+
139
+ **Pre-v0.20 / legacy artifacts that MUST NOT be produced by this strategy:**
140
+
141
+ - `vbrief/specification.vbrief.json`
142
+ - Primary handoff `SPECIFICATION.md` at project root (without sentinel)
143
+ - Bare-named vBRIEFs in proposed/
144
+
145
+ See the full table and rules in `strategies/v0-20-contract.md` (rapid row: Must Create Lifecycle Folders: Yes; Must Write PROJECT-DEFINITION: Yes; Scope vBRIEFs Location: proposed/YYYY-MM-DD-*.vbrief.json only; specification.vbrief.json: Never; SPECIFICATION.md / PROJECT.md: Omit or deprecation redirect only).
146
+
147
+ ---
148
+
149
+ ## Invoking This Strategy
150
+
151
+ ```
152
+ /deft:run:rapid [project name]
153
+ ```
154
+
155
+ Or explicitly:
@@ -0,0 +1,155 @@
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
+ # Research Strategy
8
+
9
+ Look before you leap — investigate the domain before planning.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/interview.md](./interview.md) | [strategies/discuss.md](./discuss.md) | [strategies/map.md](./map.md)
14
+
15
+ > Adapted from [GSD](https://github.com/gsd-build/get-shit-done) research phase.
16
+
17
+ ---
18
+
19
+ ## When to Use
20
+
21
+ - ~ Before planning a feature in an unfamiliar domain (auth, payments, real-time, etc.)
22
+ - ~ When the feature involves libraries or APIs the agent hasn't used in this project
23
+ - ? Skip for well-understood domains where the agent has strong existing context
24
+
25
+ ## Output
26
+
27
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
28
+
29
+ Produce `vbrief/proposed/{feature}-research.vbrief.json` with two mandatory narratives:
30
+
31
+ ! After emitting this scope vBRIEF, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
32
+
33
+ ### `DontHandRoll` narrative
34
+
35
+ Problems that look simple but have existing, battle-tested solutions.
36
+
37
+ - ! For each problem area, specify: **problem**, **recommended library/tool**, **why not hand-roll**
38
+ - ! Check the project's existing dependencies first -- don't add a library when one is already available
39
+ - ~ Consult official docs for the recommended library (use Context7 or equivalent)
40
+
41
+ **Example narrative content:**
42
+ ```
43
+ Problem: JWT validation
44
+ Use: jose
45
+ Rationale: Edge cases in token expiry, key rotation, algorithm confusion
46
+
47
+ Problem: Email templates
48
+ Use: react-email
49
+ Rationale: HTML email rendering is notoriously broken across clients
50
+
51
+ Problem: Rate limiting
52
+ Use: express-rate-limit
53
+ Rationale: IP spoofing, distributed state, Redis integration
54
+ ```
55
+
56
+ ### `CommonPitfalls` narrative
57
+
58
+ What goes wrong in this domain, why, and how to avoid it.
59
+
60
+ - ! For each pitfall: **what happens**, **why it happens**, **how to avoid it**, **warning signs**
61
+ - ~ Informed by library docs, codebase patterns, and known failure modes
62
+ - ~ Prioritize pitfalls that agents specifically tend to hit (stubs, missing error handling, hardcoded values)
63
+
64
+ **Example narrative content:**
65
+ ```
66
+ Pitfall: Storing plain-text passwords
67
+ What: User passwords saved without hashing
68
+ Why: Agent implements the happy path and forgets security
69
+ Avoid: Use bcrypt/argon2, never store raw passwords
70
+ Warning signs: No crypto import in auth module, password field stored as-is
71
+ ```
72
+
73
+ ### `IPRisk` narrative (#738)
74
+
75
+ ! When the project description, the `Don't Hand-Roll` survey, or the
76
+ research notes reference third-party intellectual property (IP), the
77
+ research phase MUST run the IP-risk heuristic from
78
+ [`../references/ip-risk.md`](../references/ip-risk.md) -- canonical
79
+ implementation `scripts/ip_risk.py:detect_ip_terms` -- and persist a
80
+ plain-English `IPRisk` narrative on the research vBRIEF.
81
+
82
+ The heuristic is permissive on purpose: recognizable IP names (Magic:
83
+ The Gathering, Pokemon, etc.), fictional-universe terms (Hogwarts,
84
+ Tatooine), branded characters, sports leagues, and trademarked products
85
+ all trigger a hit.
86
+
87
+ - ! When `detect_ip_terms` returns at least one hit, the research output
88
+ MUST: (1) ask the explicit monetization-intent question (personal vs
89
+ commercial); (2) emit `plain_risk_summary(hits, intent)` into the
90
+ `IPRisk` narrative; (3) plan to inject the protection scope items
91
+ (`ip_risk_scope_items(intent)`) at SPECIFICATION-generation time.
92
+ - ! On `commercial` intent, surface the **non-optional** lawyer-
93
+ consultation recommendation in the research output -- this carries
94
+ forward into the interview output and the SPECIFICATION via the
95
+ `IPRisk` narrative.
96
+ - ⊗ Treat the absence of detected terms as proof that the project is
97
+ IP-free. The heuristic only knows about the curated lists; when the
98
+ research scope is vague, ask the user directly whether the project is
99
+ based on a game / film / sports league / brand.
100
+ - ⊗ Provide legal advice -- Deft is not a law firm. The only
101
+ recommendation it makes is **consult a lawyer**.
102
+
103
+ ---
104
+
105
+ ## How Research Feeds Downstream
106
+
107
+ - ! **Planning** reads research before task decomposition — acceptance criteria account for pitfalls
108
+ - ! **Execution** references "Don't Hand-Roll" — agent uses recommended libraries, not custom code
109
+ - ~ **Verification** checks for pitfall warning signs during stub detection
110
+
111
+ ## Research Scope Rules
112
+
113
+ - ! Research the **current feature only** — not the entire project
114
+ - ! Time-box research — if it takes longer than the feature, scope is wrong
115
+ - ⊗ Research as a reason to delay execution indefinitely
116
+ - ~ Research persists as a vBRIEF in `vbrief/proposed/`
117
+
118
+ ---
119
+
120
+ ## Then: Chaining Gate
121
+
122
+ After research is complete, return to the [chaining gate](./interview.md#chaining-gate)
123
+ so the user can run additional preparatory strategies or proceed to spec generation.
124
+
125
+ - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
126
+ - Update `completedStrategies`: increment `runCount` for `"research"`,
127
+ append artifact path (`vbrief/proposed/{feature}-research.vbrief.json`)
128
+ - Append the path to the flat `artifacts` array
129
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
130
+ - ! The research findings MUST inform subsequent strategies and spec generation:
131
+ - "Don't Hand-Roll" items become constraints in the specification
132
+ - "Common Pitfalls" become acceptance criteria or NFRs
133
+ - ⊗ End the session after research without returning to the chaining gate
134
+ or the invoking strategy's next-step menu
135
+
136
+ ! **Standalone context:** If invoked from a standalone strategy (e.g. map's
137
+ standalone next-step menu) rather than from the interview chaining gate,
138
+ return to the invoking strategy's menu instead.
139
+
140
+ ---
141
+
142
+ ## Workflow
143
+
144
+ 1. **Scope** -- Identify the domain and feature boundaries for research
145
+ 2. **Survey** -- Check existing project dependencies, official docs, and known pitfalls
146
+ 3. **Document** -- Produce `vbrief/proposed/{feature}-research.vbrief.json` with `DontHandRoll` and `CommonPitfalls` narratives
147
+ 4. **Chain** -- Return to [interview.md Chaining Gate](./interview.md#chaining-gate), or -- if invoked from a standalone strategy (e.g. map's standalone next-step menu) -- return to the invoking strategy's menu per the [standalone-context rule](#then-chaining-gate) above
148
+
149
+ ## Anti-Patterns
150
+
151
+ - ⊗ Building custom solutions for solved problems
152
+ - ⊗ Skipping research for unfamiliar domains ("how hard can auth be?")
153
+ - ⊗ Research that produces a reading list instead of actionable guidance
154
+ - ⊗ Research that doesn't flow into planning (written and never referenced)
155
+ - ⊗ Ending after research without chaining into specification generation (chained mode; in standalone context, returning to the invoking strategy's menu satisfies the completion requirement per the [standalone-context rule](#then-chaining-gate))
@@ -0,0 +1,9 @@
1
+ # Roadmap Maintenance Strategy (Superseded)
2
+
3
+ > **This strategy is superseded.** Roadmap maintenance is now handled by the
4
+ > refinement skill and deterministic rendering from vBRIEF lifecycle folders.
5
+ >
6
+ > See **[skills/deft-directive-refinement/SKILL.md](../skills/deft-directive-refinement/SKILL.md)**
7
+ > for issue ingest, evaluation, and promotion/demotion workflows.
8
+ >
9
+ > Run `task roadmap:render` to regenerate `ROADMAP.md` from `vbrief/` lifecycle folders.