Skip to content

feat(claude): default role で fleet 層をローカル展開 (DOT-45 改訂追従)#37

Merged
gotomts merged 3 commits into
mainfrom
claude/japanese-request-c96XP
Jun 7, 2026
Merged

feat(claude): default role で fleet 層をローカル展開 (DOT-45 改訂追従)#37
gotomts merged 3 commits into
mainfrom
claude/japanese-request-c96XP

Conversation

@gotomts

@gotomts gotomts commented Jun 7, 2026

Copy link
Copy Markdown
Owner

概要

DOT-45 のブリーフが着手後に改訂され(「AI 組織開発を default のベースにする」=default role では fleet 層をローカルにも展開する)、先にマージした A2(PR #36)の旧方針(fleet 非 symlink・remote inject のみ)と矛盾していたため、その追従。PR #36 はマージ済みで再オープンできないため follow-up として実施。

変更内容

nix/modules/home/claude.nix を role 対応に

repo 既存の role 機構(/etc/dotfiles-roledefault / sub-1homebrew.nix / defaults.nix と同じ)に乗せる。

  • default role:
    • claude/fleet/agents~/.claude/agents に whole-dir symlink(個人層 agents は A2 で空になったため衝突なし)
    • claude/fleet/skills を個人層 claude/skillsマージして ~/.claude/skills に展開。2 つの source dir を 1 つの symlink で束ねられず、かつ eval 時に working tree を読むと CI(nix build)が壊れるため、activation で per-entry symlink を張り直す方式を採用(既存の home.activation.* パターンに準拠)。working tree を指す symlink なのでファイル編集は即反映(skill の追加・削除時のみ次回 switch が必要)
  • sub-1 等の別 role: 個人層スキルのみ。fleet・agents は展開しない(クライアント作業向け)
  • remote: inject-fleet.sh は role 非依存・本モジュールと独立のまま(不変)

AGENTS.md

  • リポジトリ構造: agents を claude/fleet/agents(dev × 8 / rev × 3 / pr-publisher × 1 = 12 体。A2 で claude/agents から移動)に更新、stale な claude/agents/ 行を除去
  • fleet 配送モデルを改訂版に追従(default ローカル展開 / 別 role 除外 / remote inject)

前提との差異(重要)

  • skills のマージ方式: 改訂ブリーフは「fleet を ~/.claude に symlink」と記述しているが、個人層 + fleet の 2 ディレクトリを 1 つの ~/.claude/skills に束ねる whole-dir symlink は不可能。さらに builtins.readDir で eval 時列挙すると CI(fake user で working tree 不在)が壊れる。そのため activation 時の per-entry symlink マージで実現した(syncClaudeMcpServers 等の既存 activation パターンと同系統)。fleet/agents は個人層が空なので whole-dir symlink で足りる。設計レベルの選択のため vault 反映候補としてフラグ。
  • A1(PR docs(agents): fleet 運用前提を AGENTS.md に明文化 #35)で AGENTS.md に書いた「fleet は global に symlink せず remote のみ inject」という記述は本改訂で default role について不正確になるため、同 PR で追随修正済み。

検証

  • このコンテナに nix が無いため nix build はローカル未実行。CI(nix flake check + closure build、role 未設定時は default 解決)で検証。activation 方式は eval 時に working tree を読まないため CI-safe の想定。

注意

  • auto-merge しません。人間レビュー後の手動マージを想定。

https://claude.ai/code/session_015R1g7uW4DpstGRaqSDgMsG


Generated by Claude Code

Summary by CodeRabbit

  • ドキュメント

    • Claude のエージェント/スキル展開ポリシーを明確化しました。ロール別の展開範囲、デフォルトロールでのローカル展開とリモート環境での起動時注入、二層(個人層・fleet層)スキル管理と配布ルールを詳述しています。
  • Refactor

    • ロールを考慮した展開フローを導入・整理し、デフォルトロールではローカル展開とスキルの再構成を自動化、その他ロールでは個人層優先の挙動に最適化しました。

DOT-45 ブリーフ改訂「AI 組織開発を default のベースにする」に追従。A2 (PR #36)
は旧方針 (fleet 非 symlink・remote inject のみ) で実装・マージ済みのため、その後の
改訂を本 PR で反映する。

- nix/modules/home/claude.nix を role 対応に:
  - default role: claude/fleet/agents を ~/.claude/agents に symlink、
    claude/fleet/skills を個人層 (claude/skills) とマージして ~/.claude/skills に
    per-entry symlink で展開 (activation。2 source dir を 1 symlink で束ねられず、
    かつ eval 時に working tree を読むと CI が壊れるため activation 方式)
  - sub-1 等の別 role: 個人層スキルのみ。fleet は展開しない
  - remote の inject-fleet.sh は role 非依存・本モジュールと独立 (不変)
- AGENTS.md: リポジトリ構造 (agents は claude/fleet/agents 12 体へ移動) と
  fleet 配送モデル (default ローカル展開 / 別 role 除外 / remote inject) を改訂

DOT-45
@coderabbitai

coderabbitai Bot commented Jun 7, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3cf4ceb6-7252-4d5f-bb56-13b3f7f23e0c

📥 Commits

Reviewing files that changed from the base of the PR and between 0e1d704 and 6d8ed34.

📒 Files selected for processing (1)
  • AGENTS.md
✅ Files skipped from review due to trivial changes (1)
  • AGENTS.md

Walkthrough

このPRは、Claude fleet agents/skillsのローカル展開とリモート注入を役割別に制御するための戦略をAGENTS.mdで文書化し、その実装をnix/modules/home/claude.nixのロール分岐ロジックで具現化します。

Changes

Claude Fleet 役割ベース展開

Layer / File(s) Summary
Fleet 展開戦略ドキュメント
AGENTS.md
claude/fleet/ 配下のエージェント・スキルについて、default ロールではローカル展開、非default ロールでは展開せず、リモートでは SessionStart hook で注入する方針を明記。二層管理(個人層と fleet 層)の配送ルールを詳細化し、default ロール時に claude.nix がスキルをマージする仕組みを追記。
Nix モジュール role 引数と展開ロジック
nix/modules/home/claude.nix
モジュール引数に role を追加し、role 値に応じて ~/.claude/agents~/.claude/skills のシンボリックリンク元を分岐。default ロールでは home.activation.claudeFleetSkills activation を追加し、fleet と個人層の skills を per-entry symlink で再構成する処理へ変更。MCP server 同期に関するコメント文言も更新。

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related issues

  • gotomts/kissasoft-mcp#84: Fleet レイアウトと default-profile symlink 方針を扱っており、本PRの展開/注入ルール変更と一致。

Possibly related PRs

  • gotomts/dotfiles#36: nix/modules/home/claude.nix における ~/.claude/{agents,skills} 展開ロジックの変更点が重複しているため関連。
  • gotomts/dotfiles#35: AGENTS.md の fleet 定義と注入/スキル管理方針更新が同様の文書改定を含むため関連。

Poem

🐰 小さなラビットが言うよ、ふわり、
デフォルトは家に、fleet がやって来る、
リモートはそっとフックで招待、
シンボリックが踊り、スキルが増える、
ドキュメントとNixが手を取り合う。

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PRタイトルは「default role で fleet 層をローカル展開」という主要な変更を正確に反映しており、変更内容と一致している。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/japanese-request-c96XP

Comment @coderabbitai help to get the list of available commands and usage tips.

@gotomts gotomts merged commit 2240fda into main Jun 7, 2026
2 checks passed
@gotomts gotomts deleted the claude/japanese-request-c96XP branch June 7, 2026 04:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants