create-einja-app 0.3.1 → 0.3.2
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 +1 -1
- package/dist/cli.js +32 -16
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/default/.claude/hooks/einja/plan-mode-skill-loader.sh +23 -0
- package/templates/default/.claude/settings.json +15 -1
- package/templates/default/.env.personal.example +6 -2
- package/templates/default/.envrc +5 -0
- package/templates/default/.github/workflows/deploy-pr-preview.yml +23 -24
- package/templates/default/.github/workflows/deploy-stable-branches.yml +55 -49
- package/templates/default/.mcp.json +2 -12
- package/templates/default/.serena/project.yml +7 -0
- package/templates/default/CLAUDE.md +28 -4
- package/templates/default/README.md +2 -2
- package/templates/default/apps/admin/package.json +1 -1
- package/templates/default/apps/admin/tsconfig.json +2 -1
- package/templates/default/apps/web/package.json +1 -1
- package/templates/default/apps/web/tsconfig.json +2 -1
- package/templates/default/docs/plans/.gitkeep +0 -0
- package/templates/default/docs/plans/ancient-greeting-flamingo-agent-a87e67c.md +221 -0
- package/templates/default/docs/plans/ancient-greeting-flamingo-agent-ab73a1c.md +107 -0
- package/templates/default/docs/plans/ancient-greeting-flamingo.md +120 -0
- package/templates/default/docs/plans/bright-stargazing-dawn.md +87 -0
- package/templates/default/docs/plans/calm-stirring-bonbon.md +196 -0
- package/templates/default/docs/plans/calm-watching-widget.md +111 -0
- package/templates/default/docs/plans/cheerful-wiggling-ullman.md +164 -0
- package/templates/default/docs/plans/compiled-humming-cherny.md +94 -0
- package/templates/default/docs/plans/dapper-launching-lynx.md +81 -0
- package/templates/default/docs/plans/effervescent-munching-kite-agent-ac08baf.md +672 -0
- package/templates/default/docs/plans/effervescent-munching-kite-agent-aecc373.md +442 -0
- package/templates/default/docs/plans/effervescent-munching-kite.md +263 -0
- package/templates/default/docs/plans/fix-orphan-cleaner-review.md +25 -0
- package/templates/default/docs/plans/fix-sync-template-variables.md +162 -0
- package/templates/default/docs/plans/glimmering-giggling-sedgewick.md +126 -0
- package/templates/default/docs/plans/glittery-swimming-bachman.md +78 -0
- package/templates/default/docs/plans/happy-watching-toast.md +56 -0
- package/templates/default/docs/plans/harmonic-strolling-nebula.md +210 -0
- package/templates/default/docs/plans/import-alias-refactor.md +75 -0
- package/templates/default/docs/plans/lazy-percolating-sloth-agent-abda679.md +346 -0
- package/templates/default/docs/plans/lazy-percolating-sloth.md +151 -0
- package/templates/default/docs/plans/linked-greeting-llama-agent-a7a6e5b.md +345 -0
- package/templates/default/docs/plans/linked-greeting-llama.md +467 -0
- package/templates/default/docs/plans/lovely-bubbling-rose.md +80 -0
- package/templates/default/docs/plans/optimized-watching-sprout.md +149 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-a292da6.md +288 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-a819699.md +366 -0
- package/templates/default/docs/plans/peaceful-beaming-toast-agent-ac11de2.md +474 -0
- package/templates/default/docs/plans/peaceful-beaming-toast.md +345 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6194c.md +300 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey-agent-ae6900e.md +444 -0
- package/templates/default/docs/plans/purrfect-spinning-hickey.md +361 -0
- package/templates/default/docs/plans/recursive-kindling-lemon-agent-a42199e.md +186 -0
- package/templates/default/docs/plans/recursive-kindling-lemon.md +36 -0
- package/templates/default/docs/plans/seed-migration-tests.md +47 -0
- package/templates/default/docs/plans/sprightly-leaping-manatee.md +224 -0
- package/templates/default/docs/plans/stateful-wishing-lerdorf.md +161 -0
- package/templates/default/docs/plans/streamed-purring-wreath.md +40 -0
- package/templates/default/docs/plans/synthetic-percolating-pearl.md +101 -0
- package/templates/default/docs/plans/todo-fix-sync-template-variables.md +21 -0
- package/templates/default/docs/plans/todo-phase4-marker-update.md +39 -0
- package/templates/default/docs/plans/todo-skill-creator-sync.md +23 -0
- package/templates/default/docs/plans/typed-snuggling-parnas-agent-a6f6391.md +476 -0
- package/templates/default/docs/plans/typed-snuggling-parnas-agent-adb678b.md +144 -0
- package/templates/default/docs/plans/typed-snuggling-parnas.md +84 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a30aa4f.md +534 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a57a278.md +508 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse-agent-a90b809.md +421 -0
- package/templates/default/docs/plans/warm-hopping-lighthouse.md +199 -0
- package/templates/default/docs/verification-test.md +2 -0
- package/templates/default/gitignore +4 -0
- package/templates/default/package.json +2 -2
- package/templates/default/packages/admin-ui/package.json +1 -1
- package/templates/default/packages/server-core/tsconfig.json +6 -1
- package/templates/default/pnpm-lock.yaml +276 -57
- package/templates/default/scripts/ensure-serena.sh +75 -0
- package/templates/default/scripts/lib/worktree-config.ts +64 -0
- package/templates/default/scripts/stop-serena.sh +25 -0
- package/templates/default/scripts/worktree/dev.ts +2 -2
- /package/templates/default/scripts/{cli-template-update.ts → _cli-template-update.ts} +0 -0
- /package/templates/default/scripts/{template-update.ts → _template-update.ts} +0 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
# infra-maintenance Skill ゼロ状態セットアップ検証レポート
|
|
2
|
+
|
|
3
|
+
## 調査概要
|
|
4
|
+
|
|
5
|
+
`infra-maintenance` Skillが完全なゼロ状態(`git clone`直後)からのセットアップに対応しているかを検証。新しいチームメンバーの初回体験をシミュレーション。
|
|
6
|
+
|
|
7
|
+
**日時**: 2026-03-03
|
|
8
|
+
**対象Skill**: `.claude/skills/einja-infra-maintenance/SKILL.md`
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## シナリオ1: 完全初回セットアップ
|
|
13
|
+
|
|
14
|
+
### 期待される動作
|
|
15
|
+
|
|
16
|
+
新規開発者が `git clone` 直後に `/infra-maintenance` を実行した場合、以下の順序で案内されるべき:
|
|
17
|
+
|
|
18
|
+
1. Phase 1で環境状態を自動検出
|
|
19
|
+
2. `.env.keys` 不在を検出 → 「ローカル環境セットアップ」を推奨
|
|
20
|
+
3. カテゴリ1の「初回セットアップ」を実行
|
|
21
|
+
4. `.env.keys`が必要なことを明示的に案内
|
|
22
|
+
5. エラー時のトラブルシュート手順を提示
|
|
23
|
+
|
|
24
|
+
### 実際のSKILL.mdの記述
|
|
25
|
+
|
|
26
|
+
#### Phase 1: 環境状態の自動検出(SKILL.md 行48-70)
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# === ファイル存在確認 ===
|
|
30
|
+
for f in .env .env.local .env.keys .env.personal .env.develop .env.staging .env.production .env.preview; do
|
|
31
|
+
[ -f "$f" ] && echo "✅ $f" || echo "❌ $f"
|
|
32
|
+
done
|
|
33
|
+
|
|
34
|
+
# === CLI存在確認 ===
|
|
35
|
+
for cmd in vercel neonctl gh dotenvx docker; do
|
|
36
|
+
command -v "$cmd" >/dev/null 2>&1 && echo "✅ $cmd" || echo "❌ $cmd"
|
|
37
|
+
done
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**✅ 適切**: `.env.keys`の存在チェックが含まれている。
|
|
41
|
+
|
|
42
|
+
#### Phase 2: 意図判定とメインメニュー(SKILL.md 行92-104)
|
|
43
|
+
|
|
44
|
+
| 検出結果 | 推奨カテゴリ |
|
|
45
|
+
|---------|------------|
|
|
46
|
+
| `.env.keys`不在 | ローカル環境セットアップ |
|
|
47
|
+
| 開発サーバー停止中 + `.env.keys`存在 | ローカル環境セットアップ |
|
|
48
|
+
|
|
49
|
+
**✅ 適切**: `.env.keys`不在時に「ローカル環境セットアップ」を推奨するロジックが明記されている。
|
|
50
|
+
|
|
51
|
+
#### カテゴリ1: ローカル環境セットアップ → 初回セットアップ(SKILL.md 行128-133)
|
|
52
|
+
|
|
53
|
+
```markdown
|
|
54
|
+
#### 初回セットアップ
|
|
55
|
+
1. `pnpm install` で依存関係インストール
|
|
56
|
+
2. `pnpm dev:setup` で環境セットアップ
|
|
57
|
+
3. エラー時: エラー内容を分析し、対話的にトラブルシュート
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**⚠️ ギャップあり**: `pnpm dev:setup`の実体について説明が不足。
|
|
61
|
+
|
|
62
|
+
#### エラー時の対処(SKILL.md 行135-141)
|
|
63
|
+
|
|
64
|
+
| エラー | 対処 |
|
|
65
|
+
|--------|------|
|
|
66
|
+
| `.env.keys`不在 | AskUserQuestion: 「メインworktreeからコピー or 手動配置」 |
|
|
67
|
+
|
|
68
|
+
**✅ 適切**: `.env.keys`不在時の対処が明記されている。
|
|
69
|
+
|
|
70
|
+
### ギャップ分析
|
|
71
|
+
|
|
72
|
+
#### 1. `pnpm dev:setup`の実体が不明確
|
|
73
|
+
|
|
74
|
+
- **SKILL.md**: 「`pnpm dev:setup` で環境セットアップ」とのみ記載
|
|
75
|
+
- **実体(`scripts/setup-dev.ts`)**:
|
|
76
|
+
- Volta/direnv/dotenvxの自動インストール(macOSのみ)
|
|
77
|
+
- `.env.keys`不在時、worktreeの親からコピーを試行
|
|
78
|
+
- `.env.keys`が完全に不在の場合、フォールバック(`.env.example` → `.env`)
|
|
79
|
+
- 対話的にGITHUB_TOKENを設定
|
|
80
|
+
- PostgreSQL起動・Prismaセットアップ
|
|
81
|
+
|
|
82
|
+
**問題点**: SKILL.mdに「`pnpm dev:setup`が何をするか」の詳細がない。
|
|
83
|
+
|
|
84
|
+
#### 2. `.env.keys`入手方法の案内不足
|
|
85
|
+
|
|
86
|
+
- **SKILL.md 行497**: 「チームから .env.keys を共有してもらってください」
|
|
87
|
+
- **setup-dev.ts 行467**: worktreeからのコピーに失敗した場合の案内
|
|
88
|
+
|
|
89
|
+
**問題点**:
|
|
90
|
+
- `.env.keys`の入手先(1Password等)が明記されていない
|
|
91
|
+
- 初めてのチームメンバーは「誰から」「どこから」共有を受けるべきか不明
|
|
92
|
+
|
|
93
|
+
#### 3. 前提条件ツールのインストール順序不明
|
|
94
|
+
|
|
95
|
+
- **SKILL.md Phase 1**: CLIツールの存在確認のみ
|
|
96
|
+
- **カテゴリ1**: `pnpm dev:setup`実行を案内
|
|
97
|
+
|
|
98
|
+
**問題点**:
|
|
99
|
+
- `pnpm`自体がインストールされていない場合の対処が不明
|
|
100
|
+
- `setup-dev.ts`はVoltaで`pnpm`をインストールするが、SKILL.mdには記載なし
|
|
101
|
+
|
|
102
|
+
### 影響度
|
|
103
|
+
|
|
104
|
+
- **Critical**: `.env.keys`入手方法の案内不足 → 初回セットアップが完全にブロックされる
|
|
105
|
+
- **High**: `pnpm dev:setup`の詳細不明 → ユーザーが何が起こるか理解できず不安
|
|
106
|
+
- **Medium**: 前提条件ツールの順序不明 → 手動で事前インストールが必要な場合がある
|
|
107
|
+
|
|
108
|
+
### 修正提案
|
|
109
|
+
|
|
110
|
+
#### 1. カテゴリ1に「初回セットアップの前提条件」セクションを追加
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
#### 初回セットアップの前提条件
|
|
114
|
+
|
|
115
|
+
| ツール | 確認方法 | インストール方法 |
|
|
116
|
+
|--------|---------|---------------|
|
|
117
|
+
| Git | `git --version` | プリインストール済み(macOS/Linux) |
|
|
118
|
+
| Node.js | `node --version` | Voltaで自動インストール(macOS) |
|
|
119
|
+
| pnpm | `pnpm --version` | Voltaで自動インストール(macOS) |
|
|
120
|
+
| Docker | `docker --version` | [Docker Desktop](https://www.docker.com/products/docker-desktop/) |
|
|
121
|
+
| .env.keys | `[ -f .env.keys ]` | **チームから共有を受ける(1Passwordなど)** |
|
|
122
|
+
|
|
123
|
+
**注意**: `.env.keys`は秘密鍵ファイルのため、Gitで管理されていません。チームリーダーまたは1Password等から入手してください。
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### 2. 「初回セットアップ」の実行内容を詳細化
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
#### 初回セットアップ
|
|
130
|
+
1. `.env.keys`の配置確認 → 不在時はチームから入手を案内
|
|
131
|
+
2. `pnpm dev:setup` 実行(以下を自動実行):
|
|
132
|
+
- Volta(Node.jsバージョン管理)インストール(macOS)
|
|
133
|
+
- direnv(環境変数自動読み込み)インストール(macOS)
|
|
134
|
+
- dotenvx(環境変数暗号化)インストール
|
|
135
|
+
- `.env.local` → `.env` 復号
|
|
136
|
+
- GITHUB_TOKEN設定(対話的)
|
|
137
|
+
- PostgreSQL起動(Docker)
|
|
138
|
+
- Prismaセットアップ(DB初期化)
|
|
139
|
+
3. エラー時: エラー内容を分析し、対話的にトラブルシュート
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### 3. カテゴリ1の「参照ドキュメント」に追加
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
### 参照ドキュメント
|
|
146
|
+
- `docs/einja/instructions/local-server-environment-and-worktree.md`
|
|
147
|
+
- `docs/einja/instructions/environment-setup.md`
|
|
148
|
+
- **初回セットアップ詳細**: `scripts/setup-dev.ts`(実装参照)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## シナリオ2: CI/CD初回セットアップ
|
|
154
|
+
|
|
155
|
+
### 期待される動作
|
|
156
|
+
|
|
157
|
+
新規リポジトリでGitHub Actionsデプロイを初回構成する場合:
|
|
158
|
+
|
|
159
|
+
1. `.env.keys`が不在 → 生成方法を案内
|
|
160
|
+
2. Vercel/Neonアカウントが未作成 → アカウント作成から案内
|
|
161
|
+
3. GitHub Secrets一括設定の前提条件を明示
|
|
162
|
+
|
|
163
|
+
### 実際のSKILL.mdの記述
|
|
164
|
+
|
|
165
|
+
#### カテゴリ3: Vercel管理 → 初期設定(SKILL.md 行206-217)
|
|
166
|
+
|
|
167
|
+
```markdown
|
|
168
|
+
#### 初期設定
|
|
169
|
+
1. VERCEL_TOKEN確認 → 未設定時はURL案内 + `.env.personal`保存
|
|
170
|
+
2. AskUserQuestionでアプリ選択(web / admin)
|
|
171
|
+
3. `vercel link --project=$NAME --yes` で接続
|
|
172
|
+
4. Root Directory設定:
|
|
173
|
+
curl -X PATCH "https://api.vercel.com/v9/projects/$PROJECT_ID?teamId=$VERCEL_ORG_ID" ...
|
|
174
|
+
5. プロジェクトID取得・表示
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**⚠️ ギャップあり**: 「Vercelプロジェクトがまだ存在しない場合」の手順がない。
|
|
178
|
+
|
|
179
|
+
#### カテゴリ4: Neon管理 → 初期設定(SKILL.md 行250-261)
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
#### 初期設定
|
|
183
|
+
1. NEON_API_KEY確認 → 未設定時はURL案内 + `.env.personal`保存
|
|
184
|
+
2. プロジェクト作成:
|
|
185
|
+
neonctl projects create --name einja-management --region-id aws-ap-northeast-1 --api-key $NEON_API_KEY
|
|
186
|
+
3. NEON_PROJECT_IDを`.env.preview`に設定 → dotenvx暗号化
|
|
187
|
+
4. ブランチ戦略初期設定:
|
|
188
|
+
- production(main)ブランチ確認
|
|
189
|
+
- developmentブランチ作成
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**✅ 適切**: プロジェクト未作成時の手順が明記されている。
|
|
193
|
+
|
|
194
|
+
#### カテゴリ5: GitHub Secrets管理 → 一括設定(SKILL.md 行317-329)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# dotenvx秘密鍵を自動抽出してGitHub Secretsに設定
|
|
198
|
+
for key_name in PREVIEW PRODUCTION DEVELOP STAGING; do
|
|
199
|
+
value=$(grep "DOTENV_PRIVATE_KEY_${key_name}" .env.keys | cut -d'=' -f2 | tr -d "\"'")
|
|
200
|
+
if [ -n "$value" ]; then
|
|
201
|
+
gh secret set "DOTENV_PRIVATE_KEY_${key_name}" --body "$value"
|
|
202
|
+
echo "✅ DOTENV_PRIVATE_KEY_${key_name} を設定しました"
|
|
203
|
+
else
|
|
204
|
+
echo "⚠️ DOTENV_PRIVATE_KEY_${key_name} が .env.keys に見つかりません"
|
|
205
|
+
fi
|
|
206
|
+
done
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**⚠️ ギャップあり**: `.env.keys`が存在しない場合の対処(新規生成)がない。
|
|
210
|
+
|
|
211
|
+
### ギャップ分析
|
|
212
|
+
|
|
213
|
+
#### 1. Vercel初期設定の「プロジェクト未作成」ケース不足
|
|
214
|
+
|
|
215
|
+
- **SKILL.md**: `vercel link`でプロジェクト接続を前提
|
|
216
|
+
- **実際のゼロ状態**: Vercelダッシュボードでプロジェクトを手動作成する必要がある
|
|
217
|
+
|
|
218
|
+
**問題点**: `vercel link`が失敗した場合(プロジェクト未作成)のフローが不明。
|
|
219
|
+
|
|
220
|
+
#### 2. `.env.keys`初回生成フロー不在
|
|
221
|
+
|
|
222
|
+
- **カテゴリ2(環境変数管理)**: 既存の`.env.keys`からの読み取りのみ
|
|
223
|
+
- **カテゴリ5(GitHub Secrets管理)**: `.env.keys`から秘密鍵を読む前提
|
|
224
|
+
|
|
225
|
+
**問題点**: 「`.env.keys`をどう生成するか」の手順が完全に欠落。
|
|
226
|
+
|
|
227
|
+
### 影響度
|
|
228
|
+
|
|
229
|
+
- **Critical**: `.env.keys`初回生成フロー不在 → CI/CD初回構築が不可能
|
|
230
|
+
- **High**: Vercelプロジェクト未作成ケース不足 → 手動でダッシュボード操作が必要だが案内なし
|
|
231
|
+
- **Medium**: Neonは初期設定手順が適切に記載されている(参考にできる)
|
|
232
|
+
|
|
233
|
+
### 修正提案
|
|
234
|
+
|
|
235
|
+
#### 1. カテゴリ2に「初回環境変数ファイル作成」サブメニューを追加
|
|
236
|
+
|
|
237
|
+
```markdown
|
|
238
|
+
### サブメニュー
|
|
239
|
+
- **個人トークン設定**: `.env.personal`にトークンを保存
|
|
240
|
+
- **チーム共有設定変更**: `.env.local`等の復号→編集→再暗号化
|
|
241
|
+
- **新規環境変数追加**: プロジェクト全体への変数追加フロー
|
|
242
|
+
- **環境変数の状態表示**: 現在の設定状態を表示
|
|
243
|
+
- **【新規】初回環境ファイル作成**: `.env.local`/`.env.production`等を新規生成・暗号化
|
|
244
|
+
|
|
245
|
+
#### 初回環境ファイル作成(新規リポジトリ用)
|
|
246
|
+
1. AskUserQuestionで作成する環境を選択(.env.local / .env.production / .env.preview / .env.develop)
|
|
247
|
+
2. `.env.example`をベースにファイルを作成
|
|
248
|
+
3. AskUserQuestionで必須環境変数の値を入力(DATABASE_URL, AUTH_SECRET等)
|
|
249
|
+
4. dotenvxで暗号化
|
|
250
|
+
5. `.env.keys`に秘密鍵が自動生成される
|
|
251
|
+
6. `.env.keys`の内容を1Passwordに保存するよう案内
|
|
252
|
+
7. GitHub Secretsへの登録を促す(カテゴリ5へ遷移)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
#### 2. カテゴリ3: Vercel管理に「プロジェクト未作成」フローを追加
|
|
256
|
+
|
|
257
|
+
```markdown
|
|
258
|
+
#### 初期設定
|
|
259
|
+
1. VERCEL_TOKEN確認 → 未設定時はURL案内 + `.env.personal`保存
|
|
260
|
+
2. AskUserQuestionでアプリ選択(web / admin)
|
|
261
|
+
3. **Vercelプロジェクト存在確認**:
|
|
262
|
+
- `vercel ls`でプロジェクト一覧を取得
|
|
263
|
+
- プロジェクトが存在しない場合:
|
|
264
|
+
- **手動作成を案内**: Vercel Dashboard > New Project > GitHubリポジトリ選択
|
|
265
|
+
- または`vercel --confirm`で新規プロジェクト作成(対話式)
|
|
266
|
+
4. `vercel link --project=$NAME --yes` で接続
|
|
267
|
+
5. Root Directory設定(API経由)
|
|
268
|
+
6. プロジェクトID取得・表示
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### 3. カテゴリ5: GitHub Secrets管理に「前提条件」を明記
|
|
272
|
+
|
|
273
|
+
```markdown
|
|
274
|
+
### 一括設定の前提条件
|
|
275
|
+
|
|
276
|
+
以下が存在しない場合、まず**カテゴリ2「初回環境ファイル作成」**で環境変数ファイルを生成してください:
|
|
277
|
+
- `.env.keys`(dotenvx秘密鍵ファイル)
|
|
278
|
+
- `.env.production`(暗号化済み)
|
|
279
|
+
- `.env.preview`(暗号化済み)
|
|
280
|
+
|
|
281
|
+
#### 一括設定(既存の.env.keysがある場合)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## シナリオ3: 環境変数の初回設定
|
|
287
|
+
|
|
288
|
+
### 期待される動作
|
|
289
|
+
|
|
290
|
+
`.env.keys`が完全に不在の状態で環境変数を初回設定する場合:
|
|
291
|
+
|
|
292
|
+
1. カテゴリ2「環境変数管理」で`.env.local`を新規作成
|
|
293
|
+
2. dotenvxで暗号化 → `.env.keys`に秘密鍵が自動生成される
|
|
294
|
+
3. `.env.keys`を1Password等で共有する手順を案内
|
|
295
|
+
|
|
296
|
+
### 実際のSKILL.mdの記述
|
|
297
|
+
|
|
298
|
+
#### カテゴリ2: 環境変数管理 → チーム共有設定変更(SKILL.md 行173-181)
|
|
299
|
+
|
|
300
|
+
```markdown
|
|
301
|
+
#### チーム共有設定変更
|
|
302
|
+
1. AskUserQuestionで対象ファイルを選択(.env.local / .env.develop / .env.production / .env.preview)
|
|
303
|
+
2. `dotenvx decrypt -f <file> --stdout > <file>.tmp`
|
|
304
|
+
3. 変更内容をAskUserQuestionで確認
|
|
305
|
+
4. 編集実行
|
|
306
|
+
5. `rm <file> && mv <file>.tmp <file>`
|
|
307
|
+
6. `dotenvx encrypt -f <file>`
|
|
308
|
+
7. コミット案内
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**⚠️ ギャップあり**: 暗号化済みファイルの復号が前提。未暗号化ファイルの初回作成フローがない。
|
|
312
|
+
|
|
313
|
+
#### カテゴリ2: 環境変数管理 → 新規環境変数追加(SKILL.md 行183-191)
|
|
314
|
+
|
|
315
|
+
```markdown
|
|
316
|
+
#### 新規環境変数追加
|
|
317
|
+
1. AskUserQuestionで変数名・用途・対象環境(local/develop/production/preview)を確認
|
|
318
|
+
2. 対象環境に応じた`.env.*`ファイルを特定
|
|
319
|
+
3. 暗号化ファイルの場合: チーム共有設定変更と同じフロー(decrypt→編集→encrypt)
|
|
320
|
+
4. 非暗号化ファイルの場合(.env/.env.personal): 直接編集
|
|
321
|
+
5. AskUserQuestion: 他環境への展開が必要か確認
|
|
322
|
+
6. コミット案内(チーム共有設定の場合)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**⚠️ ギャップあり**: 「暗号化ファイルがまだ存在しない」場合の作成手順がない。
|
|
326
|
+
|
|
327
|
+
### ギャップ分析
|
|
328
|
+
|
|
329
|
+
#### 1. 初回暗号化ファイル作成フロー不在
|
|
330
|
+
|
|
331
|
+
- **SKILL.md**: 既存の暗号化ファイルの復号→編集→再暗号化のみ
|
|
332
|
+
- **ゼロ状態**: `.env.local`自体が存在しない
|
|
333
|
+
|
|
334
|
+
**問題点**: 「`.env.local`を初めて作成して暗号化する」手順が完全に欠落。
|
|
335
|
+
|
|
336
|
+
#### 2. `.env.keys`共有方法の案内不足
|
|
337
|
+
|
|
338
|
+
- **SKILL.md セクション5「秘密鍵の管理」(行293-336)**: 1Password保存の言及あり
|
|
339
|
+
- **カテゴリ2**: `.env.keys`への言及なし
|
|
340
|
+
|
|
341
|
+
**問題点**: 実際の操作フロー中に「秘密鍵を共有してください」という案内がない。
|
|
342
|
+
|
|
343
|
+
#### 3. `pnpm env:update`の実体が不明確
|
|
344
|
+
|
|
345
|
+
- **SKILL.md 行156**: 「`pnpm env:update` を実行すると、個人トークン設定・チーム共有設定変更を対話式ウィザードで実行できます」
|
|
346
|
+
- **実体(`scripts/env.ts`)**:
|
|
347
|
+
- 個人トークン設定(`.env.personal`)
|
|
348
|
+
- 環境設定変更(`.env.local`/`.env.develop`等の復号→編集→再暗号化)
|
|
349
|
+
- 状態確認
|
|
350
|
+
|
|
351
|
+
**問題点**: `pnpm env:update`も既存ファイルの編集のみで、初回作成には対応していない。
|
|
352
|
+
|
|
353
|
+
### 影響度
|
|
354
|
+
|
|
355
|
+
- **Critical**: 初回暗号化ファイル作成フロー不在 → 新規プロジェクトで環境変数を設定できない
|
|
356
|
+
- **High**: `.env.keys`共有方法の案内不足 → チーム拡大時に共有が混乱
|
|
357
|
+
- **Medium**: `pnpm env:update`の実体不明 → ユーザーが期待と違う動作に戸惑う
|
|
358
|
+
|
|
359
|
+
### 修正提案
|
|
360
|
+
|
|
361
|
+
#### 1. カテゴリ2に「初回環境ファイル作成」を追加(シナリオ2と同じ)
|
|
362
|
+
|
|
363
|
+
#### 2. 「チーム共有設定変更」の冒頭に前提条件を追加
|
|
364
|
+
|
|
365
|
+
```markdown
|
|
366
|
+
#### チーム共有設定変更
|
|
367
|
+
|
|
368
|
+
**前提条件**: 対象ファイル(`.env.local`等)が既に暗号化されて存在すること。
|
|
369
|
+
初めて作成する場合は「初回環境ファイル作成」を実行してください。
|
|
370
|
+
|
|
371
|
+
1. AskUserQuestionで対象ファイルを選択...
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
#### 3. セクション5「秘密鍵の管理」をカテゴリ2の「参照ドキュメント」に追加
|
|
375
|
+
|
|
376
|
+
```markdown
|
|
377
|
+
### 参照ドキュメント
|
|
378
|
+
- `docs/einja/instructions/environment-setup.md`
|
|
379
|
+
- **秘密鍵の共有方法**: SKILL.md セクション5「秘密鍵の管理」参照
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## 総合評価
|
|
385
|
+
|
|
386
|
+
### 現在の強み
|
|
387
|
+
|
|
388
|
+
1. **Phase 1の検出ロジックが適切**: ファイル存在・CLI存在を網羅的にチェック
|
|
389
|
+
2. **Phase 2の推奨ロジックが明確**: `.env.keys`不在時に適切なカテゴリを推奨
|
|
390
|
+
3. **Neon初期設定の完全性**: プロジェクト未作成からの手順が詳細
|
|
391
|
+
4. **エラーハンドリングの網羅性**: カテゴリ1の「エラー時の対処」が適切
|
|
392
|
+
|
|
393
|
+
### 重大なギャップ
|
|
394
|
+
|
|
395
|
+
| 問題 | 影響 | 優先度 |
|
|
396
|
+
|------|------|--------|
|
|
397
|
+
| `.env.keys`初回生成フロー不在 | CI/CD初回構築が不可能 | **Critical** |
|
|
398
|
+
| 初回暗号化ファイル作成フロー不在 | 新規プロジェクトで環境変数設定不可 | **Critical** |
|
|
399
|
+
| `.env.keys`入手方法の案内不足 | 初回セットアップが完全ブロック | **Critical** |
|
|
400
|
+
| Vercelプロジェクト未作成ケース不足 | 手動操作が必要だが案内なし | **High** |
|
|
401
|
+
| `pnpm dev:setup`の詳細不明 | ユーザーが何が起こるか理解できない | **High** |
|
|
402
|
+
|
|
403
|
+
### 修正の優先順位
|
|
404
|
+
|
|
405
|
+
#### Phase 1: Critical対応(初回セットアップ完全対応)
|
|
406
|
+
|
|
407
|
+
1. **カテゴリ1「ローカル環境セットアップ」の拡充**:
|
|
408
|
+
- 「初回セットアップの前提条件」セクション追加
|
|
409
|
+
- `.env.keys`入手方法の明示(1Password等)
|
|
410
|
+
- `pnpm dev:setup`の実行内容詳細化
|
|
411
|
+
|
|
412
|
+
2. **カテゴリ2「環境変数管理」に「初回環境ファイル作成」追加**:
|
|
413
|
+
- `.env.local`/`.env.production`等の新規生成フロー
|
|
414
|
+
- dotenvx暗号化 → `.env.keys`自動生成
|
|
415
|
+
- `.env.keys`の1Password保存案内
|
|
416
|
+
|
|
417
|
+
#### Phase 2: High対応(CI/CD初回構築対応)
|
|
418
|
+
|
|
419
|
+
3. **カテゴリ3「Vercel管理」の拡充**:
|
|
420
|
+
- プロジェクト未作成時の手動作成案内
|
|
421
|
+
- `vercel --confirm`での対話式作成フロー
|
|
422
|
+
|
|
423
|
+
4. **カテゴリ5「GitHub Secrets管理」の前提条件明記**:
|
|
424
|
+
- `.env.keys`が存在しない場合の対処(カテゴリ2へ誘導)
|
|
425
|
+
|
|
426
|
+
#### Phase 3: Medium対応(ドキュメント整備)
|
|
427
|
+
|
|
428
|
+
5. **参照ドキュメントへのリンク強化**:
|
|
429
|
+
- カテゴリ1 → `scripts/setup-dev.ts`へのリンク
|
|
430
|
+
- カテゴリ2 → セクション5「秘密鍵の管理」へのリンク
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## 参照ドキュメント検証
|
|
435
|
+
|
|
436
|
+
### `docs/einja/instructions/environment-setup.md`
|
|
437
|
+
|
|
438
|
+
- **セクション1(ローカル開発環境セットアップ)**: `pnpm dev:setup`の詳細が記載されている ✅
|
|
439
|
+
- **セクション4(暗号化手順)**: 既存ファイルの暗号化のみ。新規作成は**不足** ❌
|
|
440
|
+
- **セクション5(秘密鍵の管理)**: 1Password保存の案内あり ✅
|
|
441
|
+
- **セクション7(新規環境変数追加フロー)**: 既存ファイルへの追加のみ。初回作成は**不足** ❌
|
|
442
|
+
|
|
443
|
+
### `docs/einja/instructions/deployment-setup.md`
|
|
444
|
+
|
|
445
|
+
- **セクション0(ゼロからの統合初期構築フロー)**: 統合的な手順が記載されている ✅
|
|
446
|
+
- **Step 2: Neon初期設定**: 詳細あり ✅
|
|
447
|
+
- **Step 3: Vercel初期設定**: `vercel link`のみ。プロジェクト未作成ケースは**不足** ❌
|
|
448
|
+
- **Step 4: GitHub Secrets一括設定**: `.env.keys`が既存前提 ❌
|
|
449
|
+
|
|
450
|
+
### ドキュメント間の整合性
|
|
451
|
+
|
|
452
|
+
- **SKILL.md**: 対話的な実行フロー
|
|
453
|
+
- **environment-setup.md**: 詳細な手順書
|
|
454
|
+
- **deployment-setup.md**: 統合的な初回構築フロー
|
|
455
|
+
|
|
456
|
+
**問題点**: 3つのドキュメント間で「初回作成」フローが分散・不足している。SKILL.mdから適切に誘導できていない。
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
## 推奨される改善アクション
|
|
461
|
+
|
|
462
|
+
### 即時対応(Critical)
|
|
463
|
+
|
|
464
|
+
1. **SKILL.md カテゴリ1の「初回セットアップ」を以下に拡充**:
|
|
465
|
+
```markdown
|
|
466
|
+
#### 初回セットアップの前提条件
|
|
467
|
+
|
|
468
|
+
**必須**: `.env.keys`(dotenvx秘密鍵ファイル)
|
|
469
|
+
- **新規プロジェクト**: カテゴリ2「初回環境ファイル作成」で生成
|
|
470
|
+
- **既存プロジェクト**: チームから共有を受ける(1Password等)
|
|
471
|
+
- **worktree環境**: 親worktreeから自動コピー(`pnpm dev:setup`が試行)
|
|
472
|
+
|
|
473
|
+
`.env.keys`が不在の場合、`pnpm dev:setup`はフォールバック(`.env.example`→`.env`)しますが、
|
|
474
|
+
本来の環境変数(DB接続文字列等)が不足するため、チームから入手してください。
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
2. **SKILL.md カテゴリ2に「初回環境ファイル作成」サブメニューを追加**(修正提案参照)
|
|
478
|
+
|
|
479
|
+
### 中期対応(High)
|
|
480
|
+
|
|
481
|
+
3. **`docs/einja/instructions/environment-setup.md`に「初回暗号化ファイル作成」セクションを追加**:
|
|
482
|
+
- `.env.local`の初回作成フロー
|
|
483
|
+
- dotenvx暗号化の実行
|
|
484
|
+
- `.env.keys`の自動生成確認
|
|
485
|
+
- 1Passwordへの保存手順
|
|
486
|
+
|
|
487
|
+
4. **SKILL.md カテゴリ3にVercelプロジェクト未作成ケースを追加**(修正提案参照)
|
|
488
|
+
|
|
489
|
+
### 長期対応(Medium)
|
|
490
|
+
|
|
491
|
+
5. **統合的な「初回セットアップガイド」を作成**:
|
|
492
|
+
- 新規プロジェクトのゼロ状態から本番デプロイまでの完全な手順
|
|
493
|
+
- `deployment-setup.md`のセクション0を拡充
|
|
494
|
+
- SKILL.mdから明示的にリンク
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 結論
|
|
499
|
+
|
|
500
|
+
**infra-maintenance Skillは既存プロジェクトへの参加(`.env.keys`を共有済み)には適切に対応しているが、完全なゼロ状態(新規プロジェクト・初回構築)には Critical なギャップが存在する。**
|
|
501
|
+
|
|
502
|
+
特に以下の3つのシナリオで初回ユーザーがブロックされる:
|
|
503
|
+
|
|
504
|
+
1. **新規開発者の初回セットアップ**: `.env.keys`の入手方法が不明確
|
|
505
|
+
2. **新規プロジェクトのCI/CD構築**: `.env.keys`の初回生成フローが欠落
|
|
506
|
+
3. **環境変数の初回設定**: 暗号化ファイルの新規作成手順が不在
|
|
507
|
+
|
|
508
|
+
これらを解決するには、**カテゴリ2に「初回環境ファイル作成」を追加**し、**カテゴリ1の前提条件を明確化**することが最優先となる。
|