@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,551 @@
|
|
|
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
|
+
# Interview Strategy
|
|
8
|
+
|
|
9
|
+
The standard Deft workflow: structured interview → SPECIFICATION. This is the
|
|
10
|
+
canonical source of truth for the interview process. All entry points (CLI via
|
|
11
|
+
`run spec`, agent via `deft-directive-setup` Phase 3, and `templates/make-spec.md`) MUST
|
|
12
|
+
follow this strategy.
|
|
13
|
+
|
|
14
|
+
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
15
|
+
|
|
16
|
+
**⚠️ See also**: [strategies/discuss.md](./discuss.md) | [strategies/yolo.md](./yolo.md) | [core/glossary.md](../glossary.md)
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
- ! Default strategy for all new projects
|
|
21
|
+
- ~ Projects with unclear or evolving requirements
|
|
22
|
+
- ~ When stakeholder alignment is needed before implementation
|
|
23
|
+
- ? Skip to SPECIFICATION phase if requirements are already fully documented
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Chaining Gate
|
|
28
|
+
|
|
29
|
+
Before spec generation, offer the user a chance to run preparatory strategies
|
|
30
|
+
or switch to a different spec-generating strategy. This gate is the single
|
|
31
|
+
orchestration point for strategy composition.
|
|
32
|
+
|
|
33
|
+
! The chaining gate MUST always be shown — even when the interview strategy is
|
|
34
|
+
invoked directly with no prior strategy.
|
|
35
|
+
! The chaining gate is a **blocking question**. The AI MUST present the options
|
|
36
|
+
and wait for the user to choose before proceeding.
|
|
37
|
+
⊗ Skip the chaining gate or proceed to the sizing gate without presenting it.
|
|
38
|
+
|
|
39
|
+
### When It Appears
|
|
40
|
+
|
|
41
|
+
- ! Before the [Sizing Gate](#sizing-gate) on every entry to the interview strategy
|
|
42
|
+
- ! After each completed preparatory strategy (recursive — the gate reappears)
|
|
43
|
+
- ! After the [Acceptance Gate](#acceptance-gate) when the user chooses "Revise" or "Switch"
|
|
44
|
+
|
|
45
|
+
### Options
|
|
46
|
+
|
|
47
|
+
Present two groups sourced from the `Type` column in
|
|
48
|
+
[strategies/README.md](./README.md#strategy-types):
|
|
49
|
+
|
|
50
|
+
**Default:**
|
|
51
|
+
1. **Proceed to specification** (default) — continue to the [Sizing Gate](#sizing-gate)
|
|
52
|
+
|
|
53
|
+
**Preparatory strategies** (type: `preparatory` — loops back to this gate on completion):
|
|
54
|
+
- Research — investigate the domain, find libraries, identify pitfalls
|
|
55
|
+
- Discuss — lock key decisions using Feynman technique
|
|
56
|
+
- Probe — adversarially stress-test the plan; surface assumptions, edge cases, and risks
|
|
57
|
+
- Map — analyze existing codebase conventions
|
|
58
|
+
|
|
59
|
+
~ Some preparatory strategies (currently map) also support standalone invocation
|
|
60
|
+
via `/deft:run:<name>` without entering the interview flow. When invoked standalone,
|
|
61
|
+
they present their own completion options instead of returning to this gate.
|
|
62
|
+
See `strategies/map.md` for standalone behavior.
|
|
63
|
+
|
|
64
|
+
**Switch spec-generating strategy** (type: `spec-generating` — replaces current pipeline):
|
|
65
|
+
- Yolo — auto-pilot, Johnbot picks all answers
|
|
66
|
+
- SpecKit — formal spec process with story readiness before implementation
|
|
67
|
+
|
|
68
|
+
### Run Count Annotations
|
|
69
|
+
|
|
70
|
+
- ! Previously-run strategies MUST display with a run count (e.g., `Research (ran 1×)`)
|
|
71
|
+
- ! No strategy is ever removed from the gate — users can re-run any strategy
|
|
72
|
+
- ! Run counts are read from `completedStrategies` in
|
|
73
|
+
[`./vbrief/plan.vbrief.json`](../vbrief/vbrief.md#strategy-chaining-fields)
|
|
74
|
+
|
|
75
|
+
### State Tracking
|
|
76
|
+
|
|
77
|
+
- ! On completion of a preparatory strategy, update `completedStrategies` in
|
|
78
|
+
`./vbrief/plan.vbrief.json`: increment `runCount`, append artifact paths
|
|
79
|
+
- ! Append all new artifact paths to the flat `artifacts` array
|
|
80
|
+
- ! The next strategy and eventual spec generation MUST load all artifacts
|
|
81
|
+
listed in `plan.vbrief.json`
|
|
82
|
+
|
|
83
|
+
### Example Prompt
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Ready to generate the specification. Before we proceed, would you like to:
|
|
87
|
+
|
|
88
|
+
1. Proceed to specification (default)
|
|
89
|
+
|
|
90
|
+
--- Preparatory (loops back) ---
|
|
91
|
+
2. Run a research phase — investigate the domain, find libraries, identify pitfalls
|
|
92
|
+
3. Run a discuss phase — lock key decisions using Feynman technique
|
|
93
|
+
4. Run a probe phase — adversarially stress-test the plan; surface assumptions, edge cases, and risks
|
|
94
|
+
5. Run a map phase — analyze existing codebase conventions
|
|
95
|
+
|
|
96
|
+
--- Switch strategy ---
|
|
97
|
+
6. Switch to yolo — auto-pilot picks all answers
|
|
98
|
+
7. Switch to speckit — formal spec process with story readiness before implementation
|
|
99
|
+
|
|
100
|
+
8. Other (specify)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Sizing Gate
|
|
106
|
+
|
|
107
|
+
Before the interview begins, determine project complexity to select the
|
|
108
|
+
appropriate path. The gate runs once, immediately after hearing what the user
|
|
109
|
+
wants to build.
|
|
110
|
+
|
|
111
|
+
! The sizing gate is a **blocking question**. The AI MUST propose a size and
|
|
112
|
+
wait for the user to confirm or override before asking any interview questions.
|
|
113
|
+
⊗ Combine the sizing proposal with the first interview question in the same message.
|
|
114
|
+
⊗ Proceed to interview questions before the user has explicitly confirmed the path.
|
|
115
|
+
|
|
116
|
+
### Sizing Signals
|
|
117
|
+
|
|
118
|
+
The AI SHOULD propose a size based on these signals; the user confirms or overrides:
|
|
119
|
+
|
|
120
|
+
- Number of features (≤5 → Light, >5 → Full)
|
|
121
|
+
- Number of components/services (1–2 → Light, 3+ → Full)
|
|
122
|
+
- Expected duration (days → Light, weeks/months → Full)
|
|
123
|
+
- Team/agent count (solo → Light, multi-agent/swarm → Full)
|
|
124
|
+
- Integration complexity (standalone → Light, external APIs/auth/DB → Full)
|
|
125
|
+
|
|
126
|
+
### PROJECT-DEFINITION.vbrief.json Override
|
|
127
|
+
|
|
128
|
+
`PROJECT-DEFINITION.vbrief.json` narratives ? declare `"Process": "Light"` or `"Process": "Full"` to skip the
|
|
129
|
+
gate entirely. `PROJECT.md` (deprecated) may also carry this field. If the field is absent or empty, the AI MUST ask.
|
|
130
|
+
|
|
131
|
+
## Workflow Overview
|
|
132
|
+
|
|
133
|
+
```mermaid
|
|
134
|
+
flowchart LR
|
|
135
|
+
subgraph interview ["Interview Strategy"]
|
|
136
|
+
G{"⚖️ Sizing Gate"}
|
|
137
|
+
I_L["💬 Interview<br/><i>Light path</i>"]
|
|
138
|
+
I_F["💬 Interview<br/><i>Full path</i>"]
|
|
139
|
+
P["📄 PRD<br/><i>What to build</i>"]
|
|
140
|
+
S["📋 SPECIFICATION<br/><i>How to build it</i>"]
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
G -->|"Light"| I_L
|
|
144
|
+
G -->|"Full"| I_F
|
|
145
|
+
I_L -->|"Ambiguity resolved"| S
|
|
146
|
+
I_F -->|"Ambiguity resolved"| P
|
|
147
|
+
P -->|"Approved"| S
|
|
148
|
+
S -->|"Ready"| IMPL["🔨 Implementation"]
|
|
149
|
+
|
|
150
|
+
style G fill:#f0abfc,stroke:#a21caf,color:#000
|
|
151
|
+
style I_L fill:#c4b5fd,stroke:#7c3aed,color:#000
|
|
152
|
+
style I_F fill:#c4b5fd,stroke:#7c3aed,color:#000
|
|
153
|
+
style P fill:#fef08a,stroke:#ca8a04,color:#000
|
|
154
|
+
style S fill:#6ee7b7,stroke:#059669,color:#000
|
|
155
|
+
style IMPL fill:#7dd3fc,stroke:#0284c7,color:#000
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Interview Rules (shared by both paths)
|
|
161
|
+
|
|
162
|
+
- ~ Use Claude AskInterviewQuestion when available (emulate if not)
|
|
163
|
+
- ! Ask **ONE** focused, non-trivial question per step
|
|
164
|
+
- ⊗ Ask multiple questions at once or sneak in "also" questions
|
|
165
|
+
- ~ Provide numbered answer options when appropriate
|
|
166
|
+
- ! Include "other" option for custom/unknown responses
|
|
167
|
+
- ! Indicate which option is RECOMMENDED
|
|
168
|
+
- ! When making an opinionated recommendation, state the principle (1 sentence)
|
|
169
|
+
- ! When done, append all questions asked and answers given to the working document
|
|
170
|
+
|
|
171
|
+
### Question Areas
|
|
172
|
+
|
|
173
|
+
- ! Missing decisions (language, framework, deployment)
|
|
174
|
+
- ! Edge cases (errors, boundaries, failure modes)
|
|
175
|
+
- ! Implementation details (architecture, patterns, libraries)
|
|
176
|
+
- ! Requirements (performance, security, scalability)
|
|
177
|
+
- ! UX/constraints (users, timeline, compatibility)
|
|
178
|
+
- ! Tradeoffs (simplicity vs features, speed vs safety)
|
|
179
|
+
|
|
180
|
+
### Transition Criteria (interview complete)
|
|
181
|
+
|
|
182
|
+
- ! All major decisions have answers
|
|
183
|
+
- ! Edge cases are addressed
|
|
184
|
+
- ! User has approved key tradeoffs (Interview strategy) or Johnbot has chosen recommended options (Yolo strategy)
|
|
185
|
+
- ~ Little ambiguity remains
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Light Path (small/medium projects)
|
|
190
|
+
|
|
191
|
+
Interview → scope vBRIEFs (date-prefixed in proposed/) + PROJECT-DEFINITION.vbrief.json + rendered SPECIFICATION (v0.20 contract).
|
|
192
|
+
|
|
193
|
+
### Flow
|
|
194
|
+
|
|
195
|
+
1. Sizing gate selects Light
|
|
196
|
+
2. Interview (rules above)
|
|
197
|
+
3. Write scope vBRIEF(s) to `./vbrief/proposed/YYYY-MM-DD-<slug>.vbrief.json` (date-prefixed per vbrief filename convention) with `status: proposed`
|
|
198
|
+
4. Run `task project:render` to create/update `./vbrief/PROJECT-DEFINITION.vbrief.json` (full project identity + items registry) and ensure all five lifecycle folders exist
|
|
199
|
+
5. Summarize decisions, ask user to review
|
|
200
|
+
6. On approval, use `task scope:promote` (or equivalent) to move scope vBRIEF(s) to `./vbrief/pending/` with `status: pending` / `approved`
|
|
201
|
+
7. Run `task spec:render` (SPECIFICATION.md is a rendered derivative with deprecation sentinel; `specification.vbrief.json` is legacy and is NOT written by this strategy on the v0.20 path)
|
|
202
|
+
|
|
203
|
+
! At the emission step (step 3 above), after writing the scope vBRIEF(s) to `./vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
204
|
+
|
|
205
|
+
### SPECIFICATION Structure (Light)
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
# [Project Name] SPECIFICATION
|
|
209
|
+
|
|
210
|
+
## Overview
|
|
211
|
+
Brief summary of the project.
|
|
212
|
+
|
|
213
|
+
## Requirements
|
|
214
|
+
|
|
215
|
+
### Functional Requirements
|
|
216
|
+
- FR-1: [requirement]
|
|
217
|
+
- FR-2: [requirement]
|
|
218
|
+
|
|
219
|
+
### Non-Functional Requirements
|
|
220
|
+
- NFR-1: Performance — [requirement]
|
|
221
|
+
- NFR-2: Security — [requirement]
|
|
222
|
+
|
|
223
|
+
## Architecture
|
|
224
|
+
High-level system design, components, data flow.
|
|
225
|
+
|
|
226
|
+
## Implementation Plan
|
|
227
|
+
|
|
228
|
+
### Phase 1: Foundation
|
|
229
|
+
#### Subphase 1.1: Setup
|
|
230
|
+
- Task 1.1.1: [description] (traces: FR-1)
|
|
231
|
+
- Dependencies: none
|
|
232
|
+
- Acceptance: [criteria]
|
|
233
|
+
|
|
234
|
+
#### Subphase 1.2: Core (depends on: 1.1)
|
|
235
|
+
- Task 1.2.1: [description] (traces: FR-2, NFR-1)
|
|
236
|
+
|
|
237
|
+
### Phase 2: Features (depends on: Phase 1)
|
|
238
|
+
...
|
|
239
|
+
|
|
240
|
+
## Testing Strategy
|
|
241
|
+
How to verify the implementation meets requirements.
|
|
242
|
+
|
|
243
|
+
## Deployment
|
|
244
|
+
How to ship it.
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
- ! Requirements section MUST appear in SPECIFICATION.md (embedded, no separate PRD)
|
|
248
|
+
- ! Each task SHOULD reference which FR/NFR it implements via `(traces: FR-N)`
|
|
249
|
+
- ⊗ Create a separate PRD.md on the Light path
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Full Path (large/complex projects)
|
|
254
|
+
|
|
255
|
+
Interview → PRD → scope vBRIEFs (date-prefixed in proposed/) + PROJECT-DEFINITION.vbrief.json + rendered SPECIFICATION (v0.20 contract).
|
|
256
|
+
|
|
257
|
+
### Flow
|
|
258
|
+
|
|
259
|
+
1. Sizing gate selects Full
|
|
260
|
+
2. Interview (rules above)
|
|
261
|
+
3. Generate `PRD.md` — user approval gate
|
|
262
|
+
4. Write scope vBRIEF(s) to `./vbrief/proposed/YYYY-MM-DD-<slug>.vbrief.json` (date-prefixed per vbrief filename convention) with `status: proposed`
|
|
263
|
+
5. Run `task project:render` to create/update `./vbrief/PROJECT-DEFINITION.vbrief.json` (full project identity + items registry) and ensure all five lifecycle folders exist
|
|
264
|
+
6. Summarize decisions, ask user to review
|
|
265
|
+
7. On approval, use `task scope:promote` (or equivalent) to move scope vBRIEF(s) to `./vbrief/pending/` with `status: pending` / `approved`
|
|
266
|
+
8. Run `task spec:render` (SPECIFICATION.md is a rendered derivative with deprecation sentinel; `specification.vbrief.json` is legacy and is NOT written by this strategy on the v0.20 path)
|
|
267
|
+
|
|
268
|
+
! At the emission step (step 4 above), after writing the scope vBRIEF(s) to `./vbrief/proposed/`, surface the GitHub-issue tracking hint from [emit-hints.md](./emit-hints.md) — name all three patterns (none / `--umbrella` / `--per-vbrief`).
|
|
269
|
+
|
|
270
|
+
### PRD Structure (Full path only)
|
|
271
|
+
|
|
272
|
+
```markdown
|
|
273
|
+
# [Project Name] PRD
|
|
274
|
+
|
|
275
|
+
## Problem Statement
|
|
276
|
+
What problem does this solve? Who has this problem?
|
|
277
|
+
|
|
278
|
+
## Goals
|
|
279
|
+
- Primary goal
|
|
280
|
+
- Secondary goals
|
|
281
|
+
- Non-goals (explicitly out of scope)
|
|
282
|
+
|
|
283
|
+
## User Stories
|
|
284
|
+
As a [user type], I want [capability] so that [benefit].
|
|
285
|
+
|
|
286
|
+
## Requirements
|
|
287
|
+
|
|
288
|
+
### Functional Requirements
|
|
289
|
+
- FR-1: [requirement]
|
|
290
|
+
- FR-2: [requirement]
|
|
291
|
+
|
|
292
|
+
### Non-Functional Requirements
|
|
293
|
+
- NFR-1: Performance — [requirement]
|
|
294
|
+
- NFR-2: Security — [requirement]
|
|
295
|
+
|
|
296
|
+
## Success Metrics
|
|
297
|
+
How do we know this succeeded?
|
|
298
|
+
|
|
299
|
+
## Open Questions
|
|
300
|
+
Any remaining decisions deferred to implementation.
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### PRD Guidelines
|
|
304
|
+
|
|
305
|
+
- ! Focus on WHAT, not HOW
|
|
306
|
+
- ! Use RFC 2119 language (MUST, SHOULD, MAY)
|
|
307
|
+
- ! Number all requirements for traceability
|
|
308
|
+
- ~ Include acceptance criteria for each requirement
|
|
309
|
+
- ⊗ Include implementation details or architecture
|
|
310
|
+
|
|
311
|
+
### PRD Transition Criteria
|
|
312
|
+
|
|
313
|
+
- ! All functional requirements documented
|
|
314
|
+
- ! Non-functional requirements specified
|
|
315
|
+
- ! User has reviewed and approved PRD
|
|
316
|
+
- ~ No blocking open questions remain
|
|
317
|
+
|
|
318
|
+
### PRD Approval Menu (#740, refs #767)
|
|
319
|
+
|
|
320
|
+
! After every PRD (Product Requirements Document) review, the agent MUST
|
|
321
|
+
present the canonical numbered approval menu defined in
|
|
322
|
+
[`../references/plain-english-ux.md`](../references/plain-english-ux.md)
|
|
323
|
+
`## Rule 4`. The menu replaces ambiguous `Accept / Refine / Edit`
|
|
324
|
+
buttons with action-shaped labels and follows the #767 framework rule
|
|
325
|
+
for deterministic numbered menus -- the **final two numbered options
|
|
326
|
+
MUST be `Discuss` and `Back`**, in that order.
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
What would you like to do with the PRD (Product Requirements Document)?
|
|
330
|
+
|
|
331
|
+
1. Approve and continue (lock the PRD, generate the SPECIFICATION)
|
|
332
|
+
2. Suggest changes (you describe what to change; the agent rewrites)
|
|
333
|
+
3. Edit yourself (you edit the PRD directly; the agent waits)
|
|
334
|
+
4. Discuss
|
|
335
|
+
5. Back
|
|
336
|
+
|
|
337
|
+
Enter confirm / b back / 0 discuss
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
! When `contracts/deterministic-questions.md` lands (Agent 1, #767), this
|
|
341
|
+
strategy MUST defer to that contract for canonical menu wording.
|
|
342
|
+
|
|
343
|
+
! When the PRD review surfaces a red/green diff, the agent MUST emit a
|
|
344
|
+
non-alarming preface above it (per `references/plain-english-ux.md` Rule 5):
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
Here's what changed since the previous draft. Red lines were removed,
|
|
348
|
+
green lines were added. Nothing here is broken -- this is a normal
|
|
349
|
+
review.
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
? Alternatively, the agent MAY hide the diff entirely on the first review
|
|
353
|
+
pass and present a plain-English summary of changes; show the diff only
|
|
354
|
+
on the second pass or when the user explicitly asks for it.
|
|
355
|
+
|
|
356
|
+
- ⊗ Use plain `Accept / Refine / Edit` buttons without explanatory
|
|
357
|
+
parentheticals.
|
|
358
|
+
- ⊗ Add a numbered approval menu where Discuss and Back are not the
|
|
359
|
+
final two options.
|
|
360
|
+
- ⊗ Show a red/green diff at first review without a non-alarming preface.
|
|
361
|
+
|
|
362
|
+
### SPECIFICATION Structure (Full)
|
|
363
|
+
|
|
364
|
+
```markdown
|
|
365
|
+
# [Project Name] SPECIFICATION
|
|
366
|
+
|
|
367
|
+
## Overview
|
|
368
|
+
Brief summary and link to PRD.
|
|
369
|
+
|
|
370
|
+
## Architecture
|
|
371
|
+
High-level system design, components, data flow.
|
|
372
|
+
|
|
373
|
+
## Implementation Plan
|
|
374
|
+
|
|
375
|
+
### Phase 1: Foundation
|
|
376
|
+
#### Subphase 1.1: Setup
|
|
377
|
+
- Task 1.1.1: [description] (traces: FR-1)
|
|
378
|
+
- Dependencies: none
|
|
379
|
+
- Acceptance: [criteria]
|
|
380
|
+
|
|
381
|
+
#### Subphase 1.2: Core (depends on: 1.1)
|
|
382
|
+
- Task 1.2.1: [description] (traces: FR-2, NFR-1)
|
|
383
|
+
|
|
384
|
+
### Phase 2: Features (depends on: Phase 1)
|
|
385
|
+
...
|
|
386
|
+
|
|
387
|
+
## Testing Strategy
|
|
388
|
+
How to verify the implementation meets requirements.
|
|
389
|
+
|
|
390
|
+
## Deployment
|
|
391
|
+
How to ship it.
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## SPECIFICATION Guidelines (both paths)
|
|
397
|
+
|
|
398
|
+
- ! Reference requirement IDs (FR-1, NFR-2, etc.) in each task
|
|
399
|
+
- ! Break into phases, subphases, tasks
|
|
400
|
+
- ! Mark ALL dependencies explicitly
|
|
401
|
+
- ! Design for parallel work (multiple agents)
|
|
402
|
+
- ! End each phase/subphase with tests that pass
|
|
403
|
+
- ~ Size tasks for 1-4 hours of work
|
|
404
|
+
- ~ Minimize inter-task dependencies
|
|
405
|
+
- ⊗ Write code (specification only)
|
|
406
|
+
|
|
407
|
+
### Task Format
|
|
408
|
+
|
|
409
|
+
Each task SHOULD include:
|
|
410
|
+
- ! Clear description
|
|
411
|
+
- ! Dependencies (or "none")
|
|
412
|
+
- ! Acceptance criteria
|
|
413
|
+
- ~ Estimated effort
|
|
414
|
+
- ? Assigned agent (for swarm mode)
|
|
415
|
+
|
|
416
|
+
### Transition Criteria
|
|
417
|
+
|
|
418
|
+
- ! All requirements mapped to tasks
|
|
419
|
+
- ! Dependencies form a valid DAG (no cycles)
|
|
420
|
+
- ! Scope vBRIEF(s) exist in `./vbrief/proposed/` (with date-prefixed filenames and `status: "proposed"`) or promoted to pending/active (with `status: "approved" / "pending"`)
|
|
421
|
+
- ! `./vbrief/PROJECT-DEFINITION.vbrief.json` is present (populated via `task project:render`)
|
|
422
|
+
- ! `SPECIFICATION.md` has been rendered via `task spec:render`
|
|
423
|
+
- ! Proceed to [Acceptance Gate](#acceptance-gate)
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Acceptance Gate
|
|
428
|
+
|
|
429
|
+
After spec generation, present the user with a final decision before
|
|
430
|
+
implementation begins.
|
|
431
|
+
|
|
432
|
+
! The acceptance gate MUST appear after every spec generation (both Light and
|
|
433
|
+
Full paths).
|
|
434
|
+
! The acceptance gate is a **blocking question**. The AI MUST present the
|
|
435
|
+
options and wait for the user to choose.
|
|
436
|
+
|
|
437
|
+
### Options
|
|
438
|
+
|
|
439
|
+
1. **Accept** — spec is approved, proceed to implementation
|
|
440
|
+
- ! Before handing off to implementation, verify the project toolchain is installed and functional — see [../coding/toolchain.md](../coding/toolchain.md); stop and report if any required tool is missing
|
|
441
|
+
2. **Revise** — return to the [Chaining Gate](#chaining-gate) with all prior
|
|
442
|
+
context preserved (completed strategies, artifacts). Run additional
|
|
443
|
+
preparatory strategies or regenerate the spec.
|
|
444
|
+
3. **Switch strategy** — return to the [Chaining Gate](#chaining-gate) to select
|
|
445
|
+
a different spec-generating strategy (e.g., switch from interview to speckit)
|
|
446
|
+
|
|
447
|
+
### SPECIFICATION Approval Menu (#740, refs #767)
|
|
448
|
+
|
|
449
|
+
! In addition to the structured Accept / Revise / Switch options above,
|
|
450
|
+
the agent MUST present the canonical numbered approval menu defined in
|
|
451
|
+
[`../references/plain-english-ux.md`](../references/plain-english-ux.md)
|
|
452
|
+
`## Rule 4`. The menu states what each choice will actually do, in
|
|
453
|
+
plain-English action-shaped labels, and follows the #767 framework rule
|
|
454
|
+
for deterministic numbered menus -- the **final two numbered options
|
|
455
|
+
MUST be `Discuss` and `Back`**, in that order.
|
|
456
|
+
|
|
457
|
+
```
|
|
458
|
+
What would you like to do with the SPECIFICATION?
|
|
459
|
+
|
|
460
|
+
1. Approve and continue (lock the SPEC, proceed to implementation)
|
|
461
|
+
2. Suggest changes (you describe what to change; the agent rewrites)
|
|
462
|
+
3. Edit yourself (you edit the SPEC directly; the agent waits)
|
|
463
|
+
4. Discuss
|
|
464
|
+
5. Back
|
|
465
|
+
|
|
466
|
+
Enter confirm / b back / 0 discuss
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
! Option 1 (`Approve and continue`) maps to the `Accept` option above
|
|
470
|
+
(which then runs the toolchain verification). Option 2 (`Suggest
|
|
471
|
+
changes`) and Option 3 (`Edit yourself`) both map to `Revise` (return to
|
|
472
|
+
the Chaining Gate with prior context preserved). The numbered menu is
|
|
473
|
+
the user-facing surface; the structured Accept / Revise / Switch above
|
|
474
|
+
is the agent's internal contract.
|
|
475
|
+
|
|
476
|
+
! When `contracts/deterministic-questions.md` lands (Agent 1, #767), this
|
|
477
|
+
strategy MUST defer to that contract for canonical menu wording.
|
|
478
|
+
|
|
479
|
+
! When the SPECIFICATION review surfaces a red/green diff, the agent
|
|
480
|
+
MUST emit a non-alarming preface above it (per
|
|
481
|
+
`references/plain-english-ux.md` Rule 5):
|
|
482
|
+
|
|
483
|
+
```
|
|
484
|
+
Here's what changed since the previous draft. Red lines were removed,
|
|
485
|
+
green lines were added. Nothing here is broken -- this is a normal
|
|
486
|
+
review.
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
? Alternatively, the agent MAY hide the diff entirely on the first
|
|
490
|
+
review pass and present a plain-English summary of changes; show the
|
|
491
|
+
diff only on the second pass or when the user explicitly asks for it.
|
|
492
|
+
|
|
493
|
+
- ⊗ Add a numbered approval menu where Discuss and Back are not the
|
|
494
|
+
final two options.
|
|
495
|
+
- ⊗ Show a red/green diff at first review without a non-alarming preface.
|
|
496
|
+
|
|
497
|
+
### Rejected Spec Archival
|
|
498
|
+
|
|
499
|
+
- ! When the user chooses "Revise" or "Switch", the current `SPECIFICATION.md`
|
|
500
|
+
MUST be archived to `history/specs/` before regeneration
|
|
501
|
+
- ! Archived name format: `SPECIFICATION-rejected-{ISO-timestamp}.md`
|
|
502
|
+
(e.g., `SPECIFICATION-rejected-2026-03-15T19-23-00Z.md`)
|
|
503
|
+
- ! If a `PRD.md` exists (Full path), it is NOT archived — only the spec
|
|
504
|
+
- ~ Include a one-line header in the archived file noting why it was rejected
|
|
505
|
+
|
|
506
|
+
### State Preservation
|
|
507
|
+
|
|
508
|
+
- ! All `completedStrategies` and `artifacts` in `plan.vbrief.json` MUST be
|
|
509
|
+
preserved across revisions
|
|
510
|
+
- ! The chaining gate will show updated run counts reflecting the full session history
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Artifacts Summary
|
|
515
|
+
|
|
516
|
+
**Light path:**
|
|
517
|
+
|
|
518
|
+
| Artifact | Purpose | Created By |
|
|
519
|
+
|----------|---------|------------|
|
|
520
|
+
| `./vbrief/proposed/YYYY-MM-DD-*.vbrief.json` | Scope story vBRIEFs (date-prefixed, v0.20 contract) | Interview |
|
|
521
|
+
| `./vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + items registry | `task project:render` (triggered by strategy) |
|
|
522
|
+
| `SPECIFICATION.md` | Generated plan with embedded Requirements (rendered derivative; deprecation sentinel) | `task spec:render` |
|
|
523
|
+
| (no `specification.vbrief.json`) | Legacy artifact — omitted on v0.20 path | — |
|
|
524
|
+
|
|
525
|
+
**Full path:**
|
|
526
|
+
|
|
527
|
+
| Artifact | Purpose | Created By |
|
|
528
|
+
|----------|---------|------------|
|
|
529
|
+
| `PRD.md` | What to build (approval gate) | Interview |
|
|
530
|
+
| `./vbrief/proposed/YYYY-MM-DD-*.vbrief.json` | Scope story vBRIEFs (date-prefixed, v0.20 contract) | Post-PRD interview |
|
|
531
|
+
| `./vbrief/PROJECT-DEFINITION.vbrief.json` | Project identity gestalt + items registry | `task project:render` (triggered by strategy) |
|
|
532
|
+
| `SPECIFICATION.md` | Generated implementation plan (rendered derivative; deprecation sentinel) | `task spec:render` |
|
|
533
|
+
| (no `specification.vbrief.json`) | Legacy artifact — omitted on v0.20 path | — |
|
|
534
|
+
|
|
535
|
+
## Invoking This Strategy
|
|
536
|
+
|
|
537
|
+
```
|
|
538
|
+
/deft:run:interview [project name]
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
Or explicitly:
|
|
542
|
+
|
|
543
|
+
```
|
|
544
|
+
Use the interview strategy to plan [project].
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
After completion:
|
|
548
|
+
|
|
549
|
+
```
|
|
550
|
+
implement the scope vBRIEFs in ./vbrief/active/
|
|
551
|
+
```
|