dflow-sdd-ddd 0.7.0 → 0.8.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/CHANGELOG.md +26 -0
- package/docs/evaluating-dflow.en.md +14 -5
- package/docs/evaluating-dflow.md +14 -5
- package/docs/using-with-claude-code.en.md +17 -9
- package/docs/using-with-claude-code.md +15 -8
- package/lib/init.js +263 -52
- package/package.json +1 -1
- package/templates/brownfield/references/dflow-feedback-flow.md +179 -0
- package/templates/brownfield/references/drift-verification.md +183 -0
- package/templates/brownfield/references/finish-feature-flow.md +259 -0
- package/templates/brownfield/references/git-integration.md +312 -0
- package/templates/brownfield/references/init-project-flow.md +413 -0
- package/templates/brownfield/references/modify-existing-flow.md +444 -0
- package/templates/brownfield/references/new-feature-flow.md +367 -0
- package/templates/brownfield/references/new-phase-flow.md +259 -0
- package/templates/brownfield/references/pr-review-checklist.md +179 -0
- package/templates/brownfield/scaffolding/AI-AGENT-GUIDE.md +31 -4
- package/templates/brownfield/scaffolding/CLAUDE-md-snippet.md +12 -8
- package/templates/brownfield/scaffolding/Git-principles-gitflow.md +1 -1
- package/templates/brownfield/scaffolding/Git-principles-trunk.md +1 -1
- package/templates/brownfield/scaffolding/_conventions.md +1 -1
- package/templates/brownfield/scaffolding/_overview.md +3 -3
- package/templates/brownfield/templates/context-map.md +1 -1
- package/templates/brownfield/templates/glossary.md +1 -1
- package/templates/brownfield/templates/models.md +1 -1
- package/templates/brownfield/templates/rules.md +1 -1
- package/templates/brownfield/templates/tech-debt.md +1 -1
- package/templates/common/skill/SKILL.md +35 -0
- package/templates/greenfield/references/ddd-modeling-guide.md +351 -0
- package/templates/greenfield/references/dflow-feedback-flow.md +179 -0
- package/templates/greenfield/references/drift-verification.md +195 -0
- package/templates/greenfield/references/finish-feature-flow.md +280 -0
- package/templates/greenfield/references/git-integration.md +285 -0
- package/templates/greenfield/references/init-project-flow.md +447 -0
- package/templates/greenfield/references/modify-existing-flow.md +362 -0
- package/templates/greenfield/references/new-feature-flow.md +397 -0
- package/templates/greenfield/references/new-phase-flow.md +273 -0
- package/templates/greenfield/references/pr-review-checklist.md +130 -0
- package/templates/greenfield/scaffolding/AI-AGENT-GUIDE.md +31 -4
- package/templates/greenfield/scaffolding/CLAUDE-md-snippet.md +15 -13
- package/templates/greenfield/scaffolding/Git-principles-gitflow.md +1 -1
- package/templates/greenfield/scaffolding/Git-principles-trunk.md +1 -1
- package/templates/greenfield/scaffolding/_conventions.md +1 -1
- package/templates/greenfield/scaffolding/_overview.md +5 -3
- package/templates/greenfield/scaffolding/architecture-decisions-README.md +1 -1
- package/templates/greenfield/templates/context-map.md +1 -1
- package/templates/greenfield/templates/events.md +1 -1
- package/templates/greenfield/templates/glossary.md +1 -1
- package/templates/greenfield/templates/models.md +1 -1
- package/templates/greenfield/templates/rules.md +1 -1
- package/templates/greenfield/templates/tech-debt.md +1 -1
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# Init Project Flow — Greenfield Track
|
|
2
|
+
|
|
3
|
+
Internal flow spec for `npx dflow-sdd-ddd init` after the CLI selects the
|
|
4
|
+
Greenfield track. It also serves as the manual reference for environments
|
|
5
|
+
where Node.js/npm is unavailable.
|
|
6
|
+
|
|
7
|
+
This is not a skill slash command. Do not describe or invoke it as one.
|
|
8
|
+
|
|
9
|
+
This is a **one-time project bootstrap** flow. It sets up the `dflow/specs/`
|
|
10
|
+
directory structure, seeds project-level governance files from the packaged
|
|
11
|
+
`scaffolding/` template set, and points the developer at `/dflow:new-feature`
|
|
12
|
+
as the natural next command.
|
|
13
|
+
|
|
14
|
+
The V1 CLI clean cut does not migrate or dual-read a legacy root `specs/`
|
|
15
|
+
directory. If root `specs/` exists, warn that new Dflow files will be created
|
|
16
|
+
under `dflow/specs/`.
|
|
17
|
+
|
|
18
|
+
**Confirmations** in this flow:
|
|
19
|
+
- Step 2 → Step 3: information collected → present file-list preview
|
|
20
|
+
- Step 3 → Step 4: file-list confirmed → write
|
|
21
|
+
|
|
22
|
+
In the CLI, use ordinary yes/no confirmation. In the manual AI fallback,
|
|
23
|
+
ask for explicit confirmation in natural language; do not require
|
|
24
|
+
the workflow next command for init.
|
|
25
|
+
|
|
26
|
+
**Ceremony**: this flow is **meta-level** — it sets up the infrastructure
|
|
27
|
+
that subsequent T1 / T2 / T3 work will live in. It does not itself produce
|
|
28
|
+
a SPEC-ID, feature directory, or branch. It does not count against Ceremony
|
|
29
|
+
Scaling.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 1: Current-State Inventory
|
|
34
|
+
|
|
35
|
+
The CLI inspects the project root before prompting.
|
|
36
|
+
|
|
37
|
+
**Read** (using the Read / Glob / LS tools):
|
|
38
|
+
- Is there a `.git` directory? → repo exists
|
|
39
|
+
- Is there an existing non-empty `dflow/specs/` directory? → Dflow already initialized; abort
|
|
40
|
+
- Is there an empty `dflow/specs/` directory? → continue with existing-file protection
|
|
41
|
+
- Is there an existing root `specs/` directory? → legacy / other-tool warning only; do not read, copy, move, or rewrite it
|
|
42
|
+
- Is there an existing `CLAUDE.md` at the repo root? → project already
|
|
43
|
+
has AI-collab rules
|
|
44
|
+
- Is there an existing `src/*.Domain` project (or similar Clean-
|
|
45
|
+
Architecture layout)? → project is at least partially structured
|
|
46
|
+
|
|
47
|
+
Report findings plainly:
|
|
48
|
+
|
|
49
|
+
> "Repo inventory:
|
|
50
|
+
> - `.git`: present
|
|
51
|
+
> - `dflow/specs/`: not yet present → greenfield Dflow setup
|
|
52
|
+
> - `specs/`: present → legacy / other-tool directory; Dflow V1 will not
|
|
53
|
+
> migrate or modify it
|
|
54
|
+
> - `src/`: contains `MyApp.Domain`, `MyApp.Application`,
|
|
55
|
+
> `MyApp.Infrastructure`, `MyApp.WebAPI` → Clean Architecture layout
|
|
56
|
+
> detected
|
|
57
|
+
> - `CLAUDE.md`: present → will not overwrite; I'll offer a snippet
|
|
58
|
+
> to merge into it"
|
|
59
|
+
|
|
60
|
+
Or:
|
|
61
|
+
|
|
62
|
+
> "Repo inventory:
|
|
63
|
+
> - `dflow/specs/`: already contains files
|
|
64
|
+
> - `CLAUDE.md`: not present
|
|
65
|
+
>
|
|
66
|
+
> Dflow already appears initialized here. I will stop rather than risk
|
|
67
|
+
> mixing bootstrap versions."
|
|
68
|
+
|
|
69
|
+
Classify the scenario:
|
|
70
|
+
- **Greenfield**: no `dflow/specs/` at all → create full baseline
|
|
71
|
+
- **Empty Dflow namespace**: `dflow/specs/` exists but contains no files → continue
|
|
72
|
+
- **Already initialized**: non-empty `dflow/specs/` exists → abort cleanly
|
|
73
|
+
|
|
74
|
+
**→ Transition (step-internal)**: Step 1 complete. Announce
|
|
75
|
+
> "Step 1 complete (current-state inventory). Entering Step 2: Project
|
|
76
|
+
> Information."
|
|
77
|
+
|
|
78
|
+
and continue.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Step 2: Project Information (track-specific intake)
|
|
83
|
+
|
|
84
|
+
Ask these questions naturally — not as a checklist dump. Skip any
|
|
85
|
+
question where Step 1 already gave a confident answer.
|
|
86
|
+
|
|
87
|
+
### Q1. Project type
|
|
88
|
+
|
|
89
|
+
> "Is this project greenfield (fresh start with Dflow + Clean
|
|
90
|
+
> Architecture + DDD) or brownfield (existing code, now adopting
|
|
91
|
+
> Dflow)?"
|
|
92
|
+
|
|
93
|
+
Used to tune `_overview.md` and `_conventions.md` — brownfield projects
|
|
94
|
+
typically need extra emphasis on migration-like framing even when they
|
|
95
|
+
choose the Greenfield track for a new bounded area.
|
|
96
|
+
|
|
97
|
+
### Q2. Tech stack confirmation
|
|
98
|
+
|
|
99
|
+
> "Confirm the tech stack so I populate the right scaffolding
|
|
100
|
+
> variables: Framework + version (e.g. ASP.NET Core 9 / Spring Boot 3.3 /
|
|
101
|
+
> NestJS 10 / Django 5 / FastAPI 0.115)? Persistence layer (e.g.
|
|
102
|
+
> EF Core / Hibernate/JPA / Prisma / SQLAlchemy / GORM / Eloquent)?
|
|
103
|
+
> Mediator (e.g. MediatR / pipeline behavior — optional)? Test framework
|
|
104
|
+
> (e.g. xUnit / NUnit / JUnit / Jest / pytest / go test / PHPUnit)?"
|
|
105
|
+
|
|
106
|
+
Used to substitute `{Framework version}` / `{ORM version}` /
|
|
107
|
+
`{Mediator}` / `{Test framework}` placeholders in `_overview.md`.
|
|
108
|
+
|
|
109
|
+
### Q3. Migration background
|
|
110
|
+
|
|
111
|
+
> "Was this project ported / migrated from a prior stack (e.g. legacy
|
|
112
|
+
> presentation framework, monolith), or is it new-build on the chosen
|
|
113
|
+
> framework? If migrated, is there any legacy concern you'd like the
|
|
114
|
+
> overview to flag?"
|
|
115
|
+
|
|
116
|
+
If migrated → `_overview.md` can carry a short migration-context note.
|
|
117
|
+
Otherwise skip. In the Greenfield track, migration is not the first-class
|
|
118
|
+
concern, but noting origin is still useful.
|
|
119
|
+
|
|
120
|
+
### Q4. Project prose language
|
|
121
|
+
|
|
122
|
+
> "Project prose language for generated spec content? Choose an explicit
|
|
123
|
+
> language tag: `zh-TW`, `en`, `ja-JP`, or another BCP-47 tag."
|
|
124
|
+
|
|
125
|
+
Used to write `dflow/specs/shared/_conventions.md` under `## Prose
|
|
126
|
+
Language`. This value is required. Do not accept `any`, `skip`, `later`,
|
|
127
|
+
blank input, or prose descriptions such as "Traditional Chinese". Dflow
|
|
128
|
+
templates keep canonical English structural language; this setting controls
|
|
129
|
+
free prose inside generated spec sections.
|
|
130
|
+
|
|
131
|
+
### Q5. Optional starter files (multi-select)
|
|
132
|
+
|
|
133
|
+
> "Besides the mandatory baseline, which optional starter files do
|
|
134
|
+
> you want me to seed? You can check as many as apply:
|
|
135
|
+
>
|
|
136
|
+
> - [ ] `dflow/specs/shared/_overview.md` — system overview template
|
|
137
|
+
> - [ ] Git principles — **pick one** if your project has opinions
|
|
138
|
+
> about Git conventions (decision hint: **if you're not sure,
|
|
139
|
+
> pick trunk-based** — that's the default for GitHub / GitLab.
|
|
140
|
+
> Pick Git Flow only if you have a formal release cycle with
|
|
141
|
+
> dedicated release / hotfix branches):
|
|
142
|
+
> - [ ] `dflow/specs/shared/Git-principles-gitflow.md`
|
|
143
|
+
> - [ ] `dflow/specs/shared/Git-principles-trunk.md`"
|
|
144
|
+
|
|
145
|
+
Wait for answers. If the developer picks both Git-principles flavours,
|
|
146
|
+
confirm once more that they really want both (usually a project picks
|
|
147
|
+
one).
|
|
148
|
+
|
|
149
|
+
### Q6. AI coding agents (multi-select)
|
|
150
|
+
|
|
151
|
+
> "Which AI coding agents should Dflow configure?
|
|
152
|
+
>
|
|
153
|
+
> - [ ] `AGENTS.md` — Codex / Copilot coding agent
|
|
154
|
+
> - [ ] `CLAUDE.md` — Claude Code
|
|
155
|
+
> - [ ] `.github/copilot-instructions.md` — GitHub Copilot
|
|
156
|
+
>
|
|
157
|
+
> If you select any agent, Dflow will create
|
|
158
|
+
> `dflow/specs/shared/AI-AGENT-GUIDE.md` as the canonical guide. Root-level
|
|
159
|
+
> tool files stay thin and point back to that guide. Existing tool files are
|
|
160
|
+
> never overwritten; Dflow writes merge snippets under `dflow/specs/shared/`
|
|
161
|
+
> instead."
|
|
162
|
+
|
|
163
|
+
**→ Transition (step-internal)**: Step 2 complete. Announce
|
|
164
|
+
> "Step 2 complete (project information captured). Entering Step 3:
|
|
165
|
+
> File-list preview."
|
|
166
|
+
|
|
167
|
+
and continue.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Step 3: File-list Preview
|
|
172
|
+
|
|
173
|
+
Compute the full list of files that will be created / skipped, based on
|
|
174
|
+
Step 1 (current state) + Step 2 (developer choices).
|
|
175
|
+
|
|
176
|
+
### 3.1 Mandatory baseline (Greenfield track)
|
|
177
|
+
|
|
178
|
+
These files / directories are **always part of the baseline** — they
|
|
179
|
+
are what every Dflow-adopting Greenfield project is expected to have before
|
|
180
|
+
`/dflow:new-feature` runs cleanly:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
dflow/specs/
|
|
184
|
+
├── features/
|
|
185
|
+
│ ├── active/ # directory (empty)
|
|
186
|
+
│ ├── completed/ # directory (empty)
|
|
187
|
+
│ └── backlog/ # directory (empty)
|
|
188
|
+
├── domain/
|
|
189
|
+
│ ├── glossary.md # ← templates/glossary.md
|
|
190
|
+
│ └── context-map.md # ← templates/context-map.md
|
|
191
|
+
├── shared/
|
|
192
|
+
│ └── _conventions.md # ← scaffolding/_conventions.md (mandatory)
|
|
193
|
+
└── architecture/
|
|
194
|
+
├── tech-debt.md # ← templates/tech-debt.md
|
|
195
|
+
└── decisions/ # directory for ADRs
|
|
196
|
+
└── README.md # ← scaffolding/architecture-decisions-README.md
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Key Greenfield-track notes:
|
|
200
|
+
- `dflow/specs/architecture/tech-debt.md` (not `dflow/specs/migration/tech-debt.md`)
|
|
201
|
+
— Greenfield track uses `architecture/` as the cross-cutting directory.
|
|
202
|
+
The Brownfield track uses `migration/` instead; this split is an
|
|
203
|
+
F-05 decision from R7 review.
|
|
204
|
+
- `dflow/specs/domain/context-map.md` IS mandatory in the Greenfield track. Greenfield
|
|
205
|
+
projects typically plan bounded contexts up-front; the context-map
|
|
206
|
+
is where those relationships are captured. (Brownfield track treats
|
|
207
|
+
contexts as emergent and does not mandate this file.)
|
|
208
|
+
- `dflow/specs/architecture/decisions/` is a **directory**, with a short
|
|
209
|
+
README explaining the ADR naming convention
|
|
210
|
+
(`ADR-NNNN-{slug}.md` / dated / numbered). This gives future ADRs
|
|
211
|
+
a home without forcing a first ADR on Day 0.
|
|
212
|
+
- **`behavior.md` is NOT generated here.** Per F-05, per-context
|
|
213
|
+
`behavior.md` files are created by `/dflow:new-feature` Step 8.3
|
|
214
|
+
(completion flow) or by the P007a baseline-capture flow at the
|
|
215
|
+
moment the first bounded context is established. Creating empty
|
|
216
|
+
`behavior.md` files here would create stale placeholders.
|
|
217
|
+
|
|
218
|
+
### 3.2 Optional files (from Step 2 Q5)
|
|
219
|
+
|
|
220
|
+
Use the packaged scaffolding templates listed below; their project-local
|
|
221
|
+
outputs are under `dflow/specs/shared/` (the scaffolding root, not the
|
|
222
|
+
vendored workflow bundle). Compute the destination path:
|
|
223
|
+
|
|
224
|
+
| Scaffolding source | Destination in project |
|
|
225
|
+
|---|---|
|
|
226
|
+
| `scaffolding/_overview.md` | `dflow/specs/shared/_overview.md` |
|
|
227
|
+
| `scaffolding/_conventions.md` | `dflow/specs/shared/_conventions.md` (mandatory baseline) |
|
|
228
|
+
| `scaffolding/Git-principles-gitflow.md` | `dflow/specs/shared/Git-principles-gitflow.md` |
|
|
229
|
+
| `scaffolding/Git-principles-trunk.md` | `dflow/specs/shared/Git-principles-trunk.md` |
|
|
230
|
+
| `scaffolding/AI-AGENT-GUIDE.md` | `dflow/specs/shared/AI-AGENT-GUIDE.md` when at least one AI agent is selected |
|
|
231
|
+
| generated tool shim | `AGENTS.md`, `CLAUDE.md`, or `.github/copilot-instructions.md` when selected and missing |
|
|
232
|
+
| generated merge snippet | `dflow/specs/shared/*-snippet.md` when the selected tool file already exists |
|
|
233
|
+
|
|
234
|
+
### 3.3 Present the preview
|
|
235
|
+
|
|
236
|
+
Present the complete file list as two tables, separating create vs
|
|
237
|
+
skip, and wait for developer confirmation:
|
|
238
|
+
|
|
239
|
+
> "Based on Step 1 inventory + Step 2 answers, here is what I'll do:
|
|
240
|
+
>
|
|
241
|
+
> **Will create ({N} files):**
|
|
242
|
+
>
|
|
243
|
+
> | Path | Source |
|
|
244
|
+
> |---|---|
|
|
245
|
+
> | `dflow/specs/features/active/.gitkeep` | (directory placeholder) |
|
|
246
|
+
> | `dflow/specs/features/completed/.gitkeep` | (directory placeholder) |
|
|
247
|
+
> | `dflow/specs/features/backlog/.gitkeep` | (directory placeholder) |
|
|
248
|
+
> | `dflow/specs/domain/glossary.md` | `templates/glossary.md` (mandatory baseline) |
|
|
249
|
+
> | `dflow/specs/domain/context-map.md` | `templates/context-map.md` (mandatory baseline) |
|
|
250
|
+
> | `dflow/specs/shared/_conventions.md` | `scaffolding/_conventions.md` (mandatory baseline) |
|
|
251
|
+
> | `dflow/specs/architecture/tech-debt.md` | `templates/tech-debt.md` (mandatory baseline) |
|
|
252
|
+
> | `dflow/specs/architecture/decisions/README.md` | `scaffolding/architecture-decisions-README.md` (mandatory baseline) |
|
|
253
|
+
> | `dflow/specs/shared/_overview.md` | optional (you picked it) |
|
|
254
|
+
> | `dflow/specs/shared/Git-principles-trunk.md` | optional (you picked it) |
|
|
255
|
+
> | `dflow/specs/shared/AI-AGENT-GUIDE.md` | selected AI agent guide |
|
|
256
|
+
> | `CLAUDE.md` | selected tool shim because repo has no CLAUDE.md |
|
|
257
|
+
>
|
|
258
|
+
> **Will skip ({M} files — already present):**
|
|
259
|
+
>
|
|
260
|
+
> | Path | Reason |
|
|
261
|
+
> |---|---|
|
|
262
|
+
> | `dflow/specs/domain/glossary.md` | already exists (47 lines) |
|
|
263
|
+
>
|
|
264
|
+
> **Not creating** (per F-05 decision):
|
|
265
|
+
> - No `dflow/specs/domain/{context}/behavior.md` files. These are created
|
|
266
|
+
> later by `/dflow:new-feature` Step 8.3 or P007a when the first
|
|
267
|
+
> bounded context is established.
|
|
268
|
+
> - No pre-seeded ADR files in `dflow/specs/architecture/decisions/`. Write
|
|
269
|
+
> ADRs as architecture decisions come up; Day-0 is too early.
|
|
270
|
+
>
|
|
271
|
+
> Looks good? Reply 'yes' to proceed with the writes, or tell me what to
|
|
272
|
+
> adjust."
|
|
273
|
+
|
|
274
|
+
**→ Step Gate: Step 3 → Step 4**
|
|
275
|
+
|
|
276
|
+
Wait for explicit confirmation. If the developer asks to change the
|
|
277
|
+
selection, go back to Step 2 Q5 or Q6 and re-run Step 3.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Step 4: Write Files (placeholder fill-in + existing-file protection)
|
|
282
|
+
|
|
283
|
+
Execute the write plan agreed in Step 3. Use the Write tool (or
|
|
284
|
+
mkdir-equivalent for directories).
|
|
285
|
+
|
|
286
|
+
### 4.1 Existing-file protection (strict)
|
|
287
|
+
|
|
288
|
+
Before every single write, re-check: does the target path already
|
|
289
|
+
exist? If yes, **skip** — do not overwrite. Announce the skip:
|
|
290
|
+
|
|
291
|
+
> "Skipped `dflow/specs/domain/glossary.md` — already exists (unchanged)."
|
|
292
|
+
|
|
293
|
+
Only overwrite if the developer said explicitly "overwrite X" in
|
|
294
|
+
Step 2 (rare; usually a conscious reset during early adoption).
|
|
295
|
+
|
|
296
|
+
### 4.2 Placeholder substitution
|
|
297
|
+
|
|
298
|
+
When writing from `scaffolding/` sources, substitute the placeholders
|
|
299
|
+
captured in Step 2:
|
|
300
|
+
|
|
301
|
+
| Placeholder | Substitution source |
|
|
302
|
+
|---|---|
|
|
303
|
+
| `{YYYY-MM-DD}` | Today's date (ISO format) |
|
|
304
|
+
| `{System Name}` / `{系統名稱}` | From Step 2 or repo folder name |
|
|
305
|
+
| `{業務領域}` | From Step 2 Q1 / Q2 context |
|
|
306
|
+
| `{Language}` | From Step 2 Q2 |
|
|
307
|
+
| `{Framework}` | From Step 2 Q2 |
|
|
308
|
+
| `{Framework version}` | From Step 2 Q2 |
|
|
309
|
+
| `{ORM / persistence}` | From Step 2 Q2 |
|
|
310
|
+
| `{ORM version}` | From Step 2 Q2 |
|
|
311
|
+
| `{Mediator}` | From Step 2 Q2 |
|
|
312
|
+
| `{Test framework}` | From Step 2 Q2 |
|
|
313
|
+
| `{prose-language}` | From Step 2 Q4 |
|
|
314
|
+
|
|
315
|
+
For placeholders the developer did not provide, keep the `{placeholder}`
|
|
316
|
+
token in the emitted file and add a one-line TODO comment so they
|
|
317
|
+
notice:
|
|
318
|
+
|
|
319
|
+
```markdown
|
|
320
|
+
<!-- TODO: fill in 業務領域 on next review -->
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 4.3 Special case — AI agent instruction files
|
|
324
|
+
|
|
325
|
+
If the developer selected any AI coding agent in Q6, create
|
|
326
|
+
`dflow/specs/shared/AI-AGENT-GUIDE.md` as the canonical Dflow project
|
|
327
|
+
guide.
|
|
328
|
+
|
|
329
|
+
For each selected tool-specific file (`AGENTS.md`, `CLAUDE.md`,
|
|
330
|
+
`.github/copilot-instructions.md`):
|
|
331
|
+
|
|
332
|
+
- if the target file does not exist, create a small shim at the target
|
|
333
|
+
path that points to `dflow/specs/shared/AI-AGENT-GUIDE.md`
|
|
334
|
+
- if the target file already exists, do not overwrite it; write a merge
|
|
335
|
+
snippet under `dflow/specs/shared/` and report that the developer
|
|
336
|
+
should merge it manually
|
|
337
|
+
|
|
338
|
+
### 4.4 Directory-only entries
|
|
339
|
+
|
|
340
|
+
For directories that Git otherwise wouldn't track (empty `active/` /
|
|
341
|
+
`completed/` / `backlog/`), seed a `.gitkeep` file so the directory
|
|
342
|
+
persists across clones.
|
|
343
|
+
|
|
344
|
+
For `dflow/specs/architecture/decisions/`, seed a short `README.md` describing
|
|
345
|
+
the ADR naming convention (`ADR-NNNN-{slug}.md`) rather than a
|
|
346
|
+
`.gitkeep` — this serves as in-directory documentation for future
|
|
347
|
+
writers.
|
|
348
|
+
|
|
349
|
+
**→ Transition (step-internal)**: Step 4 complete. Announce
|
|
350
|
+
> "Step 4 complete (files written). Entering Step 5: Results + next
|
|
351
|
+
> steps."
|
|
352
|
+
|
|
353
|
+
and continue.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## Step 5: Results Report + Next-step Recommendation
|
|
358
|
+
|
|
359
|
+
Summarise what actually happened and point at the next command.
|
|
360
|
+
|
|
361
|
+
### 5.1 Summary report
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
Init complete. Summary:
|
|
365
|
+
|
|
366
|
+
Created ({N} files):
|
|
367
|
+
✓ dflow/specs/features/active/.gitkeep
|
|
368
|
+
✓ dflow/specs/features/completed/.gitkeep
|
|
369
|
+
✓ dflow/specs/features/backlog/.gitkeep
|
|
370
|
+
✓ dflow/specs/domain/glossary.md
|
|
371
|
+
✓ dflow/specs/domain/context-map.md
|
|
372
|
+
✓ dflow/specs/shared/_conventions.md
|
|
373
|
+
✓ dflow/specs/architecture/tech-debt.md
|
|
374
|
+
✓ dflow/specs/architecture/decisions/README.md
|
|
375
|
+
✓ dflow/specs/shared/_overview.md
|
|
376
|
+
✓ dflow/specs/shared/Git-principles-trunk.md
|
|
377
|
+
✓ CLAUDE.md (seeded from scaffolding snippet)
|
|
378
|
+
|
|
379
|
+
Skipped ({M} files already present):
|
|
380
|
+
- (none this run)
|
|
381
|
+
|
|
382
|
+
Deferred (not created here by design):
|
|
383
|
+
- dflow/specs/domain/{context}/behavior.md — created by /dflow:new-feature
|
|
384
|
+
Step 8.3 or P007a baseline capture
|
|
385
|
+
- dflow/specs/architecture/decisions/ADR-*.md — write ADRs as
|
|
386
|
+
architecture decisions come up, not speculatively
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### 5.2 Next-step recommendation
|
|
390
|
+
|
|
391
|
+
Tailor the recommendation to the Step 1 scenario:
|
|
392
|
+
|
|
393
|
+
**Greenfield**:
|
|
394
|
+
|
|
395
|
+
> "Structure is ready. Recommended next step:
|
|
396
|
+
> - Run `/dflow:new-feature` to start your first feature
|
|
397
|
+
> (this will create `dflow/specs/features/active/{SPEC-ID}-{slug}/` and
|
|
398
|
+
> walk you through spec → Aggregate design → implementation plan)
|
|
399
|
+
> - Your first feature will also establish your first bounded context;
|
|
400
|
+
> the completion flow will baseline `dflow/specs/domain/{context}/` at
|
|
401
|
+
> that point."
|
|
402
|
+
|
|
403
|
+
**Brownfield**:
|
|
404
|
+
|
|
405
|
+
> "Structure is ready. Recommended next step:
|
|
406
|
+
> - First, fill in `dflow/specs/shared/_overview.md` — especially the
|
|
407
|
+
> 'Current System State' and 'Known Issues' sections. Also
|
|
408
|
+
> pre-populate `dflow/specs/domain/context-map.md` if you already have a
|
|
409
|
+
> working understanding of your bounded contexts; otherwise let it
|
|
410
|
+
> emerge as features land.
|
|
411
|
+
> - Then run `/dflow:modify-existing` to work from an incoming change
|
|
412
|
+
> request (most common Brownfield entry), or `/dflow:new-feature`
|
|
413
|
+
> for a fresh piece of work.
|
|
414
|
+
> - When you touch a domain concept for the first time, the completion
|
|
415
|
+
> flow will prompt you to baseline it into
|
|
416
|
+
> `dflow/specs/domain/{context}/` — don't try to pre-fill everything
|
|
417
|
+
> up front."
|
|
418
|
+
|
|
419
|
+
**Already fully set up (Step 1 showed nothing to do)**:
|
|
420
|
+
|
|
421
|
+
> "Your project already has a complete Dflow layout — nothing to do.
|
|
422
|
+
> If you were expecting changes, let me know which file you wanted
|
|
423
|
+
> refreshed and I'll skip the safety-net."
|
|
424
|
+
|
|
425
|
+
### 5.3 Optional: review project-level files
|
|
426
|
+
|
|
427
|
+
Remind the developer to review files that have `{placeholder}` tokens
|
|
428
|
+
still in them:
|
|
429
|
+
|
|
430
|
+
> "A few files still have `{placeholder}` tokens that need your input:
|
|
431
|
+
> - `dflow/specs/shared/_overview.md`: `{業務領域}`, `{團隊}`,
|
|
432
|
+
> `{使用者規模}`
|
|
433
|
+
> - `dflow/specs/domain/context-map.md`: context list and relationships
|
|
434
|
+
> - `CLAUDE.md`: `{業務領域}`
|
|
435
|
+
>
|
|
436
|
+
> These are fine to leave for now; fill them in during your next
|
|
437
|
+
> review pass."
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Notes & references
|
|
442
|
+
|
|
443
|
+
- Scaffolding templates: packaged in the Dflow tarball; project-local
|
|
444
|
+
outputs land under `dflow/specs/shared/`
|
|
445
|
+
- `_index.md` feature template: `dflow/specs/shared/dflow-workflows/templates/_index.md`
|
|
446
|
+
(used by `/dflow:new-feature`, NOT by this flow)
|
|
447
|
+
- Git integration rules: `dflow/specs/shared/dflow-workflows/references/git-integration.md`
|