--- name: secret-files user-invocable: false description: > プロジェクトのGit作業ツリー外にある、`.env`、鍵、証明書などの秘匿値を含むファイルを 読む直前に起動する。Git作業ツリー外のログ、設定ファイル、スクリプト、履歴などの通常のファイルから 秘匿値と見られる値の有無、件数、所在、同一性を探す検索の直前にも起動する。 --- # 秘匿値ファイルの取り扱い 本スキルは、Git作業ツリー外にある秘匿値ファイルの読み取りや、作業ツリー外の通常ファイルを対象とした秘匿値の検索における制約を定める。 秘匿値の読み取りや検索は、その実体へ許可された方法でアクセスできる環境で行う。ファイル操作が提供されない環境では、値そのものの提示や複製を要求するのではなく、必要なキー名と、値を出力させずに確認する方法を案内する。認証や検索の実行可否の確認は、ファイル操作を実行できるClaude CodeまたはCodexに委ね、説明文の記述には[文章の品質基準](references/quality-standards.md)を用いる。 作業ツリー内のファイルは、Git追跡の有無やgitignoreの指定、ファイル名にかかわらず通常のファイルとして扱い(`.env`、鍵、証明書を含む)、本スキルの制約は適用しない。 作業ツリー内から外部の認証情報を参照している場合は、認証情報の実体が配置されている場所を基準として作業ツリーの内外を判定する。 作業ツリー外にある秘匿値ファイル(`.env`、`.env.<接尾辞>`、鍵、証明書など、値の秘匿を前提とするファイル)は、必要なキーの値のみを取り出す操作に限定して読み取る。ファイル全文の読み取りや画面・ログへの出力は禁止する。全文がログ、トランスクリプト、生成物などに記録されると、秘匿値が露出してしまうためである。 作業ツリー外の通常ファイル(ログ、設定ファイル、スクリプト、Gitの履歴など)から、秘匿情報とみられる値の有無、件数、所在、または同一性を検索する際は、一致した値そのものがツールの実行結果に出力される形式を避ける。 これに該当するのは、`grep -o`、オプションを指定しない`git grep`や`rg`による一致行の表示、`git log -p`や`git show`による差分表示などである。調査時はファイル名一覧(`-l`)や件数(`-c`)、あるいは値ごとのハッシュ値を用いて判定し、同一性や重複の確認もハッシュ値同士の比較で行う。 <例> 値ごとのハッシュ: `rg -o -N --no-filename '<パターン>' <パス> | while IFS= read -r v; do printf '%s' "$v" | sha256sum; done` 値を出力してしまう形式の検索コマンドの後段に`grep -v`や`sed`などを繋げて値を取り除こうとするパイプライン構成は用いない。除外処理が成功するかどうかは前段の出力形式やホスト側の設定に左右され、一度でも失敗すると値がトランスクリプトに記録されて取り消せなくなるためである。 ## 名指し参照の読込方法 本文で名指しした資料と読込表の資料は、条件が成立したら判断や操作の前に指定節と、その成立に必要な前提・例外を自分で読む。全体が判断に必要な場合は全文を読む。読込表の列の使い方は`agent-basics:writing-standards`の`references/quality-principles.md`「読込表の読み方」に従う。 | 時点または条件 | 全文読む資料 | 契機 | 配送操作 | | --- | --- | --- | --- | | 本文がこの資料の基準を使う場面で、資料を選択して取得する時 | `references/quality-standards.md` | 判断 | `read:agent-basics:*/skills/secret-files/references/quality-standards.md` | | 読込表と本文の名指し参照を読む前 | `agent-basics:writing-standards/references/quality-principles.md`の「読込表の読み方」 | 判断 | `section:agent-basics:*/skills/writing-standards/references/quality-principles.md#「読込表の読み方」` |