@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.
- package/README.md +179 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +23 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +294 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +593 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/commands/task-loop.d.ts +11 -0
- package/dist/commands/task-loop.d.ts.map +1 -0
- package/dist/commands/task-loop.js +81 -0
- package/dist/commands/task-loop.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/file-system.d.ts +39 -0
- package/dist/lib/file-system.d.ts.map +1 -0
- package/dist/lib/file-system.js +79 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/mcp-config.d.ts +43 -0
- package/dist/lib/mcp-config.d.ts.map +1 -0
- package/dist/lib/mcp-config.js +109 -0
- package/dist/lib/mcp-config.js.map +1 -0
- package/dist/lib/mcp-config.test.d.ts +2 -0
- package/dist/lib/mcp-config.test.d.ts.map +1 -0
- package/dist/lib/mcp-config.test.js +285 -0
- package/dist/lib/mcp-config.test.js.map +1 -0
- package/dist/lib/merger.d.ts +41 -0
- package/dist/lib/merger.d.ts.map +1 -0
- package/dist/lib/merger.js +164 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.js +83 -0
- package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
- package/dist/lib/preset-update/file-copier.d.ts +59 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.js +220 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -0
- package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.test.js +297 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.d.ts +39 -0
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.js +92 -0
- package/dist/lib/preset-update/preset-finder.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.js +128 -0
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
- package/dist/lib/preset.d.ts +14 -0
- package/dist/lib/preset.d.ts.map +1 -0
- package/dist/lib/preset.js +52 -0
- package/dist/lib/preset.js.map +1 -0
- package/dist/lib/sync/backup-manager.d.ts +50 -0
- package/dist/lib/sync/backup-manager.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.js +117 -0
- package/dist/lib/sync/backup-manager.js.map +1 -0
- package/dist/lib/sync/backup-manager.test.d.ts +2 -0
- package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.test.js +155 -0
- package/dist/lib/sync/backup-manager.test.js.map +1 -0
- package/dist/lib/sync/batch-processor.d.ts +27 -0
- package/dist/lib/sync/batch-processor.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.js +46 -0
- package/dist/lib/sync/batch-processor.js.map +1 -0
- package/dist/lib/sync/batch-processor.test.d.ts +2 -0
- package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.test.js +110 -0
- package/dist/lib/sync/batch-processor.test.js.map +1 -0
- package/dist/lib/sync/category-validator.d.ts +36 -0
- package/dist/lib/sync/category-validator.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.js +46 -0
- package/dist/lib/sync/category-validator.js.map +1 -0
- package/dist/lib/sync/category-validator.test.d.ts +2 -0
- package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.test.js +89 -0
- package/dist/lib/sync/category-validator.test.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.d.ts +57 -0
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.js +81 -0
- package/dist/lib/sync/conflict-reporter.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.js +132 -0
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
- package/dist/lib/sync/diff-engine.d.ts +28 -0
- package/dist/lib/sync/diff-engine.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.js +118 -0
- package/dist/lib/sync/diff-engine.js.map +1 -0
- package/dist/lib/sync/diff-engine.test.d.ts +2 -0
- package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.test.js +133 -0
- package/dist/lib/sync/diff-engine.test.js.map +1 -0
- package/dist/lib/sync/file-filter.d.ts +40 -0
- package/dist/lib/sync/file-filter.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.js +171 -0
- package/dist/lib/sync/file-filter.js.map +1 -0
- package/dist/lib/sync/file-filter.test.d.ts +2 -0
- package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.test.js +179 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -0
- package/dist/lib/sync/hash-cache.d.ts +34 -0
- package/dist/lib/sync/hash-cache.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.js +51 -0
- package/dist/lib/sync/hash-cache.js.map +1 -0
- package/dist/lib/sync/hash-cache.test.d.ts +2 -0
- package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.test.js +110 -0
- package/dist/lib/sync/hash-cache.test.js.map +1 -0
- package/dist/lib/sync/integration.test.d.ts +2 -0
- package/dist/lib/sync/integration.test.d.ts.map +1 -0
- package/dist/lib/sync/integration.test.js +317 -0
- package/dist/lib/sync/integration.test.js.map +1 -0
- package/dist/lib/sync/marker-processor.d.ts +54 -0
- package/dist/lib/sync/marker-processor.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.js +208 -0
- package/dist/lib/sync/marker-processor.js.map +1 -0
- package/dist/lib/sync/marker-processor.test.d.ts +2 -0
- package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.test.js +245 -0
- package/dist/lib/sync/marker-processor.test.js.map +1 -0
- package/dist/lib/sync/metadata-manager.d.ts +46 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.js +129 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -0
- package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
- package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.test.js +137 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -0
- package/dist/lib/sync/performance.test.d.ts +2 -0
- package/dist/lib/sync/performance.test.d.ts.map +1 -0
- package/dist/lib/sync/performance.test.js +126 -0
- package/dist/lib/sync/performance.test.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/preset-update.d.ts +106 -0
- package/dist/types/preset-update.d.ts.map +1 -0
- package/dist/types/preset-update.js +5 -0
- package/dist/types/preset-update.js.map +1 -0
- package/dist/types/sync.d.ts +169 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +19 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
- package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
- package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
- package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
- package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
- package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
- package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
- package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
- package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
- package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
- package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
- package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
- package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
- package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
- package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
- package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
- package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
- package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
- package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
- package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
- package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
- package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
- package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
- package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
- package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
- package/presets/minimal/.claude/settings.json +174 -0
- package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
- package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
- package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
- package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
- package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
- package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
- package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
- package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
- package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
- package/presets/minimal/preset.yaml +111 -0
- package/presets/minimal/symlinks.json +45 -0
- package/scaffolds/.mcp.json +45 -0
- package/scaffolds/CLAUDE.md.template +318 -0
- package/scaffolds/steering/README.md +170 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
- package/scaffolds/steering/architecture.md +481 -0
- package/scaffolds/steering/branch-strategy.md +362 -0
- package/scaffolds/steering/commit-rules.md +217 -0
- package/scaffolds/steering/db-schema-design.md +609 -0
- package/scaffolds/steering/development/api-development.md +783 -0
- package/scaffolds/steering/development/backend-architecture.md +731 -0
- package/scaffolds/steering/development/frontend-development.md +1537 -0
- package/scaffolds/steering/development/review-guidelines.md +365 -0
- package/scaffolds/steering/development/testing-strategy.md +819 -0
- package/scaffolds/steering/development-workflow.md +429 -0
- package/scaffolds/steering/infrastructure/deployment.md +277 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
- package/scaffolds/steering/product.md +540 -0
- package/scaffolds/steering/task-management.md +367 -0
- package/templates/README.md +159 -0
- package/templates/design-simple.md.template +172 -0
- package/templates/design.md.template +327 -0
- package/templates/qa-test.md.template +125 -0
- 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アシスタントは、これらのルールを例外なく厳守してください。
|