dflow-sdd-ddd 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +209 -0
  3. package/bin/dflow.js +72 -0
  4. package/lib/init.js +1206 -0
  5. package/package.json +42 -0
  6. package/templates/core/scaffolding/CLAUDE-md-snippet.md +168 -0
  7. package/templates/core/scaffolding/Git-principles-gitflow.md +350 -0
  8. package/templates/core/scaffolding/Git-principles-trunk.md +375 -0
  9. package/templates/core/scaffolding/_conventions.md +175 -0
  10. package/templates/core/scaffolding/_overview.md +165 -0
  11. package/templates/core/scaffolding/architecture-decisions-README.md +34 -0
  12. package/templates/core/templates/CLAUDE.md +172 -0
  13. package/templates/core/templates/_index.md +118 -0
  14. package/templates/core/templates/aggregate-design.md +58 -0
  15. package/templates/core/templates/behavior.md +62 -0
  16. package/templates/core/templates/context-definition.md +64 -0
  17. package/templates/core/templates/context-map.md +25 -0
  18. package/templates/core/templates/events.md +19 -0
  19. package/templates/core/templates/glossary.md +15 -0
  20. package/templates/core/templates/lightweight-spec.md +82 -0
  21. package/templates/core/templates/models.md +47 -0
  22. package/templates/core/templates/phase-spec.md +195 -0
  23. package/templates/core/templates/rules.md +24 -0
  24. package/templates/core/templates/tech-debt.md +15 -0
  25. package/templates/webforms/scaffolding/CLAUDE-md-snippet.md +167 -0
  26. package/templates/webforms/scaffolding/Git-principles-gitflow.md +333 -0
  27. package/templates/webforms/scaffolding/Git-principles-trunk.md +316 -0
  28. package/templates/webforms/scaffolding/_conventions.md +139 -0
  29. package/templates/webforms/scaffolding/_overview.md +109 -0
  30. package/templates/webforms/templates/CLAUDE.md +157 -0
  31. package/templates/webforms/templates/_index.md +110 -0
  32. package/templates/webforms/templates/behavior.md +58 -0
  33. package/templates/webforms/templates/context-definition.md +57 -0
  34. package/templates/webforms/templates/context-map.md +25 -0
  35. package/templates/webforms/templates/glossary.md +15 -0
  36. package/templates/webforms/templates/lightweight-spec.md +82 -0
  37. package/templates/webforms/templates/models.md +39 -0
  38. package/templates/webforms/templates/phase-spec.md +187 -0
  39. package/templates/webforms/templates/rules.md +24 -0
  40. package/templates/webforms/templates/tech-debt.md +15 -0
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "dflow-sdd-ddd",
3
+ "version": "0.1.0",
4
+ "description": "Dflow SDD/DDD project scaffolding CLI",
5
+ "type": "commonjs",
6
+ "bin": {
7
+ "dflow": "bin/dflow.js",
8
+ "dflow-sdd-ddd": "bin/dflow.js"
9
+ },
10
+ "engines": {
11
+ "node": ">=22.0.0"
12
+ },
13
+ "files": [
14
+ "bin/",
15
+ "lib/",
16
+ "templates/",
17
+ "README.md"
18
+ ],
19
+ "keywords": [
20
+ "sdd",
21
+ "ddd",
22
+ "specification-driven-development",
23
+ "domain-driven-design",
24
+ "codex",
25
+ "claude-code"
26
+ ],
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+ssh://git@github.com/weilung/AI-Guided-SDD-DDD-Development-Skills.git"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/weilung/AI-Guided-SDD-DDD-Development-Skills/issues"
33
+ },
34
+ "homepage": "https://github.com/weilung/AI-Guided-SDD-DDD-Development-Skills#readme",
35
+ "scripts": {
36
+ "test": "node test/smoke.mjs"
37
+ },
38
+ "license": "MIT",
39
+ "publishConfig": {
40
+ "access": "public"
41
+ }
42
+ }
@@ -0,0 +1,168 @@
1
+ <!-- Scaffolding template maintained alongside Dflow skill. See proposals/PROPOSAL-010 for origin. -->
2
+
3
+ # CLAUDE.md Snippet — Dflow Adoption (Core edition)
4
+
5
+ > Source: `scaffolding/CLAUDE-md-snippet.md`
6
+ > Purpose: a minimal block you paste into (or replace with) your
7
+ > project's root `CLAUDE.md` when adopting Dflow.
8
+ > For the Core skill, the full reference template lives at
9
+ > `sdd-ddd-core-skill/templates/CLAUDE.md` — if you want the complete
10
+ > version, use that instead. This snippet is a lighter starting point.
11
+
12
+ ---
13
+
14
+ ## How to use this snippet
15
+
16
+ - **If your project has no `CLAUDE.md`**: `npx dflow-sdd-ddd init` will
17
+ create one using this snippet as the base
18
+ - **If your project already has a `CLAUDE.md`**: do NOT overwrite.
19
+ Merge the **two H2 blocks** below (`System Context` / `Development Workflow`) into your
20
+ existing file, preserving any project-specific content you already
21
+ have
22
+
23
+ The two-H2 structure (`System Context` / `Development Workflow`) is intentional and must be
24
+ preserved — it matches the Dflow skill's `templates/CLAUDE.md` and
25
+ keeps every project's `CLAUDE.md` scannable for AI in the same shape.
26
+
27
+ ---
28
+
29
+ ## Snippet to merge into `CLAUDE.md`
30
+
31
+ ```markdown
32
+ # Project: {系統名稱} — ASP.NET Core + DDD
33
+
34
+ **重要:所有開發工作都必須遵循本文件定義的流程。**
35
+
36
+ ---
37
+
38
+ ## System Context
39
+
40
+ > 技術棧、架構、業務領域、目錄結構
41
+
42
+ ### Background
43
+
44
+ - **Business Domain**: {業務領域概述,e.g. "企業差旅費用申報與核銷"}
45
+ - **Users / Customers**: {使用者 / 客戶描述}
46
+ - **Team**: {團隊組成;e.g. "全端工程團隊,3-5 人;DDD 經驗中等"}
47
+ - **Dflow Adoption Context**: {新專案 greenfield / 既有系統導入 / 遷移等}
48
+ - **Tech Stack**: ASP.NET Core {版本};EF Core / MediatR / {其他};
49
+ .NET {版本}
50
+
51
+ ### Architecture (Clean Architecture)
52
+
53
+ ```
54
+ Presentation → Application → Domain ← Infrastructure
55
+ ```
56
+
57
+ 依賴方向永遠朝內。Domain 層是核心,不依賴任何外部套件。
58
+
59
+ | Layer | Responsibilities | Must NOT |
60
+ |---|---|---|
61
+ | Domain | 業務規則、Aggregate、Value Object、Domain Event | 依賴外部套件、存取資料庫、處理 HTTP |
62
+ | Application | 編排領域操作、CQRS、驗證、DTO | 包含業務邏輯、直接存取資料庫 |
63
+ | Infrastructure | EF Core、外部 API、檔案存取 | 包含業務邏輯 |
64
+ | Presentation | HTTP 端點、Request/Response | 包含業務邏輯、直接操作 Domain 物件 |
65
+
66
+ ### Project Structure
67
+
68
+ 完整 specs 目錄結構見 Dflow skill `SKILL.md` § "Project Structure"。
69
+ 以下只列本專案當前狀態(`npx dflow-sdd-ddd init` 建立後可能還未全填):
70
+
71
+ ```
72
+ dflow/specs/
73
+ ├── domain/
74
+ │ ├── glossary.md
75
+ │ ├── context-map.md
76
+ │ └── {context}/ # 首個 bounded context 被 P007a 建立時會補齊
77
+ │ ├── context.md
78
+ │ ├── models.md
79
+ │ ├── rules.md
80
+ │ ├── behavior.md
81
+ │ └── events.md
82
+ ├── features/{active,completed,backlog}/
83
+ └── architecture/
84
+ ├── decisions/
85
+ └── tech-debt.md
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Development Workflow
91
+
92
+ > SDD 流程、Git 整合、Domain 層規範、AI 協作
93
+
94
+ ### Dflow Skill — Canonical Decision Logic Lives in the Skill
95
+
96
+ AI 的完整決策樹、Workflow Transparency、Ceremony Scaling 三層判準
97
+ (T1 Heavy / T2 Light / T3 Trivial)、所有 slash command 的 step-by-step
98
+ 流程 **不在此重述**,請以 Dflow skill 本體為準:
99
+
100
+ - `sdd-ddd-core-skill/SKILL.md`(決策樹 + Slash Commands 總表)
101
+ - `sdd-ddd-core-skill/references/` 內各 flow 文件
102
+
103
+ 本專案採用的 Dflow entry points:
104
+ - `npx dflow-sdd-ddd init` — 專案初始化(一次性,已執行過)
105
+ - `/dflow:new-feature` — 新功能
106
+ - `/dflow:new-phase` — 既有 active feature 加新 phase
107
+ - `/dflow:modify-existing` — 修改既有行為
108
+ - `/dflow:bug-fix` — Bug 修復
109
+ - `/dflow:finish-feature` — Feature 收尾 + 整合摘要
110
+ - `/dflow:pr-review` — PR 審查檢查點
111
+
112
+ ### Core Principles (Project Reaffirmed)
113
+
114
+ 1. **Spec Before Code** — 沒有規格就不寫實作
115
+ 2. **Domain at the Center** — 業務邏輯只存在於 Domain 層
116
+ 3. **Ubiquitous Language** — 使用 `dflow/specs/domain/glossary.md` 中定義的術語
117
+ 4. **One Aggregate per Transaction** — 單一操作只修改一個 Aggregate
118
+ 5. **Dependency Inversion** — Domain 定義介面,Infrastructure 實作
119
+
120
+ ### Domain Layer Rules (Hard Invariants)
121
+
122
+ - ❌ 不可有任何 NuGet 套件依賴(純 .NET 類型)
123
+ - ❌ 不可有 ORM 屬性(`[Table]`、`[Column]` 等)
124
+ - ❌ 不可有序列化屬性(`[JsonProperty]` 等)
125
+ - ❌ 不可有 `DbContext`、`IConfiguration`、`HttpClient`
126
+ - ✅ Entity 使用 `private set;`,透過方法改變狀態
127
+ - ✅ Value Object 使用 `record`,建構式驗證
128
+ - ✅ Aggregate Root 管理 `DomainEvents` 集合
129
+ - ✅ 其他 Aggregate 只透過 ID 引用
130
+
131
+ ### Project-Level Supplemental Rules
132
+
133
+ {此段由專案自行填入。例如:}
134
+
135
+ - **本專案使用 MediatR 做 Command / Query dispatch**,Application 層
136
+ Command / Query Handler 命名為 `{Name}CommandHandler` /
137
+ `{Name}QueryHandler`
138
+ - **整合測試使用 {Testcontainers / WebApplicationFactory / 其他}**;
139
+ CI 流程中自動跑
140
+ - **{其他團隊協議}**
141
+
142
+ ### Git Branching Strategy
143
+
144
+ 本專案採用:{填寫 Git Flow / trunk-based / GitHub Flow / 自訂}
145
+ 詳見 `dflow/specs/shared/Git-principles-{gitflow|trunk}.md`。
146
+
147
+ ### AI Collaboration Notes
148
+
149
+ - 開發者提出任何需求時,先引導建立 spec 和 Aggregate 設計
150
+ - 確認實作順序:Domain → Application → Infrastructure → Presentation
151
+ - 發現業務邏輯在錯誤的層時,指出並建議搬移
152
+ - 每次開發循環結束時,提醒更新術語表、models.md、events.md
153
+ - Review 時檢查 Domain 層的純淨度(零外部依賴)
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Notes
159
+
160
+ - This snippet is intentionally lighter than
161
+ `sdd-ddd-core-skill/templates/CLAUDE.md`. If you want the full version
162
+ (with detailed flow descriptions per slash command), use that
163
+ template instead
164
+ - The snippet does NOT re-copy the Dflow decision tree, Ceremony
165
+ Scaling criteria, or per-flow step details — those live in the
166
+ skill and change when the skill evolves
167
+ - Re-run `npx dflow-sdd-ddd init` will NOT overwrite an existing
168
+ `CLAUDE.md`; if you want to re-sync, merge manually
@@ -0,0 +1,350 @@
1
+ <!-- Scaffolding template maintained alongside Dflow skill. See proposals/PROPOSAL-010 for origin. -->
2
+
3
+ # Git Principles — Git Flow edition
4
+
5
+ > Created: {YYYY-MM-DD}
6
+ > Scope: project Git conventions. This project adopts **Git Flow** as
7
+ > its branching strategy.
8
+ > Audience: engineers + AI assistants performing Git operations.
9
+
10
+ Dflow itself is branching-strategy-neutral — it only requires the
11
+ feature-branch-per-feature convention (see the Dflow skill's
12
+ `references/git-integration.md`). This file records the Git Flow-
13
+ specific conventions chosen by this project.
14
+
15
+ If your project adopts a different branching strategy (single `main`,
16
+ trunk-based, GitHub Flow), use `Git-principles-trunk.md` instead.
17
+
18
+ ---
19
+
20
+ ## 1. Branch Structure
21
+
22
+ | Branch | Naming | Cut from | Merges to |
23
+ |--------|--------|----------|-----------|
24
+ | `main` / `master` | `main` | — | release / hotfix only |
25
+ | `develop` | `develop` | — | integration branch for features |
26
+ | feature | `feature/{SPEC-ID}-{slug}` | `develop` | `develop` |
27
+ | release | `release/{version}` | `develop` | `main` + `develop` |
28
+ | hotfix | `hotfix/{version}-hotfix{n}` | `main` | `main` + `develop` |
29
+
30
+ The `feature/{SPEC-ID}-{slug}` pattern is a **Dflow requirement** (not
31
+ a Git Flow requirement). It ties each feature branch to its
32
+ corresponding `dflow/specs/features/active/{SPEC-ID}-{slug}/` directory.
33
+
34
+ ### Feature Branch Workflow
35
+
36
+ ```bash
37
+ # 1. Create feature branch
38
+ git checkout develop
39
+ git pull origin develop
40
+ git checkout -b feature/{SPEC-ID}-{slug}
41
+
42
+ # 2. Stay in sync with develop during development
43
+ git fetch origin
44
+ git rebase origin/develop
45
+
46
+ # 3. Commit as you go (see § 2 below)
47
+ git add .
48
+ git commit -m "[{SPEC-ID}] {short description}"
49
+
50
+ # 4. Push
51
+ git push -u origin feature/{SPEC-ID}-{slug}
52
+ ```
53
+
54
+ ### Release Workflow
55
+
56
+ ```bash
57
+ # 1. Cut release branch
58
+ git checkout develop
59
+ git pull origin develop
60
+ git checkout -b release/{version}
61
+
62
+ # 2. Version bump / final adjustments (e.g. update AssemblyInfo,
63
+ # appsettings version, db migration baseline)
64
+ git add .
65
+ git commit -m "release {version}"
66
+
67
+ # 3. Merge to main with --no-ff
68
+ git checkout main
69
+ git pull origin main
70
+ git merge --no-ff release/{version} -m "Release {version}"
71
+
72
+ # 4. Tag
73
+ git tag -a {version} -m "{version summary}"
74
+
75
+ # 5. Back-merge into develop
76
+ git checkout develop
77
+ git merge --no-ff release/{version} -m "Merge release/{version} back to develop"
78
+
79
+ # 6. Push + cleanup
80
+ git push origin main develop --tags
81
+ git branch -d release/{version}
82
+ ```
83
+
84
+ ### Hotfix Workflow
85
+
86
+ ```bash
87
+ # 1. Cut hotfix branch from main
88
+ git checkout main
89
+ git pull origin main
90
+ git checkout -b hotfix/{version}-hotfix{n}
91
+
92
+ # 2. Fix + commit
93
+ git add .
94
+ git commit -m "hotfix{n}: {fix description}"
95
+
96
+ # 3. Merge to main + tag
97
+ git checkout main
98
+ git merge --no-ff hotfix/{version}-hotfix{n}
99
+ git tag -a {version}-hotfix{n} -m "{fix description}"
100
+
101
+ # 4. Back-merge to develop
102
+ git checkout develop
103
+ git merge --no-ff hotfix/{version}-hotfix{n}
104
+
105
+ # 5. Push + cleanup
106
+ git push origin main develop --tags
107
+ git branch -d hotfix/{version}-hotfix{n}
108
+ ```
109
+
110
+ **Hotfix spec requirement (team convention)**: Hotfixes often skip the
111
+ upfront SDD cycle for speed. This project commits to writing a
112
+ lightweight spec within **24 hours** after the hotfix lands, documenting
113
+ root cause + fix + (if applicable) a tech-debt entry in
114
+ `dflow/specs/architecture/tech-debt.md` if the bug reveals a systemic issue.
115
+ This is a **human-to-human commitment** — Dflow / AI cannot track the
116
+ 24-hour clock; the team enforces it in retros.
117
+
118
+ ---
119
+
120
+ ## 2. Commit Message Format
121
+
122
+ Commits must tie back to a SPEC-ID:
123
+
124
+ ```
125
+ [{SPEC-ID}] {short description}
126
+
127
+ {optional detailed body}
128
+
129
+ Co-Authored-By: Claude <noreply@anthropic.com> ← suggested, not mandatory
130
+ ```
131
+
132
+ ### Type prefix (recommended)
133
+
134
+ When applicable, prefix with a type (conventional commits-style):
135
+
136
+ | Type | Meaning |
137
+ |------|---------|
138
+ | feat | new feature |
139
+ | fix | bug fix |
140
+ | refactor | internal refactor (no behavior change) |
141
+ | docs | documentation only |
142
+ | style | formatting only |
143
+ | test | tests only |
144
+ | chore | build / tooling |
145
+
146
+ Example: `[EXP-001] feat: introduce ExpenseReport Aggregate with submission invariants`
147
+
148
+ ---
149
+
150
+ ## 3. Gate Checks
151
+
152
+ Before making key Git operations:
153
+
154
+ ### Before `git commit`
155
+
156
+ - [ ] If the change corresponds to a phase-spec, that phase-spec's
157
+ `Implementation Tasks` section items are checked (or remaining items have
158
+ justification in the spec's notes section)
159
+ - [ ] `_index.md` status reflects the current work (Phase Specs row
160
+ updated, `Resume Pointer` refreshed if the commit reaches a meaningful
161
+ checkpoint)
162
+ - [ ] Clean Architecture layer rules hold (Domain has no external
163
+ package deps, no business logic leaked into handlers /
164
+ controllers)
165
+
166
+ ### Before merging a feature branch to `develop`
167
+
168
+ - [ ] `/dflow:finish-feature` has run (or the equivalent Step 8.4
169
+ manual archival is complete)
170
+ - [ ] `_index.md` status = `completed`, feature directory moved to
171
+ `dflow/specs/features/completed/` via `git mv`
172
+ - [ ] BC layer synced: `dflow/specs/domain/{context}/rules.md`,
173
+ `behavior.md`, `events.md`, and (if cross-context)
174
+ `context-map.md` reflect the feature's net changes
175
+ - [ ] `dflow/specs/domain/glossary.md` updated with any new terms
176
+ - [ ] `dflow/specs/architecture/tech-debt.md` updated with any debt discovered
177
+ - [ ] Domain project has zero external NuGet dependencies
178
+ - [ ] No ORM / serialization attributes on Domain entities
179
+ - [ ] Domain unit tests pass (invariants + value object equality)
180
+
181
+ ---
182
+
183
+ ## 4. Integration Commit Message Conventions
184
+
185
+ `/dflow:finish-feature` emits a **Git-strategy-neutral Integration
186
+ Summary** (see `references/finish-feature-flow.md` in the Dflow skill).
187
+ This section specifies how to turn that Summary into the actual merge
188
+ commit message under Git Flow.
189
+
190
+ Git Flow typically uses `--no-ff` merges (keeps the branch history
191
+ visible). The recommended merge commit format is:
192
+
193
+ ```
194
+ Merge feature/{SPEC-ID}-{slug} into develop
195
+
196
+ {Feature Goal block, copied from Integration Summary}
197
+
198
+ Change Scope:
199
+ - BC: {context-name}
200
+ - Aggregate(s) touched: {Aggregate names}
201
+ - Phase Count: {N}
202
+ - Lightweight Changes: {n_t2} T2 + {n_t3} T3
203
+
204
+ Related BR-IDs:
205
+ - ADDED: BR-NN, BR-NN
206
+ - MODIFIED: BR-NN
207
+ - REMOVED: (none)
208
+
209
+ Domain Events introduced / modified: {Event names, or "(none)"}
210
+
211
+ Related SPEC-IDs: {SPEC-ID}{, follow-up SPEC-IDs if any}
212
+ ```
213
+
214
+ ### Concrete example
215
+
216
+ ```bash
217
+ git checkout develop
218
+ git pull origin develop
219
+ git merge --no-ff feature/SPEC-20260421-001-submit-expense-report \
220
+ -m "Merge feature/SPEC-20260421-001-submit-expense-report into develop" \
221
+ -m "Feature Goal: 實作 ExpenseReport 提交流程,含狀態機與事件發佈。" \
222
+ -m "Change Scope: BC Expense; Aggregate ExpenseReport; Phase Count 2; Lightweight Changes 0 T2" \
223
+ -m "Related BR-IDs: ADDED BR-12; MODIFIED BR-05" \
224
+ -m "Domain Events: ExpenseReportSubmitted" \
225
+ -m "Related SPEC-IDs: SPEC-20260421-001"
226
+ git push origin develop
227
+ ```
228
+
229
+ The `-m` flags stack as separate paragraphs in the commit body.
230
+ Alternatively, write a single `-m` with the entire body or open the
231
+ editor with `git merge --no-ff feature/...` and paste the Integration
232
+ Summary directly.
233
+
234
+ ### Why `--no-ff` is recommended here
235
+
236
+ Git Flow's value proposition is preserving branch history. `--no-ff`
237
+ makes the merge commit an explicit node on `develop`, which:
238
+ - Keeps the feature branch visible in `git log --graph`
239
+ - Lets `git log --first-parent develop` summarise features as single
240
+ commits
241
+ - Gives reviewers a single commit to reference for the whole feature
242
+
243
+ If your project prefers squash merge under Git Flow (unusual but valid),
244
+ use the trunk-edition template (`Git-principles-trunk.md`) for the
245
+ commit format; the branch model stays Git Flow.
246
+
247
+ ---
248
+
249
+ ## 5. Tags & Release Notes
250
+
251
+ ### Tag naming
252
+
253
+ ```bash
254
+ git tag -a v{major}.{minor}.{patch} -m "{release summary}"
255
+ # e.g. git tag -a v1.2.3 -m "Expense report submission + event handlers"
256
+ ```
257
+
258
+ ### `CHANGELOG.md`
259
+
260
+ Detailed version history lives in `CHANGELOG.md` at the repo root. One
261
+ section per release tag; link back to the SPEC-IDs included in that
262
+ release.
263
+
264
+ Example entry:
265
+
266
+ ```markdown
267
+ ## [1.2.3] — {YYYY-MM-DD}
268
+
269
+ ### Added
270
+ - {SPEC-20260421-001}: ExpenseReport submission flow with Domain Events
271
+
272
+ ### Changed
273
+ - {SPEC-20260415-003}: ApprovalPolicy Aggregate invariant tightened
274
+
275
+ ### Fixed
276
+ - {BUG-042}: Fix Money rounding in multi-currency totals
277
+ ```
278
+
279
+ ---
280
+
281
+ ## 6. AI Collaboration Rules (Project Policy)
282
+
283
+ Three categories:
284
+
285
+ ### Must-confirm operations (AI asks before running)
286
+
287
+ | Operation | Why |
288
+ |-----------|-----|
289
+ | `git commit` | Stage needs human review |
290
+ | `git push` | Publishing to shared remote |
291
+ | `git merge` (onto develop / main / release) | Shared-branch impact |
292
+ | Any `git rebase` that rewrites shared history | Force-push risk |
293
+
294
+ ### Forbidden operations
295
+
296
+ | Operation | Reason |
297
+ |-----------|--------|
298
+ | `git push -f` to `main` / `develop` | Overwrites other people's work |
299
+ | `git reset --hard` to a remote branch | Irreversible |
300
+ | `git commit --amend` on a pushed commit | Rewrites public history |
301
+ | Deleting `main` / `develop` | Protected branches |
302
+
303
+ ### Allowed without asking
304
+
305
+ | Operation |
306
+ |-----------|
307
+ | `git status` / `git diff` / `git log` / `git show` |
308
+ | `git fetch` (no merge) |
309
+ | `git stash` (local-only) |
310
+ | `git branch` (listing only) |
311
+
312
+ ### AI commit authorship (suggested, not enforced)
313
+
314
+ When an AI assists in producing a commit, appending a `Co-Authored-By`
315
+ line is **suggested** but not mandatory. The canonical form for
316
+ Claude is:
317
+
318
+ ```
319
+ Co-Authored-By: Claude <noreply@anthropic.com>
320
+ ```
321
+
322
+ For other AI assistants, use the vendor-documented author line (or omit
323
+ it). This is a project-level transparency convention, not a Dflow
324
+ requirement.
325
+
326
+ ---
327
+
328
+ ## 7. CI / CD
329
+
330
+ {Fill in this project's CI/CD pipeline shape: trigger (e.g. push to
331
+ develop, tag), stages (build → test → deploy), environments
332
+ (dev / staging / prod). Reference the pipeline config file if one
333
+ exists, e.g. `.github/workflows/ci.yml` or `azure-pipelines.yml`.}
334
+
335
+ ### Suggested CI gates for Clean Architecture
336
+
337
+ - Verify Domain project has zero (or allow-listed) NuGet deps
338
+ - Run Domain unit tests + Application tests on every PR
339
+ - Run Integration tests on `develop` and `release/*` branches
340
+ - Verify EF migrations build cleanly
341
+
342
+ ---
343
+
344
+ ## Related Documents
345
+
346
+ - `references/git-integration.md` in the Dflow skill — canonical
347
+ source for feature-branch-per-feature, `git mv` mandate, Gate Checks
348
+ - [System overview](_overview.md)
349
+ - [Spec conventions](_conventions.md)
350
+ - `CHANGELOG.md` at repo root