@einja/dev-cli 0.1.9 → 0.1.11
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 +30 -2
- package/dist/cli.js +3 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +69 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/sync.test.js +11 -25
- package/dist/commands/sync.test.js.map +1 -1
- package/dist/commands/task-loop/index.d.ts.map +1 -1
- package/dist/commands/task-loop/index.js +5 -2
- package/dist/commands/task-loop/index.js.map +1 -1
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts +227 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js +351 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts +46 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js +224 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.js +14 -8
- package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js +539 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -0
- package/dist/commands/task-loop/lib/conflict-handler.js +1 -1
- package/dist/commands/task-loop/lib/conflict-handler.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js +1129 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -0
- package/dist/commands/task-loop/lib/gh-setup.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/gh-setup.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/github-client.js +3 -3
- package/dist/commands/task-loop/lib/github-client.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/github-client.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/github-client.test.js +377 -0
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.js +4 -4
- package/dist/commands/task-loop/lib/issue-parser.js.map +1 -1
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js +854 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts +35 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js +150 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.d.ts +10 -4
- package/dist/commands/task-loop/lib/task-number-utils.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.js +19 -10
- package/dist/commands/task-loop/lib/task-number-utils.js.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js +379 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js +541 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js.map +1 -0
- package/dist/lib/file-system.js +1 -1
- package/dist/lib/file-system.js.map +1 -1
- package/dist/lib/mcp-config.d.ts.map +1 -1
- package/dist/lib/mcp-config.js +8 -4
- package/dist/lib/mcp-config.js.map +1 -1
- package/dist/lib/mcp-config.test.js +2 -2
- package/dist/lib/mcp-config.test.js.map +1 -1
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.js +12 -8
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/preset-update/file-copier.test.js +36 -5
- package/dist/lib/preset-update/file-copier.test.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.js +1 -1
- package/dist/lib/preset-update/preset-finder.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.test.js +11 -11
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -1
- package/dist/lib/preset.js +3 -3
- package/dist/lib/preset.js.map +1 -1
- package/dist/lib/sync/backup-manager.d.ts.map +1 -1
- package/dist/lib/sync/backup-manager.js +1 -1
- package/dist/lib/sync/backup-manager.js.map +1 -1
- package/dist/lib/sync/backup-manager.test.js +2 -2
- package/dist/lib/sync/backup-manager.test.js.map +1 -1
- package/dist/lib/sync/batch-processor.d.ts.map +1 -1
- package/dist/lib/sync/batch-processor.js.map +1 -1
- package/dist/lib/sync/batch-processor.test.js.map +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +2 -11
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/conflict-reporter.js +1 -2
- package/dist/lib/sync/conflict-reporter.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.test.js +2 -7
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.js +2 -4
- package/dist/lib/sync/diff-engine.js.map +1 -1
- package/dist/lib/sync/diff-engine.test.js.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +26 -3
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +26 -2
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/dist/lib/sync/hash-cache.d.ts.map +1 -1
- package/dist/lib/sync/hash-cache.js.map +1 -1
- package/dist/lib/sync/hash-cache.test.js +2 -2
- package/dist/lib/sync/hash-cache.test.js.map +1 -1
- package/dist/lib/sync/integration.test.js +289 -2
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +34 -10
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +142 -41
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +134 -1
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +4 -6
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/performance.test.js +2 -2
- package/dist/lib/sync/performance.test.js.map +1 -1
- package/dist/lib/sync/seed-synchronizer.d.ts +27 -0
- package/dist/lib/sync/seed-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.js +72 -0
- package/dist/lib/sync/seed-synchronizer.js.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.js +147 -0
- package/dist/lib/sync/seed-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/preset-update.d.ts +1 -1
- package/dist/types/sync.d.ts +4 -2
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js.map +1 -1
- package/package.json +1 -2
- package/presets/default/.claude/agents/einja/backend-architect.md +1131 -0
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/design-engineer.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-architect.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-coder.md +1 -37
- package/presets/{minimal → default}/.claude/agents/einja/task/task-committer.md +12 -6
- package/presets/{minimal → default}/.claude/agents/einja/task/task-executer.md +9 -9
- package/presets/{minimal → default}/.claude/commands/einja/frontend-implement.md +1 -1
- package/presets/{minimal → default}/.claude/commands/einja/update-docs-by-task-specs.md +6 -6
- package/presets/{minimal/.claude/skills/einja/api-development → default/.claude/skills/einja-api-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/backend-architecture → default/.claude/skills/einja-backend-architecture}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/frontend-development → default/.claude/skills/einja-frontend-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/output-format → default/.claude/skills/einja-output-format}/SKILL.md +54 -5
- package/presets/{minimal → default}/preset.yaml +1 -1
- package/presets/{minimal → default}/symlinks.json +10 -10
- package/scaffolds/cli/preset.yaml +110 -0
- package/scaffolds/example/README.md +35 -0
- package/scaffolds/example/specs/issues/issue999-example-task/design.md +879 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/README.md +150 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +268 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +179 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +392 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +459 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence/.gitkeep +0 -0
- package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +125 -0
- package/scaffolds/example/specs/issues/issue999-example-task/requirements.md +494 -0
- package/scaffolds/example/specs/issues/issue999-example-task/tasks.md +212 -0
- package/scaffolds/instructions/deployment-setup.md +458 -0
- package/scaffolds/instructions/environment-setup.md +509 -0
- package/scaffolds/instructions/local-server-environment-and-worktree.md +539 -0
- package/scaffolds/instructions/task-execute.md +649 -0
- package/scaffolds/instructions/task-vibe-kanban-loop.md +495 -0
- package/scaffolds/memory/archive/.gitkeep +0 -0
- package/scaffolds/memory/decisions.md +35 -0
- package/scaffolds/memory/patterns.md +37 -0
- package/scaffolds/steering/README.md +42 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +11 -0
- package/scaffolds/steering/architecture.md +11 -0
- package/scaffolds/steering/branch-strategy.md +11 -0
- package/scaffolds/steering/commit-rules.md +12 -1
- package/scaffolds/steering/db-schema-design.md +11 -0
- package/scaffolds/steering/development/api-development.md +15 -4
- package/scaffolds/steering/development/backend-architecture.md +11 -0
- package/scaffolds/steering/development/frontend-development.md +11 -0
- package/scaffolds/steering/development/review-guidelines.md +11 -0
- package/scaffolds/steering/development/testing-strategy.md +85 -0
- package/scaffolds/steering/development-workflow.md +11 -0
- package/scaffolds/steering/infrastructure/deployment.md +11 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +11 -0
- package/scaffolds/steering/product.md +11 -0
- package/scaffolds/steering/task-management.md +11 -0
- package/scaffolds/CLAUDE.md.template +0 -386
- /package/presets/{minimal → default}/.claude/agents/einja/docs/docs-updater.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/git/conflict-resolver.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-design-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-qa-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-requirements-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-tasks-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-modification-analyzer.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-qa.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-reviewer.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/spec-create.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/start-dev.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/sync-cursor-commands.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/task-exec.md +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/biome-format.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/typecheck.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
- /package/presets/{minimal → default}/.claude/settings.json +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/naming-conventions.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/prohibited-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/typescript-rules.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/directory-structure.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/props-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/styling-guide.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/conflict-resolver → default/.claude/skills/einja-conflict-resolver}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/general-context-loader → default/.claude/skills/einja-general-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/spec-context-loader → default/.claude/skills/einja-spec-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-commit → default/.claude/skills/einja-task-commit}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/failure-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/troubleshooting.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/usage-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/templates/qa-test-template.md +0 -0
- /package/{templates → scaffolds/templates}/README.md +0 -0
- /package/{templates → scaffolds/templates}/design-simple.md.template +0 -0
- /package/{templates → scaffolds/templates}/design.md.template +0 -0
- /package/{templates → scaffolds/templates}/qa-test.md.template +0 -0
- /package/{templates → scaffolds/templates}/requirements.md.template +0 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# `pnpm task:loop` コマンド
|
|
3
|
+
|
|
4
|
+
## 概要
|
|
5
|
+
|
|
6
|
+
GitHub Issue からタスクを自動選定し、Vibe-Kanban に登録して連続実行する npm スクリプト。
|
|
7
|
+
|
|
8
|
+
**⚠️ 重要**: 着手可能なタスクを全て並列で Doing に移し、Done 状態の変化を監視して次のタスクを開始するループ処理。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 使用方法
|
|
13
|
+
|
|
14
|
+
### 事前準備(初回のみ)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 1. 仕様書を作成(requirements.md, design.md, GitHub Issue へのタスク記述)
|
|
18
|
+
/spec-create <タスク内容の説明>
|
|
19
|
+
|
|
20
|
+
# 一旦ここまで終わったらDiscordでスレッドを作りチームにレビュー依頼
|
|
21
|
+
|
|
22
|
+
# 2. Vibe-Kanban を起動(別ターミナルで実行)
|
|
23
|
+
npx vibe-kanban
|
|
24
|
+
# → ブラウザが自動で開き、Kanbanボードが表示される
|
|
25
|
+
# → このボードで PR作成・レビュー・マージ操作を行う
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### コマンド実行
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 基本
|
|
32
|
+
pnpm task:loop <issue-number>
|
|
33
|
+
|
|
34
|
+
# 実行後、specで作成されたタスクが勝手に着手可能なものから実行開始されていくので、
|
|
35
|
+
# vibe-kanbanの画面を眺めて終わったものから自己レビュー、OKならPR作成ボタンでPR作成、チームのレビュー後、
|
|
36
|
+
# PRがマージされると自動で次のタスクが始まる(ちょっとラグあり)
|
|
37
|
+
|
|
38
|
+
# オプション指定
|
|
39
|
+
pnpm task:loop <issue-number> --max-group <number> --branch <branch>
|
|
40
|
+
|
|
41
|
+
# 例
|
|
42
|
+
pnpm task:loop 123 # Issue #123 の全タスクを実行
|
|
43
|
+
pnpm task:loop 123 --max-group 4 # Phase 4 まで実行
|
|
44
|
+
pnpm task:loop 123 --max-group 4.2 # タスクグループ 4.2 まで実行
|
|
45
|
+
pnpm task:loop 123 --branch develop # develop ブランチベースで実行
|
|
46
|
+
|
|
47
|
+
# ヘルプ
|
|
48
|
+
pnpm task:loop --help
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Vibe-Kanban 画面での操作
|
|
52
|
+
|
|
53
|
+
`npx vibe-kanban` で開いたボードで以下の操作を行います:
|
|
54
|
+
|
|
55
|
+
| 操作 | タイミング | 説明 |
|
|
56
|
+
|------|-----------|------|
|
|
57
|
+
| **タスク進捗確認** | 随時 | Todo → In Progress → In Review → Done の流れを確認 |
|
|
58
|
+
| **Create PR** | In Review 時 | ボタンをクリックして PR を自動作成 |
|
|
59
|
+
| **レビュー** | PR 作成後 | GitHub で PR の内容を確認 |
|
|
60
|
+
| **マージ** | レビュー完了後 | GitHub で PR をマージ(⚠️ 必ず GitHub 側で操作) |
|
|
61
|
+
|
|
62
|
+
**⚠️ 重要**: PR のマージは必ず GitHub 側で行ってください。マージを検知して Vibe-Kanban のタスクが自動で Done になります。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## ブランチ階層
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
main (デフォルト)
|
|
70
|
+
└── issue/17 ← main から作成
|
|
71
|
+
├── issue/17-phase1 ← issue/17 から作成
|
|
72
|
+
├── issue/17-phase2 ← issue/17 から作成
|
|
73
|
+
└── issue/17-phase3 ← issue/17 から作成
|
|
74
|
+
└── (作業ブランチ) ← Vibe-Kanban が自動作成
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- **main**: プロダクションブランチ
|
|
78
|
+
- **issue/N**: Issue 単位のブランチ(`--branch` で変更可能)
|
|
79
|
+
- **issue/N-phaseM**: Phase 単位のブランチ、タスクグループの作業ベース
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 開発手順(ステップバイステップ)
|
|
84
|
+
|
|
85
|
+
### 事前準備チェックリスト
|
|
86
|
+
|
|
87
|
+
- [ ] `npx @einja/dev-cli init` 実行済み(`pnpm task:loop` コマンドが使用可能)
|
|
88
|
+
- [ ] Docker が起動している
|
|
89
|
+
- [ ] `pnpm install` 済み
|
|
90
|
+
- [ ] Vibe-Kanban にプロジェクトが登録されている(後述)
|
|
91
|
+
- [ ] GitHub Issue にタスク一覧が記載されている
|
|
92
|
+
|
|
93
|
+
### Step 1: Vibe-Kanban を起動
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npx vibe-kanban
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
ブラウザが自動で開きます。このボードでタスクの進捗を確認します。
|
|
100
|
+
|
|
101
|
+
### Step 2: プロジェクト登録(初回のみ)
|
|
102
|
+
|
|
103
|
+
Vibe-Kanban にこのプロジェクトが登録されていない場合:
|
|
104
|
+
|
|
105
|
+
1. ブラウザで Projects ページを開く
|
|
106
|
+
2. 「Create project」ボタンをクリック
|
|
107
|
+
3. Git Repository Path にプロジェクトのパスを入力
|
|
108
|
+
```
|
|
109
|
+
/Users/yourname/path/to/your-project
|
|
110
|
+
```
|
|
111
|
+
4. 保存
|
|
112
|
+
|
|
113
|
+
### Step 3: タスクループを開始
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pnpm task:loop <issue-number>
|
|
117
|
+
|
|
118
|
+
# 例: Issue #17 の全タスクを実行
|
|
119
|
+
pnpm task:loop 17
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
コマンド実行後:
|
|
123
|
+
- 着手可能なタスクが自動で Vibe-Kanban に登録される
|
|
124
|
+
- 各タスクが並列で実行開始される
|
|
125
|
+
- 15秒ごとに進捗をポーリング
|
|
126
|
+
|
|
127
|
+
### Step 4: タスク進捗の確認
|
|
128
|
+
|
|
129
|
+
`npx vibe-kanban` で開いたボードでタスクの状態を確認:
|
|
130
|
+
|
|
131
|
+
| 状態 | 意味 |
|
|
132
|
+
|------|------|
|
|
133
|
+
| **Todo** | 未着手 |
|
|
134
|
+
| **In Progress** | 実行中(Claude Code が作業中) |
|
|
135
|
+
| **In Review** | レビュー待ち(PR作成が必要) |
|
|
136
|
+
| **Done** | 完了 |
|
|
137
|
+
|
|
138
|
+
### Step 5: In Review 状態の対応
|
|
139
|
+
|
|
140
|
+
タスクが **In Review** になったら:
|
|
141
|
+
|
|
142
|
+
1. **Vibe-Kanban で「Create PR」ボタンをクリック**
|
|
143
|
+
- PR が自動作成される
|
|
144
|
+
|
|
145
|
+
2. **GitHub で PR をレビュー**
|
|
146
|
+
- コードを確認
|
|
147
|
+
- 必要に応じて修正を依頼
|
|
148
|
+
|
|
149
|
+
3. **修正が必要な場合**
|
|
150
|
+
- PR にコメントを残す
|
|
151
|
+
- または Vibe-Kanban で「Request Changes」
|
|
152
|
+
|
|
153
|
+
4. **レビュー完了後、GitHub で PR をマージ**
|
|
154
|
+
- ⚠️ **必ず GitHub 側でマージすること**(Vibe-Kanban からはマージしない)
|
|
155
|
+
|
|
156
|
+
### Step 6: マージ後の自動処理
|
|
157
|
+
|
|
158
|
+
PR をマージすると:
|
|
159
|
+
|
|
160
|
+
1. Vibe-Kanban がマージを検知
|
|
161
|
+
2. タスクが自動で **Done** に変更
|
|
162
|
+
3. `pnpm task:loop` がこれを検知
|
|
163
|
+
4. GitHub Issue のチェックボックスが自動で `[x]` に更新
|
|
164
|
+
5. **Phase 内の全タスクが完了した場合、Phase ブランチを Issue ブランチに自動マージ**
|
|
165
|
+
6. 新たに着手可能になったタスクが自動で開始
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
169
|
+
│ PR マージ │
|
|
170
|
+
│ ↓ │
|
|
171
|
+
│ Vibe-Kanban: タスク → Done(自動) │
|
|
172
|
+
│ ↓ │
|
|
173
|
+
│ task:loop: Done 検知 │
|
|
174
|
+
│ ↓ │
|
|
175
|
+
│ GitHub Issue: チェックボックス更新(自動) │
|
|
176
|
+
│ ↓ │
|
|
177
|
+
│ Phase 全タスク完了? │
|
|
178
|
+
│ ├─ Yes → Phase ブランチを Issue ブランチにマージ │
|
|
179
|
+
│ └─ No → スキップ │
|
|
180
|
+
│ ↓ │
|
|
181
|
+
│ 次のタスクが自動開始 │
|
|
182
|
+
└─────────────────────────────────────────────────────────────┘
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Step 7: 全タスク完了
|
|
186
|
+
|
|
187
|
+
すべてのタスクが Done になると:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
🎉 すべてのタスクが完了しました!
|
|
191
|
+
✅ タスク自動実行ループ終了
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## トラブルシューティング
|
|
197
|
+
|
|
198
|
+
### プロジェクトが見つからないエラー
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
❌ プロジェクトが Vibe-Kanban に登録されていません
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**対処法**: Step 2 の手順でプロジェクトを登録してください。
|
|
205
|
+
|
|
206
|
+
### タスクが In Review のまま進まない
|
|
207
|
+
|
|
208
|
+
**原因**: PR がマージされていない
|
|
209
|
+
|
|
210
|
+
**対処法**:
|
|
211
|
+
1. Vibe-Kanban で「Create PR」をクリック
|
|
212
|
+
2. GitHub で PR をレビュー・マージ
|
|
213
|
+
|
|
214
|
+
### タスクが Done にならない
|
|
215
|
+
|
|
216
|
+
**原因**: GitHub 側でマージしていない(Vibe-Kanban 上で手動で Done にした)
|
|
217
|
+
|
|
218
|
+
**対処法**: 必ず GitHub の PR をマージしてください。マージを検知して自動で Done になります。
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 処理フロー
|
|
223
|
+
|
|
224
|
+
### アクター凡例
|
|
225
|
+
|
|
226
|
+
| アクター | 説明 | 操作種別 |
|
|
227
|
+
|---------|------|---------|
|
|
228
|
+
| 👤 **ユーザー** | 開発者(あなた) | 手動 |
|
|
229
|
+
| 🔄 **task:loop** | `pnpm task:loop` コマンド | 自動 |
|
|
230
|
+
| 🤖 **Claude Code** | Vibe-Kanban が起動する AI エージェント | 自動 |
|
|
231
|
+
| 📋 **Vibe-Kanban** | タスク管理ボード | 自動 |
|
|
232
|
+
| 🐙 **GitHub** | Issue / PR | - |
|
|
233
|
+
|
|
234
|
+
### フロー図
|
|
235
|
+
|
|
236
|
+
```mermaid
|
|
237
|
+
graph TD
|
|
238
|
+
subgraph User ["👤 ユーザー(手動)"]
|
|
239
|
+
U1([pnpm task:loop 実行])
|
|
240
|
+
U2[Vibe-Kanban で<br/>PR作成ボタンクリック]
|
|
241
|
+
U3[GitHub で<br/>PRレビュー・マージ]
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
subgraph TaskLoop ["🔄 task:loop(自動)"]
|
|
245
|
+
T1[Issue取得・解析]
|
|
246
|
+
T2[ブランチ作成]
|
|
247
|
+
T3[Vibe-Kanban 接続]
|
|
248
|
+
T4[タスク作成・開始指示]
|
|
249
|
+
T5[15秒ポーリング]
|
|
250
|
+
T6{Done検知?}
|
|
251
|
+
T7[GitHub Issue<br/>チェックボックス更新]
|
|
252
|
+
T8[次のタスク開始指示]
|
|
253
|
+
T9{全完了?}
|
|
254
|
+
T10([ループ終了])
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
subgraph Claude ["🤖 Claude Code(自動)"]
|
|
258
|
+
C1[コード実装]
|
|
259
|
+
C2[テスト実行]
|
|
260
|
+
C3[コミット・プッシュ]
|
|
261
|
+
C4[作業完了報告]
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
subgraph VibeKanban ["📋 Vibe-Kanban(自動)"]
|
|
265
|
+
V1[タスク状態管理]
|
|
266
|
+
V2[Claude Code 起動]
|
|
267
|
+
V3[PRマージ検知]
|
|
268
|
+
V4[タスク → Done]
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
subgraph GitHub ["🐙 GitHub"]
|
|
272
|
+
G1[Issue]
|
|
273
|
+
G2[PR]
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
U1 --> T1
|
|
277
|
+
T1 --> T2
|
|
278
|
+
T2 --> T3
|
|
279
|
+
T3 --> T4
|
|
280
|
+
T4 --> V1
|
|
281
|
+
V1 --> V2
|
|
282
|
+
V2 --> C1
|
|
283
|
+
C1 --> C2
|
|
284
|
+
C2 --> C3
|
|
285
|
+
C3 --> C4
|
|
286
|
+
C4 --> V1
|
|
287
|
+
|
|
288
|
+
T4 --> T5
|
|
289
|
+
T5 --> T6
|
|
290
|
+
T6 -->|No| T9
|
|
291
|
+
T6 -->|Yes| T7
|
|
292
|
+
T7 --> G1
|
|
293
|
+
T7 --> T8
|
|
294
|
+
T8 --> T9
|
|
295
|
+
T9 -->|No| T5
|
|
296
|
+
T9 -->|Yes| T10
|
|
297
|
+
|
|
298
|
+
V1 -->|In Review| U2
|
|
299
|
+
U2 --> G2
|
|
300
|
+
G2 --> U3
|
|
301
|
+
U3 --> V3
|
|
302
|
+
V3 --> V4
|
|
303
|
+
V4 --> T6
|
|
304
|
+
|
|
305
|
+
style U1 fill:#e3f2fd
|
|
306
|
+
style U2 fill:#e3f2fd
|
|
307
|
+
style U3 fill:#e3f2fd
|
|
308
|
+
style T10 fill:#4caf50,color:#fff
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### シーケンス図
|
|
312
|
+
|
|
313
|
+
```mermaid
|
|
314
|
+
sequenceDiagram
|
|
315
|
+
box rgb(227, 242, 253) 手動操作
|
|
316
|
+
participant User as 👤 ユーザー
|
|
317
|
+
end
|
|
318
|
+
box rgb(232, 245, 233) 自動処理
|
|
319
|
+
participant Script as 🔄 task:loop
|
|
320
|
+
participant Vibe as 📋 Vibe-Kanban
|
|
321
|
+
participant Claude as 🤖 Claude Code
|
|
322
|
+
end
|
|
323
|
+
box rgb(255, 243, 224) 外部サービス
|
|
324
|
+
participant GitHub as 🐙 GitHub
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
Note over User: 【開始】
|
|
328
|
+
User->>Script: pnpm task:loop 123
|
|
329
|
+
|
|
330
|
+
Note over Script: 【初期化フェーズ】
|
|
331
|
+
Script->>GitHub: Issue 取得・解析
|
|
332
|
+
Script->>Script: ブランチ作成(issue/123, issue/123-phase1...)
|
|
333
|
+
Script->>Vibe: MCP 接続
|
|
334
|
+
|
|
335
|
+
Note over Script: 【タスク開始】
|
|
336
|
+
Script->>Script: 着手可能タスク選定
|
|
337
|
+
Script->>Vibe: タスク作成
|
|
338
|
+
Script->>Vibe: start_task_attempt(実行開始指示)
|
|
339
|
+
Vibe->>Claude: Claude Code 起動
|
|
340
|
+
|
|
341
|
+
Note over Claude: 【タスク実行】
|
|
342
|
+
Claude->>Claude: コード実装
|
|
343
|
+
Claude->>Claude: テスト実行
|
|
344
|
+
Claude->>GitHub: コミット・プッシュ
|
|
345
|
+
Claude->>Vibe: 作業完了報告
|
|
346
|
+
Vibe->>Vibe: ステータス → In Review
|
|
347
|
+
|
|
348
|
+
Note over User: 【レビューフェーズ】
|
|
349
|
+
User->>Vibe: 「Create PR」ボタンクリック
|
|
350
|
+
Vibe->>GitHub: PR 作成
|
|
351
|
+
User->>GitHub: PR レビュー
|
|
352
|
+
User->>GitHub: PR マージ
|
|
353
|
+
|
|
354
|
+
Note over Vibe: 【自動検知】
|
|
355
|
+
Vibe->>Vibe: PR マージ検知
|
|
356
|
+
Vibe->>Vibe: ステータス → Done
|
|
357
|
+
|
|
358
|
+
Note over Script: 【ポーリング検知】
|
|
359
|
+
loop 15秒ごと
|
|
360
|
+
Script->>Vibe: タスク状態取得
|
|
361
|
+
alt Done 増加検知
|
|
362
|
+
Script->>GitHub: Issue チェックボックス更新
|
|
363
|
+
Script->>Script: 新たに着手可能なタスク選定
|
|
364
|
+
Script->>Vibe: 次のタスク作成・開始
|
|
365
|
+
Vibe->>Claude: Claude Code 起動(次タスク)
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
Note over Script: 【完了】
|
|
370
|
+
Script->>Vibe: MCP 切断
|
|
371
|
+
Script->>User: 🎉 全タスク完了
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 操作主体の一覧
|
|
375
|
+
|
|
376
|
+
| フェーズ | 操作 | 主体 |
|
|
377
|
+
|---------|------|------|
|
|
378
|
+
| 開始 | `pnpm task:loop` 実行 | 👤 ユーザー |
|
|
379
|
+
| 初期化 | Issue 取得、ブランチ作成 | 🔄 task:loop |
|
|
380
|
+
| 初期化 | Vibe-Kanban 接続 | 🔄 task:loop |
|
|
381
|
+
| タスク開始 | タスク作成・開始指示 | 🔄 task:loop |
|
|
382
|
+
| タスク開始 | Claude Code 起動 | 📋 Vibe-Kanban |
|
|
383
|
+
| 実装 | コード実装、テスト、コミット | 🤖 Claude Code |
|
|
384
|
+
| 実装 | 作業完了報告 | 🤖 Claude Code |
|
|
385
|
+
| レビュー | 「Create PR」クリック | 👤 ユーザー |
|
|
386
|
+
| レビュー | PR 作成 | 📋 Vibe-Kanban |
|
|
387
|
+
| レビュー | PR レビュー・マージ | 👤 ユーザー |
|
|
388
|
+
| 検知 | PR マージ検知 → Done | 📋 Vibe-Kanban |
|
|
389
|
+
| 検知 | Done 検知 | 🔄 task:loop |
|
|
390
|
+
| 更新 | Issue チェックボックス更新 | 🔄 task:loop |
|
|
391
|
+
| 次タスク | 次のタスク開始指示 | 🔄 task:loop |
|
|
392
|
+
| 終了 | MCP 切断、完了通知 | 🔄 task:loop |
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 各フェーズの概要
|
|
397
|
+
|
|
398
|
+
### 1. 初期化フェーズ(1回のみ)
|
|
399
|
+
|
|
400
|
+
- 引数解析(Issue番号、最大タスク番号、ベースブランチ)
|
|
401
|
+
- GitHub Issue 取得・Markdown パース
|
|
402
|
+
- Issue ブランチ作成: `issue/{issue_number}`
|
|
403
|
+
- Phase ブランチ作成: `issue/{issue_number}-phase{N}`
|
|
404
|
+
- Vibe-Kanban MCP 接続(以降使い回し)
|
|
405
|
+
- プロジェクト ID 取得
|
|
406
|
+
|
|
407
|
+
### 2. 初期タスク開始
|
|
408
|
+
|
|
409
|
+
- 依存関係を考慮して着手可能なタスクグループを全て選定
|
|
410
|
+
- Vibe-Kanban にタスク作成
|
|
411
|
+
- `start_task_attempt` で実行開始
|
|
412
|
+
|
|
413
|
+
### 3. メインループ(15秒ポーリング)
|
|
414
|
+
|
|
415
|
+
- Vibe-Kanban のタスク状態を取得
|
|
416
|
+
- Done 増加を検知した場合:
|
|
417
|
+
- GitHub Issue のチェックボックスを `- [x]` に更新
|
|
418
|
+
- **Phase 内の全タスクが完了していれば、Phase ブランチを Issue ブランチに自動マージ**
|
|
419
|
+
- 新たに着手可能になったタスクを開始
|
|
420
|
+
- 全タスク完了で終了
|
|
421
|
+
|
|
422
|
+
### 4. 終了処理
|
|
423
|
+
|
|
424
|
+
- Vibe-Kanban MCP 切断
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Vibe-Kanban セットアップ
|
|
429
|
+
|
|
430
|
+
### 前提条件
|
|
431
|
+
|
|
432
|
+
✅ このプロジェクトでは既に設定済み(`.mcp.json`)
|
|
433
|
+
|
|
434
|
+
### セットアップ手順
|
|
435
|
+
|
|
436
|
+
1. **アプリケーション起動**
|
|
437
|
+
```bash
|
|
438
|
+
npx vibe-kanban
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
2. **プロジェクト確認**
|
|
442
|
+
- ブラウザでKanbanボード表示
|
|
443
|
+
- プロジェクトが登録されていることを確認
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## `/task-exec` との使い分け
|
|
448
|
+
|
|
449
|
+
| コマンド | 用途 | 品質保証 | 推奨シーン |
|
|
450
|
+
|---------|------|---------|----------|
|
|
451
|
+
| **`/task-exec`** | 重要タスクの確実な完了 | ✅ 合格まで自動ループ | 複雑な実装、品質重視 |
|
|
452
|
+
| **`pnpm task:loop`** | 大量タスクの自動消化 | 並列実行・監視 | 定型作業、並行開発 |
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## 実装詳細
|
|
457
|
+
|
|
458
|
+
スクリプトは `packages/cli/src/commands/task-loop/` に配置(CLIパッケージに統合):
|
|
459
|
+
|
|
460
|
+
```
|
|
461
|
+
packages/cli/src/commands/task-loop/
|
|
462
|
+
├── index.ts # エントリポイント(taskLoopCommand関数)
|
|
463
|
+
└── lib/
|
|
464
|
+
├── types.ts # 型定義
|
|
465
|
+
├── task-number-utils.ts # タスク番号比較
|
|
466
|
+
├── github-client.ts # GitHub Issue操作
|
|
467
|
+
├── gh-setup.ts # GitHub CLI セットアップ
|
|
468
|
+
├── branch-manager.ts # Git ブランチ操作
|
|
469
|
+
├── conflict-handler.ts # コンフリクト処理
|
|
470
|
+
├── vibe-kanban-client.ts # MCP経由Vibe-Kanban操作
|
|
471
|
+
├── vibe-kanban-rest-client.ts # REST API クライアント
|
|
472
|
+
├── issue-parser.ts # Issue Markdownパーサー
|
|
473
|
+
├── dependency-resolver.ts # 依存関係解析
|
|
474
|
+
├── project-selector.ts # プロジェクト選択
|
|
475
|
+
└── task-state-manager.ts # タスク状態管理
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## 関連ドキュメント
|
|
481
|
+
|
|
482
|
+
- [タスク実行ワークフロー](./task-execute.md)
|
|
483
|
+
- [タスク管理ガイドライン](../steering/task-management.md)
|
|
484
|
+
- [仕様書作成ワークフロー](./spec-create.md)
|
|
485
|
+
- [ブランチ運用戦略](../steering/branch-strategy.md) - ブランチ命名規則、同期フロー、ワークフロー図
|
|
486
|
+
<!-- @einja:managed:end -->
|
|
487
|
+
|
|
488
|
+
---
|
|
489
|
+
|
|
490
|
+
<!-- @einja:seed:start id="task-vibe-kanban-loop-project" -->
|
|
491
|
+
## プロジェクト固有の設定
|
|
492
|
+
|
|
493
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
494
|
+
<!-- einja syncで上書きされません -->
|
|
495
|
+
<!-- @einja:seed:end -->
|
|
File without changes
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# 意思決定記録(Decisions)
|
|
3
|
+
|
|
4
|
+
このファイルには、プロジェクトにおける重要な意思決定(Why)を記録します。
|
|
5
|
+
|
|
6
|
+
## 運用ルール
|
|
7
|
+
|
|
8
|
+
- **最大エントリ数**: 30件
|
|
9
|
+
- **上限到達時**: 古いエントリを `archive/decisions-{年}.md` に移動
|
|
10
|
+
- **エントリ形式**: 以下のテンプレートに従う
|
|
11
|
+
|
|
12
|
+
### エントリテンプレート
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## [YYYY-MM-DD] タイトル
|
|
16
|
+
- **結論**: 1-2文で結論
|
|
17
|
+
- **理由**: 簡潔な理由
|
|
18
|
+
- **見直し条件**: この決定を見直すべき条件
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 記録
|
|
24
|
+
|
|
25
|
+
<!-- ここに意思決定を追加 -->
|
|
26
|
+
<!-- @einja:managed:end -->
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<!-- @einja:seed:start id="decisions-project" -->
|
|
31
|
+
## プロジェクト固有の設定
|
|
32
|
+
|
|
33
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
34
|
+
<!-- einja syncで上書きされません -->
|
|
35
|
+
<!-- @einja:seed:end -->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
2
|
+
# 再利用パターン(Patterns)
|
|
3
|
+
|
|
4
|
+
このファイルには、プロジェクトで発見・確立された再利用可能なパターン(How)を記録します。
|
|
5
|
+
|
|
6
|
+
## 運用ルール
|
|
7
|
+
|
|
8
|
+
- **最大エントリ数**: 30件
|
|
9
|
+
- **上限到達時**: 古いエントリを `archive/patterns-{年}.md` に移動
|
|
10
|
+
- **エントリ形式**: 以下のテンプレートに従う
|
|
11
|
+
|
|
12
|
+
### エントリテンプレート
|
|
13
|
+
|
|
14
|
+
```markdown
|
|
15
|
+
## [YYYY-MM-DD] パターン名
|
|
16
|
+
- **問題**: どのような問題を解決するか
|
|
17
|
+
- **解法**: どのように解決するか
|
|
18
|
+
- **適用条件**: このパターンを使うべき状況
|
|
19
|
+
- **非適用条件**: このパターンを使うべきでない状況
|
|
20
|
+
- **例**: 具体的なコード例やユースケース
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 記録
|
|
26
|
+
|
|
27
|
+
<!-- ここにパターンを追加 -->
|
|
28
|
+
<!-- @einja:managed:end -->
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
<!-- @einja:seed:start id="patterns-project" -->
|
|
33
|
+
## プロジェクト固有の設定
|
|
34
|
+
|
|
35
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
36
|
+
<!-- einja syncで上書きされません -->
|
|
37
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# Steering仕様書
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -149,6 +150,37 @@
|
|
|
149
150
|
|
|
150
151
|
---
|
|
151
152
|
|
|
153
|
+
## 🔄 ドキュメント同期について
|
|
154
|
+
|
|
155
|
+
このディレクトリのドキュメントは`@einja/dev-cli`で管理されています。
|
|
156
|
+
|
|
157
|
+
### マーカーの種類
|
|
158
|
+
|
|
159
|
+
各ファイルには同期動作を制御するマーカーがあります:
|
|
160
|
+
|
|
161
|
+
| マーカー | 説明 |
|
|
162
|
+
|---------|------|
|
|
163
|
+
| `@einja:managed` | CLIの更新時に自動で最新化される共通ルール部分 |
|
|
164
|
+
| `@einja:seed` | 初回のみ追加され、以降は編集内容が保持されるプロジェクト固有部分 |
|
|
165
|
+
|
|
166
|
+
### プロジェクト固有の追記
|
|
167
|
+
|
|
168
|
+
各ファイルの末尾にある`@einja:seed`セクションに、プロジェクト固有のルールや設定を追記できます。このセクションは`einja sync`実行時も上書きされません。
|
|
169
|
+
|
|
170
|
+
詳細な仕様は [CLIのマーカー仕様書](https://github.com/einja-inc/einja-management-template/blob/main/packages/cli/docs/MARKER_SPECIFICATION.md) を参照してください。
|
|
171
|
+
|
|
172
|
+
### 同期コマンド
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# テンプレートから最新の共通ルールを取得
|
|
176
|
+
pnpm einja:sync
|
|
177
|
+
|
|
178
|
+
# プレビュー(実際の変更なし)
|
|
179
|
+
pnpm einja:sync --dry-run
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
152
184
|
## ⚠️ 重要な原則
|
|
153
185
|
|
|
154
186
|
### CLAUDE.mdの原則を遵守
|
|
@@ -168,3 +200,13 @@
|
|
|
168
200
|
ドキュメントに関する質問や改善提案がある場合は、チームリーダーに連絡してください。
|
|
169
201
|
|
|
170
202
|
より良いドキュメントを一緒に作りましょう!
|
|
203
|
+
<!-- @einja:managed:end -->
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
<!-- @einja:seed:start id="steering-readme-project" -->
|
|
208
|
+
## プロジェクト固有の設定
|
|
209
|
+
|
|
210
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
211
|
+
<!-- einja syncで上書きされません -->
|
|
212
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# 価値あるテストを生む要件定義とテスト設計ガイド
|
|
2
3
|
|
|
3
4
|
## 1. 受け入れ基準の原則
|
|
@@ -413,3 +414,13 @@ QAテスト仕様書では、以下の表形式で手順を記述します:
|
|
|
413
414
|
- 手順は自然言語で簡潔に記述
|
|
414
415
|
- mcp__playwright などのコマンドは記載しない
|
|
415
416
|
- 「-」は手順のみで確認項目がない場合に使用
|
|
417
|
+
<!-- @einja:managed:end -->
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
<!-- @einja:seed:start id="acceptance-criteria-and-qa-guide-project" -->
|
|
422
|
+
## プロジェクト固有の設定
|
|
423
|
+
|
|
424
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
425
|
+
<!-- einja syncで上書きされません -->
|
|
426
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# システムアーキテクチャ概要
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -479,3 +480,13 @@ export function calculatePorts(branchName: string): WorktreePorts {
|
|
|
479
480
|
- **[API開発ガイド](development/api-development.md)** - Hono API実装
|
|
480
481
|
- **[フロントエンド開発ガイド](development/frontend-development.md)** - React、Tanstack Query
|
|
481
482
|
- **[CI/CDパイプライン](infrastructure/ci-cd.md)** - ビルド・デプロイ自動化
|
|
483
|
+
<!-- @einja:managed:end -->
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
<!-- @einja:seed:start id="architecture-project" -->
|
|
488
|
+
## プロジェクト固有の設定
|
|
489
|
+
|
|
490
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
491
|
+
<!-- einja syncで上書きされません -->
|
|
492
|
+
<!-- @einja:seed:end -->
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<!-- @einja:managed:start -->
|
|
1
2
|
# ブランチ運用戦略
|
|
2
3
|
|
|
3
4
|
## 概要
|
|
@@ -360,3 +361,13 @@ git push origin タスクブランチ名
|
|
|
360
361
|
- [task:loop コマンド](../instructions/task-vibe-kanban-loop.md) - コマンドの使用方法と Vibe-Kanban 操作手順
|
|
361
362
|
- [タスク管理](task-management.md) - タスク階層と粒度基準
|
|
362
363
|
- [開発ワークフロー](development-workflow.md) - 仕様書作成からタスク実行までの全体フロー
|
|
364
|
+
<!-- @einja:managed:end -->
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
<!-- @einja:seed:start id="branch-strategy-project" -->
|
|
369
|
+
## プロジェクト固有の設定
|
|
370
|
+
|
|
371
|
+
<!-- このセクションはプロジェクト固有の内容を追記する場所です -->
|
|
372
|
+
<!-- einja syncで上書きされません -->
|
|
373
|
+
<!-- @einja:seed:end -->
|