secrets-with-git-crypt について
secrets-with-git-cryptは、Gitリポジトリ内の機密ファイルを管理するエージェント向けスキルです。設定、暗号化、同期、検証の手順を示し、暗号化された`.enc`ファイルを追跡しながら平文ファイルを除外します。
主な機能
- 01git-cryptリポジトリの初期化またはロック解除
- 02`.gitattributes`と`.gitignore`の設定
- 03平文ファイルを`.enc`コピーに同期
- 04暗号化コピーから平文を復元
- 05暗号化状態とGit追跡状態の検証
活用シーン
- 01新しいリポジトリでシークレット管理を設定
- 02クローン後に暗号化ファイルをロック解除
- 03リポジトリ変更の準備中にシークレットを更新
- 04認証情報の平文がGitで追跡されていないか確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ derailed-dash/ dazbo-agent-skills --skill secrets-with-git-cryptインストール後、Claude Code で/secrets-with-git-cryptを入力して読み込まれたか確認します。
同梱ファイルscripts/git-crypt-helper.sh
詳細
Git-Crypt によるシークレット管理
このスキルは、git-crypt を使用してリポジトリのシークレット(例: .env、*.tfvars、sec.json、settings.json)を安全かつ構造化されたワークフローで管理する方法を提供します。機密性の高い認証情報が平文でコミットされることのないよう、代わりに暗号化された .enc 版を並行して維持し、Git にコミットするようエージェントを導きます。
目次
トリガー
このスキルは、以下の場合に必ずトリガーされます。
- ユーザーが
git-crypt、暗号化、復号、またはシークレット管理に言及した場合。 - ユーザーが機密ファイル(
.env、*.tfvars、settings.json、キーファイルなど)をリポジトリに保存するよう要求した場合。 - ユーザーが暗号化されるべきファイル(例:
.env、*.tfvars、sec.json)をリポジトリにコミットまたはプッシュしようとした場合。 .encファイル(例:.env.enc、terraform.tfvars.enc、settings.json.enc)を含む既存のリポジトリをクローンする場合(以前に git-crypt で保護されていたことを示します)。- 新しいリポジトリを初期化し、ローカル/リモートのシークレット設定をセットアップする場合。
- 安全にコミットする必要があるシークレット認証情報を変更または追加する場合。
前提条件
- ホスト環境: Unix 系オペレーティングシステム(例: Linux、WSL、macOS)。
- Git: 現在のプロジェクトで git リポジトリが初期化されている必要があります。
- git-crypt:
git-cryptコマンドラインユーティリティがインストールされている必要があります。- インストールされていない場合、ヘルパースクリプトが Debian/Ubuntu システムで
sudo apt-get install git-cryptによるインストールを試みることができます。
- インストールされていない場合、ヘルパースクリプトが Debian/Ubuntu システムで
- ヘルパースクリプト:
skills/secrets-with-git-crypt/scripts/git-crypt-helper.shにあるヘルパースクリプトが実行可能(chmod +x)であることを確認してください。
シークレットの設定と同期ワークフロー
このチェックリストをコピーして、進捗を追跡してください:
Secrets Management Progress:
- [ ] Step 1: Verify git-crypt installation
- [ ] Step 2: Initialize or unlock the repository
- [ ] Step 3: Configure tracking and gitignore rules
- [ ] Step 4: Perform file synchronization
- [ ] Step 5: Verify environment security
ステップ 1: 実装前の安全性とバイナリの確認
暗号化、復号、またはシークレット同期の操作を試みる前に:
-
Git ワークツリーの確認:
- 作業ディレクトリが Git リポジトリ内にあることを確認します(
git rev-parse --is-inside-work-tree)。Git リポジトリ内でない場合は、実行を停止し、まずgit initを実行するようユーザーに促します。
- 作業ディレクトリが Git リポジトリ内にあることを確認します(
-
git-crypt バイナリとヘルパースクリプトの確認:
skills/secrets-with-git-crypt/scripts/git-crypt-helper.shにあるヘルパースクリプトが実行可能であることを確認します(chmod +x)。- ヘルパースクリプトの status コマンドを実行して、
git-cryptがインストールされ機能しているかを確認します:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh status git-cryptが見つからない場合は、次のコマンドでインストールを提案します:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh install
ステップ 2: リポジトリの初期化またはロック解除
-
これが新しいリポジトリの場合(または git-crypt を初めてセットアップする場合): セキュアキーをリポジトリの外に保存する場所を決定します(例:
~/secure-keys/my-project.key)。積極的に次を実行します:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh init ~/secure-keys/my-project.keyキーが絶対に git にコミットされないようにしてください。
-
これが
.encファイルを含むクローンされたリポジトリの場合: 既存のキーファイルへのローカルパスをユーザーに尋ね、次を実行します:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh unlock /path/to/existing.key
ステップ 3: 追跡と gitignore ルールの設定
プロジェクトのルートにある .gitattributes にフィルター宣言が含まれていることを確認します:
*.enc filter=git-crypt diff=git-crypt
すべての非暗号化ファイル(例: .env、settings.json、variables.tfvars)は、明示的に .gitignore に追加する必要があります。ヘルパースクリプトの sync コマンドを実行すると自動的に追加されますが、それらが Git で平文として追跡されていないことを必ず再確認してください。
ステップ 4: ファイル同期の実行
-
暗号化バージョンへの同期(変更をコミットする前): 非暗号化のローカルファイルを、対応する
.encバージョンにコピーします:- 特定のファイルの場合:
./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc .env - リポジトリ内のすべての既知の
.encファイルの場合:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc
- 特定のファイルの場合:
-
暗号化バージョンからの同期(クローンされたリポジトリをロック解除した後): ロック解除された
.encバージョンから、すべての非暗号化平文ファイルを復元します:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-from-enc
ステップ 5: 環境のセキュリティ確認
ターンを終える前に、検証ループの手順を実行して、平文のシークレットがステージングまたはコミットされていないことを確認してください。
コマンドリファレンス
ヘルパースクリプトは以下のコマンドをサポートしています:
| コマンド | 引数 | 説明 |
|---|---|---|
install | なし | Debian/Ubuntu/WSL プラットフォームに git-crypt をインストールします。 |
init | <key_path> | git-crypt init を実行し、.gitattributes を設定し、キーをエクスポートします。 |
unlock | <key_path> | 指定されたキーファイルを使用してリポジトリをロック解除します。 |
sync-to-enc | [file] | 非暗号化ファイルを対応する .enc コピーに同期します。.gitignore への追加を確実にします。 |
sync-from-enc | [file] | .enc コピーを非暗号化ファイルに同期/復元します。 |
status | なし | インストール、git-crypt の初期化、およびファイル同期の状態を評価します。 |
検証ループ
シークレットの設定または変更を終える前に、エージェントは以下の検証手順を実行する必要があります:
1. ステータスチェックの実行
ヘルパーの status コマンドを実行します:
./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh status
すべての並列シークレットファイルが [OK] を報告することを確認します。いずれかが DO NOT MATCH と表示される場合は、適切な sync-to-enc または sync-from-enc コマンドを実行します。
2. gitignore の整合性の確認
非暗号化の平文ファイルが Git で追跡されていないことを確認します。次を実行します:
git ls-files --error-unmatch .env 2>/dev/null
- コマンドが出力を返す場合(ファイルが追跡されている): 直ちに
git rm --cached <file>を実行して、ファイルをローカルディスクに残したままステージングから削除します。
3. .gitattributes の構造を確認する
.gitattributes に以下が含まれていることを確認します:
*.enc filter=git-crypt diff=git-crypt
これにより、git-crypt が Git 配下のすべての .enc ファイルを透過的に管理できるようになります。
4. git-crypt のステータス確認
ステージ済み/コミット済みの .enc ファイルに対して、git-crypt がフィルターと正しく一致していることを確認します:
git-crypt status
出力には、.enc ファイルが encrypted であることが示されている必要があります。