gathering-security について
gathering-securityは、認証、コード監査、堅牢化を分離されたサブエージェントに割り当てるセキュリティワークフローのスキルです。指揮役は引き継ぎとCIゲートを管理し、直接コードを変更しません。
主な機能
- 01認証、監査、堅牢化のエージェントを割り当て
- 02分離したコンテキストと構造化された引き継ぎ
- 03各段階の間にCIチェックを実行
- 04セキュリティ作業に応じてエージェントを選択
- 05指摘への反復対応と修正の検証
活用シーン
- 01認証を実装し、セキュリティレビューを行う
- 02本番デプロイ前にコードを監査
- 03機密データを扱う機能を堅牢化
- 04シークレット漏えいやセキュリティインシデントに対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ autumnsgrove/ lattice --skill gathering-securityインストール後、Claude Code で/gathering-securityを入力して読み込まれたか確認します。
同梱ファイルreferences/conductor-dispatch.md
詳細
セキュリティの招集 🌲🕷️🦝🐢
太鼓の音が影に響きます。しかし今回は、指揮者は作業をするのではなく、空き地の端に立って全体を取りまとめます。それぞれの動物は新たな視点で到着し、自分への指示を読み、敵対的な視点を十分に保って作業します。クモは正確に認証を編み上げます。アライグマは疑い深く探り回ります。カメは粘り強く強化します。隔絶された3つの知性、共有する共感はゼロ、そして正しく築かれた1つの要塞。
招集するとき
- 認証システムを実装するとき
- OAuth またはセッション管理を追加するとき
- リリース前にセキュリティ監査を行うとき
- セキュリティインシデントの後
- 本番環境へのデプロイに備えるとき
- 認証、セキュリティ監査、徹底的な強化を連携して行う必要があるとき
- 機密データを扱う新機能を構築するとき
- 多層防御のために既存のコードを強化するとき
重要: この招集は指揮者です。コードの作成や脆弱性の修正を直接行うことはありません。動物ごとに1つずつサブエージェントを割り当て、それぞれ隔離されたコンテキストと意図的に選ばれたモデルを使います。指揮者は引き継ぎとゲートチェックのみを管理します。
招集
SUMMON → DISPATCH → GATE → DISPATCH → GATE → DISPATCH → GATE → FORTIFY
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
Spec Spider Check Raccoon Check Turtle Check Final
(self) (opus) ✓ (sonnet) ✓ (opus) ✓ Verify
割り当てる動物
| 順序 | 動物 | モデル | 役割 | 新鮮な視点? |
|---|---|---|---|---|
| 1 | 🕷️ クモ | opus | 認証を編み上げる | はい — セキュリティ仕様のみを見る |
| 2 | 🦝 アライグマ | sonnet | シークレット、脆弱性、不要なコードを監査する | はい — クモから受け取ったファイル一覧のみを見る |
| 3 | 🐢 カメ | opus | 敵対的な視点で強化する | はい — ファイル一覧のみを見て、クモの推論は見ない |
参照: サブエージェントへの正確なプロンプトと引き継ぎ形式については、references/conductor-dispatch.md を読み込んでください
フェーズ 1:招集
太鼓が鳴り、影が動きます……
指揮者はセキュリティに関する依頼を受け取り、割り当て計画を準備します。
セキュリティ作業を明確にする:
- 新しい認証プロバイダーを追加しますか?(OAuth、SSO)
- ルートと API を保護しますか?
- 一般的なセキュリティ監査ですか?
- 徹底的なセキュリティ強化ですか?
- インシデント後のクリーンアップですか?
- 本番環境への移行前の強化ですか?
選択的な動員:
招集のたびに3匹すべてが必要とは限りません。
| 状況 | 必要な動物 |
|---|---|
| 新しい認証システム+包括的なセキュリティ | 3匹すべて:クモ → アライグマ → カメ |
| 認証はすでにあり、強化が必要 | アライグマ → カメ |
| 新機能を設計段階から安全にする | カメのみ(またはカメ → アライグマ) |
| シークレットの漏えい/インシデント対応 | アライグマ → クモ(認証情報をローテーション)→ カメ(検証) |
| 本番環境へのデプロイ前 | アライグマ → カメ |
セキュリティ対策としてのエラーコード:
すべてのエラーで必ず Signpost コードを使ってください。これは単なる慣例ではなく、セキュリティ要件です。
- すべてのサーバーエラーでは、適切なカタログ(
API_ERRORS、AUTH_ERRORSなど)のコードを使用する userMessageは常に一般的で親しみやすい内容にし、技術的な詳細をクライアントに漏らさないadminMessageは詳細にし、サーバーログのみに残す- 認証エラーでユーザーの存在を決して明かさない(「ユーザーが見つかりません」ではなく「認証情報が無効です」)
- すべてのサーバーエラーには
logGroveError()を使い、console.errorだけで済ませない
人間に確認してから、先に進んでください。
出力: セキュリティ仕様、動物の編成、割り当て計画を確認します。
フェーズ 2:WEAVE(Spider)
指揮者が合図します。Spider が樹冠から降りてきます……
Agent(spider, model: opus)
Input: security specification only
Reads: spider-weave/SKILL.md + references (MANDATORY)
Output: auth implementation + file list
認証を実装するため、opus サブエージェントをディスパッチします。Spider が受け取るのはセキュリティ仕様のみです。事前分析や意見は受け取りません。自身のスキルファイルを読み、ワークフロー全体を実行します。
Spider が構築するもの:
- OAuth/PKCE フローの実装
- セッション管理
- ルート保護ミドルウェア
- CSRF 保護
- トークン処理
指揮者への引き継ぎ: 認証関連ファイルの一覧(作成・変更したすべてのファイル)、認証の概要(実装内容と主な判断)、統合ポイント。
ゲートチェック: gw dev ci --affected --fail-fast を実行します。コンパイルが成功する必要があります。ビルドに失敗した場合は、エラー出力を添えて Spider エージェントを再開します。
フェーズ 3:AUDIT(Raccoon)
Raccoon が茂みの中から現れ、鼻をひくつかせます……
Agent(raccoon, model: sonnet)
Input: file list from Spider + security scope summary
Reads: raccoon-audit/SKILL.md (MANDATORY)
Output: audit report + applied fixes
コードベースを監査するため、sonnet サブエージェントをディスパッチします。Raccoon が受け取るのは、ファイル一覧と簡潔なスコープ概要のみです。Spider の推論や実装の詳細は受け取りません。監査には新鮮な視点が必要です。
Raccoon が監査するもの:
- コード内のシークレット(ハードコードされたキー、トークン)
- 依存関係の脆弱性
- デッドコードと未使用のインポート
- 安全でないパターン(eval、innerHTML、文字列 SQL)
- ログ内の機密データ
指揮者への引き継ぎ: 監査レポート(検出事項、適用した修正、残る懸念事項)、更新済みファイル一覧。
ゲートチェック: gw dev ci --affected --fail-fast を実行します。監査修正後もコンパイルが成功する必要があります。問題が発生した場合は、Raccoon エージェントを再開します。
フェーズ 4:HARDEN(Turtle)
Turtle が近づきます。構築されたものだけを見て、その理由は見ません……
Agent(turtle, model: opus)
Input: combined file list ONLY (not Spider's or Raccoon's reasoning)
Reads: turtle-harden/SKILL.md + references (MANDATORY)
Output: hardening report + applied fixes
敵対的なセキュリティ強化のため、opus サブエージェントをディスパッチします。Turtle が受け取るのはファイル一覧のみです。Spider の認証に関する判断や、Raccoon の監査時の推論は受け取りません。これは意図的なものです。Turtle は先行する動物たちの推論に共感するのではなく、敵対的な新鮮な視点でコードを調べる必要があります。
Turtle が強化するもの:
- 入力検証(すべてのエントリーポイントに Zod スキーマを適用)
- 出力エンコーディング(コンテキストに応じた処理、リッチテキストには DOMPurify)
- パラメーター化クエリ(SQL で文字列連結を使用しない)
- セキュリティヘッダー(ノンス付き CSP、HSTS、X-Frame)
- Signpost エラーコード(Spider が正しく使用しているか検証)
- Rootwork 境界の安全性(信頼境界で
asキャストが使われていないことを検証) - 機密性の高いエンドポイントのレート制限
- CSRF、CORS、セッションセキュリティ
- 特殊な攻撃ベクトル(プロトタイプ汚染、タイミング攻撃、SSRF、競合状態)
指揮者への引き継ぎ: 強化レポート(発見した脆弱性、適用した修正、防御レイヤー、残るリスク)、更新済みファイル一覧。
ゲートチェック: gw dev ci --affected --fail-fast を実行します。強化後もコンパイルが成功する必要があります。
フェーズ 5:ITERATION(Turtle が深刻な問題を見つけた場合)
サイクルは続きます。脆弱性によっては、一匹だけでは修正しきれないほど根深いものがあります……
┌──────────────────────────────────────────────────┐
│ SECURITY ITERATION │
├──────────────────────────────────────────────────┤
│ │
│ Turtle hardening report │
│ │ │
│ ▼ │
│ Auth vulnerability found? │
│ / \ │
│ Yes No │
│ │ │ │
│ ▼ ▼ │
│ RESUME Spider Raccoon/Turtle │
│ (same agent) fixes directly │
│ │ │
│ ▼ │
│ Gate check │
│ │ │
│ ▼ │
│ RESUME Turtle │
│ (re-verify only changed files) │
│ │ │
│ ▼ │
│ Clean? ──→ ✅ Proceed to FORTIFY │
│ │ │
│ No ──→ Max 3 iterations, then escalate │
└──────────────────────────────────────────────────┘
反復ルール:
- Turtle が認証の脆弱性を見つけた場合 → 具体的な指摘を添えて Spider エージェントを再開 → Spider が修正 → 再検証のため Turtle を再開
- Turtle が認証以外の脆弱性を見つけた場合 → Turtle が直接修正するか、指揮者が修正を適用
- Raccoon がシークレットを見つけた場合 → Raccoon が削除 → 残存する露出がないことを確認するため Turtle を再開
- 問題ごとの反復は最大 3 回(それ以上必要な場合は人間にエスカレーション)
- 各反復では、新たに見つかった項目または修正された項目のみを対象とする
- エージェントは新規起動せず、必ず再開する(コンテキストを保持するため)
フェーズ 6:FORTIFY
Web が持ちこたえます。監査で確認します。殻は耐え抜きます……
指揮者が最終検証を実行します。
pnpm install
gw dev ci --affected --fail-fast --diagnose
検証チェックリスト:
Authentication:
[ ] Login redirects to provider
[ ] Callback exchanges code for tokens
[ ] Sessions created correctly
[ ] Logout clears sessions server-side
[ ] Expired tokens rejected
Authorization:
[ ] Protected routes require auth
[ ] API endpoints verify tokens
[ ] Users can't access others' data (IDOR)
Hardening:
[ ] SQL injection prevented (parameterized queries)
[ ] XSS prevented (output encoding + CSP)
[ ] CSRF prevented (tokens + SameSite cookies)
[ ] Rate limiting active on sensitive endpoints
[ ] Signpost error codes on every error path
[ ] Rootwork boundary safety at all trust boundaries
完了レポート:
🌲 GATHERING SECURITY COMPLETE
Security Work: [Description]
DISPATCH LOG
🕷️ Spider (opus) — [auth implemented, X files created/modified]
🦝 Raccoon (sonnet) — [audit complete, Y findings fixed]
🐢 Turtle (opus) — [Z hardening fixes, N defense layers applied]
GATE LOG
After Spider: ✅ compiles clean, auth functional
After Raccoon: ✅ compiles clean, audit findings resolved
After Turtle: ✅ compiles clean, hardening applied
Iterations: [N iterations, all resolved / none needed]
Final CI: ✅ gw dev ci --affected passes
HARDENING SUMMARY
| Defense Layer | Status | Details |
| Input Validation | ✅ | Zod schemas on all entry |
| Output Encoding | ✅ | Context-aware + DOMPurify |
| SQL Injection | ✅ | All queries parameterized |
| Security Headers | ✅ | CSP, HSTS, X-Frame |
| CORS | ✅ | Exact origin allowlist |
| Session Security | ✅ | HttpOnly, Secure, SameSite |
| Rate Limiting | ✅ | Per-endpoint limits |
Woven tight, audited clean, hardened deep — the forest endures.
指揮者のルール
動物の作業は決して行わない
指揮者の役割はディスパッチです。認証の実装、シークレットの監査、コードの強化は行いません。セキュリティコードを書き始めていることに気づいたら、そこで止めてサブエージェントをディスパッチしてください。
新鮮な視点は強み
Turtle が受け取るコンテキストを、意図的に完全な履歴よりも少なくしています。Spider の推論も、Raccoon の監査ロジックも参照しません。敵対的な新鮮な視点によって、より優れたセキュリティレビューが実現します。
遷移ごとにゲートを設ける
動物を切り替えるたびに CI を実行します。不良な状態を連鎖させないでください。
再起動せずに再開する
ゲートチェックに失敗した場合や、反復が必要な場合は、エラーのコンテキストを添えて失敗したエージェントを再開します。新しいエージェントを起動しないでください。再開したエージェントは、以前の作業をコンテキストとして保持しています。
必要に応じた招集
セキュリティ関連の作業に、必ずしも 3 匹すべての動物が必要なわけではありません。認証のみの作業では Turtle を省略します。強化のみの作業では Spider を省略します。依頼内容に基づいて、指揮役が判断します。
アンチパターン
指揮役は次のことを行いません。
- セキュリティコードを自ら書く(サブエージェントに作業を割り当てます)
- すべてのエージェントに会話履歴全体を渡す(構造化された引き継ぎのみを使用します)
- 動物を切り替える際のゲートチェックを省略する
- エージェントにスキルファイルを読まずに作業させる(すべてのプロンプトで必須です)
- Turtle に Spider の推論を見せる(敵対的な隔離が目的です)
- ゲートの失敗を修正せずに作業を続ける
- 人間へのエスカレーションなしに 3 回を超えて反復する
すばやく判断するためのガイド
| 状況 | 招集する動物 | モデル |
|---|---|---|
| 新規の認証と包括的なセキュリティ | Spider → Raccoon → Turtle | opus, sonnet, opus |
| 認証は実装済みで、徹底的な強化が必要 | Raccoon → Turtle | sonnet, opus |
| 新機能をセキュア・バイ・デザインで実装 | Turtle(必要に応じて Raccoon も) | opus(+ sonnet) |
| インシデント対応 | Raccoon → Spider → Turtle | sonnet, opus, opus |
| 本番環境へのデプロイ前 | Raccoon → Turtle | sonnet, opus |
| 認証のみの作業 | Spider → Raccoon | opus, sonnet |
緊密に織り上げ、厳密に監査し、深く強化する。森は守られます。 🌲