Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/setup-check.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# setup/ (Tier 1 リアルタイム symlink・Tier 2 明示的スクリプト実行) の bats テストと
# setup/ (Tier 1 リアルタイム symlink・Tier 2 明示的スクリプト実行) と
# herdr/plugins/ (Herdr ローカルプラグイン) の bats テスト、および
# Claude Code hook スクリプトの unit test 検証
#
# 目的:
Expand All @@ -10,7 +11,8 @@
# - runs-on: macos-latest — テスト対象がすべて zsh script かつ macOS 前提 (defaults/pam 等)
# のため。bats-core は runner に無いため Homebrew で導入する。
# - 全テストは stub 実行ファイル・サンドボックス HOME を使い、実際の defaults/pam/mise/
# claude/git/brew を一切呼ばない (setup/README.md 参照)。
# claude/herdr/brew を一切呼ばない (setup/README.md 参照)。git はサンドボックス内に
# 作った使い捨てリポジトリに対してのみ実行する。
#
# セキュリティ:
# - run: で github.event.* の自由文を一切評価しない (injection 対策)
Expand All @@ -20,6 +22,7 @@ on:
pull_request:
paths:
- 'setup/**'
- 'herdr/**'
- 'claude/hooks/**'
- 'claude/settings.json'
- '.github/workflows/setup-check.yml'
Expand All @@ -30,6 +33,7 @@ on:
- main
paths:
- 'setup/**'
- 'herdr/**'
- 'claude/hooks/**'
- 'claude/settings.json'
- '.github/workflows/setup-check.yml'
Expand All @@ -40,7 +44,7 @@ concurrency:

jobs:
bats:
name: setup/tests/*.bats + hook unit test
name: setup/tests + herdr plugin tests + hook unit test
runs-on: macos-latest
timeout-minutes: 10
steps:
Expand All @@ -51,7 +55,7 @@ jobs:
run: brew install bats-core

- name: Run bats tests
run: bats setup/tests/*.bats
run: bats setup/tests/*.bats herdr/plugins/*/tests/*.bats

# settings.json の PreToolUse hook が呼ぶ破壊的コマンド判定パーサ。
# 標準ライブラリのみで動くので runner の python3 をそのまま使う。
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@ nix/modules/darwin/homebrew.local.nix
# 静的な seed は codex/config.base.toml に置き、~/.codex/config.toml は
# アプリ所有の実体ファイルとして追跡しない (nix/modules/home/codex.nix 参照)。
.codex/config.toml

# Herdr プラグインのマシンローカル allowlist。本来は Herdr のプラグイン設定ディレクトリ
# (~/.config/herdr/plugins/config/<id>/repos.local.json) に置くものだが、リポジトリ内に
# 誤って作られた場合の保険。非公開リポジトリの origin URL を含みうるため追跡しない。
herdr/plugins/*/config/repos.local.json
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- `CONTEXT.md` — AI エージェント指示の層(規範フラグメント・グローバル / プロジェクト AGENTS.md・SOUL.md・CLAUDE.local.md・channel prompt)を区別する用語集
- `aliases` — alias 定義の SSOT(root 直下、`~/.aliases` にシンボリックリンク)。旧 `nix/modules/home/zsh.nix` の `shellAliases` から移行(`setup/link.zsh` が配置、Tier 1)
- `scripts/` — 外部シェルスクリプト(`aliases` の alias から呼び出される。旧 `aliase/` から改名)
- `setup/` — Tier 1(リアルタイム symlink)・Tier 2(明示的スクリプト実行)・Tier 3(カットオーバー・ロールバック)の実装。`darwin-rebuild switch` を使わず、`zsh setup/link.zsh` で dotfiles を配置し(Tier 1)、`setup/languages.zsh`(mise による言語ランタイム + corepack + バージョン固定 CLI)/`setup/defaults.zsh`(macOS defaults・IME)/`setup/pam.zsh`(Touch ID for sudo)/`setup/claude-sync.zsh`(skills clone・plugin sync・MCP merge)/`setup/codex-sync.zsh`(config.toml seed-if-absent)を個別実行する(Tier 2)。既存 PC を home-manager 込みの旧構成から移行する場合は `setup/cutover.zsh`(pre-flight build 確認 + `darwin-rebuild switch`)/`setup/rollback.zsh`(`.before-nix` 衝突検出付きロールバック)を使う(Tier 3)。**実機での実行は `setup/migrate.zsh` が唯一のエントリポイント**(`--dry-run`/`--apply`。Tier 1/2/3 を依存順(Phase 1: link → Phase 2: cutover/pam [root] → Phase 3: languages/defaults/claude-sync/codex-sync)で実行し、`~/.dotfiles-migrate/manifest.log` で部分適用を検出・再開する。fail-closed、rollback.zsh は自動では呼ばない)。個別スクリプトの直接実行はメンテナンス目的のみ。詳細は `setup/README.md` と `docs/superpowers/specs/2026-08-21-restore-script-management-inventory.md`・`docs/superpowers/specs/2026-08-22-restore-script-management-tier3-cutover-design.md`・`docs/superpowers/specs/2026-08-22-migrate-orchestrator-recovery-plan.md` を参照
- `setup/` — Tier 1(リアルタイム symlink)・Tier 2(明示的スクリプト実行)・Tier 3(カットオーバー・ロールバック)の実装。`darwin-rebuild switch` を使わず、`zsh setup/link.zsh` で dotfiles を配置し(Tier 1)、`setup/languages.zsh`(mise による言語ランタイム + corepack + バージョン固定 CLI)/`setup/defaults.zsh`(macOS defaults・IME)/`setup/pam.zsh`(Touch ID for sudo)/`setup/claude-sync.zsh`(skills clone・plugin sync・MCP merge)/`setup/codex-sync.zsh`(config.toml seed-if-absent)/`setup/herdr-sync.zsh`(Herdr ローカルプラグインの link・allowlist 配置)を個別実行する(Tier 2)。既存 PC を home-manager 込みの旧構成から移行する場合は `setup/cutover.zsh`(pre-flight build 確認 + `darwin-rebuild switch`)/`setup/rollback.zsh`(`.before-nix` 衝突検出付きロールバック)を使う(Tier 3)。**実機での実行は `setup/migrate.zsh` が唯一のエントリポイント**(`--dry-run`/`--apply`。Tier 1/2/3 を依存順(Phase 1: link → Phase 2: cutover/pam [root] → Phase 3: languages/defaults/claude-sync/codex-sync/herdr-sync)で実行し、`~/.dotfiles-migrate/manifest.log` で部分適用を検出・再開する。fail-closed、rollback.zsh は自動では呼ばない)。個別スクリプトの直接実行はメンテナンス目的のみ。詳細は `setup/README.md` と `docs/superpowers/specs/2026-08-21-restore-script-management-inventory.md`・`docs/superpowers/specs/2026-08-22-restore-script-management-tier3-cutover-design.md`・`docs/superpowers/specs/2026-08-22-migrate-orchestrator-recovery-plan.md` を参照
- `claude/` — Claude Code 設定(`~/.claude/` にシンボリックリンク)
- `claude/rules/` — 全 AI エージェント向けグローバル指示のフラグメント(SSOT)。`core` / `worker` / `orchestrator` / `hermes-identity` の 4 ファイルを `scripts/build-agent-rules.zsh`(旧 `aliase/build-agent-rules.zsh`)が結合して生成物を作る
- `claude/hermes/SOUL.md` — Hermes Agent 用グローバル指示の生成物(`~/.hermes/SOUL.md` にシンボリックリンク)。直接編集しない
Expand All @@ -21,6 +21,7 @@
- `.gitignore` — リポジトリ内に偶発的に作られたローカル overlay ファイル(例: `nix/modules/darwin/homebrew.local.nix`)を保険的に除外する
- `gitignore_global` — グローバル gitignore(`~/.gitignore_global` にシンボリックリンク)
- `grip/` — grip 設定(`~/.grip/` にシンボリックリンク)
- `herdr/` — Herdr のローカルプラグイン置き場。`herdr/plugins/safe-worktree/` は allowlist 済みリポジトリでリモート既定ブランチの最新 SHA を base に linked worktree を作り、`worktree.created` イベントで直接作成を監査する(削除・自動修復はしない)。`setup/herdr-sync.zsh`(Tier 2)が `herdr plugin link` で作業ツリーを直接登録し、allowlist の SSOT `config/repos.json` をプラグイン設定ディレクトリへシンボリックリンクする(非公開リポジトリは追跡しない `repos.local.json` 側に書く)。登録先パスがそのまま保存されるため、link と設定配置は primary チェックアウト(`~/.dotfiles`)から実行したときだけ行う(使い捨て worktree を登録すると削除時に壊れるため)。パス解決は `setup/lib/herdr.zsh` に集約し、`setup/migrate.zsh` の health check も同じ関数から引く。詳細は `herdr/plugins/safe-worktree/README.md`
- `nix/` — nix-darwin + flakes による Homebrew パッケージ管理定義(`darwin-rebuild` から参照される。home-manager は Tier 3 で廃止済み、詳細は `nix/README.md`。`nix/lib/` は Brewfile 生成用の小さな Nix ヘルパー、`nix/tests/` は生成 Brewfile 側ロジックの bats テストで、`nix-check` workflow が実行する)
- `ssh/` — SSH 設定(`~/.ssh/` にシンボリックリンク)
- `zsh/` — zsh 補完ファイル(`~/.zsh/` にシンボリックリンク)
Expand Down
Loading
Loading