@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,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,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`.
|