@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.
- package/.agents/skills/deft/SKILL.md +6 -0
- package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
- package/.agents/skills/deft-directive-build/SKILL.md +10 -0
- package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
- package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
- package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
- package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
- package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
- package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
- package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
- package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
- package/.agents/skills/deft-directive-release/SKILL.md +12 -0
- package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
- package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
- package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
- package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
- package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
- package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
- package/LICENSE.md +22 -0
- package/QUICK-START.md +167 -0
- package/UPGRADING.md +517 -0
- package/coding/build-output.md +28 -0
- package/coding/coding.md +235 -0
- package/coding/debugging.md +110 -0
- package/coding/holzmann.md +96 -0
- package/coding/hygiene.md +127 -0
- package/coding/security.md +158 -0
- package/coding/testing.md +162 -0
- package/coding/toolchain.md +44 -0
- package/commands.md +300 -0
- package/context/context.md +57 -0
- package/context/deterministic-split.md +67 -0
- package/context/examples.md +26 -0
- package/context/fractal-summaries.md +69 -0
- package/context/long-horizon.md +46 -0
- package/context/spec-deltas.md +177 -0
- package/context/tool-design.md +34 -0
- package/context/working-memory.md +62 -0
- package/contracts/boundary-maps.md +65 -0
- package/contracts/deterministic-questions.md +59 -0
- package/contracts/hierarchy.md +77 -0
- package/conventions/content-manifest.json +399 -0
- package/conventions/machine-generated-banner.md +130 -0
- package/conventions/references.md +120 -0
- package/conventions/rule-ownership.json +382 -0
- package/conventions/task-caching.md +43 -0
- package/conventions/vbrief-filenames.md +70 -0
- package/deployments/README.md +37 -0
- package/deployments/agentuity/README.md +138 -0
- package/deployments/agentuity/via-cli.md +380 -0
- package/deployments/agentuity/via-cloud.md +425 -0
- package/deployments/agentuity/via-github-actions.md +664 -0
- package/deployments/agentuity/via-gravity-network.md +606 -0
- package/deployments/agentuity/via-vpc.md +607 -0
- package/deployments/aws/README.md +38 -0
- package/deployments/aws/via-app-runner.md +612 -0
- package/deployments/aws/via-ecs-fargate.md +561 -0
- package/deployments/aws/via-elastic-beanstalk.md +628 -0
- package/deployments/aws/via-lambda.md +649 -0
- package/deployments/azure/README.md +37 -0
- package/deployments/azure/via-aks.md +390 -0
- package/deployments/azure/via-app-service.md +564 -0
- package/deployments/azure/via-container-apps.md +599 -0
- package/deployments/azure/via-functions.md +552 -0
- package/deployments/cloud-gov/README.md +63 -0
- package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
- package/deployments/cloud-gov/agents.md +39 -0
- package/deployments/cloud-gov/cicd.md +64 -0
- package/deployments/cloud-gov/deployment.md +150 -0
- package/deployments/cloud-gov/logging.md +43 -0
- package/deployments/cloud-gov/manifest.md +121 -0
- package/deployments/cloud-gov/overview.md +58 -0
- package/deployments/cloud-gov/security.md +46 -0
- package/deployments/cloud-gov/services.md +72 -0
- package/deployments/cloud-gov/upstream/README.md +18 -0
- package/deployments/cloudflare/README.md +33 -0
- package/deployments/cloudflare/via-dashboard.md +83 -0
- package/deployments/cloudflare/via-git.md +90 -0
- package/deployments/cloudflare/via-github-actions.md +185 -0
- package/deployments/cloudflare/via-terraform.md +157 -0
- package/deployments/cloudflare/via-wrangler.md +165 -0
- package/deployments/fly-io/README.md +37 -0
- package/deployments/fly-io/via-dockerfile.md +648 -0
- package/deployments/fly-io/via-flyctl.md +653 -0
- package/deployments/fly-io/via-github-actions.md +695 -0
- package/deployments/fly-io/via-multi-region.md +598 -0
- package/deployments/google/README.md +34 -0
- package/deployments/google/via-app-engine.md +42 -0
- package/deployments/google/via-cloud-functions.md +23 -0
- package/deployments/google/via-cloud-run.md +330 -0
- package/deployments/google/via-gke.md +23 -0
- package/deployments/netlify/README.md +99 -0
- package/deployments/netlify/via-cli.md +17 -0
- package/deployments/netlify/via-functions.md +19 -0
- package/deployments/netlify/via-git.md +25 -0
- package/deployments/vercel/README.md +90 -0
- package/deployments/vercel/via-api.md +16 -0
- package/deployments/vercel/via-cli.md +17 -0
- package/deployments/vercel/via-git.md +24 -0
- package/docs/BROWNFIELD.md +179 -0
- package/docs/getting-started.md +137 -0
- package/docs/good-agents-md.md +137 -0
- package/events/README.md +89 -0
- package/events/event-record.schema.json +26 -0
- package/events/registry.json +166 -0
- package/events/registry.schema.json +71 -0
- package/glossary.md +145 -0
- package/incidents/README.md +81 -0
- package/incidents/_template.md +38 -0
- package/interfaces/cli.md +104 -0
- package/interfaces/rest.md +212 -0
- package/interfaces/tui.md +242 -0
- package/interfaces/web.md +123 -0
- package/languages/6502-DASM.md +132 -0
- package/languages/c.md +235 -0
- package/languages/commands.md +23 -0
- package/languages/cpp.md +132 -0
- package/languages/csharp.md +259 -0
- package/languages/dart.md +183 -0
- package/languages/delphi.md +218 -0
- package/languages/elixir.md +208 -0
- package/languages/go.md +78 -0
- package/languages/java.md +278 -0
- package/languages/javascript.md +163 -0
- package/languages/julia.md +175 -0
- package/languages/kotlin.md +193 -0
- package/languages/markdown.md +168 -0
- package/languages/mermaid.md +146 -0
- package/languages/officejs.md +392 -0
- package/languages/python.md +209 -0
- package/languages/r.md +163 -0
- package/languages/rust.md +216 -0
- package/languages/sql.md +216 -0
- package/languages/swift.md +153 -0
- package/languages/typescript.md +132 -0
- package/languages/vba.md +279 -0
- package/languages/vhdl.md +180 -0
- package/languages/visual-basic.md +151 -0
- package/languages/zig.md +196 -0
- package/meta/SOUL.md +27 -0
- package/meta/code-field.md +44 -0
- package/meta/morals.md +40 -0
- package/meta/philosophy.md +39 -0
- package/meta/project.md +49 -0
- package/meta/ralph.md +223 -0
- package/meta/security.md +80 -0
- package/meta/versioning.md +326 -0
- package/package.json +22 -0
- package/packs/lessons/lessons-pack-0.1.json +553 -0
- package/packs/patterns/patterns-pack-0.1.json +57 -0
- package/packs/rules/rules-pack-0.1.json +4767 -0
- package/packs/skills/skills-pack-0.1.json +262 -0
- package/packs/strategies/strategies-pack-0.1.json +167 -0
- package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
- package/patterns/executor-layer-credentials.md +227 -0
- package/patterns/llm-app.md +156 -0
- package/patterns/multi-agent.md +278 -0
- package/patterns/prompt-assembly-layer-ordering.md +154 -0
- package/patterns/role-as-overlay.md +179 -0
- package/platforms/2600.md +137 -0
- package/platforms/unity.md +329 -0
- package/references/composer-skill-porting.md +152 -0
- package/references/cost-models.md +163 -0
- package/references/ip-risk.md +246 -0
- package/references/plain-english-ux.md +275 -0
- package/resilience/context-pruning.md +67 -0
- package/resilience/continue-here.md +62 -0
- package/scm/changelog.md +276 -0
- package/scm/git.md +139 -0
- package/scm/github.md +265 -0
- package/secrets/.gitkeep +0 -0
- package/skills/deft-build/SKILL.md +20 -0
- package/skills/deft-directive-article-review/SKILL.md +156 -0
- package/skills/deft-directive-build/SKILL.md +302 -0
- package/skills/deft-directive-cost/SKILL.md +201 -0
- package/skills/deft-directive-debug/SKILL.md +140 -0
- package/skills/deft-directive-decompose/SKILL.md +96 -0
- package/skills/deft-directive-gh-arch/SKILL.md +160 -0
- package/skills/deft-directive-gh-slice/SKILL.md +199 -0
- package/skills/deft-directive-glossary/SKILL.md +118 -0
- package/skills/deft-directive-interview/SKILL.md +528 -0
- package/skills/deft-directive-pre-pr/SKILL.md +131 -0
- package/skills/deft-directive-probe/SKILL.md +127 -0
- package/skills/deft-directive-refinement/SKILL.md +403 -0
- package/skills/deft-directive-release/SKILL.md +266 -0
- package/skills/deft-directive-review-cycle/SKILL.md +401 -0
- package/skills/deft-directive-setup/SKILL.md +717 -0
- package/skills/deft-directive-swarm/SKILL.md +989 -0
- package/skills/deft-directive-sync/SKILL.md +288 -0
- package/skills/deft-directive-triage/SKILL.md +137 -0
- package/skills/deft-directive-write-skill/SKILL.md +169 -0
- package/skills/deft-interview/SKILL.md +16 -0
- package/skills/deft-pre-pr/SKILL.md +16 -0
- package/skills/deft-review-cycle/SKILL.md +16 -0
- package/skills/deft-roadmap-refresh/SKILL.md +16 -0
- package/skills/deft-setup/SKILL.md +20 -0
- package/skills/deft-swarm/SKILL.md +16 -0
- package/skills/deft-sync/SKILL.md +16 -0
- package/strategies/README.md +83 -0
- package/strategies/artifact-guards.md +85 -0
- package/strategies/bdd.md +115 -0
- package/strategies/brownfield.md +7 -0
- package/strategies/discuss.md +129 -0
- package/strategies/emit-hints.md +69 -0
- package/strategies/enterprise.md +193 -0
- package/strategies/interview.md +551 -0
- package/strategies/map.md +179 -0
- package/strategies/probe.md +151 -0
- package/strategies/rapid.md +155 -0
- package/strategies/research.md +155 -0
- package/strategies/roadmap.md +9 -0
- package/strategies/speckit.md +437 -0
- package/strategies/v0-20-contract.md +134 -0
- package/strategies/yolo.md +169 -0
- package/swarm/swarm.md +300 -0
- package/templates/COST-ESTIMATE.md +114 -0
- package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
- package/templates/agent-prompt-preamble.md +409 -0
- package/templates/agents-entry.md +211 -0
- package/templates/agents-entry.placeholders.md +75 -0
- package/templates/embed.go +20 -0
- package/templates/embed_test.go +36 -0
- package/templates/make-spec-example.md +9 -0
- package/templates/make-spec.md +246 -0
- package/templates/project.md.template +52 -0
- package/templates/specification.md +1 -0
- package/templates/swarm-greptile-poller-prompt.md +556 -0
- package/templates/user.md.template +31 -0
- package/tools/RWLDL.md +80 -0
- package/tools/greptile.md +141 -0
- package/tools/installer.md +23 -0
- package/tools/taskfile-migration.md +32 -0
- package/tools/taskfile.md +185 -0
- package/tools/telemetry.md +285 -0
- package/vbrief/schemas/cache-meta.schema.json +137 -0
- package/vbrief/schemas/candidates.schema.json +130 -0
- package/vbrief/schemas/codebase-map.schema.json +213 -0
- package/vbrief/schemas/lessons-pack.schema.json +134 -0
- package/vbrief/schemas/patterns-pack.schema.json +84 -0
- package/vbrief/schemas/rules-pack.schema.json +105 -0
- package/vbrief/schemas/skills-pack.schema.json +94 -0
- package/vbrief/schemas/slices.schema.json +87 -0
- package/vbrief/schemas/strategies-pack.schema.json +89 -0
- package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
- package/vbrief/schemas/vbrief-core.schema.json +1022 -0
- package/vbrief/vbrief.md +684 -0
- package/verification/integration.md +76 -0
- package/verification/plan-checking.md +85 -0
- package/verification/uat.md +60 -0
- 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.
|