init-claude
任意のリポジトリに Claude Code の .claude/ 体系を初期セットアップする。
日本語運用・目的別 Agent(カテゴリ分割)・Rules 整備・スキル導入・委譲による main 消費抑制・
model 配分・SessionStart hooks・implement-issue-tree の動作前提まで一括構成する。
既存の .claude/ が存在するリポジトリには update-claude を使用する。
使い方
パスを省略した場合はカレントディレクトリを対象とする。
前提条件
ghCLI がインストールされ、認証済みであること(gh auth statusで確認)- 対象リポジトリで
gitが初期化済みであること npxが使用できること(npx skills addによるスキル導入に使用)。skillsCLI は固定版(SKILLS_CLI_VERSION)で実行する。値と更新手順は「skills CLI のバージョン固定と更新手順」節を参照readlinkコマンドが使用できること(workflow js symlink の stale/dangling 判定に使用。command -v readlinkで事前確認し、利用できない環境では該当処理を中断する)
フロー
Step 1: 対象リポジトリを調査する
対象ディレクトリのルートを特定し、以下を把握する。
調査で把握する情報:
- 主要言語・フレームワーク(Rust / TypeScript / Python など)
- ディレクトリ構成(crates/ / src/ / packages/ など)
- ビルドコマンド(
cargo build/npm run build/makeなど) - テストコマンド(
cargo test/npm test/pytestなど) - 既存の
.claude/ディレクトリの有無
既存の .claude/ がある場合は update-claude スキルへ誘導して処理を中断する。
Step 2: 構成案を設計してユーザーに提示・承認を得る
調査結果をもとに以下の構成案を設計する。
Agents 設計方針
技術レイヤ別の builder Agent と横断サポート Agent を組み合わせる。
以下の model tier 表記はモデル世代交代に追従するための抽象ラベルである。本 Step でユーザーへ提示・承認を得る際に、tier ごとの具体的な model alias(例: 最上位 tier=opus または fable、標準 tier=sonnet、軽量 tier=haiku。導入先の方針で別 alias 可)を確定し、Step 3-1/3-6 で生成する対象リポ CLAUDE.md の model 配分表、および Step 3-2 で生成する各 Agent frontmatter の model: へ同じ対応表を反映する。
- 実装系 Agent はリポの技術レイヤに合わせてカスタマイズする (例: Rust workspace → クレート別 builder / TypeScript monorepo → パッケージ別 builder)
- 複雑な横断判断・アーキテクチャ設計は最上位 tier(特に大規模設計や複雑な横断判断が必要な場面に限定する)
- 調査・生成・レビューは標準 tier
- 機械的集計・frontmatter lint・ドキュメント更新は軽量 tier
Rules 設計方針
以下を標準として生成し、リポ特性に応じて追加する。
Skills 設計方針
npx skills add Fandhe-AI/agent-cli-skills で以下を導入する。
create-commit— Conventional Commits コミット作成create-pr— PR 作成create-issue— Issue 作成implement-issue— Issue 単体実装implement-issue-tree— Issue ツリー並列実装implement-review— レビュー対応implement-review-pr— PR レビュー対応update-docs— CLAUDE.md 更新comment-code—code-comment-style.md規約に従ったコメント・ドキュメンテーションコメントの追加・補強
hooks 設計方針
- SessionStart: 日本語・委譲・Conventional Commits・
--no-verify禁止のリマインダー - PostToolUse: 言語に応じた自動整形(Rust:
rustfmt/ TypeScript:biomeまたはprettier/ Python:ruffなど)
model 配分表(CLAUDE.md に記載)
上記の構成案(Agent 一覧・Rules 一覧・model 配分・hooks・Skills)をユーザーに提示し承認を得てから次の Step に進む。
Step 3: .claude/ 一式を生成する
承認後、以下の順で生成する。対象リポに dotclaude-via-temp ルール(_/dotclaude/ 経由)がない場合は
対象リポの .claude/ へ直接書き込んで良い。
サブステップの実行順は 3-1(CLAUDE.md 骨子)→ 3-2(agents/)→ 3-3(rules/)→ 3-4(settings.json)→ 3-5(スキル導入)→ 3-6(CLAUDE.md 確定) の順とする。CLAUDE.md は Agent・Rules・Skills の一覧を参照するため、3-1 では確定済みの項目(Overview / Repository Structure 等)のみ記載し、Sub-agents / Rules / Current Skills の各表は 3-2〜3-5 完了後に 3-6 で実体に合わせて確定する。
3-1. CLAUDE.md の骨子を生成する
対象リポのルートに CLAUDE.md の骨子を作成する。以下のセクションを含めるが、Sub-agents / Rules / Current Skills は 3-2〜3-5 で実体を生成するまで見出しのみ(プレースホルダ)とし、内容は 3-6 で確定する。
3-2. agents/ を生成する
Step 2 で設計した Agent を .claude/agents/<category>/<name>.md に作成する。
各 Agent は以下の frontmatter を持つ。
model: には具体的な model alias(例: haiku・sonnet・opus・fable)を書くが、値は固定の列挙ではなく
Step 2 で確定した tier 対応表(最上位 tier / 標準 tier / 軽量 tier → alias)から選ぶ。
対応表と異なる alias を frontmatter へ書かない(update-claude の 2-1 診断が対応表との整合を確認する)。
frontmatter のキーは Claude Code の subagent 定義仕様に従い name を使う
(subagent_type は Agent ツール呼び出し時のパラメータ名であり、定義キーではない)。
3-3. rules/ を生成する
Step 2 で設計したルールを .claude/rules/ に作成する。
delegation.md・delegation-impl.md は本リポの実例(Fandhe-AI/agent-cli-skills)を参考に
対象リポのパス構成に合わせてカスタマイズする。
code-comment-style.md と out-of-scope-tracking.md は以下の雛形骨子をベースに、
対象リポの言語・構成に合わせて調整して生成する。
code-comment-style.md の雛形骨子
out-of-scope-tracking.md の雛形骨子
キーワードは "${KEYWORD}" でクォートして渡す。
3. ユーザーに承認を得る: 既存 Issue への追記か新規起票かをユーザーと確認する
4. 記録:
- 既存 Issue がある場合:
- 存在しない場合:
create-issue-treeまたはcreate-issueで適切な親 Issue 配下に起票
- 元 PR・レビューに切り出し先を記録: コメントまたは PR 本文に切り出し先の Issue 番号を記載する
注意
- ユーザーの承認なしに勝手に Issue を起票しない
- スコープ外の修正を現在の PR に混入させない(別 Issue・別 PR で対処する)
言語に応じた PostToolUse 自動整形フックを提案し、ユーザーが希望する場合は追加する。
セキュリティ注意事項:
commandの値に API キー・トークン・パスワードを埋め込まない- ユーザー入力をそのまま
commandに展開しない
3-5. スキルを導入する
skills-lock.json が生成されることを確認する。
3-6. CLAUDE.md を確定する
3-2〜3-5 で生成した Agent・Rules・導入スキルの実体をもとに、3-1 で見出しのみとした
Sub-agents / Rules / Current Skills の各表を実際の一覧(subagent_type / model /
ファイル名 / 導入スキル名)で埋めて確定する。未存在の項目を列挙したまま残さない。
Step 4: implement-issue-tree の動作前提を確認する
不足・stale・dangling のいずれかがある場合は以下の対処方法をユーザーに案内する。
workflow js の配置・張り替え方法:
named workflow({name: "implement-issue-tree"})として呼ばない場合は .claude/workflows/ への配置自体が不要で、Workflow ツールの scriptPath に .claude/skills/implement-issue-tree/scripts/implement-issue-tree.js を直接指定すればよい。
named workflow として配置する場合は cp ではなく相対 symlink を使用する。cp で配置すると npx skills add による更新が named workflow に届かなくなる。
symlink 配置は readlink で現在のターゲットを検証し、期待ターゲットと異なる場合(stale)・参照先が消失している場合(dangling)は張り替える。実体ファイル(非 symlink)は上書きしない。readlink が利用できない環境では stale 判定が正しく行えず(空の CURRENT_TARGET により正常な symlink を stale と誤判定しうる)、そのまま張り替え処理へ進むと意図せず既存 symlink を書き換える危険があるため、command -v readlink で事前確認し、利用できない場合は自動張り替えを中断してユーザーに手動対応を案内する。
Step 5: 生成結果を報告する
報告項目:
- 生成したファイル一覧(CLAUDE.md・Agents・Rules・settings.json)
- 導入したスキル一覧(
npx skills addの結果) - implement-issue-tree の動作前提の充足状況
- ユーザーへの次のアクション案内(PostToolUse hooks の追加・Agent のカスタマイズなど)
skills CLI のバージョン固定と更新手順
Why: npx skills add をバージョン未固定で実行すると、npx はローカルキャッシュに無い場合レジストリのその時点の最新版を確認なしで即時取得・実行する。skills(vercel-labs/skills)パッケージが乗っ取られた場合、これは任意コード実行の経路になる。exact 版(X.Y.Z。dist-tag・^/~ レンジは禁止)への固定が信頼アンカーになる。
固定版の決め方:
npm view skills versionで現在の latest を確認するnpm view skills repository.urlがvercel-labs/skillsであることを確認するnpm view skills time --json等で公開日時が不自然でないことを確認する
更新手順:
- Step 3-5 フェンス内の
SKILLS_CLI_VERSIONを更新する(このスキル内での正の定義箇所はここ 1 箇所のみ) node --test skills/init-claude/tests/*.mjsで exact semver・実行行の固定を検証する- 1 リポジトリで実際に実行し、差分が正常であることを確認する
chore(init-claude): skills CLI を X.Y.Z へ更新でコミットする- 同じ
skillsCLI を固定するupdate-claude/sync-skills-lockの同名節も同時更新することを推奨する(値の同期は必須ではないが、乖離した場合はどちらかの節にその旨を記録する)
既知の乖離(記録): 本節の SKILLS_CLI_VERSION の値(1.5.23)は、sync-skills-lock/SKILL.md・sync-skills-lock/scripts/skills-lock-update.sh が固定する SKILLS_CLI_VERSION の値(1.5.22)と異なる(update-claude は本節と同一の値で同期済み)。各スキルは独立した固定版として運用しており同期は必須ではないため、意図的な乖離として記録する。次回いずれかを更新する際は、この乖離が解消したか維持されたかを本行で更新する。
fail-closed: 固定版が解決できない場合(該当版の不存在・レジストリ障害等どの原因でも)は npx が非ゼロ終了し停止する。未固定 npx skills add へのフォールバック再試行は行わない。
検証
注意事項
- 既存の
.claude/がある場合は処理を中断してupdate-claudeを案内する - ユーザーの構成案承認なしに
.claude/の生成を開始しない settings.jsonのcommandにトークン・シークレットをハードコードしない--no-verifyを含むコマンドを hooks に仕込まないnpx skills addが失敗した場合はエラーメッセージを表示してユーザーに手動手順を案内するskillsCLI は固定版で実行する。固定版の決め方・更新手順は「skills CLI のバージョン固定と更新手順」節を参照- 言語別 PostToolUse 整形フック(rustfmt / biome / prettier / ruff)は対象リポのツール存在確認後に提案する
- Agent の
toolsリストは最小権限原則に従い必要なもののみ列挙する


