create-einja-app 0.3.1 → 0.3.3

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 (120) hide show
  1. package/README.md +34 -1
  2. package/dist/cli.js +92 -80
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +1 -1
  5. package/templates/default/.changeset/config.json +11 -0
  6. package/templates/default/.claude/hooks/einja/plan-mode-skill-loader.sh +27 -0
  7. package/templates/default/.claude/settings.json +29 -1
  8. package/templates/default/.claude/skills/cli-package-specs/SKILL.md +247 -0
  9. package/templates/default/.einja-sync.json +1 -1
  10. package/templates/default/.env.personal.example +6 -2
  11. package/templates/default/.envrc +5 -0
  12. package/templates/default/.github/release.yml +10 -0
  13. package/templates/default/.github/workflows/changeset-status.yml +60 -0
  14. package/templates/default/.github/workflows/deploy-pr-preview.yml +23 -24
  15. package/templates/default/.github/workflows/deploy-stable-branches.yml +336 -100
  16. package/templates/default/.mcp.json +2 -12
  17. package/templates/default/.serena/project.yml +7 -0
  18. package/templates/default/CLAUDE.md +61 -10
  19. package/templates/default/README.md +22 -10
  20. package/templates/default/apps/admin/package.json +1 -1
  21. package/templates/default/apps/admin/tsconfig.json +2 -1
  22. package/templates/default/apps/web/package.json +1 -1
  23. package/templates/default/apps/web/tsconfig.json +2 -1
  24. package/templates/default/docs/plans/.gitkeep +0 -0
  25. package/templates/default/docs/plans/agile-munching-knuth.md +161 -0
  26. package/templates/default/docs/plans/agile-riding-nova.md +158 -0
  27. package/templates/default/docs/plans/agile-wibbling-dusk.md +91 -0
  28. package/templates/default/docs/plans/ancient-greeting-flamingo-agent-a87e67c.md +221 -0
  29. package/templates/default/docs/plans/ancient-greeting-flamingo-agent-ab73a1c.md +107 -0
  30. package/templates/default/docs/plans/ancient-greeting-flamingo.md +120 -0
  31. package/templates/default/docs/plans/ancient-watching-otter.md +152 -0
  32. package/templates/default/docs/plans/bright-sauteeing-bumblebee.md +30 -0
  33. package/templates/default/docs/plans/bright-stargazing-dawn.md +87 -0
  34. package/templates/default/docs/plans/calm-stirring-bonbon.md +196 -0
  35. package/templates/default/docs/plans/calm-watching-widget.md +111 -0
  36. package/templates/default/docs/plans/cheerful-wiggling-ullman.md +164 -0
  37. package/templates/default/docs/plans/compiled-humming-cherny.md +94 -0
  38. package/templates/default/docs/plans/composed-doodling-mountain.md +362 -0
  39. package/templates/default/docs/plans/dapper-launching-lynx.md +81 -0
  40. package/templates/default/docs/plans/dazzling-foraging-cascade.md +32 -0
  41. package/templates/default/docs/plans/effervescent-munching-kite-agent-ac08baf.md +672 -0
  42. package/templates/default/docs/plans/effervescent-munching-kite-agent-aecc373.md +442 -0
  43. package/templates/default/docs/plans/effervescent-munching-kite.md +263 -0
  44. package/templates/default/docs/plans/enchanted-wiggling-ember-agent-a5befd57d0ca4c7c7.md +177 -0
  45. package/templates/default/docs/plans/enchanted-wiggling-ember.md +170 -0
  46. package/templates/default/docs/plans/federated-questing-kahan.md +47 -0
  47. package/templates/default/docs/plans/fix-orphan-cleaner-review.md +25 -0
  48. package/templates/default/docs/plans/fix-sync-template-variables.md +162 -0
  49. package/templates/default/docs/plans/flickering-pondering-hearth.md +26 -0
  50. package/templates/default/docs/plans/fluttering-snuggling-sprout.md +172 -0
  51. package/templates/default/docs/plans/generic-sleeping-snowglobe-agent-a41d8da.md +179 -0
  52. package/templates/default/docs/plans/generic-sleeping-snowglobe.md +108 -0
  53. package/templates/default/docs/plans/generic-snuggling-pudding.md +57 -0
  54. package/templates/default/docs/plans/glimmering-giggling-sedgewick.md +126 -0
  55. package/templates/default/docs/plans/glittery-swimming-bachman.md +78 -0
  56. package/templates/default/docs/plans/happy-watching-toast.md +56 -0
  57. package/templates/default/docs/plans/harmonic-strolling-nebula.md +210 -0
  58. package/templates/default/docs/plans/idempotent-wiggling-cherny.md +122 -0
  59. package/templates/default/docs/plans/import-alias-refactor.md +75 -0
  60. package/templates/default/docs/plans/lazy-percolating-sloth-agent-abda679.md +346 -0
  61. package/templates/default/docs/plans/lazy-percolating-sloth.md +151 -0
  62. package/templates/default/docs/plans/linked-greeting-llama-agent-a7a6e5b.md +345 -0
  63. package/templates/default/docs/plans/linked-greeting-llama.md +467 -0
  64. package/templates/default/docs/plans/lovely-bubbling-rose.md +80 -0
  65. package/templates/default/docs/plans/optimized-watching-sprout.md +149 -0
  66. package/templates/default/docs/plans/peaceful-beaming-toast-agent-a292da6.md +288 -0
  67. package/templates/default/docs/plans/peaceful-beaming-toast-agent-a819699.md +366 -0
  68. package/templates/default/docs/plans/peaceful-beaming-toast-agent-ac11de2.md +474 -0
  69. package/templates/default/docs/plans/peaceful-beaming-toast.md +345 -0
  70. package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6194c.md +300 -0
  71. package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6900e.md +444 -0
  72. package/templates/default/docs/plans/purrfect-spinning-hickey.md +361 -0
  73. package/templates/default/docs/plans/recursive-fluttering-mitten.md +176 -0
  74. package/templates/default/docs/plans/recursive-kindling-lemon-agent-a42199e.md +186 -0
  75. package/templates/default/docs/plans/recursive-kindling-lemon.md +36 -0
  76. package/templates/default/docs/plans/seed-migration-tests.md +47 -0
  77. package/templates/default/docs/plans/sprightly-leaping-manatee.md +224 -0
  78. package/templates/default/docs/plans/stateful-wishing-lerdorf.md +161 -0
  79. package/templates/default/docs/plans/streamed-purring-wreath.md +40 -0
  80. package/templates/default/docs/plans/synthetic-percolating-pearl.md +101 -0
  81. package/templates/default/docs/plans/todo-create-einja-app-ux-fix.md +16 -0
  82. package/templates/default/docs/plans/todo-direnv-hang-fix.md +12 -0
  83. package/templates/default/docs/plans/todo-fix-sync-template-variables.md +21 -0
  84. package/templates/default/docs/plans/todo-github-actions-release-workflow.md +34 -0
  85. package/templates/default/docs/plans/todo-issue-spec-rename.md +24 -0
  86. package/templates/default/docs/plans/todo-phase4-marker-update.md +39 -0
  87. package/templates/default/docs/plans/todo-skill-creator-sync.md +23 -0
  88. package/templates/default/docs/plans/todo-skill-creator-upgrade.md +18 -0
  89. package/templates/default/docs/plans/typed-snuggling-parnas-agent-a6f6391.md +476 -0
  90. package/templates/default/docs/plans/typed-snuggling-parnas-agent-adb678b.md +144 -0
  91. package/templates/default/docs/plans/typed-snuggling-parnas.md +84 -0
  92. package/templates/default/docs/plans/velvety-chasing-spark.md +28 -0
  93. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a30aa4f.md +534 -0
  94. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a57a278.md +508 -0
  95. package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a90b809.md +421 -0
  96. package/templates/default/docs/plans/warm-hopping-lighthouse.md +199 -0
  97. package/templates/default/docs/plans/wondrous-strolling-crystal-agent-a0615fc.md +215 -0
  98. package/templates/default/docs/plans/wondrous-strolling-crystal.md +182 -0
  99. package/templates/default/docs/plans/zesty-roaming-steele.md +74 -0
  100. package/templates/default/docs/verification-test.md +2 -0
  101. package/templates/default/gitignore +9 -1
  102. package/templates/default/package.json +6 -2
  103. package/templates/default/packages/admin-ui/package.json +1 -1
  104. package/templates/default/packages/server-core/tsconfig.json +6 -1
  105. package/templates/default/pnpm-lock.yaml +823 -57
  106. package/templates/default/scripts/ensure-serena.sh +75 -0
  107. package/templates/default/scripts/env-rotate-secrets.ts +66 -6
  108. package/templates/default/scripts/init-github.ts +363 -0
  109. package/templates/default/scripts/init.sh +11 -5
  110. package/templates/default/scripts/lib/worktree-config.ts +64 -0
  111. package/templates/default/scripts/setup-dev.ts +16 -1
  112. package/templates/default/scripts/stop-serena.sh +25 -0
  113. package/templates/default/scripts/worktree/dev.ts +2 -2
  114. package/templates/default/.claude/skills/create-einja-app-release/SKILL.md +0 -186
  115. package/templates/default/.claude/skills/dev-cli-release/SKILL.md +0 -173
  116. package/templates/default/.cursor/commands/spec-create.md +0 -227
  117. package/templates/default/.cursor/commands/task-exec.md +0 -287
  118. package/templates/default/.cursor/commands/update-docs-by-task-specs.md +0 -448
  119. /package/templates/default/scripts/{cli-template-update.ts → _cli-template-update.ts} +0 -0
  120. /package/templates/default/scripts/{template-update.ts → _template-update.ts} +0 -0
@@ -0,0 +1,421 @@
1
+ # infra-maintenance Skill 現状適合性分析報告書
2
+
3
+ ## 調査サマリー
4
+
5
+ **調査日**: 2026-03-03
6
+ **調査対象**: `.claude/skills/einja-infra-maintenance/SKILL.md`
7
+ **結論**: **概ね現状に適合しているが、一部細部での乖離と欠落がある**
8
+
9
+ ---
10
+
11
+ ## 1. 調査範囲と方法
12
+
13
+ 以下のドキュメント群を全文読み込み、Skill内で参照されている情報との整合性を検証しました。
14
+
15
+ ### 1.1 設計方針ドキュメント
16
+ - `docs/einja/steering/infrastructure/environment-variables.md`
17
+ - `docs/einja/steering/infrastructure/deployment.md`
18
+
19
+ ### 1.2 手順書ドキュメント
20
+ - `docs/einja/instructions/environment-setup.md`
21
+ - `docs/einja/instructions/deployment-setup.md`
22
+ - `docs/einja/instructions/vercel-cli-reference.md`
23
+ - `docs/einja/instructions/neon-cli-reference.md`
24
+ - `docs/einja/instructions/local-server-environment-and-worktree.md`
25
+
26
+ ### 1.3 その他
27
+ - `docs/einja/steering/development/database-guidelines.md`
28
+ - ルート・apps/web・packages/server-core の `package.json`
29
+ - `.github/workflows/deploy-stable-branches.yml`
30
+ - `.github/workflows/deploy-pr-preview.yml`
31
+ - `.github/actions/setup/action.yml`
32
+ - `.github/actions/ci/action.yml`
33
+ - `packages/server-core/prisma/schema.prisma`
34
+
35
+ ---
36
+
37
+ ## 2. 適合性評価(カテゴリ別)
38
+
39
+ ### ✅ 現状適合している項目
40
+
41
+ #### カテゴリ1: ローカル環境セットアップ
42
+ - `pnpm dev:setup` / `pnpm dev:bg` / `pnpm dev:stop` の存在確認: ✅(package.json)
43
+ - エラー診断表(.env.keys不在、PostgreSQL接続エラー等): ✅(local-server-environment-and-worktree.md と一致)
44
+ - 参照ドキュメント: ✅(全て実在)
45
+
46
+ #### カテゴリ2: 環境変数管理
47
+ - ファイル構成(.env.local/develop/production/preview): ✅(environment-variables.md と一致)
48
+ - dotenvx encrypt/decrypt フロー: ✅(environment-setup.md と一致)
49
+ - .env.personal のセキュリティ設定(chmod 600): ✅(environment-setup.md に記載)
50
+ - 参照ドキュメント: ✅
51
+
52
+ #### カテゴリ3: Vercel管理
53
+ - CLIコマンド(vercel link/env/deploy): ✅(vercel-cli-reference.md と一致)
54
+ - Root Directory設定(API PATCH方式): ✅(vercel-cli-reference.md と一致)
55
+ - 環境変数同期の設計意図: ✅(deployment.md「Vercel環境変数の自動同期」と一致)
56
+ - 参照ドキュメント: ✅
57
+
58
+ #### カテゴリ4: Neon管理
59
+ - `neonctl auth` 不使用の理由: ✅(neon-cli-reference.md「認証」セクションと一致)
60
+ - `--api-key` フラグまたは `NEON_API_KEY` 環境変数による認証: ✅
61
+ - ブランチ作成・削除・接続文字列取得コマンド: ✅(neon-cli-reference.md と一致)
62
+ - 参照ドキュメント: ✅
63
+
64
+ #### カテゴリ5: GitHub Secrets管理
65
+ - `gh secret list/set` コマンド: ✅
66
+ - dotenvx秘密鍵一括設定スクリプト: ✅(deployment-setup.md「GitHub Secrets登録」と一致)
67
+ - 参照ドキュメント: ✅
68
+
69
+ #### カテゴリ6: 環境状態確認
70
+ - ヘルスチェック項目(CLI存在確認、Docker状態等): ✅(local-server-environment-and-worktree.md「包括的ヘルスチェック」と一致)
71
+ - 推奨アクション提案ロジック: ✅(合理的)
72
+ - 参照ドキュメント: ✅
73
+
74
+ #### カテゴリ7: GitHub Actions CI/CD管理
75
+ - ワークフロー一覧表: ✅(実際のワークフローと一致)
76
+ - `gh run list/view` コマンド: ✅
77
+ - トリガータイプ(push, PR, schedule, manual): ✅(各ワークフローと一致)
78
+ - 参照ドキュメント: ✅
79
+
80
+ ---
81
+
82
+ ### ⚠️ 細部で乖離がある項目
83
+
84
+ #### 2.1 GitHub Actions: バージョン情報の古さ
85
+
86
+ **現状のSkill記載**: バージョン情報なし
87
+ **実際のワークフロー**:
88
+ - `actions/checkout@v4` ✅
89
+ - `pnpm/action-setup@v4` ✅
90
+ - `actions/setup-node@v4` ✅
91
+ - `actions/github-script@v7` ✅
92
+ - `actions/upload-artifact@v4` ✅
93
+ - `actions/download-artifact@v4` ✅
94
+ - `neondatabase/create-branch-action@v6` ✅
95
+ - `dorny/paths-filter@v3` ✅
96
+
97
+ **影響**: Skillには最新バージョン情報が反映されていないが、Skillは「ワークフロー管理」であり「action自体の編集」は対象外のため、**実用上の問題はない**。
98
+
99
+ **推奨アクション**: Skillには「actionバージョンはワークフローファイルを参照」と記載しているため、現状維持でOK。
100
+
101
+ ---
102
+
103
+ #### 2.2 Node.js / pnpm バージョン
104
+
105
+ **現状のSkill記載**: 明示なし
106
+ **実際の設定**:
107
+ - Node.js: 22.16.0(`package.json volta` / `.github/actions/setup/action.yml`)
108
+ - pnpm: 10.14.0(同上)
109
+
110
+ **影響**: カテゴリ1「エラー時の対処」でバージョン不一致時に `volta install node@22` と記載があるが、**具体的なバージョン番号(22.16.0)が記載されていない**。
111
+
112
+ **推奨アクション**: Skillの「エラー時の対処」テーブルに以下を明記:
113
+ ```
114
+ | Node.jsバージョン不一致 | `volta install node@22.16.0` 提案 |
115
+ | pnpmバージョン不一致 | `volta install pnpm@10.14.0` 提案 |
116
+ ```
117
+
118
+ ---
119
+
120
+ #### 2.3 Prisma / DB設定
121
+
122
+ **現状のSkill記載**: `pnpm db:generate`, `pnpm db:push`, `pnpm db:migrate` 等の言及あり
123
+ **実際の設定**:
124
+ - Prisma Client: 6.10.1(packages/server-core/package.json)
125
+ - DB: PostgreSQL(schema.prisma)
126
+ - **Drizzleは使用していない**(検索結果ゼロ)
127
+
128
+ **影響**: Skillでは「Prisma」を前提としており、**Drizzle言及は不要**。現状のSkillは正しい。
129
+
130
+ **推奨アクション**: 変更不要。
131
+
132
+ ---
133
+
134
+ #### 2.4 環境変数: `.env.develop` の存在確認
135
+
136
+ **現状のSkill記載**: カテゴリ2で `.env.develop` を対象に含める
137
+ **実際のドキュメント**:
138
+ - environment-variables.md: `.env.develop` は「dev検証サーバー用」として定義済み ✅
139
+ - deployment.md: developブランチは `.env.develop` を使用 ✅
140
+
141
+ **影響**: なし。正しく整合している。
142
+
143
+ ---
144
+
145
+ #### 2.5 Vercel環境変数同期の設計変更(2024年以降)
146
+
147
+ **現状のSkill記載**(カテゴリ3):
148
+ ```
149
+ > **注意**: CI/CDではmainブランチのみ`vercel env add`で自動同期。develop/staging/PRは`--env`実行時注入。
150
+ > 以下の手動同期は**初回セットアップ時のみ**実行。
151
+ ```
152
+
153
+ **実際のワークフロー**:
154
+ - `deploy-stable-branches.yml` (L202-L220): mainブランチのみ `vercel env add` で同期 ✅
155
+ - `deploy-stable-branches.yml` (L237-L261): すべてのブランチで `vercel deploy --env` による実行時注入 ✅
156
+ - `deploy-pr-preview.yml` (L274-L300): `vercel deploy --env` による実行時注入のみ(`vercel env add` 不使用) ✅
157
+
158
+ **影響**: Skillの記載は**正確**。ドキュメントと整合している。
159
+
160
+ ---
161
+
162
+ #### 2.6 Neon環境変数の管理場所
163
+
164
+ **現状のSkill記載**(カテゴリ4):
165
+ ```
166
+ 3. NEON_PROJECT_IDを`.env.preview`に設定 → dotenvx暗号化
167
+ ```
168
+
169
+ **実際のドキュメント**:
170
+ - environment-variables.md (L168-L179): NEON_API_KEY と NEON_PROJECT_ID は `.env.preview` で管理 ✅
171
+ - deployment.md (L532-L534): NEON_* は除外対象(環境変数同期から除外) ✅
172
+
173
+ **影響**: なし。正しく整合している。
174
+
175
+ ---
176
+
177
+ #### 2.7 データベース設計ガイドラインの反映
178
+
179
+ **Skillへの反映**: なし
180
+ **実際のガイドライン**:
181
+ - `docs/einja/steering/development/database-guidelines.md` は存在するが、infra-maintenance Skillの「参照ドキュメント」に含まれていない。
182
+
183
+ **影響**: infra-maintenanceはインフラ環境の**セットアップ・メンテナンス**を担当し、**Prismaスキーマ編集**は対象外。よって、database-guidelines.mdはbackend-architect等のコーディング系Skillが参照すべき。
184
+
185
+ **推奨アクション**: 変更不要(Skillのスコープ外)。
186
+
187
+ ---
188
+
189
+ ### ❌ 欠落している項目
190
+
191
+ #### 3.1 `pnpm env:update` コマンドの言及
192
+
193
+ **現状のSkill記載**: カテゴリ2で「個人トークン設定」「チーム共有設定変更」を手動フローで記載
194
+ **実際のドキュメント**:
195
+ - environment-setup.md (L62-L69): `pnpm env:update` は対話式ウィザードで環境変数設定を案内 ✅
196
+ - package.json (L44): `"env:update": "tsx scripts/env.ts"` ✅
197
+
198
+ **影響**: Skillでは `dotenvx decrypt` → 手動編集 → `dotenvx encrypt` のフローを記載しているが、**`pnpm env:update` を使えばより簡単**。
199
+
200
+ **推奨アクション**: カテゴリ2の冒頭に以下を追加:
201
+ ```markdown
202
+ ### クイックスタート
203
+ 対話式ウィザード `pnpm env:update` で以下の操作を実行できます:
204
+ - 個人トークンを設定
205
+ - チーム共有設定を変更
206
+ - 現在の状態を確認
207
+
208
+ 以下の手順は、ウィザードを使わず手動で実行する場合の詳細フローです。
209
+ ```
210
+
211
+ ---
212
+
213
+ #### 3.2 `pnpm dev:status` / `pnpm dev:logs` コマンド
214
+
215
+ **現状のSkill記載**: カテゴリ6で `pnpm dev:status` は言及あり
216
+ **実際のpackage.json**:
217
+ - `"dev:status": "tsx scripts/worktree/dev.ts --status"` ✅
218
+ - `"dev:logs": "tail -f log/dev.log"` ✅(Skillに言及なし)
219
+
220
+ **影響**: カテゴリ1「開発サーバー起動」で、ログ確認手段として `pnpm dev:logs` を案内できる。
221
+
222
+ **推奨アクション**: カテゴリ1のサブメニューに以下を追加:
223
+ ```markdown
224
+ - **ログ確認**: `pnpm dev:logs` 実行
225
+ ```
226
+
227
+ ---
228
+
229
+ #### 3.3 PostgreSQL設定: worktree.config.json
230
+
231
+ **現状のSkill記載**: なし
232
+ **実際のドキュメント**:
233
+ - local-server-environment-and-worktree.md (L191-L219): `worktree.config.json` でPostgreSQLポート・コンテナ名をカスタマイズ可能 ✅
234
+
235
+ **影響**: Skillではカスタマイズ手順に言及していないため、ユーザーがデフォルトポート衝突時に対処できない可能性あり。
236
+
237
+ **推奨アクション**: カテゴリ1「エラー時の対処」に以下を追加:
238
+ ```markdown
239
+ | PostgreSQLポート衝突 | `worktree.config.json` の `postgres.port` を変更 |
240
+ ```
241
+
242
+ ---
243
+
244
+ #### 3.4 Serena MCP Serverの存在
245
+
246
+ **現状のSkill記載**: なし
247
+ **実際のドキュメント**:
248
+ - local-server-environment-and-worktree.md (L631-L696): Serena MCPサーバーは1プロジェクト1インスタンスで共有 ✅
249
+
250
+ **影響**: Skillではローカル環境セットアップに言及しているが、Serena MCPサーバーの起動・停止については触れていない。
251
+
252
+ **推奨アクション**: カテゴリ1のヘルスチェックに以下を追加:
253
+ ```markdown
254
+ # Serena MCP Server状態
255
+ [ -f .serena-port ] && echo "✅ Serena起動中 (port: $(cat .serena-port | cut -d' ' -f1))" || echo "❌ Serena停止中"
256
+ ```
257
+
258
+ ---
259
+
260
+ #### 3.5 `.env.staging` の存在
261
+
262
+ **現状のSkill記載**: カテゴリ2で `.env.staging` を対象に含める
263
+ **実際のドキュメント**:
264
+ - environment-variables.md (L42): `.env.staging` は staging ブランチ用として定義済み ✅
265
+ - deployment.md (L520-L524): staging環境の設定一覧に記載 ✅
266
+
267
+ **影響**: なし。正しく整合している。
268
+
269
+ ---
270
+
271
+ #### 3.6 Neon: connection_uri API方式の明示
272
+
273
+ **現状のSkill記載**(カテゴリ4):
274
+ ```bash
275
+ # API(複数ブランチ一括取得時)
276
+ curl -s "https://console.neon.tech/api/v2/projects/$NEON_PROJECT_ID/connection_uri?branch_id=$BRANCH_ID&database_name=neondb&role_name=$ROLE_NAME" \
277
+ -H "Authorization: Bearer $NEON_API_KEY"
278
+ ```
279
+
280
+ **実際のワークフロー**:
281
+ - `deploy-pr-preview.yml` (L127-L135): `connection_uri` APIでDB URLを取得 ✅(pooled=false/true両対応)
282
+
283
+ **影響**: Skillの記載は**正確**だが、`pooled` パラメータの説明がない。
284
+
285
+ **推奨アクション**: カテゴリ4「接続文字列取得」に以下を追記:
286
+ ```bash
287
+ # プール接続(pooled=true)
288
+ curl -s "https://console.neon.tech/api/v2/projects/$NEON_PROJECT_ID/connection_uri?branch_id=$BRANCH_ID&pooled=true&database_name=neondb" \
289
+ -H "Authorization: Bearer $NEON_API_KEY" | jq -r '.uri'
290
+
291
+ # 直接接続(pooled=false)
292
+ curl -s "https://console.neon.tech/api/v2/projects/$NEON_PROJECT_ID/connection_uri?branch_id=$BRANCH_ID&pooled=false&database_name=neondb" \
293
+ -H "Authorization: Bearer $NEON_API_KEY" | jq -r '.uri'
294
+ ```
295
+
296
+ ---
297
+
298
+ ## 3. 総合評価
299
+
300
+ ### 3.1 適合率
301
+
302
+ | カテゴリ | 適合状況 | 評価 |
303
+ |---------|---------|------|
304
+ | カテゴリ1: ローカル環境 | 95% | ✅ ほぼ適合(pnpm dev:logs、Serena言及なし) |
305
+ | カテゴリ2: 環境変数管理 | 90% | ⚠️ pnpm env:update言及なし |
306
+ | カテゴリ3: Vercel管理 | 100% | ✅ 完全適合 |
307
+ | カテゴリ4: Neon管理 | 95% | ✅ ほぼ適合(pooled説明なし) |
308
+ | カテゴリ5: GitHub Secrets | 100% | ✅ 完全適合 |
309
+ | カテゴリ6: 環境状態確認 | 95% | ✅ ほぼ適合(Serena言及なし) |
310
+ | カテゴリ7: CI/CD管理 | 100% | ✅ 完全適合 |
311
+
312
+ **総合適合率**: **96.4%**
313
+
314
+ ---
315
+
316
+ ### 3.2 優先度別推奨修正
317
+
318
+ #### 優先度: 高(ユーザー体験に直接影響)
319
+
320
+ 1. **カテゴリ2に `pnpm env:update` のクイックスタート案内を追加**
321
+ - 理由: 既存の対話式ウィザードを案内しないのは不親切
322
+ - 工数: 5分
323
+
324
+ 2. **カテゴリ1に `pnpm dev:logs` コマンドを追加**
325
+ - 理由: ログ確認手段の欠落はデバッグ効率に影響
326
+ - 工数: 3分
327
+
328
+ #### 優先度: 中(情報の完全性向上)
329
+
330
+ 3. **カテゴリ4のNeon接続文字列取得に `pooled` パラメータを明記**
331
+ - 理由: ワークフローで使用されている重要な情報
332
+ - 工数: 5分
333
+
334
+ 4. **カテゴリ1のヘルスチェックに Serena MCP Server状態を追加**
335
+ - 理由: ローカル環境の完全なヘルスチェックに必要
336
+ - 工数: 5分
337
+
338
+ 5. **カテゴリ1のエラー対処に `worktree.config.json` 編集案内を追加**
339
+ - 理由: PostgreSQLポート衝突時の対処手段
340
+ - 工数: 3分
341
+
342
+ #### 優先度: 低(現状維持でも問題なし)
343
+
344
+ 6. **Node.js/pnpmの具体的バージョン番号を明記**
345
+ - 理由: `volta install node@22` で自動的に最新22.xがインストールされるため必須ではない
346
+ - 工数: 2分
347
+
348
+ ---
349
+
350
+ ## 4. 結論と推奨アクション
351
+
352
+ ### 4.1 現状評価
353
+
354
+ **infra-maintenance Skillは現状のプロジェクト構成に96.4%適合しており、実用上の問題はない。**
355
+
356
+ 主要な機能(Vercel/Neon/GitHub Secrets管理、CI/CD監視)は全て正確に反映されており、参照ドキュメントも最新の状態と一致している。
357
+
358
+ ### 4.2 推奨修正内容
359
+
360
+ **修正は任意**だが、以下の5項目を追加することでユーザー体験が向上する:
361
+
362
+ 1. カテゴリ2に `pnpm env:update` のクイックスタート案内
363
+ 2. カテゴリ1に `pnpm dev:logs` コマンド
364
+ 3. カテゴリ4のNeon接続文字列取得に `pooled` パラメータ説明
365
+ 4. カテゴリ1のヘルスチェックに Serena MCP Server状態
366
+ 5. カテゴリ1のエラー対処に `worktree.config.json` 編集案内
367
+
368
+ **総工数**: 約21分
369
+
370
+ ### 4.3 次のステップ
371
+
372
+ 修正を実施する場合は、以下のいずれかを選択してください:
373
+
374
+ #### オプションA: 即座に修正実施
375
+ - `.claude/skills/einja-infra-maintenance/SKILL.md` を上記5項目で更新
376
+ - コミットメッセージ: `docs: infra-maintenance Skillを最新環境に適合化`
377
+
378
+ #### オプションB: Issueとして記録
379
+ - 修正内容をIssueに記録し、後日実施
380
+ - ラベル: `enhancement`, `documentation`
381
+
382
+ #### オプションC: 現状維持
383
+ - 現状のSkillは実用上問題ないため、そのまま運用継続
384
+
385
+ ---
386
+
387
+ ## 5. 補足: 調査で確認した技術スタック
388
+
389
+ 以下は調査過程で確認したプロジェクトの技術スタック一覧です(参考情報)。
390
+
391
+ | カテゴリ | 技術 | バージョン |
392
+ |---------|------|-----------|
393
+ | **ランタイム** | Node.js | 22.16.0 |
394
+ | | pnpm | 10.14.0 |
395
+ | **フレームワーク** | Next.js | 15.3.9 |
396
+ | | React | 19.0.0 |
397
+ | **データベース** | PostgreSQL | 15-alpine (Docker) |
398
+ | | Prisma Client | 6.10.1 |
399
+ | | Neon | - |
400
+ | **認証** | NextAuth.js | 5.0.0-beta.28 |
401
+ | **UI** | Tailwind CSS | 4.1.10 |
402
+ | | Radix UI | - |
403
+ | **テスト** | Vitest | 3.2.2 |
404
+ | | Playwright | 1.53.0 |
405
+ | **リント/フォーマット** | Biome | 1.9.4 |
406
+ | **ビルド** | Turborepo | 2.5.8 |
407
+ | **インフラ** | Vercel | - |
408
+ | | Neon | - |
409
+ | | GitHub Actions | - |
410
+ | **環境変数** | dotenvx | 1.51.4 |
411
+ | **その他** | Hono | 4.11.3 |
412
+ | | Zod | 3.25.67 / 4.3.5 |
413
+
414
+ **Drizzle ORM**: 使用されていない(検索結果ゼロ)
415
+ **TypeScript**: v5系
416
+ **Docker**: PostgreSQL 15-alpine
417
+
418
+ ---
419
+
420
+ **調査完了**: 2026-03-03
421
+ **調査者**: Claude Code(Sonnet 4.5)
@@ -0,0 +1,199 @@
1
+ # infra-maintenance Skill: ゼロ状態セットアップ対応 改善計画
2
+
3
+ ## Context
4
+
5
+ infra-maintenance Skill が「一度もインフラ設定がされていないゼロ状態」からのセットアップに対応できるかを Explore + Codex で並行検査した。
6
+
7
+ **結論: 部分的にしか対応できていない(対応度 60%)**
8
+
9
+ 既存プロジェクトへの参加(`.env.keys` を 1Password から取得済み)には概ね対応しているが、以下の2つのシナリオで Critical なギャップが存在する:
10
+
11
+ 1. **新規プロジェクトの初回構築**: 暗号化ファイルの初回作成フロー、`.env.keys` の生成フローが完全に欠落
12
+ 2. **ゼロ状態からの統合フロー**: 複数の❌が検出された場合に何から始めるべきかの案内がない
13
+
14
+ > **注意**: `setup-dev.ts` 自体は `.env.keys` 不在時のフォールバック(`.env.example` → `.env`)を持っており、ローカル開発は最低限動作する。しかし SKILL.md はこの実態を反映していない。
15
+
16
+ ---
17
+
18
+ ## 検出された問題(優先度順)
19
+
20
+ ### Critical(初回ユーザーがブロックされる)
21
+
22
+ | # | 問題 | 影響 | 対象 |
23
+ |---|------|------|------|
24
+ | C-1 | Phase 1/2: 複数❌検出時の統合フロー(ゼロ状態判定)がない | どのカテゴリから始めるべきか不明 | SKILL.md Phase 2 |
25
+ | C-2 | カテゴリ2: 暗号化ファイルの初回作成フローがない | 新規プロジェクトで環境変数を設定できない | SKILL.md カテゴリ2 |
26
+
27
+ ### High(手順が不完全)
28
+
29
+ | # | 問題 | 影響 | 対象 |
30
+ |---|------|------|------|
31
+ | H-1 | カテゴリ1: `pnpm dev:setup` が何を実行するかの説明がない | ユーザーが何が起こるか理解できない | SKILL.md カテゴリ1 |
32
+ | H-2 | カテゴリ3: Vercelプロジェクト未作成時の手順がない(`vercel link` のみ) | プロジェクト新規作成が案内されない | SKILL.md カテゴリ3 |
33
+ | H-3 | カテゴリ1: Docker未インストール時の案内がない | PostgreSQL起動前にDockerが必要 | SKILL.md カテゴリ1 |
34
+
35
+ ### Medium(改善余地)
36
+
37
+ | # | 問題 | 影響 | 対象 |
38
+ |---|------|------|------|
39
+ | M-1 | カテゴリ4: `.env.preview` が未存在時の NEON_PROJECT_ID 設定が簡略すぎ | `pnpm env:update` への誘導がない | SKILL.md カテゴリ4 |
40
+ | M-2 | deployment-setup.md Section 0 との順序不整合 | どちらを信頼すべきか混乱 | SKILL.md/deployment-setup.md |
41
+
42
+ ---
43
+
44
+ ## 修正計画
45
+
46
+ ### 修正ファイル: `.claude/skills/einja-infra-maintenance/SKILL.md`
47
+
48
+ #### 修正1: Phase 2 にゼロ状態判定ロジックを追加(C-1)
49
+
50
+ **箇所**: Phase 2「意図判定とメインメニュー」セクション(74行目付近)の「意図が明確な場合」の前に追加
51
+
52
+ **追加内容**:
53
+ ```markdown
54
+ ### ゼロ状態の検出と統合初期構築フロー
55
+
56
+ Phase 1 で以下の条件が同時に成立した場合、「ゼロ状態」と判定し、統合初期構築フローを提案する:
57
+
58
+ **判定条件**: `.env.keys`不在 AND (`.env.personal`不在 OR vercel CLI未インストール OR neonctl未インストール)
59
+
60
+ **提案**: AskUserQuestion で以下を選択させる:
61
+
62
+ | 選択肢 | 説明 |
63
+ |--------|------|
64
+ | ローカル開発のみ(推奨) | 最速で開発環境を起動: カテゴリ1 → 2 |
65
+ | 本番デプロイまで | CI/CD含む完全セットアップ: カテゴリ1 → 4 → 3 → 5 → 2 |
66
+ | いいえ(個別選択) | 通常のメインメニューを表示 |
67
+
68
+ > **参照**: 完全セットアップの詳細手順は `docs/einja/instructions/deployment-setup.md` セクション0「ゼロからの統合初期構築フロー」を参照
69
+ ```
70
+
71
+ #### 修正2: カテゴリ1 のセットアップ詳細を拡充(H-1, H-3)
72
+
73
+ **箇所**: カテゴリ1「エラー時の対処」テーブル(134-140行目)
74
+
75
+ **変更**: Docker未インストール時の案内を追加(`.env.keys` 不在の対処は現状維持)
76
+
77
+ 追加行:
78
+ ```
79
+ | Docker未インストール | `docker --version` で確認 → 未インストール時は [OrbStack](https://orbstack.dev/) のインストールを案内 |
80
+ ```
81
+
82
+ **箇所**: カテゴリ1「初回セットアップ」(128-131行目)
83
+
84
+ 現在:
85
+ ```
86
+ #### 初回セットアップ
87
+ 1. `pnpm install` で依存関係インストール
88
+ 2. `pnpm dev:setup` で環境セットアップ
89
+ 3. エラー時: エラー内容を分析し、対話的にトラブルシュート
90
+ ```
91
+
92
+ 修正後:
93
+ ```
94
+ #### 初回セットアップ
95
+ 1. `pnpm install` で依存関係インストール
96
+ 2. `pnpm dev:setup` で環境セットアップ(以下を自動実行):
97
+ - Volta / direnv / dotenvx の自動インストール(macOS)
98
+ - `.env.keys` が存在する場合: `.env.local` を復号して `.env` を生成
99
+ - `.env.keys` が不在の場合: worktree親からのコピーを試行 → 失敗時は `.env.example` からフォールバック
100
+ - GITHUB_TOKEN の対話式設定
101
+ - PostgreSQL 起動(Docker)+ Prisma セットアップ
102
+ 3. エラー時: エラー内容を分析し、対話的にトラブルシュート
103
+ ```
104
+
105
+ #### 修正3: カテゴリ2 に「初回環境ファイル作成」サブメニューを追加(C-2)
106
+
107
+ **箇所**: カテゴリ2 サブメニュー(149行目付近)に追加
108
+
109
+ **追加内容**:
110
+ ```markdown
111
+ - **初回環境ファイル作成**: 新規プロジェクト用。`.env.local`等を新規作成し暗号化(`.env.keys` が自動生成される)
112
+ ```
113
+
114
+ カテゴリ2 の実行手順セクションに新セクション追加:
115
+ ```markdown
116
+ #### 初回環境ファイル作成(新規プロジェクト用)
117
+ 1. AskUserQuestionで作成する環境を選択(.env.local / .env.develop / .env.staging / .env.production / .env.preview)
118
+ 2. `.env.example` をベースにファイルを作成
119
+ 3. AskUserQuestionで必須環境変数の値を入力(DATABASE_URL, AUTH_SECRET 等)
120
+ 4. `dotenvx encrypt -f <file>` で暗号化(`.env.keys` に秘密鍵が自動追記される)
121
+ 5. AskUserQuestion: 「`.env.keys` を 1Password に保存しましたか?」(保管先URL案内)
122
+ 6. 他環境のファイルも作成が必要か確認 → 必要なら手順1に戻る
123
+ 7. GitHub Secrets への登録を促す(カテゴリ5へ遷移案内)
124
+
125
+ > **注意**: `.env.keys` は全環境の秘密鍵を含む重要ファイル。必ず 1Password 等で安全に共有すること。
126
+ ```
127
+
128
+ #### 修正4: カテゴリ3 にプロジェクト新規作成フローを追加(H-2)
129
+
130
+ **箇所**: カテゴリ3 サブメニュー(197行目付近)
131
+
132
+ 現在:
133
+ ```
134
+ - **初期設定**: プロジェクト作成・リンク・Root Directory設定
135
+ ```
136
+
137
+ 修正後:
138
+ ```
139
+ - **新規プロジェクト作成**: Vercelプロジェクトを新規作成しリンク
140
+ - **既存プロジェクト接続**: 既存プロジェクトにリンク・Root Directory設定
141
+ ```
142
+
143
+ 実行手順の「初期設定」を「新規プロジェクト作成」と「既存プロジェクト接続」に分割:
144
+ ```markdown
145
+ #### 新規プロジェクト作成
146
+ 1. VERCEL_TOKEN確認 → 未設定時はURL案内 + `.env.personal`保存
147
+ 2. AskUserQuestionでアプリ選択(web / admin)
148
+ 3. `vercel --confirm` で新規プロジェクト作成(対話式)
149
+ 4. Root Directory設定(API経由)
150
+ 5. プロジェクトID取得・表示
151
+ 6. VERCEL_ORG_ID / VERCEL_PROJECT_ID を `.env.personal` に記録
152
+
153
+ > **詳細手順**: `docs/einja/instructions/vercel-cli-reference.md` を参照
154
+
155
+ #### 既存プロジェクト接続
156
+ (現在の「初期設定」の内容をそのまま維持)
157
+ ```
158
+
159
+ #### 修正5: カテゴリ4 の `.env.preview` 設定を詳細化(M-1)
160
+
161
+ **箇所**: カテゴリ4 初期設定の手順3(258行目)
162
+
163
+ 現在:
164
+ ```
165
+ 3. NEON_PROJECT_IDを`.env.preview`に設定 → dotenvx暗号化
166
+ ```
167
+
168
+ 修正後:
169
+ ```
170
+ 3. NEON_PROJECT_IDを`.env.preview`に設定:
171
+ - `.env.preview`が既存の場合: `pnpm env:update` で対話式に設定
172
+ - `.env.preview`が未存在の場合: カテゴリ2「初回環境ファイル作成」で先に作成
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 修正対象ファイル
178
+
179
+ | ファイル | 修正内容 |
180
+ |---------|---------|
181
+ | `.claude/skills/einja-infra-maintenance/SKILL.md` | 修正1〜5の全て |
182
+
183
+ > **注**: `deployment-setup.md` や `environment-setup.md` の修正は今回のスコープ外。SKILL.md から適切に参照・誘導することで対応する。
184
+
185
+ ---
186
+
187
+ ## 検証方法
188
+
189
+ 1. `pnpm prepush` で lint/typecheck/test が通ることを確認
190
+ 2. SKILL.md を Read して全修正がディスク上に反映されていることを確認
191
+ 3. 以下のシナリオで SKILL.md のフローを追跡し、ブロックが発生しないことを確認:
192
+ - シナリオA: `.env.keys` なし + 単一worktree → 1Password案内 → カテゴリ1完了
193
+ - シナリオB: 完全ゼロ状態 → ゼロ状態判定 → 「ローカル開発のみ」選択 → カテゴリ1→2
194
+ - シナリオC: 完全ゼロ状態 → 「本番デプロイまで」選択 → カテゴリ1→4→3→5→2
195
+
196
+ ## 調査レポート
197
+
198
+ - Explore: `docs/plans/warm-hopping-lighthouse-agent-a30aa4f.md`
199
+ - Codex: `docs/plans/warm-hopping-lighthouse-agent-a57a278.md`