@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,16 @@
1
+ # Deprecated skill path — v0.19 → v0.20 bridge
2
+
3
+ <!-- deft:deprecated-skill-redirect -->
4
+
5
+ This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
6
+ The current replacement skill is `deft-directive-refinement` (at `skills/deft-directive-refinement/SKILL.md`).
7
+
8
+ Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
9
+ that reference old `deft/skills/deft-*` paths keep working through one release cycle.
10
+ QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
11
+ v0.20 `deft-directive-*` skill paths.
12
+
13
+ See:
14
+ - [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
15
+ - [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
16
+ - [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
@@ -0,0 +1,20 @@
1
+ <!-- DEFT-PREAMBLE-V1 -->
2
+ <!-- deft:deprecated-skill-redirect -->
3
+ ! Before any other instruction in this file or in the consumer AGENTS.md, run `python3 deft/run gate`.
4
+ ! If exit code is 0, continue.
5
+ ! Otherwise: read `deft/UPGRADING.md`, find the section whose "Applies when" clause matches the state vector printed by the gate, and follow that section verbatim. Respect any "Restart required" directive -- if present, stop and tell the user to start a fresh session after cleanup commands complete.
6
+
7
+ # Deprecated skill path — v0.19 → v0.20 bridge
8
+
9
+ This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
10
+ The current replacement skill is `deft-directive-setup` (at `skills/deft-directive-setup/SKILL.md`).
11
+
12
+ Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
13
+ that reference old `deft/skills/deft-*` paths keep working through one release cycle.
14
+ QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
15
+ v0.20 `deft-directive-*` skill paths.
16
+
17
+ See:
18
+ - [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
19
+ - [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
20
+ - [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
@@ -0,0 +1,16 @@
1
+ # Deprecated skill path — v0.19 → v0.20 bridge
2
+
3
+ <!-- deft:deprecated-skill-redirect -->
4
+
5
+ This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
6
+ The current replacement skill is `deft-directive-swarm` (at `skills/deft-directive-swarm/SKILL.md`).
7
+
8
+ Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
9
+ that reference old `deft/skills/deft-*` paths keep working through one release cycle.
10
+ QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
11
+ v0.20 `deft-directive-*` skill paths.
12
+
13
+ See:
14
+ - [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
15
+ - [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
16
+ - [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
@@ -0,0 +1,16 @@
1
+ # Deprecated skill path — v0.19 → v0.20 bridge
2
+
3
+ <!-- deft:deprecated-skill-redirect -->
4
+
5
+ This skill path is deprecated. Read `deft/QUICK-START.md` for current routing.
6
+ The current replacement skill is `deft-directive-sync` (at `skills/deft-directive-sync/SKILL.md`).
7
+
8
+ Do not add real content here. This file exists so that stale v0.19 `AGENTS.md` files
9
+ that reference old `deft/skills/deft-*` paths keep working through one release cycle.
10
+ QUICK-START.md refreshes the Deft-managed section of `AGENTS.md` to the current
11
+ v0.20 `deft-directive-*` skill paths.
12
+
13
+ See:
14
+ - [../../QUICK-START.md](../../QUICK-START.md) — agent bootstrap + upgrade detection
15
+ - [../../UPGRADING.md](../../UPGRADING.md) — version-by-version upgrade guide
16
+ - [../../docs/BROWNFIELD.md](../../docs/BROWNFIELD.md) — brownfield adoption / migration
@@ -0,0 +1,83 @@
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
+ # Strategies
8
+
9
+ Development strategies define the workflow from idea to implementation.
10
+
11
+ ## Available Strategies
12
+
13
+ | Strategy | Command | Type | Use Case | Phases |
14
+ |----------|---------|------|----------|--------|
15
+ | [interview.md](./interview.md) | `/deft:run:interview` | spec-generating | Standard projects (default) | Sizing gate: Light (Interview → SPECIFICATION) or Full (Interview → PRD → SPECIFICATION) |
16
+ | [yolo.md](./yolo.md) | `/deft:run:yolo` | spec-generating | Quick prototyping | Auto-pilot sizing gate: Light or Full (Johnbot picks) |
17
+ | [speckit.md](./speckit.md) | `/deft:run:speckit` | spec-generating | Large/complex projects | Principles → Specify → Plan → Phase/Epic Scope → Story Readiness → Implement |
18
+ | [map.md](./map.md) | `/deft:run:map` | preparatory | Existing codebases | Map → Chaining Gate |
19
+ | [discuss.md](./discuss.md) | `/deft:run:discuss` | preparatory | Alignment before planning | Feynman technique → locked decisions → Chaining Gate |
20
+ | [probe.md](./probe.md) | `/deft:run:probe` | preparatory | Adversarial plan stress-testing | Walk decision tree → challenge assumptions → surface risks → Chaining Gate |
21
+ | [research.md](./research.md) | `/deft:run:research` | preparatory | Pre-implementation research | Research → Don't Hand-Roll + Common Pitfalls → Chaining Gate |
22
+ | [roadmap.md](./roadmap.md) | `/deft:run:roadmap` | preparatory | Roadmap maintenance | Discover → Triage → Cleanup |
23
+ | [bdd.md](./bdd.md) | `/deft:run:bdd` | preparatory | Acceptance-test-first development | Scenarios → Failing Tests → Lock Decisions → Spec → Chaining Gate |
24
+ | [rapid.md](./rapid.md) | `/deft:run:rapid` | spec-generating | Quick prototypes | Forced-Light path |
25
+ | [enterprise.md](./enterprise.md) | `/deft:run:enterprise` | spec-generating | Compliance-heavy | Forced-Full path |
26
+
27
+ ## Strategy Types
28
+
29
+ Every strategy has a **Type** that determines its behavior in the
30
+ [chaining gate](./interview.md#chaining-gate):
31
+
32
+ - **`preparatory`** — Produces artifacts that inform spec generation (research docs,
33
+ context files, mapping docs). On completion, returns to the chaining gate so the user
34
+ can run additional strategies or proceed to spec generation. Can be run multiple times.
35
+ Some preparatory strategies (currently `map.md`) also support **standalone** invocation
36
+ via `/deft:run:<name>` — when invoked outside an interview context, they present their
37
+ own next-step options instead of returning to the chaining gate. See each strategy file
38
+ for standalone support.
39
+ - **`spec-generating`** — Produces v0.20-conformant output per [v0-20-contract.md](./v0-20-contract.md) (lifecycle folders + PROJECT-DEFINITION.vbrief.json + date-prefixed proposed/ scope vBRIEFs only; SPECIFICATION.md/PROJECT.md as deprecation stubs or omitted). Selecting one at the chaining gate switches the pipeline to that strategy’s spec flow.
40
+
41
+ Custom strategies MUST declare their type in this table. If the `Type` column is missing,
42
+ the chaining gate cannot include the strategy.
43
+
44
+ ## v0.20 Output Contract (for spec-generating strategies)
45
+
46
+ All spec-generating strategies (interview, yolo, speckit, rapid, enterprise) MUST produce output conforming to [v0-20-contract.md](./v0-20-contract.md):
47
+
48
+ - Five vbrief/ lifecycle folders (proposed/ pending/ active/ completed/ cancelled/)
49
+ - vbrief/PROJECT-DEFINITION.vbrief.json (full)
50
+ - Scope vBRIEFs ONLY as date-prefixed in vbrief/proposed/YYYY-MM-DD-*.vbrief.json
51
+ - Never dual-write legacy vbrief/specification.vbrief.json
52
+ - SPECIFICATION.md/PROJECT.md only as deprecation-redirect stubs (banner + sentinel) or omitted
53
+
54
+ This contract is the single source of truth for s1-contract and the #1166 migrations (s3-s5). Preparatory strategies follow the same dated proposed/ rule when emitting vBRIEFs.
55
+
56
+
57
+ ## Selecting a Strategy
58
+
59
+ Use a slash command:
60
+
61
+ ```
62
+ /deft:run:interview my-project
63
+ ```
64
+
65
+ Or specify in `project.md`:
66
+
67
+ ```markdown
68
+ ## Strategy
69
+ Use [strategies/interview.md](../strategies/interview.md) for this project.
70
+ ```
71
+
72
+ **Naming rule:** `/deft:run:<x>` always maps to `strategies/<x>.md`. Custom strategies follow the same pattern.
73
+
74
+ ## Creating Custom Strategies
75
+
76
+ A strategy file defines:
77
+
78
+ 1. **When to use** — project types, team sizes, constraints
79
+ 2. **Workflow phases** — ordered steps with transition criteria
80
+ 3. **Artifacts** — what documents are produced
81
+ 4. **Agent behavior** — how AI should conduct each phase
82
+
83
+ Name your file `strategies/<name>.md` and invoke it with `/deft:run:<name>`.
@@ -0,0 +1,85 @@
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
+ # Artifact Idempotency Guards
8
+
9
+ Shared guard rules for strategies that write to vBRIEF artifacts. Referenced by individual strategy files to prevent silent overwrites of approved or completed work.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [vbrief/vbrief.md](../vbrief/vbrief.md) | [strategies/v0-20-contract.md](./v0-20-contract.md) | [strategies/interview.md](./interview.md)
14
+
15
+ ---
16
+
17
+ ## When to Use
18
+
19
+ This file is not a standalone strategy — it is a shared guard referenced by other strategies. It activates automatically when a strategy writes to vBRIEF artifacts.
20
+
21
+ - ! Referenced by spec-generating strategies: [speckit](./speckit.md), [enterprise](./enterprise.md), [rapid](./rapid.md)
22
+ - ! Referenced by preparatory strategies: [bdd](./bdd.md), [discuss](./discuss.md), [research](./research.md), [map](./map.md), [probe](./probe.md)
23
+
24
+ ## Workflow
25
+
26
+ 1. Strategy reaches its output step
27
+ 2. Strategy follows the appropriate guard (Spec-Generating or Preparatory) from this file
28
+ 3. Guard checks file existence and status, prompts user if needed
29
+ 4. Strategy proceeds with the write or aborts based on user response
30
+
31
+ ---
32
+
33
+ ## Spec-Generating Guard (Full)
34
+
35
+ Applies to strategies that write to `PROJECT-DEFINITION.vbrief.json` (⊗ never `specification.vbrief.json` per [v0-20-contract.md](./v0-20-contract.md)): **speckit**, **enterprise**, **rapid**.
36
+
37
+ ! Before writing to `vbrief/PROJECT-DEFINITION.vbrief.json`, the strategy MUST perform the following checks (⊗ Never target the legacy `specification.vbrief.json`):
38
+
39
+ 1. ! **Check existence**: Does the target file already exist?
40
+ - If NO: proceed with the write — no guard needed.
41
+ - If YES: continue to step 2.
42
+
43
+ 2. ! **Read `plan.status`**: Parse the existing file and read `plan.status`.
44
+
45
+ 3. ! **Status: `approved` or `completed`**: Refuse to overwrite without explicit user confirmation.
46
+ - ! Display: "This artifact has status `{status}`. Overwriting will reset it to `draft` and discard approved/completed state. Continue? (yes/no)"
47
+ - ! Accept only explicit affirmative (`yes`, `confirmed`) — not vague responses (`proceed`, `ok`, `go ahead`)
48
+ - ⊗ Silently overwrite an approved or completed artifact
49
+
50
+ 4. ! **Status: `draft` or `running`**: Warn and ask before overwriting.
51
+ - ! Display: "A `{status}` version of this artifact already exists. Replace it? (yes/no)"
52
+ - ~ If the user declines, offer to enrich (merge narratives) instead of replacing
53
+
54
+ 5. ! **Narrative preservation**: When overwriting `PROJECT-DEFINITION.vbrief.json`, read existing `narratives` keys first. If the strategy only writes a subset of narratives (e.g. speckit Phase 1 writes only `Principles`), merge the new narrative into the existing set — do NOT replace all narratives with only the new key.
55
+ - ⊗ Overwrite all `PROJECT-DEFINITION.vbrief.json` narratives when the strategy only produces a single narrative key
56
+
57
+ ---
58
+
59
+ ## Preparatory Guard (Light)
60
+
61
+ Applies to strategies that write scoped vBRIEFs to `vbrief/proposed/`: **bdd**, **discuss**, **research**, **map**.
62
+
63
+ ! Before writing a scope vBRIEF to `vbrief/proposed/`, the strategy MUST check for existing files with the same scope or feature name:
64
+
65
+ 1. ! **Check for existing file**: Scan `vbrief/proposed/` for files matching the target scope/feature slug (e.g. `*-{feature}-bdd.vbrief.json`, `*-{scope}-context.vbrief.json`).
66
+ - If NO match: proceed with the write — no guard needed.
67
+ - If a match exists: continue to step 2.
68
+
69
+ 2. ! **Warn and ask**: Display: "A vBRIEF for this scope already exists at `{path}`. Replace it, or create a new version? (replace/new)"
70
+ - ! If replace: overwrite the existing file
71
+ - ! If new: append a numeric suffix or use today's date to create a distinct file
72
+
73
+ 3. ~ **Read existing decisions**: If the existing file contains a `LockedDecisions` or similar narrative, surface those decisions to the agent context so they are not lost even if the user chooses to replace.
74
+
75
+ ⊗ Silently overwrite an existing scope vBRIEF with the same feature/scope name without warning the user.
76
+
77
+ ---
78
+
79
+ ## Anti-Patterns
80
+
81
+ - ⊗ Writing to `PROJECT-DEFINITION.vbrief.json` without checking the file's current status (⊗ never write `specification.vbrief.json` at all per v0-20-contract.md)
82
+ - ⊗ Silently overwriting an `approved` or `completed` artifact — this discards locked decisions and approval state
83
+ - ⊗ Replacing all `PROJECT-DEFINITION.vbrief.json` narratives when the strategy only contributes one narrative key (e.g. `Principles`)
84
+ - ⊗ Overwriting a scope vBRIEF in `vbrief/proposed/` without checking if one already exists for the same scope
85
+ - ⊗ Accepting vague confirmation (`proceed`, `ok`) when the guard requires explicit confirmation for approved/completed artifacts
@@ -0,0 +1,115 @@
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
+ # BDD Strategy
8
+
9
+ Behaviour-Driven Development -- failing acceptance tests drive requirements.
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
+ > Acceptance tests are the specification. Write them first, let failures surface ambiguity, then lock decisions before generating a formal spec.
16
+
17
+ ---
18
+
19
+ ## When to Use
20
+
21
+ - ~ Features where expected behaviour is easier to express as examples (Given/When/Then) than as written requirements
22
+ - ~ Teams wanting executable specifications that double as regression tests
23
+ - ~ Projects where acceptance tests will be the source of truth for feature correctness
24
+ - ? Skip when requirements are already unambiguous and a formal spec exists
25
+
26
+ ---
27
+
28
+ ## Workflow
29
+
30
+ ### Step 1: Identify User Scenarios
31
+
32
+ ! Write Given/When/Then scenarios for the feature before any implementation or specification work.
33
+
34
+ - ! Each scenario covers one behaviour -- avoid multi-assertion scenarios
35
+ - ~ Capture happy path, edge cases, and error cases as separate scenarios
36
+ - ~ Use concrete values, not placeholders (e.g. "Given a user with 3 items in cart" not "Given a user with items")
37
+ - ! Store scenarios in the project's standard test directory (e.g. `tests/`), not in `specs/`
38
+
39
+ ### Step 2: Write Failing Acceptance Tests
40
+
41
+ ! Translate scenarios into executable test code before writing any implementation.
42
+
43
+ - ! Tests MUST fail when first written -- a passing test before implementation means the test is wrong or the feature already exists
44
+ - ~ Use the project's test framework (pytest, go test, jest, etc.)
45
+ - ! Place test files in the project's standard test directory (e.g. `tests/`)
46
+ - ⊗ Write implementation code at this step
47
+
48
+ ### Step 3: Run Tests -- Surface Ambiguity
49
+
50
+ ! Run the failing tests. Use the failures to surface missing decisions and ambiguity in requirements.
51
+
52
+ - ! Each test failure is a question: "What should happen here?"
53
+ - ~ Group failures by theme (data model gaps, API contract gaps, business rule gaps)
54
+ - ! Record every ambiguity discovered -- these become decision items in Step 4
55
+
56
+ ### Step 4: Lock Decisions
57
+
58
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
59
+
60
+ ! Resolve all ambiguities surfaced by Step 3. Record decisions in `vbrief/proposed/{feature}-bdd.vbrief.json`.
61
+
62
+ - ! Write a scope vBRIEF with two narratives:
63
+ - `Scenarios` -- Given/When/Then scenario descriptions from Step 1
64
+ - `LockedDecisions` -- each decision includes: **what** was decided, **why**, and **alternatives considered**
65
+ - ! Decisions are **locked** -- downstream tasks inherit them, do not re-debate
66
+ - ! Format follows the same vBRIEF narrative structure as [strategies/discuss.md](./discuss.md)
67
+ - ⊗ Leave ambiguities unresolved -- every question surfaced in Step 3 must have a locked answer
68
+ - ⊗ Write decisions to a hand-authored markdown file -- use vBRIEF narratives for token-efficient agent consumption
69
+
70
+ ! After emitting the 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`).
71
+
72
+ ### Step 5: Generate Spec
73
+
74
+ ! Derive SPECIFICATION.md tasks from the now-stable test scenarios and locked decisions.
75
+
76
+ - ! Each scenario maps to one or more spec tasks with traceability (`traces: scenario-N`)
77
+ - ! Locked decisions from `vbrief/proposed/{feature}-bdd.vbrief.json` `LockedDecisions` narrative flow into the spec as constraints
78
+ - ~ Use the Light or Full path from [strategies/interview.md](./interview.md) based on project size
79
+
80
+ ### Step 6: Chain into Interview Sizing Gate
81
+
82
+ ! Follow [strategies/interview.md](./interview.md) sizing gate for SPECIFICATION.md finalisation.
83
+
84
+ - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
85
+ - Update `completedStrategies`: increment `runCount` for `"bdd"`, append artifact paths
86
+ - Append all new artifact paths to the flat `artifacts` array
87
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
88
+ - ! The locked decisions from `vbrief/proposed/{feature}-bdd.vbrief.json` and the acceptance tests MUST flow into subsequent strategies and spec generation
89
+
90
+ ---
91
+
92
+ ## Output Artifacts
93
+
94
+ - Executable test files in the project's standard test directory -- derived from Given/When/Then scenarios
95
+ - `vbrief/proposed/{feature}-bdd.vbrief.json` -- scope vBRIEF with `Scenarios` and `LockedDecisions` narratives
96
+
97
+ ---
98
+
99
+ ## Fits into Chaining Gate
100
+
101
+ BDD is a **preparatory** strategy. It can be combined with other preparatory strategies (research, discuss, map) before spec generation. On completion, the chaining gate reappears so the user can run additional strategies or proceed to specification.
102
+
103
+ ⊗ End the session after BDD without returning to the chaining gate.
104
+
105
+ ---
106
+
107
+ ## Anti-Patterns
108
+
109
+ - ⊗ Writing implementation before acceptance tests -- tests must come first
110
+ - ⊗ Writing acceptance tests that pass immediately -- a passing test before implementation indicates a wrong test or pre-existing feature
111
+ - ⊗ Leaving ambiguities unresolved after Step 3 -- every surfaced question must be locked in Step 4
112
+ - ⊗ Skipping the vBRIEF file -- decisions that exist only in conversation history will be lost
113
+ - ⊗ Writing scenarios with vague placeholders instead of concrete values
114
+ - ⊗ Combining multiple behaviours into a single scenario -- one scenario, one behaviour
115
+ - ⊗ Ending after BDD without chaining into specification generation
@@ -0,0 +1,7 @@
1
+ # Brownfield Strategy (Redirect)
2
+
3
+ > **This file is a legacy alias.** The brownfield strategy has been renamed to **Map**.
4
+ >
5
+ > See **[strategies/map.md](./map.md)** for the canonical strategy.
6
+
7
+ Use `/deft:run:map` to invoke the map strategy.
@@ -0,0 +1,129 @@
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
+ # Discuss Strategy
8
+
9
+ Structured alignment before planning — front-load decisions, prevent drift.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/interview.md](./interview.md) (Phase 1: Interview) | [strategies/speckit.md](./speckit.md) (Phase 2: Specify) | [core/glossary.md](../glossary.md)
14
+
15
+ > Extends Deft's Interview phase with decision locking and Feynman technique. Adapted from [GSD](https://github.com/gsd-build/get-shit-done) discuss phase.
16
+
17
+ ---
18
+
19
+ ## Core Principle
20
+
21
+ The most expensive mistake is building the wrong thing. A 10-minute alignment conversation saves hours of re-implementation. Decisions made here flow through the entire pipeline — planning, execution, verification — and are **never re-debated** downstream.
22
+
23
+ ---
24
+
25
+ ## When to Use
26
+
27
+ - ! Before planning any feature/phase with gray areas
28
+ - ~ Before any feature where multiple reasonable approaches exist
29
+ - ? Skip only when the path forward is unambiguous and the user confirms
30
+
31
+ ## The Feynman Approach
32
+
33
+ Use the Feynman technique: if the user (or you) can't explain the feature in simple, concrete terms, the understanding isn't there yet.
34
+
35
+ - ! **Make the abstract concrete** — "Walk me through using this." "What does that look like on screen?" "What happens when this fails?"
36
+ - ! **Explain it back** — Restate the user's intent in your own words. If the restatement surprises them, the spec is wrong.
37
+ - ! **Find the gaps** — Where the explanation gets hand-wavy is where the bugs will be.
38
+ - ~ Use the "teach it to a child" filter: if the expected behavior can't be described without jargon, it's underspecified.
39
+
40
+ ## Questioning Behaviors
41
+
42
+ ### Follow Energy
43
+
44
+ - ~ Whatever the user emphasizes, dig deeper into that
45
+ - ⊗ Robotically marching through a predetermined question list
46
+ - ~ If the user spends time on error handling, ask deeper questions about error handling
47
+
48
+ ### Challenge Vagueness
49
+
50
+ - ! Push back on fuzzy answers: "Make it simple" → "Simple how? For the user? To implement? To extend later?"
51
+ - ! Push back on assumed agreement: "Standard auth" → "JWT with refresh? Server-side sessions? OAuth? Which standard?"
52
+ - ⊗ Accept fuzzy input — it produces divergent output
53
+
54
+ ### Scope Guardrails
55
+
56
+ - ! If the user suggests a capability belonging to a different feature, capture it as **deferred**
57
+ - ~ Redirect: "That sounds like a new capability — I'll note it. For now, let's focus on [current scope]."
58
+ - ~ Record deferred ideas in `./vbrief/plan.vbrief.json` with `deferred` status and a narrative explaining why
59
+
60
+ ## Domain-Sensitive Questions
61
+
62
+ Adapt question focus to what's being built:
63
+
64
+ - **Visual features** → Layout, density, interactions, empty states
65
+ - **APIs/CLIs** → Response format, flags, error handling, verbosity
66
+ - **Data systems** → Schema, validation, migration, edge cases
67
+ - **Organization tasks** → Grouping criteria, naming, duplicates, exceptions
68
+
69
+ ## Output
70
+
71
+ ! Before writing output artifacts, follow the [Preparatory Guard](./artifact-guards.md#preparatory-guard-light).
72
+
73
+ - ! Produce a `vbrief/proposed/{scope}-context.vbrief.json` scope vBRIEF with a `LockedDecisions` narrative
74
+ - ! Each decision includes: **what** was decided, **why**, and **alternatives considered**
75
+ - ! This vBRIEF is injected into all downstream work: planning, execution, verification
76
+ - ! Persist decisions as vBRIEF narratives on the relevant plan items
77
+ - ⊗ Write decisions to a hand-authored markdown context file -- use vBRIEF narratives for token-efficient agent consumption
78
+
79
+ ! After emitting the 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`).
80
+
81
+ ## Decision Locking
82
+
83
+ - ! Decisions in the vBRIEF `LockedDecisions` narrative are **locked** -- downstream tasks inherit them, don't re-debate
84
+ - ! If a locked decision needs revisiting, explicitly flag it as unlocked with justification
85
+ - ⊗ Silently making a different choice because the agent forgot what was decided
86
+ - ⊗ Re-debating a settled decision without explicit user approval
87
+
88
+ ---
89
+
90
+ ## Then: Chaining Gate
91
+
92
+ After alignment is complete and decisions are locked in `vbrief/proposed/{scope}-context.vbrief.json`,
93
+ return to the [chaining gate](./interview.md#chaining-gate) so the user can
94
+ run additional preparatory strategies or proceed to spec generation.
95
+
96
+ - ! On completion, register artifacts in `./vbrief/plan.vbrief.json`:
97
+ - Update `completedStrategies`: increment `runCount` for `"discuss"`,
98
+ append artifact path (`vbrief/proposed/{scope}-context.vbrief.json`)
99
+ - Append the path to the flat `artifacts` array
100
+ - ! Return to [interview.md Chaining Gate](./interview.md#chaining-gate)
101
+ (the discuss phase replaces the interview's question-gathering -- decisions are
102
+ already made, so the interview will be short or skipped entirely)
103
+ - ! The locked decisions from `vbrief/proposed/{scope}-context.vbrief.json` MUST flow into subsequent
104
+ strategies and spec generation
105
+ - ⊗ End the session after discuss without returning to the chaining gate
106
+ or the invoking strategy's next-step menu
107
+
108
+ ! **Standalone context:** If invoked from a standalone strategy (e.g. map's
109
+ standalone next-step menu) rather than from the interview chaining gate,
110
+ return to the invoking strategy's menu instead.
111
+
112
+ ---
113
+
114
+ ## Workflow
115
+
116
+ 1. **Open** -- Start with the user's goal statement; restate it in your own words
117
+ 2. **Explore** -- Follow energy, challenge vagueness, ask domain-sensitive questions
118
+ 3. **Lock** -- Record each decision in `vbrief/proposed/{scope}-context.vbrief.json` `LockedDecisions` narrative with what/why/alternatives
119
+ 4. **Verify** -- Explain the full picture back to the user (Feynman check)
120
+ 5. **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
121
+
122
+ ## Anti-Patterns
123
+
124
+ - ⊗ Skipping discuss and immediately writing code
125
+ - ⊗ Asking generic checklist questions instead of following energy
126
+ - ⊗ Accepting "make it nice" / "standard approach" / "whatever works" without pushback
127
+ - ⊗ Scope creep — capturing out-of-scope ideas inline instead of deferring
128
+ - ⊗ Decisions that exist only in conversation history (they must be in the vBRIEF `LockedDecisions` narrative)
129
+ - ⊗ Ending after discuss 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,69 @@
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
+ # Issue-Emit Hints
8
+
9
+ Shared hint referenced by strategies at the moment they emit scope vBRIEFs. It names the GitHub-issue tracking choice — none / umbrella / per-vBRIEF — so the choice is discoverable instead of the emission step ending silently.
10
+
11
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
12
+
13
+ **⚠️ See also**: [strategies/artifact-guards.md](./artifact-guards.md) | [vbrief/vbrief.md](../vbrief/vbrief.md) | [strategies/v0-20-contract.md](./v0-20-contract.md)
14
+
15
+ ---
16
+
17
+ ## When to Use
18
+
19
+ This file is not a standalone strategy — it is a shared hint referenced by other strategies. It activates at the emission step, right after a strategy writes scope vBRIEFs to `vbrief/proposed/` (or `vbrief/pending/`).
20
+
21
+ - ! Referenced by spec-generating strategies: [speckit](./speckit.md) (Phase 4 and Phase 4.5), [enterprise](./enterprise.md), [rapid](./rapid.md), [interview](./interview.md), [yolo](./yolo.md)
22
+ - ! Referenced by preparatory strategies: [bdd](./bdd.md), [discuss](./discuss.md), [research](./research.md), [map](./map.md), [probe](./probe.md)
23
+
24
+ ## Workflow
25
+
26
+ 1. Strategy reaches its emission step and writes scope vBRIEF(s)
27
+ 2. Strategy surfaces the hint below, naming all three patterns
28
+ 3. The user picks one — or takes no action (the default)
29
+ 4. No issue is filed unless the user explicitly invokes `task deft:issue:emit`
30
+
31
+ ---
32
+
33
+ ## The Hint
34
+
35
+ ! After emitting N scope vBRIEF(s), print the following hint so the user discovers the GitHub-issue tracking choice. The hint is informational text only — it mutates nothing and files no issue.
36
+
37
+ ```
38
+ <strategy> emitted N scope vBRIEF(s).
39
+
40
+ Optional: track these in GitHub issues.
41
+ - task deft:issue:emit --umbrella -- vbrief/<path>/<glob> (one roadmap issue, all vBRIEFs reference it)
42
+ - task deft:issue:emit --per-vbrief -- vbrief/<path>/<glob> (one issue per vBRIEF)
43
+ - Default behavior (vBRIEF-only) requires no further action.
44
+ ```
45
+
46
+ ~ Replace `<path>/<glob>` with the actual emission target (e.g. `vbrief/proposed/2026-06-15-*.vbrief.json`).
47
+
48
+ Note: `task deft:issue:emit` is the consumer-installed surface (this is what strategies render to). The maintainer-side, in-repo form is `task issue:emit` — the same command without the `deft:` prefix.
49
+
50
+ ---
51
+
52
+ ## The Three Patterns
53
+
54
+ 1. **None (default)** — emit vBRIEF(s) only; file no GitHub issue. Requires no further user action. This is the framework default and is unchanged by this hint.
55
+ 2. **Umbrella** — `task deft:issue:emit --umbrella -- vbrief/<path>/<glob>` files ONE roadmap issue, and every matched vBRIEF references it.
56
+ 3. **Per-vBRIEF** — `task deft:issue:emit --per-vbrief -- vbrief/<path>/<glob>` files one issue per matched vBRIEF.
57
+
58
+ - ! Name all three patterns (none / `--umbrella` / `--per-vbrief`) when surfacing the hint — do not hide the umbrella / per-vBRIEF escape hatches.
59
+ - ⊗ File a GitHub issue automatically as part of emission. No strategy files an issue unless the user explicitly invokes `task deft:issue:emit`.
60
+ - ~ The emitted issue body is rendered from the vBRIEF `title` + `Description` + `Acceptance` + `Traces` narratives (see [vbrief/vbrief.md](../vbrief/vbrief.md) Origin Provenance), and the source vBRIEF's `references[]` is updated to link the issue.
61
+
62
+ ---
63
+
64
+ ## Anti-Patterns
65
+
66
+ - ⊗ Ending a strategy's emission step silently — the user never learns the umbrella / per-vBRIEF choice exists.
67
+ - ⊗ Filing a GitHub issue automatically — the default is vBRIEF-only and requires explicit opt-in via `task deft:issue:emit`.
68
+ - ⊗ Naming only one pattern (e.g. only `--umbrella`) — the hint MUST name none / `--umbrella` / `--per-vbrief` together so the full choice is visible.
69
+ - ⊗ Mutating the source vBRIEF or its `references[]` as a side effect of merely showing the hint — mutation happens only when the user runs `task deft:issue:emit`.