@einja/dev-cli 0.1.38 → 0.1.39

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 (106) hide show
  1. package/README.md +1 -0
  2. package/dist/lib/file-system.d.ts +1 -5
  3. package/dist/lib/file-system.d.ts.map +1 -1
  4. package/dist/lib/file-system.js +2 -8
  5. package/dist/lib/file-system.js.map +1 -1
  6. package/dist/lib/mcp-config.js +3 -3
  7. package/dist/lib/mcp-config.js.map +1 -1
  8. package/dist/lib/mcp-config.test.js +2 -2
  9. package/dist/lib/mcp-config.test.js.map +1 -1
  10. package/dist/lib/merger.d.ts.map +1 -1
  11. package/dist/lib/merger.js +5 -5
  12. package/dist/lib/merger.js.map +1 -1
  13. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  14. package/dist/lib/preset-update/file-copier.js +5 -0
  15. package/dist/lib/preset-update/file-copier.js.map +1 -1
  16. package/dist/lib/preset-update/file-copier.test.js +26 -0
  17. package/dist/lib/preset-update/file-copier.test.js.map +1 -1
  18. package/dist/lib/sync/category-validator.d.ts +5 -1
  19. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  20. package/dist/lib/sync/category-validator.js +16 -2
  21. package/dist/lib/sync/category-validator.js.map +1 -1
  22. package/dist/lib/sync/category-validator.test.js +14 -4
  23. package/dist/lib/sync/category-validator.test.js.map +1 -1
  24. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  25. package/dist/lib/sync/file-filter.js +24 -0
  26. package/dist/lib/sync/file-filter.js.map +1 -1
  27. package/dist/lib/sync/file-filter.test.js +37 -0
  28. package/dist/lib/sync/file-filter.test.js.map +1 -1
  29. package/package.json +1 -1
  30. package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +40 -43
  31. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +16 -6
  32. package/presets/default/.claude/agents/einja/task/task-executer.md +13 -11
  33. package/presets/default/.claude/commands/einja/einja-sync.md +238 -0
  34. package/presets/default/.claude/commands/einja/spec-create.md +7 -3
  35. package/presets/default/.claude/commands/einja/task-exec.md +6 -6
  36. package/presets/default/.claude/settings.json +1 -0
  37. package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +4 -3
  38. package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +69 -0
  39. package/presets/default/.claude/skills/einja-component-design/SKILL.md +3 -3
  40. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +35 -0
  41. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +421 -0
  42. package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +333 -0
  43. package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +110 -0
  44. package/presets/default/.claude/skills/einja-skill-creator/scripts/quick_validate.py +117 -0
  45. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +6 -6
  46. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +24 -22
  47. package/presets/default/.claude/skills/einja-task-qa/{reference → references}/troubleshooting.md +1 -1
  48. package/presets/default/.claude/skills/einja-task-qa/{reference → references}/usage-patterns.md +2 -2
  49. package/presets/default/.claude/skills/einja-task-qa/templates/qa-test-template.md +13 -13
  50. package/{scaffolds → presets/default}/.mcp.json +27 -6
  51. package/presets/default/.vscode/settings.json +18 -0
  52. package/presets/default/CLAUDE.md.template +192 -0
  53. package/{scaffolds → presets/default/docs/einja}/example/README.md +1 -1
  54. package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/README.md +20 -23
  55. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story3/.gitkeep +0 -0
  56. package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +12 -16
  57. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story1.md +101 -0
  58. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story2.md +70 -0
  59. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story3.md +69 -0
  60. package/{scaffolds → presets/default/docs/einja}/instructions/deployment-setup.md +93 -9
  61. package/{scaffolds → presets/default/docs/einja}/instructions/environment-setup.md +152 -4
  62. package/{scaffolds → presets/default/docs/einja}/instructions/local-server-environment-and-worktree.md +99 -0
  63. package/presets/default/docs/einja/instructions/neon-cli-reference.md +605 -0
  64. package/{scaffolds → presets/default/docs/einja}/instructions/vercel-cli-reference.md +80 -0
  65. package/{scaffolds → presets/default/docs/einja}/steering/acceptance-criteria-and-qa-guide.md +3 -4
  66. package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/environment-variables.md +4 -4
  67. package/{scaffolds → presets/default/docs/einja}/templates/README.md +1 -1
  68. package/{scaffolds → presets/default/docs/einja}/templates/qa-test.md.template +29 -26
  69. package/presets/default/symlinks.json +0 -45
  70. package/scaffolds/cli/preset.yaml +0 -137
  71. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +0 -268
  72. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +0 -179
  73. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +0 -392
  74. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +0 -459
  75. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/naming-conventions.md +0 -0
  76. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/prohibited-patterns.md +0 -0
  77. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/typescript-rules.md +0 -0
  78. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/directory-structure.md +0 -0
  79. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/props-patterns.md +0 -0
  80. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/styling-guide.md +0 -0
  81. /package/presets/default/.claude/skills/einja-task-qa/{reference → references}/failure-patterns.md +0 -0
  82. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/design.md +0 -0
  83. /package/{scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/evidence → presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story1}/.gitkeep +0 -0
  84. /package/{scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/evidence → presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story2}/.gitkeep +0 -0
  85. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/requirements.md +0 -0
  86. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/tasks.md +0 -0
  87. /package/{scaffolds → presets/default/docs/einja}/instructions/task-execute.md +0 -0
  88. /package/{scaffolds → presets/default/docs/einja}/instructions/task-vibe-kanban-loop.md +0 -0
  89. /package/{scaffolds → presets/default/docs/einja}/steering/README.md +0 -0
  90. /package/{scaffolds → presets/default/docs/einja}/steering/architecture.md +0 -0
  91. /package/{scaffolds → presets/default/docs/einja}/steering/branch-strategy.md +0 -0
  92. /package/{scaffolds → presets/default/docs/einja}/steering/commit-rules.md +0 -0
  93. /package/{scaffolds → presets/default/docs/einja}/steering/db-schema-design.md +0 -0
  94. /package/{scaffolds → presets/default/docs/einja}/steering/development/api-development.md +0 -0
  95. /package/{scaffolds → presets/default/docs/einja}/steering/development/backend-architecture.md +0 -0
  96. /package/{scaffolds → presets/default/docs/einja}/steering/development/database-guidelines.md +0 -0
  97. /package/{scaffolds → presets/default/docs/einja}/steering/development/frontend-development.md +0 -0
  98. /package/{scaffolds → presets/default/docs/einja}/steering/development/review-guidelines.md +0 -0
  99. /package/{scaffolds → presets/default/docs/einja}/steering/development/testing-strategy.md +0 -0
  100. /package/{scaffolds → presets/default/docs/einja}/steering/development-workflow.md +0 -0
  101. /package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/deployment.md +0 -0
  102. /package/{scaffolds → presets/default/docs/einja}/steering/product.md +0 -0
  103. /package/{scaffolds → presets/default/docs/einja}/steering/task-management.md +0 -0
  104. /package/{scaffolds → presets/default/docs/einja}/templates/design-simple.md.template +0 -0
  105. /package/{scaffolds → presets/default/docs/einja}/templates/design.md.template +0 -0
  106. /package/{scaffolds → presets/default/docs/einja}/templates/requirements.md.template +0 -0
@@ -26,9 +26,9 @@ allowed-tools:
26
26
  - **QAテスト(あなたが実施)**: 画面フロー、API連携、データ永続化等の統合動作確認
27
27
 
28
28
  **必須参照ドキュメント**:
29
- - `reference/failure-patterns.md` - 失敗原因分類の実践例(10パターン)
30
- - `reference/usage-patterns.md` - 利用パターン(5パターン)
31
- - `reference/troubleshooting.md` - トラブルシューティング(6ケース)
29
+ - `references/failure-patterns.md` - 失敗原因分類の実践例(10パターン)
30
+ - `references/usage-patterns.md` - 利用パターン(5パターン)
31
+ - `references/troubleshooting.md` - トラブルシューティング(6ケース)
32
32
  - `docs/einja/steering/acceptance-criteria-and-qa-guide.md` - 価値あるテストの判定基準
33
33
 
34
34
  ---
@@ -37,9 +37,9 @@ allowed-tools:
37
37
 
38
38
  ### ステップ0: 引数の解析と初期化
39
39
 
40
- **入力形式**: `{spec_dir} [--task-group-id {task_group_id}]`
40
+ **入力形式**: 自然言語でAC指定(task-executerから呼び出される)
41
41
 
42
- **例**: `docs/specs/tasks/user-auth/ --task-group-id 1.1`
42
+ **例**: `docs/specs/issues/issue42-magic-link/ のstory1.mdにあるAC1.1, AC1.2のテストを実行してください`
43
43
 
44
44
  **TODOリストの作成**: TodoWriteツールで8ステップのTODOを作成してください。
45
45
 
@@ -94,9 +94,11 @@ AskUserQuestion:
94
94
 
95
95
  **前提**: テスト仕様は `spec-qa-generator` が作成済み。task-qaは**実行のみ**を担当。
96
96
 
97
- 1. **テスト仕様ファイルの特定**: タスクグループID "1.1" → `qa-tests/phase1/1-1.md`
98
- 2. **シナリオテストの確認**: `qa-tests/scenarios.md` で該当タスクの実施タイミングを確認
99
- 3. **テスト仕様の読み込み**: テストシナリオ、確認項目、期待値を把握
97
+ 1. **テスト仕様ファイルの特定**: 自然言語で指定されたAC番号からStoryを判定
98
+ - 例: 「AC1.1, AC1.2のテストを実行」→ AC番号の先頭数字(1)からStory 1を特定 → `qa-tests/story1.md`
99
+ - 例: 「AC2.3のテストを実行」→ `qa-tests/story2.md`
100
+ 2. **シナリオテストの確認**: `qa-tests/scenarios.md` で該当ACの実施タイミングを確認
101
+ 3. **テスト仕様の読み込み**: story{N}.md内の該当ACセクションからテストシナリオ、確認項目、期待値を把握
100
102
 
101
103
  **エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ spec-qa-generatorで作成が必要
102
104
 
@@ -207,7 +209,7 @@ AskUserQuestion:
207
209
  既存のテスト仕様ファイルに実施結果を記録します。
208
210
 
209
211
  1. **結果欄の更新**: 各テストシナリオの「結果」列を ✅/❌/⚠️ で更新
210
- 2. **エビデンス保存**: `qa-tests/phase{N}/evidence/` にスクリーンショット、ログを保存
212
+ 2. **エビデンス保存**: `qa-tests/evidence/story{N}/` にスクリーンショット、ログを保存
211
213
  3. **実行ログの記載**: scenarios.md の該当シナリオに実行ログを追記
212
214
 
213
215
  ---
@@ -221,7 +223,7 @@ AskUserQuestion:
221
223
  "status": "SUCCESS" | "FAILURE" | "PARTIAL",
222
224
  "failureCategory": "A" | "B" | "C" | "D" | null,
223
225
  "nextAction": "finisher" | "executer" | "qa-retry",
224
- "qaTestFile": "qa-tests/phase1/1-1.md",
226
+ "qaTestFile": "qa-tests/story1.md",
225
227
  "testSummary": {
226
228
  "total": 17,
227
229
  "passed": 12,
@@ -253,17 +255,17 @@ AskUserQuestion:
253
255
  ```
254
256
  {spec_dir}/
255
257
  └── qa-tests/
256
- ├── phase1/
257
- ├── 1-1.md
258
- ├── 1-2.md
259
- │ └── evidence/
260
- ├── phase2/
261
- │ └── ...
262
- └── phase3/
263
- └── ...
258
+ ├── scenarios.md
259
+ ├── story1.md
260
+ ├── story2.md
261
+ ├── story3.md
262
+ └── evidence/
263
+ ├── story1/
264
+ ├── story2/
265
+ └── story3/
264
266
  ```
265
267
 
266
- **パス規則**: タスクグループID "2.3" → `qa-tests/phase2/2-3.md`
268
+ **パス規則**: AC番号 "AC2.3" → Story番号 2 → `qa-tests/story2.md`(AC2.3セクション)
267
269
 
268
270
  ---
269
271
 
@@ -297,9 +299,9 @@ AskUserQuestion:
297
299
 
298
300
  - `docs/einja/steering/acceptance-criteria-and-qa-guide.md` - QAテストの目的、失敗分類詳細、動作確認ツール使用法
299
301
  - `templates/qa-test-template.md` - QAテストファイルテンプレート
300
- - `reference/failure-patterns.md` - 失敗分類の実践例(10パターン)
301
- - `reference/usage-patterns.md` - 利用パターン(5パターン)
302
- - `reference/troubleshooting.md` - トラブルシューティング(6ケース)
302
+ - `references/failure-patterns.md` - 失敗分類の実践例(10パターン)
303
+ - `references/usage-patterns.md` - 利用パターン(5パターン)
304
+ - `references/troubleshooting.md` - トラブルシューティング(6ケース)
303
305
 
304
306
  ---
305
307
 
@@ -34,7 +34,7 @@ QA実行時によくある問題と対処法。
34
34
  **対処法**:
35
35
  1. `ls -la {spec_dir}/qa-tests/` で権限確認
36
36
  2. `chmod -R u+w {spec_dir}/qa-tests/` で権限変更
37
- 3. 不在時は `mkdir -p {spec_dir}/qa-tests/phase{N}/evidence/`
37
+ 3. 不在時は `mkdir -p {spec_dir}/qa-tests/evidence/story{N}/`
38
38
 
39
39
  ---
40
40
 
@@ -47,6 +47,6 @@ GitHub Actionsで自動QA実行(将来実装)
47
47
  ## パターン5: 手動QAレビュー
48
48
 
49
49
  ```
50
- ユーザー: "タスク1.1のQA結果を見せて"
51
- → qa-tests/phase1/1-1.md読み込み → 結果サマリー表示
50
+ ユーザー: "Story 1のQA結果を見せて"
51
+ → qa-tests/story1.md読み込み → 結果サマリー表示
52
52
  ```
@@ -1,8 +1,8 @@
1
- # Phase {phase_num}-{group_num}: {task_name} QAテスト結果
1
+ # Story {N}: {ストーリー名} QAテスト結果
2
2
 
3
- ## テスト対象タスク
4
- - **タスクID**: {開始タスクID}{終了タスクID}
5
- - **タスク名**: {task_name}
3
+ ## テスト対象
4
+ - **ストーリー**: Story {N} - {ストーリー名}
5
+ - **対象AC**: AC{N}.1〜AC{N}.M
6
6
  - **実装日**: {date}
7
7
  - **テスター**: {tester}
8
8
  - **最終更新**: {date}
@@ -50,11 +50,11 @@ pnpm typecheck
50
50
 
51
51
  ---
52
52
 
53
- ## タスク {task_id}: {task_name}
53
+ ## AC{N}.1: {ACの1文要約}
54
54
 
55
55
  ### 受け入れ条件
56
56
  <!-- requirements.md から該当ACの受け入れ条件を転記 -->
57
- - AC{N}.{M}: {Given-When-Then形式の基準}
57
+ - AC{N}.1: {Given-When-Then形式の基準}
58
58
 
59
59
  ### テストシナリオ
60
60
 
@@ -70,7 +70,7 @@ pnpm typecheck
70
70
  - 「-」は手順のみで確認項目がない場合に使用
71
71
  - 備考欄はテストの区切りや注意事項を記載
72
72
 
73
- ### 全体ステータス: - (未実施)
73
+ ### ステータス: - (未実施)
74
74
 
75
75
  #### 主な問題点
76
76
  - (実施後に記載)
@@ -79,26 +79,26 @@ pnpm typecheck
79
79
  - (実施後に記載)
80
80
 
81
81
  #### エビデンス
82
- - ログファイル: `qa-tests/phase{phase_num}/evidence/{task_id}-{evidence_id}.log`
83
- - スクリーンショット: `qa-tests/phase{phase_num}/evidence/{task_id}-{evidence_id}.png`
82
+ - ログファイル: `qa-tests/evidence/story{N}/AC{N}-1-{evidence_id}.log`
83
+ - スクリーンショット: `qa-tests/evidence/story{N}/AC{N}-1-{evidence_id}.png`
84
84
 
85
85
  ---
86
86
 
87
- <!-- 追加のタスクがある場合は上記セクションを繰り返す -->
87
+ <!-- 追加のACがある場合は上記セクションを繰り返す -->
88
88
 
89
89
  ---
90
90
 
91
91
  ## 統合テスト結果サマリー
92
92
 
93
- ### フェーズ{phase_num}-{group_num}全体結果
93
+ ### Story {N} 全体結果
94
94
  - **全体ステータス**: - (未実施)
95
- - **完了タスク**: 0/{total_tasks}
95
+ - **完了AC**: 0/{total_acs}
96
96
  - **テスト合格率**: 0% (0/0)
97
97
 
98
98
  ### 修正が必要な項目
99
99
  - (実施後に記載)
100
100
 
101
- ### 次フェーズへの引き継ぎ事項
101
+ ### 次ストーリーへの引き継ぎ事項
102
102
  - (実施後に記載)
103
103
 
104
104
  ### 改善提案
@@ -2,21 +2,34 @@
2
2
  "mcpServers": {
3
3
  "vibe_kanban": {
4
4
  "command": "npx",
5
- "args": ["-y", "vibe-kanban@latest", "--mcp"]
5
+ "args": [
6
+ "-y",
7
+ "vibe-kanban@latest",
8
+ "--mcp"
9
+ ]
6
10
  },
7
11
  "codex": {
8
12
  "type": "stdio",
9
13
  "command": "codex",
10
- "args": ["mcp-server"]
14
+ "args": [
15
+ "mcp-server"
16
+ ]
11
17
  },
12
18
  "context7": {
13
19
  "command": "npx",
14
- "args": ["-y", "@upstash/context7-mcp"]
20
+ "args": [
21
+ "-y",
22
+ "@upstash/context7-mcp"
23
+ ]
15
24
  },
16
25
  "playwright": {
17
26
  "type": "stdio",
18
27
  "command": "npx",
19
- "args": ["-y", "@playwright/mcp", "--isolated"]
28
+ "args": [
29
+ "-y",
30
+ "@playwright/mcp",
31
+ "--isolated"
32
+ ]
20
33
  },
21
34
  "serena": {
22
35
  "type": "stdio",
@@ -29,7 +42,8 @@
29
42
  "--context",
30
43
  "claude-code",
31
44
  "--open-web-dashboard",
32
- "false"]
45
+ "false"
46
+ ]
33
47
  },
34
48
  "github": {
35
49
  "type": "http",
@@ -37,6 +51,13 @@
37
51
  "headers": {
38
52
  "Authorization": "Bearer ${GITHUB_TOKEN}"
39
53
  }
54
+ },
55
+ "drawio": {
56
+ "command": "npx",
57
+ "args": [
58
+ "-y",
59
+ "@drawio/mcp@latest"
60
+ ]
40
61
  }
41
62
  }
42
- }
63
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "editor.codeActionsOnSave": {
3
+ "source.fixAll.eslint": "explicit",
4
+ "source.organizeImports.biome": "explicit",
5
+ "source.fixAll.biome": "explicit"
6
+ },
7
+ "editor.defaultFormatter": "biomejs.biome",
8
+ "editor.formatOnSave": true,
9
+ "eslint.enable": false,
10
+ "prettier.enable": false,
11
+ "prettier.useEditorConfig": false,
12
+ "[json]": {
13
+ "editor.defaultFormatter": "biomejs.biome"
14
+ },
15
+ "[jsonc]": {
16
+ "editor.defaultFormatter": "vscode.json-language-features"
17
+ }
18
+ }
@@ -0,0 +1,192 @@
1
+ # Claude Code 指示書
2
+ - あなたの役割は世界的に有名な開発プロジェクトシニアマネージャーでありagentオーケストレーターです。
3
+ - 回答は日本語で行ってください。
4
+ - 必ずこのドキュメントの通りに作業を行ってください。
5
+
6
+ ## 基本原則
7
+
8
+ 1. **シンプルさ優先**: 必要最小限の変更に留める。過度な汎用化・抽象化をしない
9
+ 2. **根本原因の追求**: 一時的な回避策ではなく、根本原因を特定して他の開発者、他のAgentプロセスでも再現性のある修正をする
10
+ 3. **影響範囲の最小化**: 変更は必要な箇所のみ。関係ないコードに触れない
11
+ 4. **直接実装の禁止**: あなたは絶対に直接実装を行わない。すべての作業はsubagentに委託し、可能な限り並行で呼び出す。サブエージェントの出力はユーザにも見える場所に出力すること
12
+ 5. **実装品質の自己検証**: 複雑な変更では完了前に「よりエレガントな方法はないか」を自問する。ただし単純な修正には不要
13
+
14
+ ## サブエージェント委託ルール
15
+
16
+ #### カスタムサブエージェント(直接委託)
17
+
18
+ | 作業 | 委託先 |
19
+ |------|--------|
20
+ | コンフリクト解消 | `conflict-resolver` |
21
+ | Codex作業(レビュー・実装支援等) | `codex-agent` |
22
+ | フロントエンド アーキテクチャ設計 | `frontend-architect` |
23
+ | フロントエンド デザイン実装 | `design-engineer` |
24
+ | フロントエンド コーディング | `frontend-coder` |
25
+ | バックエンド アーキテクチャ設計 | `backend-architect` |
26
+
27
+ #### Skill・コマンド(直接呼び出し)
28
+
29
+ | 名前 | 用途 |
30
+ |------|------|
31
+ | `einja-task-commit` | コミット・プッシュ |
32
+ | `einja-conflict-resolver` | gitコンフリクト解消 |
33
+ | `einja-skill-creator` | Skill作成・更新 |
34
+ | `einja-infra-maintenance` | インフラ環境セットアップ・メンテナンス |
35
+ | `einja:task-exec` | タスクグループ実行 |
36
+ | `einja:spec-create` | 仕様書作成 |
37
+
38
+ ## コード変更時の動作方針
39
+
40
+ **【厳守事項】コード変更の指示があった場合、絶対に即座に実装を開始してはならない。(サブエージェントとしての動作時は除く)**
41
+
42
+ ### 必須フロー
43
+ 1. 問題・要件を調査・分析する
44
+ 2. 修正計画を `docs/plans/` に作成し提示する
45
+ 3. **ユーザーの明示的な承認を得る**
46
+ 4. 承認後、`docs/plans/todo-{plan名}.md` で進捗管理しながら実装を開始する
47
+
48
+ ### 例外(承認不要)
49
+ - 読み取り専用操作(質問への回答、情報調査、コード調査)
50
+
51
+ ### 提案文言
52
+ 「この変更について、まずPlanモードで計画を立てて提示しましょうか?」
53
+
54
+ **注意**: この規則は新規セッションだけでなく、セッション継続中のすべてのコード変更に適用される。ユーザーが「直して」「修正して」「なおしたい」等と言った場合も、必ず計画を提示して承認を得ること。
55
+
56
+ ### 計画・進捗ファイルの規約
57
+
58
+ | ファイル | パス | 管理者 |
59
+ |---------|------|--------|
60
+ | Plan | `docs/plans/{name}.md` | 親エージェント |
61
+ | Todo | `docs/plans/todo-{name}.md` | 親エージェントのみ(サブエージェント編集禁止) |
62
+
63
+ ### 実装中のブロッカー対応
64
+
65
+ | 状況 | 対応 |
66
+ |------|------|
67
+ | 技術的な軽微エラー(lint、型エラー、テスト修正) | サブエージェントが自律修正。再承認不要 |
68
+ | 設計変更が必要なブロッカー | **即座に停止**。ユーザーに報告し再計画 |
69
+ | 要件の曖昧さが判明 | **即座に停止**。AskUserQuestionで確認 |
70
+ | 想定外の事態全般 | **即座に停止**。計画や想定と違う事実が発覚した場合、再計画 |
71
+
72
+ ## gitコンフリクト発生時の対応
73
+
74
+ **【必須】** gitコンフリクトが発生した場合、必ず `.claude/skills/einja-conflict-resolver/SKILL.md` の手順に従うこと。
75
+
76
+ ## サブエージェントのgit操作安全ルール
77
+
78
+ **【厳守事項】** サブエージェントは自身が変更したファイル以外のワーキングツリー状態を変更してはならない。
79
+
80
+ ### 禁止コマンド(絶対に使用禁止)
81
+
82
+ | コマンド | 理由 |
83
+ |---------|------|
84
+ | `git checkout .` | 全ファイルの変更を破棄。他サブエージェントの変更が消失する |
85
+ | `git restore .` | 同上 |
86
+ | `git reset HEAD`(パスなし) | ステージング全体を解除。他サブエージェントのステージ済み変更が影響を受ける |
87
+ | `git reset --hard` | ワーキングツリーとステージングの全変更を破棄 |
88
+ | `git clean -fd` | 未追跡ファイルを全削除。他サブエージェントの新規ファイルが消失する |
89
+ | `git stash` | 全変更を退避。他サブエージェントの変更も巻き込む |
90
+ | `git add .` / `git add -A` | 全ファイルをステージ。他サブエージェントの変更を意図せずコミットに含める |
91
+
92
+ ### 許可操作
93
+
94
+ - **ファイルパスを明示した操作のみ許可**: `git add <file>`, `git restore --staged <file>`, `git checkout -- <file>` 等
95
+ - 自身が変更・作成したファイルのみを対象とすること
96
+
97
+ ### コミット時の注意
98
+
99
+ - `git status` で他の変更が混入していないか必ず確認すること
100
+ - 他サブエージェントの変更がステージされている場合は、`git restore --staged <file>` でアンステージすること
101
+
102
+ ### オーケストレーター(親エージェント)の責務
103
+
104
+ - 並行実行するサブエージェント間で変更対象ファイルが重複しないよう事前に調整する
105
+ - git操作(コミット・プッシュ)は可能な限り `einja-task-commit` Skill 経由で一元管理する
106
+ - サブエージェントに直接コミットさせる場合は、変更対象ファイルを明示的に指定すること
107
+
108
+ ## プロジェクト概要
109
+
110
+ Turborepoモノレポ構成(pnpm workspaces)。詳細が必要な場合は以下のSkillを参照:
111
+ - `einja-project-overview` - 構成、技術スタック、頻出コマンド
112
+ - `einja-coding-standards` - コーディング規約、インポートパス規約
113
+ - `einja-infra-maintenance` - 開発環境セットアップ、サーバー管理
114
+
115
+ ## マネージドディレクトリ(編集禁止)
116
+
117
+ `docs/einja/` は `@einja/dev-cli` パッケージで管理されている。`einja sync` で同期されるため、以下のルールを厳守すること。
118
+
119
+ | ディレクトリ | 操作 | 理由 |
120
+ |------------|------|------|
121
+ | `docs/einja/steering/` | **読み取り専用** | CLI同期で上書きされる |
122
+ | `docs/einja/templates/` | **読み取り専用** | CLI同期で上書きされる |
123
+ | `docs/einja/instructions/` | **読み取り専用** | CLI同期で上書きされる |
124
+ | `docs/einja/example/` | **読み取り専用** | CLI同期で上書きされる |
125
+ | `docs/einja/memory/` | **読み書き可** | プロジェクト固有の学習記録(同期対象外) |
126
+
127
+ **禁止事項**: `docs/einja/` 配下に新規ファイル・ディレクトリを作成しないこと(`memory/` 内を除く)
128
+
129
+ ## AskUserQuestion ツールの使用
130
+
131
+ **不明点や曖昧な点がある場合は、推測で進めずに必ず AskUserQuestion ツールで確認してください。**
132
+
133
+ ### 基本姿勢
134
+ - 要件が不明確な場合は**積極的に質問する**
135
+ - 推測や仮定で実装を進めない
136
+ - 確認することで手戻りを防ぐ
137
+
138
+ ### 使用必須シーン
139
+ - **要件・仕様が不明確な場合**
140
+ - **複数の実装方法・設計アプローチがある場合**
141
+ - **技術的な判断が必要な場合**(ライブラリ選定、アーキテクチャ決定など)
142
+ - 重要な判断(コミット分割、リファクタリング方針など)
143
+ - 破壊的な操作の前
144
+
145
+ ### 提示形式
146
+ - テーブル形式: 複数項目の比較
147
+ - 番号付きリスト: 詳細説明が必要な場合
148
+ - 推奨オプションには `(推奨)` と理由を付記
149
+
150
+ ## 報告ルール
151
+
152
+ ### 出力形式
153
+ 各エージェント定義の `skills: [output-format]` により、出力テンプレートは自動ロードされます。プロンプトへのテンプレート埋め込みは不要です。
154
+
155
+ ### 結果表示の原則
156
+ - サブエージェントの最終出力は**そのまま全文**をユーザーに表示する
157
+ - 省略・要約・言い換えは**禁止**
158
+
159
+ ### 進捗報告の原則
160
+ - 複数ステップのタスクでは、各ステップ完了時にユーザーへ進捗を報告する
161
+ - 完了した作業と次のステップを簡潔に示す
162
+ - 問題が発生した場合は即座に共有する
163
+
164
+ ## 学習ループ
165
+
166
+ ユーザーから修正・指摘を受けた場合、同じ失敗を繰り返さないために学習を記録する。
167
+
168
+ | 記録先 | 内容 | 例 |
169
+ |--------|------|-----|
170
+ | `docs/einja/memory/decisions.md` | 判断の「なぜ」 | 技術選定理由、設計判断 |
171
+ | `docs/einja/memory/patterns.md` | 解法の「どうやって」 | 再利用可能なパターン、失敗回避策 |
172
+
173
+ ### ルール
174
+ - 修正指摘を受けたら、作業完了前に該当memoryファイルに記録する
175
+ - 記録した内容をユーザーに報告する
176
+ - セッション開始時にmemoryファイルを確認し、過去の学習を活用する
177
+
178
+ ## 完了判定の基準
179
+
180
+ タスク完了を宣言する前に、以下を必ず検証する。
181
+
182
+ ### 必須チェック
183
+ - [ ] 変更ファイルがディスク上に実在する(`grep`や`Read`で確認。サブエージェント報告を鵜呑みにしない)
184
+ - [ ] `pnpm prepush`(lint + typecheck + test)が通る
185
+ - [ ] 動作確認済み(API→curl、画面→Playwright MCP、スクリプト→実行確認)
186
+ - [ ] `git diff` で意図しない変更が混入していないことを確認(`git diff --stat` で変更ファイル一覧を確認)
187
+
188
+ ### 禁止事項
189
+ - サブエージェントの「完了」報告のみで完了判定しない
190
+ - 検証をスキップして完了宣言しない
191
+
192
+
@@ -24,7 +24,7 @@
24
24
  - 各セクションの具体的な記述例を確認
25
25
 
26
26
  ### 3. QA 仕様書の構造を理解する
27
- - qa-tests/phaseN/X-Y.md の形式を確認
27
+ - qa-tests/story{N}.md の形式を確認
28
28
  - 失敗時の報告方法を参考にする
29
29
 
30
30
  ## 次のステップ
@@ -2,39 +2,37 @@
2
2
 
3
3
  ## 概要
4
4
  このディレクトリは、タスク実装後のQAテスト結果を記録するためのサンプル構造です。
5
- 実際のプロジェクトでは、タスクファイル(例:`.kiro/specs/subscription-management/tasks.md`)と同じディレクトリに`qa-tests`フォルダを作成して管理します。
5
+ 実際のプロジェクトでは、仕様書ディレクトリ(例:`docs/specs/issues/issue42-user-management/`)と同じディレクトリに`qa-tests`フォルダを作成して管理します。
6
6
 
7
7
  ## ディレクトリ構造
8
8
  ```
9
9
  qa-tests/
10
10
  ├── README.md # このファイル(QAテストガイド)
11
11
  ├── scenarios.md # シナリオテスト仕様(必須)
12
- ├── phase1/ # フェーズ1のテスト
13
- ├── 1-1.md # タスク1.1.xのテスト結果
14
- ├── 1-2.md # タスク1.2.xのテスト結果
15
- │ ├── 1-3.md # タスク1.3.xのテスト結果
16
- │ └── evidence/ # スクリーンショット等のエビデンス
17
- ├── phase2/ # フェーズ2のテスト
18
- │ ├── 2-1.md
19
- │ └── evidence/
20
- └── summary.md # 全体のテストサマリー(オプション)
12
+ ├── story1.md # Story 1(AC1.x)のテスト結果
13
+ ├── story2.md # Story 2(AC2.x)のテスト結果
14
+ ├── story3.md # Story 3(AC3.x)のテスト結果
15
+ └── evidence/ # エビデンス
16
+ ├── story1/ # Story 1のスクリーンショット等
17
+ ├── story2/ # Story 2のスクリーンショット等
18
+ └── story3/ # Story 3のスクリーンショット等
21
19
  ```
22
20
 
23
21
  ## QAテストファイルの記載内容
24
22
 
25
- 各QAテストファイル(例:`phase1/1-1.md`)には以下を記載:
23
+ 各QAテストファイル(例:`story1.md`)には以下を記載:
26
24
 
27
- 1. **ヘッダー情報**: テスト対象タスクID、タスク名、実装日、テスト実施日
28
- 2. **各タスクのテスト内容**: 受け入れ条件(AC番号)、テストシナリオ(表形式)、全体ステータス、主な問題点、対応策、エビデンス
29
- 3. **統合テスト結果サマリー**: フェーズ全体の結果サマリー、次フェーズへの引き継ぎ事項、改善提案
25
+ 1. **ヘッダー情報**: テスト対象ストーリー、対象AC範囲、実装日、テスト実施日
26
+ 2. **各ACのテスト内容**: 受け入れ条件(AC番号)、テストシナリオ(表形式)、ステータス、主な問題点、対応策、エビデンス
27
+ 3. **統合テスト結果サマリー**: ストーリー全体の結果サマリー、次ストーリーへの引き継ぎ事項、改善提案
30
28
  4. **報告と対応**: 失敗原因分類、差し戻し情報、修正優先度
31
29
 
32
30
  ## テスト結果の更新方針
33
31
 
34
32
  - **上書き更新**: 実施結果セクションは最新の結果のみを記載。過去の履歴は保持しない(Gitで管理)。更新日時を必ず記載。
35
33
  - **ステータス定義**: ✅ PASS(すべての受け入れ条件を満たす)、❌ FAIL(要修正)、⚠️ PARTIAL(軽微な問題あり)、🔄 未実施(テスト未実施)
36
- - **エビデンスの保存**: `qa-tests/phase1/evidence/` 配下にログファイル、スクリーンショット、テストレポート等を保存。命名規則: `{タスク番号}-{内容}.{拡張子}`
37
- - **実施タイミング**: タスク完了時(個別テスト)、フェーズ完了時(統合テスト)、リリース前(回帰テスト)
34
+ - **エビデンスの保存**: `qa-tests/evidence/story{N}/` 配下にログファイル、スクリーンショット、テストレポート等を保存。命名規則: `AC{N}-{M}-{内容}.{拡張子}`
35
+ - **実施タイミング**: AC実装完了時(個別テスト)、ストーリー全AC完了時(統合テスト)、リリース前(回帰テスト)
38
36
 
39
37
  ## テストシナリオの記載形式
40
38
 
@@ -88,12 +86,11 @@ curl -X POST http://localhost:3000/api/auth/magic-link \
88
86
  #### スクリーンショット命名規則
89
87
  ```
90
88
  evidence/
91
- ├── [画面名]-[状態].png
92
- ├── login-default.png # ログイン画面のデフォルト状態
93
- ├── login-error.png # ログイン画面のエラー状態
94
- ├── email-sent.png # メール送信確認画面
95
- ├── error-expired.png # エラー画面(期限切れ)
96
- └── ...
89
+ ├── story{N}/
90
+ ├── AC{N}-{M}-[状態].png
91
+ ├── AC1-1-default.png # AC1.1のデフォルト状態
92
+ ├── AC1-1-error.png # AC1.1のエラー状態
93
+ │ └── ...
97
94
  ```
98
95
 
99
96
  ## テストツール使用例
@@ -122,7 +119,7 @@ mcp_playwright.type({
122
119
 
123
120
  // スクリーンショット取得
124
121
  mcp_playwright.screenshot({
125
- path: 'qa-tests/phase1/evidence/test.png'
122
+ path: 'qa-tests/evidence/story1/AC1-1-screenshot.png'
126
123
  })
127
124
  ```
128
125
 
@@ -13,12 +13,11 @@
13
13
 
14
14
  ### 関連
15
15
  - **受け入れ条件**: AC1.1, AC1.2, AC1.3, AC1.4, AC1.5, AC1.6, AC1.7, AC1.8, AC1.9
16
- - **関連タスク**: 1.1.1, 1.1.2, 1.1.3, 2.1.1
17
16
 
18
17
  ### 実施タイミング
19
- - **タスク1.1.3完了後**: Step 1-4まで(部分実行:API認証まで)
20
- - **タスク2.1.5完了後**: 全Step(フル実行:UI実装完了)
21
- - **タスク2.1.8完了後**: 全Step(リグレッション:Phase 2完了確認)
18
+ - **AC1.1〜AC1.3実装後**: Step 1-4まで(部分実行:API認証まで)
19
+ - **AC1.4〜AC1.9実装後**: 全Step(フル実行:UI実装完了)
20
+ - **全AC実装後**: 全Step(リグレッション:最終確認)
22
21
 
23
22
  ### テスト手順
24
23
 
@@ -45,12 +44,11 @@
45
44
 
46
45
  ### 関連
47
46
  - **受け入れ条件**: AC2.1, AC2.2, AC2.3
48
- - **関連タスク**: 1.2.1, 1.2.2
49
47
 
50
48
  ### 実施タイミング
51
- - **タスク1.2.1完了後**: Step 1-2まで(部分実行:取得APIのみ)
52
- - **タスク1.2.2完了後**: 全Step(フル実行:プロフィールAPI実装完了)
53
- - **タスク2.1.8完了後**: 全Step(リグレッション:認証UI変更の影響確認)
49
+ - **AC2.1実装後**: Step 1-2まで(部分実行:取得APIのみ)
50
+ - **AC2.1〜AC2.3実装後**: 全Step(フル実行:プロフィールAPI実装完了)
51
+ - **全AC実装後**: 全Step(リグレッション:認証UI変更の影響確認)
54
52
 
55
53
  ### テスト手順
56
54
 
@@ -73,12 +71,11 @@
73
71
 
74
72
  ### 関連
75
73
  - **受け入れ条件**: AC1.2, AC1.3, AC1.5, AC1.6
76
- - **関連タスク**: 1.1.2, 1.1.3, 2.1.1
77
74
 
78
75
  ### 実施タイミング
79
- - **タスク1.1.3完了後**: Step 1-4まで(部分実行:APIエラーハンドリング)
80
- - **タスク2.1.4完了後**: 全Step(フル実行:UIエラー表示含む)
81
- - **タスク2.1.8完了後**: 全Step(リグレッション:Phase 2完了確認)
76
+ - **AC1.2〜AC1.6実装後**: Step 1-4まで(部分実行:APIエラーハンドリング)
77
+ - **AC1.7〜AC1.9実装後**: 全Step(フル実行:UIエラー表示含む)
78
+ - **全AC実装後**: 全Step(リグレッション:最終確認)
82
79
 
83
80
  ### テスト手順
84
81
 
@@ -103,12 +100,11 @@
103
100
 
104
101
  ### 関連
105
102
  - **受け入れ条件**: AC3.1, AC3.2, AC3.3, AC3.4, AC3.5, AC3.6
106
- - **関連タスク**: 3.1.1, 3.1.2, 3.1.3
107
103
 
108
104
  ### 実施タイミング
109
- - **タスク3.1.2完了後**: Step 1-3まで(部分実行:通知送信まで)
110
- - **タスク3.1.3完了後**: 全Step(フル実行:セッション無効化含む)
111
- - **タスク3.1.5完了後**: 全Step(リグレッション:Phase 3完了確認)
105
+ - **AC3.1〜AC3.3実装後**: Step 1-3まで(部分実行:通知送信まで)
106
+ - **AC3.4〜AC3.6実装後**: 全Step(フル実行:セッション無効化含む)
107
+ - **全AC実装後**: 全Step(リグレッション:最終確認)
112
108
 
113
109
  ### テスト手順
114
110