@einja/dev-cli 0.1.37 → 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 (131) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/task-loop/index.d.ts.map +1 -1
  3. package/dist/commands/task-loop/index.js +9 -5
  4. package/dist/commands/task-loop/index.js.map +1 -1
  5. package/dist/commands/task-loop/lib/dependency-resolver.js +1 -1
  6. package/dist/commands/task-loop/lib/dependency-resolver.js.map +1 -1
  7. package/dist/commands/task-loop/lib/dependency-resolver.test.js +6 -6
  8. package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -1
  9. package/dist/commands/task-loop/lib/github-client.d.ts +2 -1
  10. package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
  11. package/dist/commands/task-loop/lib/github-client.js +7 -6
  12. package/dist/commands/task-loop/lib/github-client.js.map +1 -1
  13. package/dist/commands/task-loop/lib/github-client.test.js +38 -22
  14. package/dist/commands/task-loop/lib/github-client.test.js.map +1 -1
  15. package/dist/commands/task-loop/lib/retry-utils.d.ts +34 -0
  16. package/dist/commands/task-loop/lib/retry-utils.d.ts.map +1 -0
  17. package/dist/commands/task-loop/lib/retry-utils.js +85 -0
  18. package/dist/commands/task-loop/lib/retry-utils.js.map +1 -0
  19. package/dist/commands/task-loop/lib/retry-utils.test.d.ts +2 -0
  20. package/dist/commands/task-loop/lib/retry-utils.test.d.ts.map +1 -0
  21. package/dist/commands/task-loop/lib/retry-utils.test.js +163 -0
  22. package/dist/commands/task-loop/lib/retry-utils.test.js.map +1 -0
  23. package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts +9 -0
  24. package/dist/commands/task-loop/lib/vibe-kanban-client.d.ts.map +1 -1
  25. package/dist/commands/task-loop/lib/vibe-kanban-client.js +64 -12
  26. package/dist/commands/task-loop/lib/vibe-kanban-client.js.map +1 -1
  27. package/dist/lib/file-system.d.ts +1 -5
  28. package/dist/lib/file-system.d.ts.map +1 -1
  29. package/dist/lib/file-system.js +2 -8
  30. package/dist/lib/file-system.js.map +1 -1
  31. package/dist/lib/mcp-config.js +3 -3
  32. package/dist/lib/mcp-config.js.map +1 -1
  33. package/dist/lib/mcp-config.test.js +2 -2
  34. package/dist/lib/mcp-config.test.js.map +1 -1
  35. package/dist/lib/merger.d.ts.map +1 -1
  36. package/dist/lib/merger.js +5 -5
  37. package/dist/lib/merger.js.map +1 -1
  38. package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
  39. package/dist/lib/preset-update/file-copier.js +5 -0
  40. package/dist/lib/preset-update/file-copier.js.map +1 -1
  41. package/dist/lib/preset-update/file-copier.test.js +26 -0
  42. package/dist/lib/preset-update/file-copier.test.js.map +1 -1
  43. package/dist/lib/sync/category-validator.d.ts +5 -1
  44. package/dist/lib/sync/category-validator.d.ts.map +1 -1
  45. package/dist/lib/sync/category-validator.js +16 -2
  46. package/dist/lib/sync/category-validator.js.map +1 -1
  47. package/dist/lib/sync/category-validator.test.js +14 -4
  48. package/dist/lib/sync/category-validator.test.js.map +1 -1
  49. package/dist/lib/sync/file-filter.d.ts.map +1 -1
  50. package/dist/lib/sync/file-filter.js +24 -0
  51. package/dist/lib/sync/file-filter.js.map +1 -1
  52. package/dist/lib/sync/file-filter.test.js +37 -0
  53. package/dist/lib/sync/file-filter.test.js.map +1 -1
  54. package/package.json +1 -1
  55. package/presets/default/.claude/agents/einja/specs/spec-qa-generator.md +40 -43
  56. package/presets/default/.claude/agents/einja/specs/spec-tasks-generator.md +16 -6
  57. package/presets/default/.claude/agents/einja/task/task-executer.md +13 -11
  58. package/presets/default/.claude/commands/einja/einja-sync.md +238 -0
  59. package/presets/default/.claude/commands/einja/spec-create.md +7 -3
  60. package/presets/default/.claude/commands/einja/task-exec.md +6 -6
  61. package/presets/default/.claude/settings.json +1 -0
  62. package/presets/default/.claude/skills/einja-coding-standards/SKILL.md +4 -3
  63. package/presets/default/.claude/skills/einja-coding-standards/references/import-conventions.md +69 -0
  64. package/presets/default/.claude/skills/einja-component-design/SKILL.md +3 -3
  65. package/presets/default/.claude/skills/einja-project-overview/SKILL.md +35 -0
  66. package/presets/default/.claude/skills/einja-skill-creator/SKILL.md +421 -0
  67. package/presets/default/.claude/skills/einja-skill-creator/scripts/init_skill.py +333 -0
  68. package/presets/default/.claude/skills/einja-skill-creator/scripts/package_skill.py +110 -0
  69. package/presets/default/.claude/skills/einja-skill-creator/scripts/quick_validate.py +117 -0
  70. package/presets/default/.claude/skills/einja-spec-context-loader/SKILL.md +6 -6
  71. package/presets/default/.claude/skills/einja-task-qa/SKILL.md +24 -22
  72. package/presets/default/.claude/skills/einja-task-qa/{reference → references}/troubleshooting.md +1 -1
  73. package/presets/default/.claude/skills/einja-task-qa/{reference → references}/usage-patterns.md +2 -2
  74. package/presets/default/.claude/skills/einja-task-qa/templates/qa-test-template.md +13 -13
  75. package/{scaffolds → presets/default}/.mcp.json +27 -6
  76. package/presets/default/.vscode/settings.json +18 -0
  77. package/presets/default/CLAUDE.md.template +192 -0
  78. package/{scaffolds → presets/default/docs/einja}/example/README.md +1 -1
  79. package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/README.md +20 -23
  80. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/evidence/story3/.gitkeep +0 -0
  81. package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/qa-tests/scenarios.md +12 -16
  82. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story1.md +101 -0
  83. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story2.md +70 -0
  84. package/presets/default/docs/einja/example/specs/issues/issue999-example-task/qa-tests/story3.md +69 -0
  85. package/{scaffolds → presets/default/docs/einja}/instructions/deployment-setup.md +93 -9
  86. package/{scaffolds → presets/default/docs/einja}/instructions/environment-setup.md +152 -4
  87. package/{scaffolds → presets/default/docs/einja}/instructions/local-server-environment-and-worktree.md +99 -0
  88. package/presets/default/docs/einja/instructions/neon-cli-reference.md +605 -0
  89. package/{scaffolds → presets/default/docs/einja}/instructions/vercel-cli-reference.md +80 -0
  90. package/{scaffolds → presets/default/docs/einja}/steering/acceptance-criteria-and-qa-guide.md +3 -4
  91. package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/environment-variables.md +4 -4
  92. package/{scaffolds → presets/default/docs/einja}/templates/README.md +1 -1
  93. package/{scaffolds → presets/default/docs/einja}/templates/qa-test.md.template +29 -26
  94. package/presets/default/symlinks.json +0 -45
  95. package/scaffolds/cli/preset.yaml +0 -137
  96. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-1.md +0 -268
  97. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-2.md +0 -179
  98. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase1/1-3.md +0 -392
  99. package/scaffolds/example/specs/issues/issue999-example-task/qa-tests/phase2/2-1.md +0 -459
  100. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/naming-conventions.md +0 -0
  101. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/prohibited-patterns.md +0 -0
  102. /package/presets/default/.claude/skills/einja-coding-standards/{reference → references}/typescript-rules.md +0 -0
  103. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/directory-structure.md +0 -0
  104. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/props-patterns.md +0 -0
  105. /package/presets/default/.claude/skills/einja-component-design/{reference → references}/styling-guide.md +0 -0
  106. /package/presets/default/.claude/skills/einja-task-qa/{reference → references}/failure-patterns.md +0 -0
  107. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/design.md +0 -0
  108. /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
  109. /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
  110. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/requirements.md +0 -0
  111. /package/{scaffolds → presets/default/docs/einja}/example/specs/issues/issue999-example-task/tasks.md +0 -0
  112. /package/{scaffolds → presets/default/docs/einja}/instructions/task-execute.md +0 -0
  113. /package/{scaffolds → presets/default/docs/einja}/instructions/task-vibe-kanban-loop.md +0 -0
  114. /package/{scaffolds → presets/default/docs/einja}/steering/README.md +0 -0
  115. /package/{scaffolds → presets/default/docs/einja}/steering/architecture.md +0 -0
  116. /package/{scaffolds → presets/default/docs/einja}/steering/branch-strategy.md +0 -0
  117. /package/{scaffolds → presets/default/docs/einja}/steering/commit-rules.md +0 -0
  118. /package/{scaffolds → presets/default/docs/einja}/steering/db-schema-design.md +0 -0
  119. /package/{scaffolds → presets/default/docs/einja}/steering/development/api-development.md +0 -0
  120. /package/{scaffolds → presets/default/docs/einja}/steering/development/backend-architecture.md +0 -0
  121. /package/{scaffolds → presets/default/docs/einja}/steering/development/database-guidelines.md +0 -0
  122. /package/{scaffolds → presets/default/docs/einja}/steering/development/frontend-development.md +0 -0
  123. /package/{scaffolds → presets/default/docs/einja}/steering/development/review-guidelines.md +0 -0
  124. /package/{scaffolds → presets/default/docs/einja}/steering/development/testing-strategy.md +0 -0
  125. /package/{scaffolds → presets/default/docs/einja}/steering/development-workflow.md +0 -0
  126. /package/{scaffolds → presets/default/docs/einja}/steering/infrastructure/deployment.md +0 -0
  127. /package/{scaffolds → presets/default/docs/einja}/steering/product.md +0 -0
  128. /package/{scaffolds → presets/default/docs/einja}/steering/task-management.md +0 -0
  129. /package/{scaffolds → presets/default/docs/einja}/templates/design-simple.md.template +0 -0
  130. /package/{scaffolds → presets/default/docs/einja}/templates/design.md.template +0 -0
  131. /package/{scaffolds → presets/default/docs/einja}/templates/requirements.md.template +0 -0
@@ -0,0 +1,238 @@
1
+ ---
2
+ description: "テンプレート同期を実行。dev-cli/create-einja-appのsyncをカテゴリ選択式で実行し、コンフリクトも自動解消します"
3
+ allowed-tools: Bash, AskUserQuestion, Read, Grep, Glob
4
+ ---
5
+
6
+ # テンプレート同期コマンド
7
+
8
+ ## コマンドの目的
9
+
10
+ `@einja/dev-cli sync` と `create-einja-app sync` をカテゴリ選択式で実行し、テンプレート更新をリポジトリに取り込む。コンフリクト発生時は対話的に解消する。
11
+
12
+ ## 処理フロー
13
+
14
+ ### Step 1: CLI検出
15
+
16
+ 以下のコマンドで利用可能なCLIを検出する。
17
+
18
+ ```bash
19
+ npx @einja/dev-cli --version 2>/dev/null
20
+ npx create-einja-app --version 2>/dev/null
21
+ ```
22
+
23
+ | 検出結果 | 動作 |
24
+ |---------|------|
25
+ | 両方なし | エラーメッセージを表示して終了: `「@einja/dev-cli または create-einja-app が必要です。npm install @einja/dev-cli でインストールしてください。」` |
26
+ | dev-cli のみ | dev-cli カテゴリのみ表示 |
27
+ | create-einja-app のみ | create-app カテゴリのみ表示 |
28
+ | 両方あり | Step 2 の質問1で選択 |
29
+
30
+ ### Step 2: カテゴリ選択(AskUserQuestion)
31
+
32
+ 2段階で同期対象を選択する。
33
+
34
+ #### 質問1: 同期ソースの選択(両方利用可能な場合のみ)
35
+
36
+ ```yaml
37
+ AskUserQuestion:
38
+ question: "どのCLIで同期しますか?"
39
+ header: "同期ソース選択"
40
+ options:
41
+ - label: "dev-cli のみ(Claude Code関連ファイル)"
42
+ description: ".claude/ 配下のcommands, agents, skills, hooks、docs/einja/、.envrc、.vscode/settings.json"
43
+ - label: "create-einja-app のみ(プロジェクトテンプレート)"
44
+ description: "biome.json, .gitignore, .github/, Dockerfile, turbo.json, package.json 等のプロジェクト基盤ファイル"
45
+ - label: "両方"
46
+ description: "dev-cli → create-einja-app の順で両方実行(推奨)"
47
+ ```
48
+
49
+ 片方のみ利用可能な場合はこの質問をスキップする。
50
+
51
+ #### 質問2: カテゴリ選択
52
+
53
+ 選択されたCLIに応じて、対象カテゴリを選択する。AskUserQuestion の options は最大4つまでのため、以下の形式で提示する。
54
+
55
+ ```yaml
56
+ AskUserQuestion:
57
+ question: "同期するカテゴリを選択してください"
58
+ header: "カテゴリ選択"
59
+ options:
60
+ - label: "全カテゴリ(デフォルト推奨)"
61
+ description: "apps, packages を除く全カテゴリを同期します。最も安全で推奨される選択です"
62
+ - label: "カスタム選択(除外カテゴリを指定)"
63
+ description: "特定のカテゴリを除外したい場合。次の入力で除外カテゴリをコンマ区切りで指定します"
64
+ ```
65
+
66
+ **「カスタム選択」の場合**: 以下のカテゴリ一覧を表示し、除外したいカテゴリをコンマ区切りで入力してもらう。
67
+
68
+ **dev-cli カテゴリ一覧:**
69
+
70
+ | カテゴリ名 | 対象ファイル | デフォルト |
71
+ |-----------|-------------|-----------|
72
+ | `commands` | `.claude/commands/` | ON |
73
+ | `agents` | `.claude/agents/` | ON |
74
+ | `skills` | `.claude/skills/` | ON |
75
+ | `hooks` | `.claude/hooks/` | ON |
76
+ | `docs` | `docs/einja/` | ON |
77
+ | `env` | `.envrc` | ON |
78
+ | `tools` | `.vscode/settings.json` | ON |
79
+
80
+ **create-einja-app カテゴリ一覧:**
81
+
82
+ | カテゴリ名 | 対象ファイル | デフォルト |
83
+ |-----------|-------------|-----------|
84
+ | `env` | `.env*`, `.node-version` | ON |
85
+ | `tools` | `biome.json`, `.prettierrc`, `.editorconfig`(※ `.vscode/` はdev-cli管理のため除外) | ON |
86
+ | `git` | `.gitignore`, `.gitattributes` | ON |
87
+ | `git-hooks` | `.husky/` | ON |
88
+ | `github` | `.github/workflows/`, `.github/actions/` | ON |
89
+ | `docker` | `Dockerfile*`, `docker-compose*.yml` | ON |
90
+ | `monorepo` | `turbo.json`, `pnpm-workspace.yaml` | ON |
91
+ | `root-config` | `package.json`, `tsconfig.json` | ON |
92
+ | `scripts` | `scripts/` | ON |
93
+ | `docs` | `README.md`, `docs/` | ON |
94
+ | `apps` | `apps/**` | **OFF** |
95
+ | `packages` | `packages/**` | **OFF** |
96
+
97
+ > **重複に関する注意**: dev-cli の `tools` は `.vscode/settings.json` のみを管理し、create-einja-app の `tools` は `biome.json` 等を管理する。`.vscode/` 配下は dev-cli 側が管轄するため、create-einja-app の `tools` カテゴリでは `.vscode/` は対象外。
98
+
99
+ > **デフォルトOFFのカテゴリ**: `apps` と `packages` はデフォルトOFF。これらを同期に含めたい場合は、カスタム選択で明示的に追加する旨をユーザーに伝える(例: 「`+apps,+packages` のように `+` 付きで追加カテゴリを指定できます」)。
100
+
101
+ ### Step 3: dry-run で差分プレビュー
102
+
103
+ 選択されたカテゴリで dry-run を実行し、変更予定の差分をユーザーに表示する。
104
+
105
+ ```bash
106
+ # dev-cli の場合
107
+ npx @einja/dev-cli sync --only <categories> --dry-run --yes
108
+
109
+ # create-einja-app の場合
110
+ npx create-einja-app sync --categories <categories> --dry-run
111
+ ```
112
+
113
+ > **注**: 両CLIでカテゴリ指定のオプション名が異なる(dev-cli: `--only` / create-einja-app: `--categories`)
114
+
115
+ - `<categories>` はStep 2で選択されたカテゴリをコンマ区切りで渡す
116
+ - 差分がない場合は「変更はありません」と表示して該当CLIの処理をスキップ
117
+ - 差分がある場合はファイル一覧と変更内容をユーザーに提示
118
+
119
+ ### Step 4: 実行確認 → sync実行
120
+
121
+ 差分プレビューを見せた上で、ユーザーに実行可否を確認する。
122
+
123
+ ```yaml
124
+ AskUserQuestion:
125
+ question: "上記の変更を適用しますか?"
126
+ header: "同期実行の確認"
127
+ options:
128
+ - label: "はい、実行する"
129
+ description: "表示された差分の通りにファイルを更新します"
130
+ - label: "いいえ、キャンセル"
131
+ description: "変更を適用せずに終了します"
132
+ ```
133
+
134
+ **実行順序**: dev-cli を先に実行し、次に create-einja-app を実行する(dev-cli が Claude Code 設定を先に更新するため)。
135
+
136
+ ```bash
137
+ # dev-cli
138
+ npx @einja/dev-cli sync --only <categories> --yes --json
139
+
140
+ # create-einja-app
141
+ npx create-einja-app sync --categories <categories>
142
+ ```
143
+
144
+ - dev-cli は `--json` オプションで構造化出力を取得しパースする
145
+ - create-einja-app sync には `--yes` フラグがないが、`--categories` 指定時は対話プロンプトをスキップする
146
+
147
+ ### Step 5: コンフリクト検出 → 手動解消サポート
148
+
149
+ sync 固有のコンフリクトを検出し、対話的に解消する(git コンフリクトとは異なる)。
150
+
151
+ #### コンフリクトの検出方法
152
+
153
+ | CLI | 検出方法 |
154
+ |-----|---------|
155
+ | dev-cli | JSON出力の `status: "partial_success"` かつ `conflicts > 0` |
156
+ | create-einja-app | 標準出力に「コンフリクト」文字列が含まれる |
157
+
158
+ #### コンフリクト解消フロー
159
+
160
+ 1. **コンフリクトファイルの一覧を取得・表示**
161
+ - dev-cli: JSON出力の `conflicts` 配列からファイルパスを抽出
162
+ - create-einja-app: 標準出力から「コンフリクト」を含む行を抽出し、ファイルパスをパース
163
+ - 取得したファイルパスを表形式で一覧表示
164
+
165
+ 2. **各ファイルの差分内容を確認**
166
+ - `Read` ツールでコンフリクトファイルの内容を読み込み、差分をユーザーに提示
167
+
168
+ 3. **ユーザーに解決方針を確認**
169
+
170
+ ```yaml
171
+ AskUserQuestion:
172
+ question: "コンフリクトの解決方針を選択してください"
173
+ header: "コンフリクト解決"
174
+ options:
175
+ - label: "テンプレート優先(リモートの最新版で上書き)"
176
+ description: "テンプレートの内容を採用し、ローカルのカスタマイズを破棄します"
177
+ - label: "ローカル優先(現在の内容を維持)"
178
+ description: "現在のローカルファイルを維持し、テンプレートの変更を破棄します"
179
+ - label: "手動マージ(1ファイルずつ確認)"
180
+ description: "各ファイルの差分を確認しながら、手動でマージ内容を決定します"
181
+ ```
182
+
183
+ 4. **方針に従って解消**
184
+ - テンプレート優先: dry-run出力やCLIのコンフリクト情報からテンプレート側の内容を特定し、`Edit` ツールで上書き
185
+ - ローカル優先: 現在の内容を維持(変更なし)
186
+ - 手動マージ: テンプレート内容とローカル内容を両方表示し、ユーザーと対話しながら `Edit` で編集
187
+
188
+ ### Step 6: 結果サマリー表示
189
+
190
+ テーブル形式で同期結果の概要を表示する。
191
+
192
+ ```markdown
193
+ ## 同期結果サマリー
194
+
195
+ | CLI | 成功 | スキップ | コンフリクト |
196
+ |-----|------|---------|------------|
197
+ | dev-cli | 5 | 2 | 1 (解消済み) |
198
+ | create-einja-app | 8 | 3 | 0 |
199
+ | **合計** | **13** | **5** | **1** |
200
+ ```
201
+
202
+ ### Step 7: 結果詳細表示
203
+
204
+ 各ファイルの詳細結果を以下の形式で表示する。
205
+
206
+ ```markdown
207
+ ### dev-cli sync 詳細
208
+ ✓ .claude/commands/einja/task-exec.md (更新)
209
+ ✓ .claude/skills/einja-coding-standards/SKILL.md (更新)
210
+ ⏭ .claude/agents/einja/task-executer.md (変更なし)
211
+ ⚠ .claude/hooks/einja/pre-commit.sh (コンフリクト → 解消済み)
212
+
213
+ ### create-einja-app sync 詳細
214
+ ✨ .github/workflows/ci.yml (新規)
215
+ ✓ biome.json (更新)
216
+ ⏭ .gitignore (変更なし)
217
+ ```
218
+
219
+ **アイコンの意味:**
220
+
221
+ | アイコン | 意味 |
222
+ |---------|------|
223
+ | ✓ | 更新成功 |
224
+ | ✨ | 新規ファイル追加 |
225
+ | ⏭ | 変更なし(スキップ) |
226
+ | ⚠ | コンフリクト発生(解消済み) |
227
+
228
+ **パース方法:**
229
+ - dev-cli: `--json` 出力の `files` 配列をパースして各ファイルのステータスを表示。JSON形式が不正な場合は標準出力をそのまま表示
230
+ - create-einja-app: 標準出力から `✓` / `⚠️` / `スキップ` 行を抽出して表示。抽出できない場合は標準出力をそのまま表示
231
+
232
+ ## 注意事項
233
+
234
+ - `npx` 経由で実行するため、利用者側に事前インストールは不要
235
+ - dev-cli は `.vscode/settings.json` を管理し、create-einja-app の `tools` カテゴリでは `.vscode/` 配下は対象外
236
+ - `apps` と `packages` カテゴリはデフォルト OFF。既存の実装コードを上書きするリスクがあるため、明示的な指定が必要
237
+ - コンフリクト解消は sync 固有のもので、git コンフリクトとは異なる。`einja-conflict-resolver` Skill は使用しない
238
+ - 両方のCLIを実行する場合、dev-cli を先に実行すること(Claude Code 設定が先に更新される必要があるため)
@@ -169,7 +169,7 @@ AskUserQuestion:
169
169
  1. spec-qa-generatorエージェントで作成
170
170
  - requirements.mdとdesign.mdの内容を参照
171
171
  - **シナリオテスト(scenarios.md)**: 複数タスクをまたぐ継続操作フローのテスト仕様
172
- - **フェーズ別テスト仕様**: 各タスクグループのテスト仕様
172
+ - **Story別テスト仕様**: 各ユーザーストーリー(AC単位)のテスト仕様
173
173
  - 受け入れ基準(AC)との対応付け
174
174
  2. **ユーザーに内容確認を依頼**
175
175
  - 作成したqa-tests/ディレクトリの構成と概要を提示
@@ -283,7 +283,9 @@ AskUserQuestion:
283
283
  ├── design.md # 設計書(技術詳細)
284
284
  └── qa-tests/ # QAテスト仕様
285
285
  ├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
286
- └── phase{N}.md # 各フェーズのテスト仕様
286
+ ├── story{N}.md # 各ストーリーのテスト仕様(AC単位)
287
+ └── evidence/ # エビデンス(スクリーンショット等)
288
+ └── story{N}/ # ストーリー別
287
289
 
288
290
  (注: タスク一覧はGitHub Issueに記述)
289
291
  ```
@@ -305,7 +307,9 @@ AskUserQuestion:
305
307
  │ └── quality.md # 品質と運用
306
308
  └── qa-tests/ # QAテスト仕様
307
309
  ├── scenarios.md # シナリオテスト(複数タスクをまたぐフロー)
308
- └── phase{N}.md # 各フェーズのテスト仕様
310
+ ├── story{N}.md # 各ストーリーのテスト仕様(AC単位)
311
+ └── evidence/ # エビデンス(スクリーンショット等)
312
+ └── story{N}/ # ストーリー別
309
313
 
310
314
  (注: タスク一覧はGitHub Issueに記述)
311
315
  ```
@@ -212,7 +212,7 @@ Issue #123 のPhase 99 タスク(タスクグループ 99.1)を実行して
212
212
  - 各 AC に対して、Given/When/Then に基づくテストシナリオを作成
213
213
  - Integration: API + DB + ミドルウェアの連携テスト
214
214
  - Browser: Playwright MCP を使用したユーザーシナリオテスト
215
- - QA 仕様書(`qa-tests/phaseN/X-Y.md`)に記録
215
+ - QA 仕様書(`qa-tests/story{N}.md`)に記録
216
216
 
217
217
  3. **SUCCESS 判定基準**
218
218
  - **検証レベルが「Integration」「Browser」の全ての AC が満たされた場合のみ**、SUCCESS 判定
@@ -272,11 +272,11 @@ task-qa は以下の基準で失敗原因を分類し、適切な戻し先を決
272
272
 
273
273
  ## QA仕様書の作成・更新フロー
274
274
 
275
- ### 初回実行時(qa-tests/phaseN/X-Y.md が存在しない場合)
275
+ ### 初回実行時(qa-tests/story{N}.md が存在しない場合)
276
276
 
277
277
  1. **ファイルの新規作成**
278
- - タスクグループ番号に基づいて `qa-tests/phaseN/X-Y.md` を新規作成
279
- - 例: タスクグループ1.1 → `qa-tests/phase1/1-1.md`
278
+ - タスクメタデータの「実装AC」からストーリー番号を特定し、`qa-tests/story{N}.md` を新規作成
279
+ - 例: 実装AC が AC1.1, AC1.2 → `qa-tests/story1.md`
280
280
 
281
281
  2. **受け入れ基準の抽出**
282
282
  - `requirements.md` の各ユーザーストーリー配下の「受け入れ基準」セクションから各ACを抽出
@@ -303,10 +303,10 @@ task-qa は以下の基準で失敗原因を分類し、適切な戻し先を決
303
303
  **ステータス: [✅ SUCCESS / ❌ FAILURE / ⚠️ PARTIAL]**
304
304
  ```
305
305
 
306
- ### 2回目以降の実行時(qa-tests/phaseN/X-Y.md が既に存在する場合)
306
+ ### 2回目以降の実行時(qa-tests/story{N}.md が既に存在する場合)
307
307
 
308
308
  1. **既存ファイルの読み込み**
309
- - `qa-tests/phaseN/X-Y.md` を読み込む
309
+ - `qa-tests/story{N}.md` を読み込む
310
310
 
311
311
  2. **更新対象の特定**
312
312
  - 「実施結果」セクションのみを更新対象とする
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "includeCoAuthoredBy": false,
3
+ "plansDirectory": "docs/plans",
3
4
  "permissions": {
4
5
  "allow": [
5
6
  "Bash(npm:*)",
@@ -30,9 +30,10 @@ description: "TypeScript/React/Next.jsのコーディング規約とベストプ
30
30
 
31
31
  各カテゴリの詳細な規約は以下を参照してください:
32
32
 
33
- - [TypeScript規約](./reference/typescript-rules.md) - 型安全性、型定義、禁止事項
34
- - [命名規則](./reference/naming-conventions.md) - 変数・関数・型の命名規則
35
- - [禁止事項](./reference/prohibited-patterns.md) - 絶対に使用禁止のパターン
33
+ - [TypeScript規約](./references/typescript-rules.md) - 型安全性、型定義、禁止事項
34
+ - [命名規則](./references/naming-conventions.md) - 変数・関数・型の命名規則
35
+ - [禁止事項](./references/prohibited-patterns.md) - 絶対に使用禁止のパターン
36
+ - [インポートパス規約](./references/import-conventions.md) - パッケージ間・アプリ内のインポートルール
36
37
 
37
38
  ## クイックリファレンス
38
39
 
@@ -0,0 +1,69 @@
1
+ # インポートパスの規約
2
+
3
+ ## パッケージ間のインポート
4
+
5
+ ```typescript
6
+ // 認証機能(共通設定)
7
+ import { baseAuthOptions, mergeAuthOptions } from "@repo/front-core/auth";
8
+
9
+ // 認証機能(アプリローカル)
10
+ import { auth, signIn, signOut } from "@/lib/auth";
11
+ import { requireAuth, withAuth } from "@/lib/auth/guard";
12
+
13
+ // データベース
14
+ import { prisma } from "@repo/server-core";
15
+
16
+ // UIコンポーネント
17
+ import { Button } from "@repo/ui/button";
18
+ import { Card } from "@repo/ui/card";
19
+ import { cn } from "@repo/ui/utils";
20
+
21
+ // 型定義
22
+ import type { Session } from "next-auth"; // 型拡張はfront-coreで定義済み
23
+ ```
24
+
25
+ ## アプリ内のインポート
26
+
27
+ ```typescript
28
+ // apps/web内では従来通り@/を使用
29
+ import { Component } from "@/components/...";
30
+ import { helper } from "@/lib/...";
31
+ ```
32
+
33
+ ## 認証設定のパターン
34
+
35
+ アプリ固有の認証設定は `@/lib/auth/index.ts` で `baseAuthOptions` を拡張します:
36
+
37
+ ```typescript
38
+ import { baseAuthOptions, mergeAuthOptions } from "@repo/front-core/auth";
39
+ import NextAuth from "next-auth";
40
+
41
+ const authOptions = mergeAuthOptions(baseAuthOptions, {
42
+ pages: { signIn: "/signin" }, // アプリ固有
43
+ callbacks: {
44
+ async redirect({ url, baseUrl }) {
45
+ // アプリ固有のリダイレクトロジック
46
+ },
47
+ },
48
+ });
49
+
50
+ export const { handlers, signIn, signOut, auth } = NextAuth(authOptions);
51
+ ```
52
+
53
+ ## インポート順序
54
+
55
+ インポート文は以下の順序で記述してください:
56
+
57
+ 1. **Node.js標準ライブラリ**
58
+ 2. **外部ライブラリ**
59
+ 3. **内部パッケージ** (`@repo/*`)
60
+ 4. **アプリ内インポート** (`@/`, `@web/`, `@admin/` 等)
61
+ 5. **相対インポート**
62
+
63
+ 各グループ間には空行を入れてください。
64
+
65
+ ## 禁止事項
66
+
67
+ - **相対パスの使用禁止**: import文で `../` や `./` を使用しない(CSS importやindex.tsからの同階層re-exportを除く)
68
+ - 必ずアプリ固有エイリアス(`@web/*`, `@admin/*` 等)またはパッケージ名(`@repo/server-core` 等)を使用すること
69
+ - **index.ts不使用**: パッケージエクスポートにindex.tsは使わず、直接ファイルパスを指定する(`@repo/server-core/infrastructure/database/client` 等)
@@ -32,9 +32,9 @@ description: "Reactコンポーネントの設計原則と実装ガイドライ
32
32
 
33
33
  各カテゴリの詳細な規約は以下を参照してください:
34
34
 
35
- - [ディレクトリ構造](./reference/directory-structure.md) - ファイル配置とディレクトリ設計
36
- - [Props設計パターン](./reference/props-patterns.md) - Props設計とイベントハンドリング
37
- - [スタイリングガイド](./reference/styling-guide.md) - Tailwind CSSを使用したスタイリング規約
35
+ - [ディレクトリ構造](./references/directory-structure.md) - ファイル配置とディレクトリ設計
36
+ - [Props設計パターン](./references/props-patterns.md) - Props設計とイベントハンドリング
37
+ - [スタイリングガイド](./references/styling-guide.md) - Tailwind CSSを使用したスタイリング規約
38
38
 
39
39
  ## クイックリファレンス
40
40
 
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: project-overview
3
+ description: "プロジェクトの全体構成・技術スタックの参照ハブ"
4
+ ---
5
+
6
+ # プロジェクト概要 Skill
7
+
8
+ ## 概要
9
+
10
+ このSkillは、プロジェクトの全体構成・技術スタックを把握したいときに参照するエントリポイントです。
11
+
12
+ ## プロジェクト概要
13
+
14
+ - **構成**: Turborepoモノレポ(pnpm workspaces)
15
+ - **アプリ**: `apps/web`(メイン管理画面)
16
+ - **共通パッケージ**: `@repo/config`, `@repo/front-core`, `@repo/server-core`, `@repo/ui`
17
+
18
+ ## 詳細ドキュメント
19
+
20
+ @docs/einja/steering/architecture.md
21
+
22
+ ## 関連Skill
23
+
24
+ - [coding-standards](../einja-coding-standards/SKILL.md) - コーディング規約(インポートパス規約含む)
25
+ - [infra-maintenance](../einja-infra-maintenance/SKILL.md) - 開発環境セットアップ・サーバー管理
26
+ - [component-design](../einja-component-design/SKILL.md) - コンポーネント設計ガイドライン
27
+
28
+ ## 頻出コマンド
29
+
30
+ - `pnpm dev:bg` / `pnpm dev:stop` - 開発サーバー起動/停止
31
+ - `pnpm build` - プロダクションビルド
32
+ - `pnpm lint:fix && pnpm format:fix` - コード自動修正
33
+ - `pnpm typecheck` - 型チェック
34
+ - `pnpm test` - テスト実行
35
+ - `pnpm prepush` - プッシュ前チェック(lint + typecheck + test)