@einja/dev-cli 0.1.6

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 (243) hide show
  1. package/README.md +179 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +49 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/init.d.ts +3 -0
  7. package/dist/commands/init.d.ts.map +1 -0
  8. package/dist/commands/init.js +243 -0
  9. package/dist/commands/init.js.map +1 -0
  10. package/dist/commands/list.d.ts +2 -0
  11. package/dist/commands/list.d.ts.map +1 -0
  12. package/dist/commands/list.js +23 -0
  13. package/dist/commands/list.js.map +1 -0
  14. package/dist/commands/sync.d.ts +7 -0
  15. package/dist/commands/sync.d.ts.map +1 -0
  16. package/dist/commands/sync.js +294 -0
  17. package/dist/commands/sync.js.map +1 -0
  18. package/dist/commands/sync.test.d.ts +2 -0
  19. package/dist/commands/sync.test.d.ts.map +1 -0
  20. package/dist/commands/sync.test.js +593 -0
  21. package/dist/commands/sync.test.js.map +1 -0
  22. package/dist/commands/task-loop.d.ts +11 -0
  23. package/dist/commands/task-loop.d.ts.map +1 -0
  24. package/dist/commands/task-loop.js +81 -0
  25. package/dist/commands/task-loop.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/file-system.d.ts +39 -0
  31. package/dist/lib/file-system.d.ts.map +1 -0
  32. package/dist/lib/file-system.js +79 -0
  33. package/dist/lib/file-system.js.map +1 -0
  34. package/dist/lib/mcp-config.d.ts +43 -0
  35. package/dist/lib/mcp-config.d.ts.map +1 -0
  36. package/dist/lib/mcp-config.js +109 -0
  37. package/dist/lib/mcp-config.js.map +1 -0
  38. package/dist/lib/mcp-config.test.d.ts +2 -0
  39. package/dist/lib/mcp-config.test.d.ts.map +1 -0
  40. package/dist/lib/mcp-config.test.js +285 -0
  41. package/dist/lib/mcp-config.test.js.map +1 -0
  42. package/dist/lib/merger.d.ts +41 -0
  43. package/dist/lib/merger.d.ts.map +1 -0
  44. package/dist/lib/merger.js +164 -0
  45. package/dist/lib/merger.js.map +1 -0
  46. package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
  47. package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
  48. package/dist/lib/preset-update/cli-repo-detector.js +83 -0
  49. package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
  50. package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
  51. package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
  52. package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
  53. package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
  54. package/dist/lib/preset-update/file-copier.d.ts +59 -0
  55. package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
  56. package/dist/lib/preset-update/file-copier.js +220 -0
  57. package/dist/lib/preset-update/file-copier.js.map +1 -0
  58. package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
  59. package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
  60. package/dist/lib/preset-update/file-copier.test.js +297 -0
  61. package/dist/lib/preset-update/file-copier.test.js.map +1 -0
  62. package/dist/lib/preset-update/preset-finder.d.ts +39 -0
  63. package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
  64. package/dist/lib/preset-update/preset-finder.js +92 -0
  65. package/dist/lib/preset-update/preset-finder.js.map +1 -0
  66. package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
  67. package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
  68. package/dist/lib/preset-update/preset-finder.test.js +128 -0
  69. package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
  70. package/dist/lib/preset.d.ts +14 -0
  71. package/dist/lib/preset.d.ts.map +1 -0
  72. package/dist/lib/preset.js +52 -0
  73. package/dist/lib/preset.js.map +1 -0
  74. package/dist/lib/sync/backup-manager.d.ts +50 -0
  75. package/dist/lib/sync/backup-manager.d.ts.map +1 -0
  76. package/dist/lib/sync/backup-manager.js +117 -0
  77. package/dist/lib/sync/backup-manager.js.map +1 -0
  78. package/dist/lib/sync/backup-manager.test.d.ts +2 -0
  79. package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
  80. package/dist/lib/sync/backup-manager.test.js +155 -0
  81. package/dist/lib/sync/backup-manager.test.js.map +1 -0
  82. package/dist/lib/sync/batch-processor.d.ts +27 -0
  83. package/dist/lib/sync/batch-processor.d.ts.map +1 -0
  84. package/dist/lib/sync/batch-processor.js +46 -0
  85. package/dist/lib/sync/batch-processor.js.map +1 -0
  86. package/dist/lib/sync/batch-processor.test.d.ts +2 -0
  87. package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
  88. package/dist/lib/sync/batch-processor.test.js +110 -0
  89. package/dist/lib/sync/batch-processor.test.js.map +1 -0
  90. package/dist/lib/sync/category-validator.d.ts +36 -0
  91. package/dist/lib/sync/category-validator.d.ts.map +1 -0
  92. package/dist/lib/sync/category-validator.js +46 -0
  93. package/dist/lib/sync/category-validator.js.map +1 -0
  94. package/dist/lib/sync/category-validator.test.d.ts +2 -0
  95. package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
  96. package/dist/lib/sync/category-validator.test.js +89 -0
  97. package/dist/lib/sync/category-validator.test.js.map +1 -0
  98. package/dist/lib/sync/conflict-reporter.d.ts +57 -0
  99. package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
  100. package/dist/lib/sync/conflict-reporter.js +81 -0
  101. package/dist/lib/sync/conflict-reporter.js.map +1 -0
  102. package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
  103. package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
  104. package/dist/lib/sync/conflict-reporter.test.js +132 -0
  105. package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
  106. package/dist/lib/sync/diff-engine.d.ts +28 -0
  107. package/dist/lib/sync/diff-engine.d.ts.map +1 -0
  108. package/dist/lib/sync/diff-engine.js +118 -0
  109. package/dist/lib/sync/diff-engine.js.map +1 -0
  110. package/dist/lib/sync/diff-engine.test.d.ts +2 -0
  111. package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
  112. package/dist/lib/sync/diff-engine.test.js +133 -0
  113. package/dist/lib/sync/diff-engine.test.js.map +1 -0
  114. package/dist/lib/sync/file-filter.d.ts +40 -0
  115. package/dist/lib/sync/file-filter.d.ts.map +1 -0
  116. package/dist/lib/sync/file-filter.js +171 -0
  117. package/dist/lib/sync/file-filter.js.map +1 -0
  118. package/dist/lib/sync/file-filter.test.d.ts +2 -0
  119. package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
  120. package/dist/lib/sync/file-filter.test.js +179 -0
  121. package/dist/lib/sync/file-filter.test.js.map +1 -0
  122. package/dist/lib/sync/hash-cache.d.ts +34 -0
  123. package/dist/lib/sync/hash-cache.d.ts.map +1 -0
  124. package/dist/lib/sync/hash-cache.js +51 -0
  125. package/dist/lib/sync/hash-cache.js.map +1 -0
  126. package/dist/lib/sync/hash-cache.test.d.ts +2 -0
  127. package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
  128. package/dist/lib/sync/hash-cache.test.js +110 -0
  129. package/dist/lib/sync/hash-cache.test.js.map +1 -0
  130. package/dist/lib/sync/integration.test.d.ts +2 -0
  131. package/dist/lib/sync/integration.test.d.ts.map +1 -0
  132. package/dist/lib/sync/integration.test.js +317 -0
  133. package/dist/lib/sync/integration.test.js.map +1 -0
  134. package/dist/lib/sync/marker-processor.d.ts +54 -0
  135. package/dist/lib/sync/marker-processor.d.ts.map +1 -0
  136. package/dist/lib/sync/marker-processor.js +208 -0
  137. package/dist/lib/sync/marker-processor.js.map +1 -0
  138. package/dist/lib/sync/marker-processor.test.d.ts +2 -0
  139. package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
  140. package/dist/lib/sync/marker-processor.test.js +245 -0
  141. package/dist/lib/sync/marker-processor.test.js.map +1 -0
  142. package/dist/lib/sync/metadata-manager.d.ts +46 -0
  143. package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
  144. package/dist/lib/sync/metadata-manager.js +129 -0
  145. package/dist/lib/sync/metadata-manager.js.map +1 -0
  146. package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
  147. package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
  148. package/dist/lib/sync/metadata-manager.test.js +137 -0
  149. package/dist/lib/sync/metadata-manager.test.js.map +1 -0
  150. package/dist/lib/sync/performance.test.d.ts +2 -0
  151. package/dist/lib/sync/performance.test.d.ts.map +1 -0
  152. package/dist/lib/sync/performance.test.js +126 -0
  153. package/dist/lib/sync/performance.test.js.map +1 -0
  154. package/dist/types/index.d.ts +59 -0
  155. package/dist/types/index.d.ts.map +1 -0
  156. package/dist/types/index.js +2 -0
  157. package/dist/types/index.js.map +1 -0
  158. package/dist/types/preset-update.d.ts +106 -0
  159. package/dist/types/preset-update.d.ts.map +1 -0
  160. package/dist/types/preset-update.js +5 -0
  161. package/dist/types/preset-update.js.map +1 -0
  162. package/dist/types/sync.d.ts +169 -0
  163. package/dist/types/sync.d.ts.map +1 -0
  164. package/dist/types/sync.js +19 -0
  165. package/dist/types/sync.js.map +1 -0
  166. package/package.json +72 -0
  167. package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
  168. package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
  169. package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
  170. package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
  171. package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
  172. package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
  173. package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
  174. package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
  175. package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
  176. package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
  177. package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
  178. package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
  179. package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
  180. package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
  181. package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
  182. package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
  183. package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
  184. package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
  185. package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
  186. package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
  187. package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
  188. package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
  189. package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
  190. package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
  191. package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
  192. package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
  193. package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
  194. package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
  195. package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
  196. package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
  197. package/presets/minimal/.claude/settings.json +174 -0
  198. package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
  199. package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
  200. package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
  201. package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
  202. package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
  203. package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
  204. package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
  205. package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
  206. package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
  207. package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
  208. package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
  209. package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
  210. package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
  211. package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
  212. package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
  213. package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
  214. package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
  215. package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
  216. package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
  217. package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
  218. package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
  219. package/presets/minimal/preset.yaml +111 -0
  220. package/presets/minimal/symlinks.json +45 -0
  221. package/scaffolds/.mcp.json +45 -0
  222. package/scaffolds/CLAUDE.md.template +318 -0
  223. package/scaffolds/steering/README.md +170 -0
  224. package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
  225. package/scaffolds/steering/architecture.md +481 -0
  226. package/scaffolds/steering/branch-strategy.md +362 -0
  227. package/scaffolds/steering/commit-rules.md +217 -0
  228. package/scaffolds/steering/db-schema-design.md +609 -0
  229. package/scaffolds/steering/development/api-development.md +783 -0
  230. package/scaffolds/steering/development/backend-architecture.md +731 -0
  231. package/scaffolds/steering/development/frontend-development.md +1537 -0
  232. package/scaffolds/steering/development/review-guidelines.md +365 -0
  233. package/scaffolds/steering/development/testing-strategy.md +819 -0
  234. package/scaffolds/steering/development-workflow.md +429 -0
  235. package/scaffolds/steering/infrastructure/deployment.md +277 -0
  236. package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
  237. package/scaffolds/steering/product.md +540 -0
  238. package/scaffolds/steering/task-management.md +367 -0
  239. package/templates/README.md +159 -0
  240. package/templates/design-simple.md.template +172 -0
  241. package/templates/design.md.template +327 -0
  242. package/templates/qa-test.md.template +125 -0
  243. package/templates/requirements.md.template +254 -0
@@ -0,0 +1,362 @@
1
+ # ブランチ運用戦略
2
+
3
+ ## 概要
4
+
5
+ このドキュメントでは、タスク実行時のブランチ運用戦略を定義します。
6
+
7
+ ※ **IssueBranchBase**: Issue ブランチの作成元ブランチ(main, develop など)
8
+
9
+ ## ブランチ階層構造
10
+
11
+ ```
12
+ IssueBranchBase(main, develop など)
13
+ └─ issue/{issue番号} (Issueブランチ)
14
+ ├─ issue/{issue番号}-phase1 (フェーズ1ブランチ)
15
+ ├─ issue/{issue番号}-phase2 (フェーズ2ブランチ)
16
+ └─ issue/{issue番号}-phase3 (フェーズ3ブランチ)
17
+ ```
18
+
19
+ **注意**: Git の制約により、`issue/25` と `issue/25/phase1` は共存できません。
20
+ そのため、Phase ブランチはハイフン区切り(`issue/25-phase1`)を使用します。
21
+
22
+ ### ブランチと Worktree の関係
23
+
24
+ ```mermaid
25
+ graph TB
26
+ subgraph "Gitブランチ階層"
27
+ MAIN[IssueBranchBase] --> ISSUE[issue/123]
28
+ ISSUE --> PHASE1[issue/123-phase1]
29
+ ISSUE --> PHASE2[issue/123-phase2]
30
+ end
31
+
32
+ subgraph "Worktree(Vibe-Kanban管理)"
33
+ PHASE1 -.->|base_branch| WT1[worktree: task-1.1]
34
+ PHASE1 -.->|base_branch| WT2[worktree: task-1.2]
35
+ PHASE2 -.->|base_branch| WT3[worktree: task-2.1]
36
+ end
37
+ ```
38
+
39
+ ## ブランチ命名規則
40
+
41
+ ### 1. Issueブランチ
42
+
43
+ **命名規則**: `issue/{issue番号}`
44
+
45
+ **例**:
46
+ - `issue/123`
47
+ - `issue/456`
48
+ - `issue/789`
49
+
50
+ **作成元**: IssueBranchBase(`--branch` オプションで指定、デフォルトは main)
51
+
52
+ **目的**:
53
+ - GitHub Issue全体の作業を統合する親ブランチ
54
+ - すべてのフェーズブランチはこのブランチから派生
55
+
56
+ ### 2. フェーズごとのブランチ
57
+
58
+ **命名規則**: `issue/{issue番号}-phase{N}`
59
+
60
+ **例**:
61
+ - `issue/123-phase1`
62
+ - `issue/456-phase2`
63
+ - `issue/789-phase1`
64
+
65
+ **作成元**: Issueブランチ
66
+
67
+ **目的**:
68
+ - フェーズ単位での作業を分離
69
+ - Vibe-Kanbanタスクの実行ベースブランチとして使用(原則)
70
+ - フェーズ完了後、親ブランチにマージ
71
+
72
+ ## ブランチ命名例
73
+
74
+ | 仕様書ディレクトリパス | Issueブランチ | Phase 1ブランチ | Phase 2ブランチ |
75
+ |------------------|---------------|----------------|----------------|
76
+ | `docs/specs/issues/monorepo/issue123-turborepo-setup/` | `issue/123` | `issue/123-phase1` | `issue/123-phase2` |
77
+ | `docs/specs/issues/auth/issue456-magic-link/` | `issue/456` | `issue/456-phase1` | `issue/456-phase2` |
78
+ | `docs/specs/issues/user/issue789-profile/` | `issue/789` | `issue/789-phase1` | `issue/789-phase2` |
79
+
80
+ ---
81
+
82
+ ## task:loop 実行時のブランチ運用
83
+
84
+ ### タスク実行シーケンス
85
+
86
+ ```mermaid
87
+ sequenceDiagram
88
+ participant User as 開発者
89
+ participant TL as task:loop
90
+ participant Git as Git
91
+ participant VK as Vibe-Kanban
92
+ participant CC as Claude Code
93
+
94
+ User->>TL: pnpm task:loop 123
95
+
96
+ rect rgb(230,240,255)
97
+ Note over TL,Git: 初期化フェーズ(Issueブランチのみ)
98
+ TL->>Git: git fetch origin
99
+ TL->>Git: git branch issue/123 origin/{IssueBranchBase}
100
+ TL->>Git: git push -u origin issue/123
101
+ Note over TL: Phaseブランチは作成しない
102
+ end
103
+
104
+ rect rgb(255,245,230)
105
+ Note over TL,CC: タスク実行フェーズ(各タスク開始時)
106
+ TL->>Git: syncPhaseBranch()
107
+ Note over Git: 既存なら最新化、なければ作成
108
+ TL->>VK: createTask(1.1)
109
+ TL->>VK: startTaskAttempt(base: issue/123-phase1)
110
+ VK->>Git: git worktree add
111
+ VK->>CC: Claude Code 起動
112
+ CC->>Git: 実装 & コミット & push
113
+ CC->>VK: タスク完了
114
+ end
115
+
116
+ rect rgb(230,255,230)
117
+ Note over TL,Git: 完了検知フェーズ(15秒ポーリング)
118
+ TL->>VK: listTasks() で Done 検知
119
+ TL->>Git: GitHub Issue チェックボックス更新
120
+ TL->>TL: 次の着手可能タスクを選定
121
+ end
122
+
123
+ rect rgb(255,245,230)
124
+ Note over TL,CC: 次タスク開始時(同期済み)
125
+ TL->>Git: syncPhaseBranch()
126
+ Note over Git: リモートの最新を取得
127
+ TL->>VK: createTask(1.2)
128
+ TL->>VK: startTaskAttempt(base: issue/123-phase1)
129
+ Note over Git: 前タスクの変更が含まれる
130
+ end
131
+ ```
132
+
133
+ ### ブランチ CRUD タイミング
134
+
135
+ | 操作 | タイミング | 実行者 | 備考 |
136
+ |-----|----------|--------|------|
137
+ | **Create** Issue ブランチ | スクリプト起動時 | task:loop | IssueBranchBase から作成 |
138
+ | **Sync** Issue ブランチ | タスク着手時 | task:loop | リモート最新化 + IssueBranchBase の変更取り込み |
139
+ | **Create** Phase ブランチ | タスク着手時 | task:loop | 必要に応じて Issue ブランチから作成 |
140
+ | **Sync** Phase ブランチ | タスク着手時 | task:loop | リモート最新化 + Issue ブランチの変更取り込み |
141
+ | **Create** Worktree | タスク開始時 | Vibe-Kanban | 同期済み Phase ブランチをベースに作成 |
142
+ | **Update** Phase ブランチ | PR マージ時 | GitHub | タスク完了後のマージで更新 |
143
+ | **Merge** Phase → Issue | Phase 全タスク完了時 | task:loop | 完了した Phase を Issue ブランチに自動マージ |
144
+ | **Delete** Worktree | タスク完了後 | Vibe-Kanban | 72時間後に自動削除 |
145
+ | **Delete** Phase ブランチ | Issue 完了後 | 手動 | Issue ブランチにマージ後 |
146
+
147
+ ### Worktree ライフサイクル
148
+
149
+ ```mermaid
150
+ stateDiagram-v2
151
+ [*] --> Created: startTaskAttempt()
152
+ Created --> Running: Claude Code 起動
153
+ Running --> Completed: タスク完了
154
+ Completed --> InReview: PR 作成待ち
155
+ InReview --> Merged: PR マージ
156
+ Merged --> Cleanup: 72時間後
157
+ Cleanup --> [*]: 自動削除
158
+ ```
159
+
160
+ ### syncPhaseBranch の動作
161
+
162
+ タスク着手時に呼び出される `syncPhaseBranch` 関数は、以下のシーケンスでブランチを同期します:
163
+
164
+ ```mermaid
165
+ sequenceDiagram
166
+ participant Main as main<br/>(base)
167
+ participant Issue as issue/123
168
+ participant Phase as issue/123-phase1
169
+ participant WT as worktree
170
+
171
+ Note over Main,WT: syncPhaseBranch() 実行時
172
+
173
+ rect rgb(240, 248, 255)
174
+ Note over Main,Issue: Step 1: Issue ブランチの同期
175
+ Issue->>Issue: fetch origin/issue/123
176
+ Issue->>Issue: merge origin/issue/123 (pull)
177
+ Main->>Issue: merge main (base変更の取り込み)
178
+ Issue->>Issue: push origin
179
+ end
180
+
181
+ rect rgb(255, 248, 240)
182
+ Note over Issue,Phase: Step 2: Phase ブランチの同期
183
+ Phase->>Phase: fetch origin/issue/123-phase1
184
+ Phase->>Phase: merge origin/issue/123-phase1 (pull)
185
+ Issue->>Phase: merge issue/123 (他Phaseの変更取り込み)
186
+ Phase->>Phase: push origin
187
+ end
188
+
189
+ rect rgb(240, 255, 240)
190
+ Note over Phase,WT: Step 3: Worktree作成
191
+ Phase-->>WT: base_branch として使用
192
+ Note over WT: Claude Code がタスク実行
193
+ end
194
+ ```
195
+
196
+ **同期の原則**:
197
+ - ローカルの変更は保持(削除→再作成はしない)
198
+ - リモートとローカルが分岐した場合はマージで統合
199
+ - コンフリクト発生時はエラーで停止(手動解決を促す)
200
+
201
+ ### 変更の取り込み対象
202
+
203
+ | 取り込み元 | 取り込み先 | 取り込み内容 |
204
+ |-----------|-----------|-------------|
205
+ | IssueBranchBase | Issue ブランチ | 他の Issue やホットフィックスがマージした変更 |
206
+ | リモートの Issue ブランチ | ローカル Issue ブランチ | 他の Phase がマージした変更 |
207
+ | リモートの Phase ブランチ | ローカル Phase ブランチ | 同じ Phase の先行タスクがマージした変更 |
208
+ | Issue ブランチ | Phase ブランチ | 他の Phase がマージした変更(Phase 間の変更共有) |
209
+
210
+ ### 変更の伝播フロー
211
+
212
+ ```
213
+ IssueBranchBase(main, develop など)
214
+ ↓ マージ
215
+ issue/123
216
+ ↓ マージ
217
+ issue/123-phase1
218
+ ↓ base_branch として使用
219
+ worktree(タスク実行)
220
+ ```
221
+
222
+ これにより:
223
+ - IssueBranchBase の最新変更が全タスクに反映される
224
+ - 同じ Phase 内の先行タスクの変更が後続タスクに反映される
225
+ - 他の Phase の完了した変更も全ての Phase に伝播される
226
+
227
+ ---
228
+
229
+ ## 手動ブランチ操作
230
+
231
+ ### 初回実行時
232
+
233
+ ```bash
234
+ # 0. IssueBranchBase を決定(デフォルトブランチを取得する場合)
235
+ DEFAULT_BRANCH=$(git remote show origin | grep 'HEAD branch' | awk '{print $NF}')
236
+
237
+ # 1. Issueブランチを作成(IssueBranchBase から)
238
+ git checkout $DEFAULT_BRANCH
239
+ git pull origin $DEFAULT_BRANCH
240
+ git checkout -b issue/123
241
+
242
+ # 2. フェーズ1ブランチを作成(Issueブランチから)
243
+ git checkout -b issue/123-phase1
244
+
245
+ # 3. リモートにプッシュ
246
+ git push -u origin issue/123-phase1
247
+ ```
248
+
249
+ ### 次のフェーズへ移行時
250
+
251
+ ```bash
252
+ # 1. 親ブランチに戻る
253
+ git checkout issue/123
254
+
255
+ # 2. 前フェーズの完了内容をマージ
256
+ git merge issue/123-phase1
257
+
258
+ # 3. 次のフェーズブランチを作成
259
+ git checkout -b issue/123-phase2
260
+
261
+ # 4. リモートにプッシュ
262
+ git push -u origin issue/123-phase2
263
+ ```
264
+
265
+ ### 全フェーズ完了後
266
+
267
+ ```bash
268
+ # 1. Issueブランチに最終フェーズをマージ
269
+ git checkout issue/123
270
+ git merge issue/123-phase3
271
+
272
+ # 2. IssueBranchBase にPRを作成
273
+ gh pr create --base main --head issue/123 \
274
+ --title "feat: Monorepo Turborepoセットアップ完了" \
275
+ --body "全フェーズ完了。Phase 1-3の統合PR。"
276
+ ```
277
+
278
+ ---
279
+
280
+ ## ブランチマージ戦略
281
+
282
+ ### フェーズ完了時
283
+
284
+ ```bash
285
+ # フェーズブランチを親ブランチにマージ
286
+ git checkout issue/123
287
+ git merge --no-ff issue/123-phase1
288
+ git push origin issue/123
289
+ ```
290
+
291
+ ### タスク完了時
292
+
293
+ ```bash
294
+ # IssueブランチをIssueBranchBaseにPRとしてマージ
295
+ gh pr create --base main --head issue/123 \
296
+ --title "feat: Monorepo Turborepoセットアップ" \
297
+ --body "..."
298
+ ```
299
+
300
+ ---
301
+
302
+ ## ブランチ削除ポリシー
303
+
304
+ ### フェーズブランチ
305
+
306
+ - 親ブランチにマージ後、削除可能
307
+ - ただし、トレーサビリティのため残しておくことを推奨
308
+
309
+ ### Issueブランチ
310
+
311
+ - IssueBranchBase にマージ後、PRクローズと同時に削除
312
+
313
+ ---
314
+
315
+ ## 注意事項
316
+
317
+ 1. **ブランチ名の一貫性**: すべてのブランチは命名規則に従うこと
318
+ 2. **フェーズ番号の明示**: フェーズ番号は必ず数字で明示(phase1, phase2, ...)
319
+ 3. **親ブランチの更新**: フェーズ完了時は必ず親ブランチにマージすること
320
+ 4. **リモート同期**: ブランチ作成後は必ずリモートにプッシュすること
321
+
322
+ ---
323
+
324
+ ## トラブルシューティング
325
+
326
+ ### ブランチが存在しない場合
327
+
328
+ ```bash
329
+ # リモートから最新情報を取得
330
+ git fetch origin
331
+
332
+ # ブランチ一覧を確認
333
+ git branch -a
334
+ ```
335
+
336
+ ### ブランチ名を間違えた場合
337
+
338
+ ```bash
339
+ # ブランチ名を変更
340
+ git branch -m 旧ブランチ名 新ブランチ名
341
+
342
+ # リモートのブランチ名も更新
343
+ git push origin :旧ブランチ名 新ブランチ名
344
+ git push origin -u 新ブランチ名
345
+ ```
346
+
347
+ ### マージコンフリクト発生時
348
+
349
+ ```bash
350
+ # コンフリクトを解決後、マージを完了
351
+ git add .
352
+ git commit -m "Merge phase1 into task branch"
353
+ git push origin タスクブランチ名
354
+ ```
355
+
356
+ ---
357
+
358
+ ## 関連ドキュメント
359
+
360
+ - [task:loop コマンド](../instructions/task-vibe-kanban-loop.md) - コマンドの使用方法と Vibe-Kanban 操作手順
361
+ - [タスク管理](task-management.md) - タスク階層と粒度基準
362
+ - [開発ワークフロー](development-workflow.md) - 仕様書作成からタスク実行までの全体フロー
@@ -0,0 +1,217 @@
1
+ # コミットルール
2
+
3
+ ## 重要:コミット分割ルールの厳守について
4
+
5
+ - コミット分割ルールに違反した場合、重大なレビュープロセス阻害・履歴管理上の問題となるため、**絶対に違反しないこと**
6
+ - 万一違反が発生した場合は、必ず即座に報告し、再発防止策(作業前の分割計画明示・コミット粒度の事前確認など)を徹底すること
7
+ - 「まとめコミット」「複数目的の混在コミット」「コミット粒度の過剰肥大化」は**厳禁**
8
+ - このルールは全開発者・AIアシスタントが例外なく厳守すること
9
+
10
+ ## コミットの流れ
11
+
12
+ 1. **コミット前の確認**
13
+ - コードがコンパイルできる状態か
14
+ - テストが通る状態か
15
+ - 不要なデバッグコードやコメントが残っていないか
16
+
17
+ 2. **最新化**
18
+ ```bash
19
+ git pull --rebase
20
+ ```
21
+
22
+ 3. **現在の状態確認**
23
+ ```bash
24
+ git status
25
+ ```
26
+
27
+ 4. **コミット分割方針の策定**
28
+ - 差分を「コミットの分割方針」に応じて分割
29
+ - 具体的なコミット分割とその内容、コミットメッセージの合意を取る
30
+ - 分割された各コミットの内容は「コミット内容の確認事項」に留意
31
+
32
+ 5. **コミットの実行**
33
+ - 合意したコミット方針でコミットを行う
34
+
35
+ 6. **プッシュ前の品質チェック(必須)**
36
+ ```bash
37
+ pnpm prepush
38
+ ```
39
+ - リント、型チェック、テストを一括実行
40
+ - エラーがある場合は修正してから再度実行
41
+
42
+ 7. **プッシュ**
43
+ ```bash
44
+ git push
45
+ ```
46
+
47
+ ## コミットの分割方針
48
+
49
+ 以下の場合は**必ず別々のコミットに分割**してください:
50
+
51
+ ### 1. 異なる目的や種類の変更
52
+ - ソースコードの変更とドキュメントの更新
53
+ - 機能追加と設定ファイルの変更
54
+ - リファクタリングとバグ修正
55
+
56
+ ### 2. 異なるコンポーネントやモジュールの変更
57
+ - 複数のマイクロサービスやコンポーネントの変更
58
+ - フロントエンドとバックエンドの変更
59
+ - インフラ構成とアプリケーションコードの変更
60
+
61
+ ### 3. レビューの容易さを考慮した分割
62
+ - 大規模な変更は小さな論理的なまとまりに分割
63
+ - 設定変更とその設定を使用するコードの変更は分割
64
+ - テストコードの追加・更新は実装とは別のコミット
65
+
66
+ ## コミット分割の具体例
67
+
68
+ 以下のような変更がある場合の分割例:
69
+
70
+ ### 1. 構造的な変更
71
+ ```bash
72
+ git commit -m "refactor: ディレクトリ構造の整理
73
+
74
+ - 関連するファイルを適切なディレクトリに移動
75
+ - 不要なファイルの削除
76
+ - ファイル名の統一"
77
+ ```
78
+
79
+ ### 2. 実装の修正
80
+ ```bash
81
+ git commit -m "fix: 実装の修正
82
+
83
+ - バグの修正内容
84
+ - 影響範囲
85
+ - 修正理由"
86
+ ```
87
+
88
+ ### 3. テストの追加
89
+ ```bash
90
+ git commit -m "test: テストの追加
91
+
92
+ - 追加したテストの概要
93
+ - テストでカバーする機能や条件
94
+ - 既存テストの修正点"
95
+ ```
96
+
97
+ ### 4. 設定の更新
98
+ ```bash
99
+ git commit -m "chore: 設定ファイルの更新
100
+
101
+ - 更新した設定項目
102
+ - 更新理由
103
+ - 影響範囲"
104
+ ```
105
+
106
+ ### 5. ドキュメントの追加
107
+ ```bash
108
+ git commit -m "docs: ドキュメントの追加
109
+
110
+ - 追加したドキュメントの概要
111
+ - 主な内容
112
+ - 参照すべき関連ドキュメント"
113
+ ```
114
+
115
+ ## コミットメッセージの形式
116
+
117
+ ### 基本形式
118
+ - プレフィックス: タイプを示す短い識別子
119
+ - 日本語で記述
120
+ - 1行目に概要、2行目以降に詳細を記述
121
+
122
+ ### プレフィックスの使い分け
123
+
124
+ | プレフィックス | 用途 | 例 |
125
+ |--------------|------|-----|
126
+ | `feat:` | 新機能の追加 | `feat: ユーザー認証機能の追加` |
127
+ | `fix:` | バグ修正 | `fix: ログイン時のエラー修正` |
128
+ | `docs:` | ドキュメントの更新 | `docs: APIドキュメントの追加` |
129
+ | `style:` | コードスタイルの修正 | `style: フォーマットの統一` |
130
+ | `refactor:` | リファクタリング | `refactor: 認証処理の共通化` |
131
+ | `test:` | テストの追加・修正 | `test: ユニットテストの追加` |
132
+ | `chore:` | ビルドプロセスやツールの変更 | `chore: 依存パッケージの更新` |
133
+
134
+ ### 良いコミットメッセージの例
135
+
136
+ ```bash
137
+ feat: ユーザー認証機能の追加
138
+
139
+ - JWT認証の実装
140
+ - ログイン・ログアウトエンドポイントの追加
141
+ - 認証ミドルウェアの実装
142
+ - テストケースの追加
143
+
144
+ 影響範囲:
145
+ - /auth/*エンドポイント
146
+ - ミドルウェア
147
+ - ユーザーモデル
148
+ ```
149
+
150
+ ### 悪いコミットメッセージの例
151
+
152
+ ```bash
153
+ update files # 変更内容が不明確
154
+
155
+ fix some bugs # 具体的な修正内容が不明
156
+
157
+ various changes # 変更の種類や目的が不明確
158
+ ```
159
+
160
+ ## コミットの粒度と単位
161
+
162
+ - **1つのコミットは1つの論理的な変更のみ**を含める
163
+ - 機能追加やバグ修正は1つずつコミット
164
+ - リファクタリングは機能変更と分けてコミット
165
+ - 複数のファイルを変更する場合も、関連する変更は1つのコミットにまとめる
166
+ - **1つのコミットの変更量は、レビューしやすい程度(100行程度)に抑える**
167
+ - **コミット粒度の過剰肥大化・まとめコミットは禁止**
168
+
169
+ ## コミットのタイミング
170
+
171
+ - 機能の実装が完了した時点でコミット
172
+ - テストが通る状態でコミット
173
+ - 1日の作業終了時には必ずコミット
174
+ - 他の開発者と共有する前にコミット
175
+ - 大きな変更は小分けにしてコミット
176
+ - **コミットタイミングの逸脱やまとめコミットは禁止**
177
+
178
+ ## コミット内容の確認事項
179
+
180
+ - 変更内容がコミットメッセージと一致しているか
181
+ - 適切な粒度で分割されているか
182
+ - 関連する変更が漏れなくコミットされているか
183
+
184
+ ## プッシュ前の必須確認
185
+
186
+ **動作確認を必ず実行**: APIならcurl確認、スクリプトなら実行確認、画面ならMCPでブラウザ確認
187
+
188
+ **重要**: プッシュ前には必ず `pnpm prepush` を実行してください。このコマンドは以下のチェックを行います:
189
+
190
+ 1. **コードフォーマット**: Biomeによる自動フォーマット
191
+ 2. **リントチェック**: コード品質の確認
192
+ 3. **型チェック**: TypeScriptの型エラーがないか確認
193
+ 4. **テスト実行**: 全てのテストが通ることを確認
194
+
195
+ ```bash
196
+ # プッシュ前の必須コマンド
197
+ pnpm prepush
198
+
199
+ # エラーが出た場合は修正して再実行
200
+ # 全てのチェックが通ってからプッシュ
201
+ git push
202
+ ```
203
+
204
+ **注意**: `pnpm prepush` を実行せずにプッシュしてCIで失敗した場合、履歴が汚れるため必ず事前実行すること。
205
+
206
+ ## ブランチ戦略
207
+
208
+ | ブランチ | 用途 |
209
+ |---------|------|
210
+ | `main` | 本番環境用 |
211
+ | `develop` | 開発環境用 |
212
+ | `feature/*` | 機能開発用 |
213
+ | `hotfix/*` | 緊急修正用 |
214
+
215
+ ## まとめ
216
+
217
+ コミットルールの遵守は、プロジェクトの履歴管理とレビュープロセスの効率化に直結します。全ての開発者・AIアシスタントは、これらのルールを例外なく厳守してください。