mcpField
S
sync-repos

sync-repos

github.com/thatrebeccarae開発18799 回インストール24 週間前に更新
リポジトリ

sync-repos について

sync-reposは、非公開の開発リポジトリと公開側の同期を管理するスキルです。差分確認、ローカル同期の実行と検証、個人情報や秘密情報の漏えいチェックを行います。

主な機能

  1. 01ファイル一覧とハッシュの比較
  2. 02除外対象とリポジトリ差分の分類
  3. 03ローカル同期スクリプトの設定と実行
  4. 04整合性検証と機密データのスキャン
  5. 05公開側固有ファイルの保持と自動プッシュ禁止

活用シーン

  1. 01公開プッシュ前のリポジトリ整合性確認
  2. 02開発後の未同期変更の検出
  3. 03新しい公開・非公開リポジトリのペア設定
  4. 04リリース前の同期状態の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/thatrebeccarae/claude-marketing --skill sync-repos

インストール後、Claude Code で/sync-reposを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

EXAMPLES.md
LICENSE
REFERENCE.md

詳細

リポジトリの同期

公開リポジトリと非公開リポジトリのペアを管理します。開発用(非公開)リポジトリとその公開側の対応リポジトリとの整合性を確認し、差分を検出して、同期スクリプトを実行し、結果を検証して、PII やシークレットが公開側に漏えいしないようにします。

インストール

claude install-skill https://github.com/thatrebeccarae/claude-skills/tree/main/sync-repos

使用するタイミング

  • 公開リポジトリにプッシュする前 — 同期に問題がなく、最新であることを確認します
  • 大規模な開発作業の後 — 公開リポジトリに遅れが生じていないか確認します
  • 定期的に — 毎週、またはリリース前に、同期されていない変更を早期に検出します
  • 公開リポジトリと非公開リポジトリのペアを初めて設定するとき

使用方法

  • /sync-repos check [dev-path] [public-path] — リポジトリを比較し、差分を報告します
  • /sync-repos sync [dev-path] [public-path] — 同期スクリプトを実行し、結果を検証します
  • /sync-repos setup [dev-path] [public-path] — 初期設定用の sync-public.sh と設定ファイルを作成します

パスを省略した場合は、ユーザーにパスを尋ねます。開発用リポジトリ内の .syncignore または scripts/sync-public.conf を確認し、ペアを自動検出します。

手順

確認モード
  1. パスを検証します。 両方のパスが存在し、.git/ ディレクトリを含んでいることを確認します。どちらかが git リポジトリでない場合は、明確なメッセージを表示して中止します。

  2. 同期スクリプトを検出します。 開発用リポジトリ内の scripts/sync-public.sh、scripts/sync-public.conf、または .syncignore を確認します。同期の仕組みが存在するかどうかを報告します。

  3. ファイル一覧を比較します。 両方のリポジトリについて、.git/、node_modules/、dist/ を除外したファイル一覧を生成し、差分を分類します。

    • 想定される除外 — 既知の除外パターン(下記の一般的な除外パターンを参照)に一致するファイル、または .syncignore / sync-public.conf に記載されたファイル
    • 想定外の差分 — 開発用リポジトリに存在するものの、いずれの除外リストにも含まれず、公開リポジトリには存在しないファイル
    • 内容が異なるファイル — 両方のリポジトリに存在するものの、内容が異なるファイル(sha256sum または git hash-object で比較)
    • 公開側のみに存在するファイル — 開発用リポジトリにはなく、公開リポジトリに存在するファイル(README、CONTRIBUTING、LICENSE、.github/ など、正当なもの)
  4. 最終同期日時を確認します。 scripts/sync-public.sh が存在する場合、同期パターンに一致する公開リポジトリ内の最新コミットから、最後の実行時刻を確認します。開発用リポジトリの最新コミットと比較します。

  5. 結果を報告します。 次の概要表を提示します。

    • 同期スクリプト:検出済み/未検出
    • 開発用リポジトリのみにあるファイル(想定内):件数
    • 開発用リポジトリのみにあるファイル(想定外):件数と一覧
    • 内容が異なるファイル:件数と一覧
    • 公開側のみにあるファイル:件数と一覧
    • 推定される差分:最終同期以降の開発用リポジトリのコミット数
    • 推奨事項:「同期済み」、「軽微な差分」、または「同期が必要」
同期モード
  1. まず確認を実行します。 上記の確認手順をすべて実行します。差分が検出されなかった場合は「すでに同期済み」と報告して終了します。

  2. 同期スクリプトを特定します。 開発用リポジトリ内の scripts/sync-public.sh を確認します。見つからない場合は、セットアップモードで作成するかどうかをユーザーに尋ねます。

  3. 同期内容をプレビューします。 同期スクリプトが実行する内容(コピーするファイル、除外項目、テキストの置換)を表示します。続行する前に、ユーザーの確認を必須とします。

  4. 同期スクリプトを実行します。 開発用リポジトリのルートから実行します。

    bash scripts/sync-public.sh
    

    標準出力と標準エラーを取得します。スクリプトが 0 以外の終了コードを返した場合は、エラーを報告して終了します。

  5. 同期後の検証を行います。 スクリプトの完了後、次の処理を行います。

    • 整合性を確認するため、確認手順をもう一度実行します
    • 公開リポジトリの差分をスキャンして PII とシークレットを検出します(スキャンパターンについては REFERENCE.md を参照)
    • 検出結果にフラグを立て、解決されるまで処理をブロックします
  6. 結果を報告します。 次の内容をまとめます。

    • 同期したファイル:件数
    • 適用した除外:件数
    • PII/シークレットのスキャン:問題なし、または検出あり
    • 次の手順:「公開リポジトリの変更を確認してから、準備ができたら /safe-push を実行してください」
セットアップモード
  1. 開発リポジトリをスキャンします。 パブリックリポジトリに同期してはならないファイルやディレクトリを特定します。

    • 環境ファイル:.env、.env.*(.env.example を除く)
    • 計画・内部用:.planning/、.claude/、CLAUDE_CONTEXT.md、briefs/
    • データ・ビルド成果物:data/、dist/、node_modules/、.git/
    • 同期インフラ:scripts/sync-public.sh、scripts/sync-public.conf
    • 機密設定:*.pem、*.key、*.plist、config/soul.md
    • .gitignore の分析で検出されたプロジェクト固有のパターン
  2. sync-public.conf を生成します。 次の項目を含む設定ファイルを作成します。

    • SOURCE_DIR および TARGET_DIR 変数
    • パブリックリポジトリの PACKAGE_NAME
    • 特定したすべての除外項目を含む EXCLUDE_PATHS 配列
    • パブリックリポジトリ専用ファイル(README、LICENSE、.github/)用の PRESERVE_PATHS 配列
  3. sync-public.sh を生成します。 REFERENCE.md の rsync ベースのテンプレートを使用して同期スクリプトを作成します。次の内容を含めます。

    • 設定ファイルの読み込み
    • パスの検証
    • .git/ と PRESERVE_PATHS を保持したターゲットのクリーンアップ
    • --delete-excluded と除外リストを使用した rsync
    • 個人データの漏えいチェック
    • ファイル数の概要
  4. ユーザーによる確認。 生成した設定ファイルとスクリプトを表示します。書き込み前に明示的な承認を待ちます。

  5. ファイルを書き込みます。 開発リポジトリに scripts/sync-public.sh(実行権限を付与)と scripts/sync-public.conf を保存します。

一般的な除外パターン

これらのパターンは、デフォルトで同期から除外されます。必要に応じてプロジェクト固有のパターンを追加してください。

パターン理由
.git/Git の履歴を分離しておくため
.env、.env.*シークレットと環境設定
.planning/内部の計画ドキュメント
.claude/Claude Code のプロジェクト設定
CLAUDE_CONTEXT.md内部エージェントのコンテキスト
data/ローカルデータ/データベース
dist/、node_modules/ビルド成果物
*.pem、*.key秘密鍵のデータ
*.plistmacOS サービス設定
scripts/sync-public.*同期インフラ自体
briefs/内部向けコンテンツ概要
config/soul.md個人用エージェント設定

重要な原則

  • 自動でプッシュしないでください。 同期によってファイルはローカルに書き込まれます。リモートへのプッシュは、常に /safe-push を介した別の手順として、ユーザーの確認後に行います。
  • 同期後は必ず検証してください。 同期の実行ごとに、パブリックリポジトリで PII/シークレットのスキャンを行います。例外はありません。
  • 除外リストは追加のみです。 ユーザーの明示的な承認なしに、除外パターンを削除しないでください。除外が少なすぎるより、多すぎるほうが安全です。
  • パブリックリポジトリ専用ファイルを保持してください。 パブリックリポジトリには、独自の README、LICENSE、CONTRIBUTING、.github/ ワークフローがある場合があります。同期でこれらを上書きしてはなりません。
  • 設定ファイルとスクリプトを分離してください。 除外リストをスクリプトのロジックに触れずに確認・更新できるよう、sync-public.conf は別ファイルにしてください。

コメント