← ClaudeAtlas

harness-synclisted

ローカル harness (~/.claude) の origin-filtered コンポーネントを公開 repo (claude-harness 集約 repo + 単独 skill repo 群) へ一方向同期する。Use when the user says 「ハーネスを公開 repo に同期して」「claude-harness を更新して」「スキルを公開して」「skill repo を同期して」 or invokes /harness-sync. 収集 → secret scan → subtree 置換は決定論的 script が行い、diff レビュー・README/llms.txt の整合・コミットは会話で行う。NOT for: 公開 repo から ~/.claude への逆方向取り込み、ECC 等外部 origin の公開判断、汎用化 fork を持つ curated skill repo (script 同期は汎用化を壊すため手動 curation)。
shimo4228/claude-harness · ★ 3 · AI & Automation · score 79
Install: claude install-skill shimo4228/claude-harness
# /harness-sync — 公開 repo への一方向エクスポート ローカルの生きた harness (~/.claude) と公開 artifact repo は**目的の違う別 repo** として保ち、 remote 直結ではなく **filter 付き一方向コピー**で同期する。公開境界は script の origin filter 1 箇所で宣言的に管理される。 ## なぜ remote 直結にしないか - ~/.claude は実行時状態 (settings, metrics, session 情報) を含む生きたディレクトリで、 gitignore の永久警戒を前提にした公開はミス耐性がゼロ - origin filter は出自の記録であって再配布権の整理ではない (外部 origin はライセンス 整備が別途必要) - 目的の違う repo 間は丸コピが調整コスト最小 (duplicate over coordination) ## Workflow ### 1. Dry-run で差分を確認 ```bash bash <公開repo>/scripts/sync-from-local.sh --dry-run ``` 差分の要約 (新規 / 変更 / 削除されるコンポーネント) をユーザーに提示する。 ### 2. 公開スコープ確認 task request / approved plan に列挙された repo と component は追加確認なしで進める。 列挙外の repo・新規公開 component が見つかった場合だけ scope change として停止する。 ### 3. 適用 ```bash bash <公開repo>/scripts/sync-from-local.sh ``` script は staging 収集 → runtime artifact 除去 (results.json, __pycache__ 等) → frontmatter YAML 検証 (GitHub 等の厳密パーサ基準。invalid なら abort) → secret scan (検出時 abort) → skills/ agents/ rules/ docs/adr/ rfcs/ hooks/ scripts/hooks/ tests/ subtree の置換、まで行う。origin filter が効くのは skills/ agents/ rules/ だけで、 残り 3 系統は別の規則で決まる (いずれも集約 repo のみ): - `docs/adr/` — ADR はハーネス自身の設計判断の記録で定義上すべて自作のため、origin filter を 掛けずディレクトリ丸ごとが対象。以後の ADR は公開される前提で書く。 - `rfcs/` — 台帳エントリも自作の判断記録なので ADR と同じく丸ごと (ADR-0049)。起票は公開可能な書き方が既定 — 機微はリンク先へ (task-stocktake の公開規約)。 - `hooks/` `scripts/hooks/` `tests/` — script 内の `HOOK_ALLOWLIST` に列挙したファイルだけ。 公開は provenance でなく curation の判断 (ADR-0038)。公開対象の hook を追加・rename したら allowlist を更新する — sour