@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,131 @@
1
+ ---
2
+ name: deft-directive-pre-pr
3
+ description: >-
4
+ Iterative pre-PR quality improvement loop. Use before pushing a branch for
5
+ PR creation -- after completing implementation but before task check. Cycles
6
+ through Read-Write-Lint-Diff until a full pass produces zero changes.
7
+ ---
8
+ <!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
9
+ <!-- Purpose: rendered skill -->
10
+ <!-- Source of truth: packs/skills/skills-pack-0.1.json -->
11
+ <!-- Regenerate with: task packs:render -->
12
+ <!-- Edit the source, not this file. Slice instead of loading every SKILL.md: task packs:slice skills by-trigger --trigger <kw> (or list) -->
13
+
14
+ # Deft Directive Pre-PR -- Read, Write, Lint, Diff, Loop
15
+
16
+ Structured self-review loop agents run before submitting a PR. Catches inconsistencies, missing enforcement markers, incomplete acceptance criteria, scope creep, and unintended changes before they reach the reviewer.
17
+
18
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
19
+
20
+ **See also**: [deft-directive-review-cycle](../deft-directive-review-cycle/SKILL.md) | [deft-directive-build](../deft-directive-build/SKILL.md) | [RWLDL tool](../../tools/RWLDL.md)
21
+
22
+ > **Formerly `deft-rwldl`** -- renamed to clearly communicate the skill's purpose (iterative pre-PR quality loop).
23
+
24
+ ## Branch-Protection Policy Guard
25
+
26
+ ! Before entering Phase 1 (Read), run the skill-level branch-policy guard documented in `scripts/policy.py` / `scripts/preflight_branch.py` (#746 / #747). Halt before any state mutation (the Phase 2 Write phase, the Phase 3 Lint phase that may touch files) when the policy is unresolvable AND no env-var bypass is active:
27
+
28
+ ```
29
+ uv run python scripts/preflight_branch.py --project-root . --quiet || exit 1
30
+ ```
31
+
32
+ or invoke `task verify:branch`. Pre-PR is the last gate before push, so a stale / unresolvable policy here is the highest-leverage place to catch the bug before it reaches the bot reviewer.
33
+
34
+ ## Deterministic Questions Contract
35
+
36
+ ! Every numbered-menu prompt rendered in this skill (per-finding decision menus in Phase 4 Diff, the Phase 5 Loop restart-vs-exit gate) MUST follow [`../../contracts/deterministic-questions.md`](../../contracts/deterministic-questions.md): the final two numbered options MUST be `Discuss` and `Back`, in that order. The Discuss-pause semantic is documented verbatim there -- implicit resumption is forbidden.
37
+
38
+ ## When to Use
39
+
40
+ - ! Before pushing a branch for PR creation
41
+ - ! After completing implementation but before the final `task check` gate
42
+ - ~ After addressing bot reviewer findings (run one RWLDL pass before pushing the fix batch)
43
+ - ? During mid-implementation checkpoints on large changes
44
+
45
+ ## Loop Phases
46
+
47
+ Each iteration proceeds through all phases in order. Do NOT skip phases or reorder them.
48
+
49
+ ### Phase 1 -- Read
50
+
51
+ ! Re-read each changed file end-to-end (`git diff master --name-only` to get the list).
52
+
53
+ - ! Read every changed file in full -- do not skim or skip sections
54
+ - ! Compare each file against its scope vBRIEF acceptance criteria in `vbrief/active/`
55
+ - ~ If changed files include `vbrief/PROJECT-DEFINITION.vbrief.json`, a configured `codebase-map` provider artifact, or `.planning/codebase/MAP.md`, read the MAP and canonical metadata together. The MAP is orientation; `plan.architecture.codeStructure` and provider artifacts remain authoritative.
56
+ - ! When adding a `!` or `⊗` rule that prohibits a specific command, pattern, or behavior, search the same file for any `~`, `≉`, or prose that recommends or permits the same command/pattern -- resolve all contradictions in the same commit before pushing
57
+ - ! When strengthening a rule (e.g. upgrading `~` to `!`), grep for the term in the full file and verify no weaker-strength duplicate remains
58
+ - ~ Note any inconsistencies, missing RFC2119 markers, stale cross-references, or incomplete sections
59
+ - ~ Check that CHANGELOG.md entries match the actual changes made
60
+
61
+ ### Phase 2 -- Write
62
+
63
+ ! Fix any issues found in the Read phase.
64
+
65
+ - ! Fix inconsistencies, add missing RFC2119 enforcement markers (`!`, `~`, `⊗`)
66
+ - ! Complete any incomplete acceptance criteria or missing content
67
+ - ! Update stale cross-references
68
+ - ~ Improve clarity where intent is ambiguous
69
+ - ⊗ Make changes beyond the scope of the current task -- if you notice unrelated issues, file them as ideas or future work, do not fix them now
70
+
71
+ ### Phase 3 -- Lint
72
+
73
+ ! Run `task check` and fix any failures.
74
+
75
+ - ! Run `task check` (fmt + lint + typecheck + tests + coverage)
76
+ - ! Fix all failures before proceeding to Phase 3b
77
+ - ~ If a lint fix requires changing a file, that counts as a change for the Loop phase
78
+
79
+ ~ **Windows + Grok Build (#1353):** Avoid `|`, `>`, or `2>&1` in `run_terminal_command` strings -- use Python `pathlib`/`subprocess` or plain task commands instead.
80
+
81
+ ### Phase 3b -- Auto-Render Exports
82
+
83
+ ! If `vbrief/specification.vbrief.json` exists, refresh rendered exports before the diff check:
84
+
85
+ - ! Run `task prd:render` if `PRD.md` already exists in the project root
86
+ - ! Run `task spec:render` if `SPECIFICATION.md` already exists and does not contain `<!-- deft:deprecated-redirect -->`
87
+ - ! If `plan.architecture.codeStructure`, a configured `codebase-map` provider artifact, or `.planning/codebase/MAP.md` changed, run `task codebase:map` and `task verify:codebase-map-fresh` so the generated orientation projection matches its canonical inputs.
88
+ - ⊗ Create export files that don't already exist -- only refresh existing ones
89
+ - ⊗ Hand-edit `.planning/codebase/MAP.md` to satisfy review; update canonical metadata or provider artifacts, then regenerate it
90
+
91
+ ### Phase 4 -- Diff
92
+
93
+ ! Review the full diff against the base branch for unintended changes.
94
+
95
+ ```
96
+ git --no-pager diff master
97
+ ```
98
+
99
+ - ! Verify no files outside the task scope were modified
100
+ - ! Check for scope creep -- changes that go beyond the spec task acceptance criteria
101
+ - ! Verify no debug code, TODO comments, or temporary scaffolding remains
102
+ - ! Confirm no unintended whitespace-only changes or formatting drift
103
+ - ! **Run `task pr:check-closing-keywords -- --pr <N>` (or pass `--body-file` / `--commits-file` for offline checking) before opening the PR; refuse to push if findings (#737)**. The lint scans both the PR body AND every commit message for closing-keyword tokens (`close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved`) followed by `#\d+` in negation / quotation / example / code-block contexts. The recurrence record is the Layer 1 / Layer 2 / Layer 3 stack: #167 (post-merge close-verify), #697 / #698 (negation-context substring match), #401 / #700 (persistent `closingIssuesReferences` link), #735 (squash body containing `DOES NOT CLOSE #734` auto-closed #734). When the lint surfaces a known-safe occurrence (e.g. test fixtures that legitimately exercise the trigger token), pass `--allow-known-false-positives <issue-numbers>` to suppress -- DO NOT silently delete the lint invocation
104
+ - ~ Verify the diff tells a coherent story -- a reviewer reading it top-to-bottom should understand the change
105
+
106
+ ### Phase 5 -- Loop
107
+
108
+ ! Decide whether to restart or exit.
109
+
110
+ - ! If ANY fixes were made in Phase 2 (Write) or Phase 3 (Lint): restart from Phase 1 (Read)
111
+ - ~ Phase 3b auto-renders are intentional output refreshes; they do NOT trigger a loop restart
112
+ - ! If a full Read-Write-Lint-Diff cycle produced zero changes: exit the loop
113
+ - ~ Track iteration count -- if you exceed 3 iterations, pause and assess whether you are oscillating between competing fixes
114
+
115
+ ## Exit Condition
116
+
117
+ ! Exit when a complete Read-Write-Lint-Diff cycle produces **zero changes** -- no file edits in Write, no lint fixes in Lint, and no scope issues in Diff.
118
+
119
+ After exiting:
120
+ - ! Run `task check` one final time to confirm clean state
121
+ - ~ The branch is now ready for push and PR creation
122
+
123
+ ## Anti-Patterns
124
+
125
+ - ⊗ Submit a PR without running the RWLDL loop -- every PR branch should pass at least one full cycle
126
+ - ⊗ Exit the loop after the Lint phase without completing the Diff phase -- Diff catches scope creep and unintended changes that Lint cannot detect
127
+ - ⊗ Skip the Read phase and jump directly to Lint -- Read catches semantic issues (missing content, wrong RFC2119 markers, incomplete acceptance criteria) that linters do not check
128
+ - ⊗ Make out-of-scope fixes during Write -- this introduces scope creep that Diff will flag, forcing another iteration
129
+ - ⊗ Ignore the iteration count -- more than 3 iterations usually indicates oscillating fixes or an unclear spec task
130
+ - ⊗ Add a prohibition (`!` or `⊗`) without scanning the same file for conflicting softer-strength rules (`~`, `≉`) that reference the same term
131
+ - ⊗ Skip `task pr:check-closing-keywords` (#737) before pushing a PR. The negation-context substring match is the Layer 0 (prevention) gate that prevents the recurring auto-close of umbrella / staying-OPEN issues observed in #697 (closed #642), #401 (closed #642), #700 (closed #233), and #735 (closed #734) -- each incident required manual reopen and downstream cleanup. The lint's three-state exit (0 clean / 1 hits found / 2 config error) MUST be treated as a hard refusal: rewrite the PR body / commit messages until clean, OR pass `--allow-known-false-positives` ONLY for legitimately-quoted occurrences (test fixtures, documentation that discusses the trigger token literally). See `skills/deft-directive-swarm/SKILL.md` Phase 6 Step 1 for the corresponding Layer 3 (recovery) `pr:check-protected-issues` rule (#701)
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: deft-directive-probe
3
+ description: >-
4
+ Adversarial plan stress-testing via relentless one-question-per-turn
5
+ interrogation. Use when the operator asks to run probe, /deft:run:probe, or
6
+ wants a plan challenged before committing to it.
7
+ triggers:
8
+ - run probe
9
+ - /deft:run:probe
10
+ - probe
11
+ - probe my plan
12
+ - stress test
13
+ ---
14
+ <!-- AUTO-GENERATED by task packs:render -- DO NOT EDIT MANUALLY -->
15
+ <!-- Purpose: rendered skill -->
16
+ <!-- Source of truth: packs/skills/skills-pack-0.1.json -->
17
+ <!-- Regenerate with: task packs:render -->
18
+ <!-- Edit the source, not this file. Slice instead of loading every SKILL.md: task packs:slice skills by-trigger --trigger <kw> (or list) -->
19
+
20
+ # Deft Directive Probe
21
+
22
+ Stress-test a plan before committing to it — relentless interrogation until every branch of the decision tree is resolved.
23
+
24
+ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
25
+
26
+ > Strategy reference: [strategies/probe.md](../../strategies/probe.md). Probe is adversarial discovery — it assumes the plan has holes and sets out to find them.
27
+
28
+ ## When to Use
29
+
30
+ - ~ Before committing to any significant design decision or architecture choice
31
+ - ~ When a plan has been drafted but not yet stress-tested
32
+ - ! When the user explicitly asks to be probed or challenged on their plan
33
+ - ? Skip when the path forward is unambiguous and small in scope
34
+
35
+ ## No-Artifact Guard (active until probe complete)
36
+
37
+ While probe completion criteria (below) are NOT met:
38
+
39
+ - ⊗ Write or update any vBRIEF file (`vbrief/proposed/`, `vbrief/active/`, plan items, narratives)
40
+ - ⊗ Update `vbrief/plan.vbrief.json` or register probe artifacts
41
+ - ⊗ Post GitHub completion comments, close issues, or open PRs on behalf of the probe session
42
+ - ⊗ Produce probe output markdown files instead of the canonical vBRIEF contract
43
+
44
+ ! Read existing context and interrogate only — artifacts land in the Output phase after completion.
45
+
46
+ ## Workflow
47
+
48
+ ### Step 1: Establish the plan
49
+
50
+ - ! Read whatever plan, design, or spec exists in the conversation context
51
+ - ~ If no plan is in context, ask ONE question: "What's the plan you want me to probe?"
52
+ - ~ If codebase context is relevant, explore it to answer what you can before asking
53
+ - ⊗ Ask follow-up questions before reading available context
54
+
55
+ ### Step 2: Interrogate relentlessly
56
+
57
+ Walk the decision tree depth-first. For each unresolved branch:
58
+
59
+ - ! Ask **ONE** focused question per message
60
+ - ! For each question, provide your recommended answer with brief reasoning
61
+ - ! If the codebase can answer a question, explore it instead of asking the user
62
+ - ~ Follow the thread — if an answer opens new branches, pursue them before moving on
63
+ - ⊗ Ask multiple questions at once
64
+ - ⊗ Present batched decision lists, numbered option menus, or multi-item checklists in a single turn
65
+ - ⊗ Accept vague answers — push back: "What does that mean concretely?"
66
+ - ⊗ Move to the next branch before the current one is fully resolved
67
+
68
+ #### First-turn contract
69
+
70
+ ! The first user-facing probe turn after loading this skill MUST contain exactly **one** focused question plus your recommended answer — nothing else that asks the user to decide among multiple items.
71
+
72
+ - ⊗ Open with a summary of every open branch, a decision matrix, or a list of questions
73
+ - ⊗ Batch "here are the areas we need to cover" bullets that substitute for the single-question rule
74
+
75
+ #### Question focus areas
76
+
77
+ - ! **Assumptions** — "This assumes X is guaranteed — is it?"
78
+ - ! **Edge cases** — "What happens when Y is empty / null / at the limit?"
79
+ - ! **Dependencies** — "This requires Z to exist — what if it doesn't?"
80
+ - ! **Failure modes** — "How does this fail? How is that surfaced to the user?"
81
+ - ! **Scaling** — "Does this hold at 10× the expected volume?"
82
+ - ~ **Security surface** — "Who can reach this? What's the blast radius if it's wrong?"
83
+ - ~ **Reversibility** — "Can this decision be changed later? What's the migration cost?"
84
+
85
+ ### Transition criteria (probe complete)
86
+
87
+ - ! All major decision branches have been resolved
88
+ - ! No open assumptions remain
89
+ - ~ User has acknowledged the risks of any deliberately deferred decisions
90
+ - ~ No new branches are surfaced by the last 2–3 questions
91
+
92
+ ## Output (after completion only)
93
+
94
+ ! Before writing output artifacts, follow the [Preparatory Guard](../../strategies/artifact-guards.md#preparatory-guard-light).
95
+
96
+ `{scope}` is the project name from `PROJECT-DEFINITION.vbrief.json`, or the feature/component name if probing a sub-scope. Use the same value consistently throughout the session.
97
+
98
+ - ! Produce a `vbrief/proposed/{scope}-probe.vbrief.json` scope vBRIEF with three mandatory narratives:
99
+ - `LockedDecisions` — what was resolved and why
100
+ - `SurfacedRisks` — concerns raised, even if not fully resolved
101
+ - `DeferredDecisions` — explicitly acknowledged items with justification
102
+ - ! Each entry includes: **question asked**, **answer given**, **status** (locked / deferred / risk-accepted)
103
+ - ! Persist significant decisions as vBRIEF narratives on the relevant plan items
104
+ - ⊗ Write probe output to a hand-authored markdown file — use vBRIEF narratives for machine-consumable downstream work
105
+
106
+ ## Chaining Gate
107
+
108
+ After the probe is complete and `vbrief/proposed/{scope}-probe.vbrief.json` is written:
109
+
110
+ - ! Register artifacts in `./vbrief/plan.vbrief.json` (`completedStrategies`, `artifacts`)
111
+ - ! Return to [interview.md Chaining Gate](../../strategies/interview.md#chaining-gate) when invoked from the interview flow
112
+ - ! Locked decisions, surfaced risks, and deferred decisions MUST flow into subsequent strategies and spec generation
113
+ - ⊗ End the session after probe without returning to the chaining gate or the invoking strategy's next-step menu
114
+
115
+ **Standalone context:** If invoked from a standalone strategy menu rather than the interview chaining gate, return to the invoking strategy's menu instead.
116
+
117
+ ## Anti-Patterns
118
+
119
+ - ⊗ Accepting "we'll figure it out later" without marking it as explicitly deferred
120
+ - ⊗ Asking generic checklist questions instead of following the decision tree
121
+ - ⊗ Letting vague answers pass without pushing for concrete specifics
122
+ - ⊗ Stopping when the conversation feels comfortable — stop when no new branches emerge
123
+ - ⊗ Writing artifacts before transition criteria are met
124
+
125
+ ## EXIT
126
+
127
+ When probe output is written and chaining instructions are delivered, confirm: **deft-directive-probe complete -- exiting skill.** Return to the invoking strategy's chaining gate or next-step menu.