Agent Skillを書く時の心得。SKILL.mdに何を書き、何を書かないかの判断基準を定める。AIが読んで従う文書に共通の心得は、kuden:common-rules-for-agent-instructionsにある。 Agent Skillを作成する時、編集する時、レビュー指摘の採否を決める時に読み込む。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
セキュリティ調査に使う調査対象リストと観点リストを、リポジトリのコードを読んで生成・更新する。codepatrol skillが起動したsubagentが実行する。ユーザーが直接呼び出す事は想定していない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
codepatrol skillの指揮役から任されて、.dev/codepatrol/ の調査対象リスト targets.md と、観点リスト checklist.md を生成・更新する。
どちらを生成・更新するかは、指揮役の指示に従う。
.dev/codepatrol/ の場所は、指揮役の指示に従う。関連リポジトリがある時は、その名前と領域名の接頭辞も指揮役の指示に従う。branchの切り替え・pull・commitはしないtargets.mdとchecklist.mdの冒頭に Format: {現在の値} を書く。現在の値は2である。
形式はskillの更新で変わる。どちらかのファイルの値が現在の値と違うか無い時、指揮役は両方の更新を任せる。形式が違う既存のファイルを更新する時は、新しい形式で作り直し、既存の領域・機構の事実・固有の観点を引き継ぐ。観点は番号ではなく内容で対応付ける。Format の記録が無い旧形式では固有の観点がマスターの番号列を続けていたので、同じ番号が別の観点を指す。マスターへの補足で表せない旧項目は、固有の観点として残す。関連リポジトリの一覧が無い旧形式のファイルでは、既存の領域を設定を置くリポジトリの物として引き継ぐ。
調査領域には2つの種類がある。
設定を置くリポジトリでは、自動検出の対象はサーバー側に限定している。 client/config/infraなど他の領域が必要な場合は、ユーザーがtargets.mdに手動で追加する。
同じサービスを構成する別のリポジトリを、指揮役が関連リポジトリとして渡す事がある。関連リポジトリごとに、設定を置くリポジトリと同じ入口起点の走査を行い、領域名を指揮役から渡された接頭辞で始めて、どのリポジトリの領域かを区別する。領域の本文の先頭に「リポジトリ: {名前}」と、対になる別のリポジトリの領域があればその名前を書く。対になる領域は、同じ入口やデータを両側から扱う領域で、アップロードの受付とバイナリの保存のように、リポジトリの境界で役割が分かれている物である。パスは、その領域のリポジトリのrootからの相対で書く。
インフラ設定のように、サーバー側の入口を持たない関連リポジトリでは、入口の代わりに、外部に影響する設定の単位で領域を切る。秘密情報と権限の定義、ネットワークの到達範囲、デプロイの定義、データストアの構成といった単位である。何がどこまで設定に書かれ、何がリポジトリの外にあるかを、領域の本文に書く。
利用終了イベント起点の領域には接頭辞を付けない。イベントはリポジトリの境界をまたぐので、単位は関連リポジトリのデータモデルからも列挙し、同じ単位の入口と資産をリポジトリをまたいで1つの領域にまとめる。関連リポジトリがある時、この領域のパスには常にリポジトリ名を添える。
クライアントのリポジトリは、自動検出の対象外で、領域はユーザーが手動で足す。
走査の中で、関連リポジトリに入っていない別のリポジトリの手掛かりを見つけたら、候補として最後の報告に挙げる。別のサービスのホスト名やAPI client、deploy定義が参照する別のイメージ、クライアントの配布や更新の仕組みが手掛かりになる。候補に領域は作らない。
リポジトリの構成を調査して調査領域を検出する:
領域のグルーピング指針:
データモデルから、終了・縮小のイベントがある単位を列挙する。典型は、利用者アカウント、チーム・プロジェクト・組織といったテナント、契約・プラン、画像・ページ・ファイルといった主要なリソースである。単位ごとに1領域にし、名前は lifecycle- で始める。調査の担当は、この接頭辞で調査の手法を切り替える。
各領域の本文には次を書く:
lifecycle領域はファイルを他の領域と共有する。その事をtargets.mdの冒頭に書く。指揮役が並列に調査する組を決める材料になる。
検出した領域を .dev/codepatrol/targets.md に書き出す。領域名はファイル名やページタイトルの一部になるため、英数字・ハイフン・アンダースコアに収め、パス区切りや空白を含めない。フォーマット:
# Codepatrol Investigation Targets
Format: {現在の値}
Generated at: {YYYY-MM-DD HH:mm:ss}
Generated by: {Agent名 (model名)}, with {Codexの実行環境}
Source commit: {設定を置くリポジトリの、読んだcommitのshort hash}
Source commit ({関連リポジトリ名}): {そのリポジトリの、読んだcommitのshort hash}
各H2見出しが調査領域名。この名前がレポート名の一部になる。
領域を追加・分割・統合する場合はこのファイルを手動で編集する。
`lifecycle-` で始まる領域は利用終了イベントで切った領域で、ファイルは他の領域と重なる。
**関連リポジトリ**: 以下のリポジトリも調査の対象で、領域名の接頭辞で区別する。cloneの場所は開発者ごとに違うので、このファイルには書かない。
- {関連リポジトリ名}: {1行の役割}。領域名は `{接頭辞}-` で始まる。 {GitHub URL}
## {領域名}
{対象ディレクトリ/ファイルのパス}
{主なファイルの列挙}
## {接頭辞}-{領域名}
リポジトリ: {関連リポジトリ名}。{対になる別のリポジトリの領域と、役割の分かれ方}
{そのリポジトリのrootからの相対パス}
{主なファイルの列挙}
## lifecycle-{単位}
{単位と、終了・縮小のイベントの説明}
- 起点イベントの入口: {入口の列挙}
- 開始側: {資産・権限・連携が作られる場所}
- 期待値の出典: {表示箇所・言語・適用イベント}
- 関連する領域: {ファイルが重なる領域名}
関連リポジトリが無い時は、Source commit ({関連リポジトリ名}) の行と、関連リポジトリの段落を省く。
既存のtargets.mdを更新する時:
既存のtargets.mdを読み込み、新しい走査結果と比較する。
このSKILL.mdと同じディレクトリにある CHECKLIST.md は、特定のリポジトリに依存しない観点のマスターで、書き換えない。
.dev/codepatrol/checklist.md はリポジトリ固有の層で、調査の担当はマスターと一緒に読む。マスターの観点の文は写さない。写すと、skillの更新で観点が変わった時に古い文が残る。
lifecycle-* 領域の単位ごとに、その単位の識別子を持つデータと、そこから所有関係や生成経路で辿れる間接的な資産を列挙する。関連の宣言だけに頼らない。関連で結ばれていないモデル、ログ、外部サービスに作った物、子の先にある孫の資産は、識別子と生成経路から探さないと落ちる。原本・派生・退避・一時保存・検索indexやキャッシュやキュー・ログや解析の複製・外部サービス・利用者端末・バックアップを区別し、cascadeやdependentのようにコードに書かれた既定の扱いまでを事実として並べる。各イベントで実際にどうなるかは書かない。調査の担当が確かめる.dev/codepatrol/checklist.md に書き出す:
Format、Source commit、Generated by: {Agent名 (model名)}, with {Codexの実行環境} を記録する。Source commit はtargets.mdと同じく、リポジトリごとに行を分ける。構成把握がどの時点・どのmodelによるものかを診断可能にする{カテゴリ記号}+{番号} で足す。マスターの番号と混ざらないためである。レポートの見出しと、調査の担当がCodexに相談する時のグループ分けが、カテゴリの記号を参照するフォーマット:
# Codepatrol Checklist ({設定を置くリポジトリ名})
Format: {現在の値}
Source commit: {設定を置くリポジトリの、読んだcommitのshort hash}
Source commit ({関連リポジトリ名}): {そのリポジトリの、読んだcommitのshort hash}
Generated by: {Agent名 (model名)}, with {Codexの実行環境}
マスターのCHECKLIST.mdと一緒に読む。ここには、設定を置くリポジトリと関連リポジトリに固有の事だけを書く。
## このリポジトリのセキュリティ機構
### {機構の区分}
### 利用終了時に残りうる資産
### 関連リポジトリのセキュリティ機構
#### {関連リポジトリ名}
## 観点への補足と固有の観点
### {カテゴリ記号}. {カテゴリ名}
- {観点番号}: {具体名。関連リポジトリがあれば、どのリポジトリの物かを添える}
- {観点番号}: 非該当。{理由}
- {カテゴリ記号}+{番号}. **{固有の観点名}**: {観点}
既存のchecklist.mdを更新する時:
既存のchecklist.mdを読み込み、リポジトリの機構を再走査して、機構の事実・観点への補足・固有の観点の追加・更新を行う。
checklistの領分:
checklistに書くこと・書かないことは checklist-vs-report.md に従う。仕様・機構の説明と中立な観点だけを書く。特定の問題の断定・深刻度・悪用仮説・レポートの問題への言及は書かない。 既存のchecklist.mdに、この境界に合わない記述が入り込んでいれば、仕様事実または中立な観点に書き直すか、削除する。
targets.mdまたはchecklist.mdを生成・更新したら、2つまとめてcodex-consultationでレビューする。 一方だけを更新した場合も、両方を渡す。 このレビューは省略も代替もできない。
Skill toolで codex-consultation を呼び出す。codex exec の直接実行で済ませない。Argsには以下を含める:
Args: よく相談して。このリポジトリの開発チームが、自分たちのコードの問題を検出して修正するためにセキュリティ調査をしている。その調査に使う調査対象リストと観点リストを作成した。以下の2つのファイルをレビューしてほしい。
- 調査対象リスト: {.dev/codepatrol/ の絶対パス}/targets.md — 見落としているエントリポイント、領域の分け方と粒度。`lifecycle-*` の領域については、見落としている終了・縮小のイベントと入口、期待値の出典
- 観点リスト: マスター {CHECKLIST.mdの絶対パス} と、リポジトリ固有の層 {.dev/codepatrol/ の絶対パス}/checklist.md — 見落としている観点、非該当とした観点の妥当性、補った具体名の誤り。「利用終了時に残りうる資産」の節については、見落としている資産と、既定の扱いの誤り
コードの場所: {リポジトリごとの絶対パス}
指摘を受けたら自分でコードを読んで検証し、妥当な指摘をファイルに反映する。 checklist.mdへの反映は checklist-vs-report.md の境界に従い、問題寄りの指摘は取り込まない。
Generated by には自分のAgent名とmodel名を記入し、codex-consultationが取得したCodexの実行環境を併記する。レビューだけをやり直した時は、生成したAgentの記録を保ち、Codexの実行環境だけを更新する。
Codexが停止した場合:
usage limit・spend cap・認証エラー・通信障害等でCodexが最終回答を返さずに終了した場合は、他の手段で代替しない。通信障害のような一時的なエラーなら、数分待って1〜2回は再試行してよい。usage limitやspend capはすぐには解消しないので再試行しない。
生成したファイルはそのまま残し、Generated by に「Codexレビュー未実施」と記録して、何のエラーで止まったかを報告して終了する。
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Agent Skillを書く時の心得。SKILL.mdに何を書き、何を書かないかの判断基準を定める。AIが読んで従う文書に共通の心得は、kuden:common-rules-for-agent-instructionsにある。 Agent Skillを作成する時、編集する時、レビュー指摘の採否を決める時に読み込む。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
ソースコード中のコメントを書く時の心得。コメントに何を書き、何を書かないかの判断基準と、置く位置、日本語の文体を定める。 ソースコードのコメントを書く時、直す時、レビューする時に読み込む。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
リポジトリのセキュリティ調査を領域ごとに進める。同じサービスを構成する複数のリポジトリを束ねて調査できる。 このsessionは調査を指揮し、領域ごとに起動したsubagentが調査してレポートを出力する。 レポートの問題のトリアージと、問題の自動修正、問題を直すpull requestの状態の同期も指揮する。 複数sessionにまたがる長期作業を想定し、実行するたびに現状を確認して続きの作業を行う。 ユーザーが手動で起動する。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
セキュリティ調査で検出された問題を1つ修正し、pull requestをready for reviewまで仕上げる。 codepatrol skillが起動したsubagentが実行する。ユーザーが直接呼び出す事は想定していない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
本番に出る前の修正が積まれたrelease pull requestに、デプロイの前後に人間がやる事をまとめたコメントを投稿・更新する。 codepatrol skillが起動したsubagentが実行する。ユーザーが直接呼び出す事は想定していない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
リポジトリの1つの領域をセキュリティ観点で調査し、Codexの批判的レビューを経てレポートを出力する。 codepatrol skillが起動したsubagentが実行する。ユーザーが直接呼び出す事は想定していない。
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.