long-term-campaigns について
long-term-campaignsは、エージェントのセッションをまたいで状態と証拠を保持しながら、継続的な観察タスクを実行するスキルです。目的ごとのフォルダー、依存関係の事前確認、不変スナップショット、停止・完了条件を定めます。
主な機能
- 01目的ごとのフォルダー分離
- 02キャンペーン文書と状態ファイルの定義
- 03ツールと認証情報の事前確認
- 04スナップショット保存と基準比較
- 05エスカレーション・停止・完了条件の設定
活用シーン
- 01エージェントの複数セッションにわたるリリース監視
- 02定型手順による証拠の収集と比較
- 03認証情報の失敗時に実行を停止
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ikatkov/ agent-skills --skill long-term-campaignsインストール後、Claude Code で/long-term-campaignsを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
長期キャンペーン
/Users/igor/work/long-term-campaigns を、永続的な信頼できる情報源として扱います。エージェントのセッション、ワークスペース、VM は、その周囲で作業する使い捨てのワーカーです。
キャンペーンの分離
- 新しい目的ごとに、新しいサブフォルダーを1つ作成します:
<ticket-or-system>-<short-slug>。 - 新しい依頼が同じ目的と完了基準を引き継ぐ場合に限り、既存のフォルダーを再利用します。
- キャンペーンの状態をルートに直接置いたり、無関係なキャンペーンを混在させたりしてはいけません。
- フォルダーを作成する前に、既存のサブフォルダーを確認します。兄弟キャンペーンを変更してはいけません。
エージェントセッションからのアクセス
- ローカルの Conductor ワークスペースでは、フォルダーを直接読み取り、更新します。
- クラウドワークスペースでは、Conductor の Mac コマンドブリッジを使用します。永続ファイルはユーザーの Mac にのみ存在することを説明します。
- 認証情報、トークン、Cookie、生のシークレットをキャンペーンフォルダー、プロンプト、スナップショット、ログ、レポートにコピーしてはいけません。
必須ツールと認証情報のポリシー
- キャンペーンのランブックで必要と宣言されているすべてのツール、コネクター、CLI セッション、認証情報、権限は、予定されているすべての実行で機能することを前提とします。
- 証拠の収集やキャンペーンの操作を行う前に、必須の依存関係をすべて事前確認します。名目上のログイン状態が古くなっている可能性がある場合は、実際のアクセス経路を試します。たとえば、
gcloud auth listにアカウントが表示されることを信頼せず、無害な認証済み GCP リクエストを実行します。 - 必須の事前確認が1つでも失敗、期限切れ、または非対話での更新が不可能な場合、そのキャンペーンの実行をただちに停止します。部分的なデータ収集を続行したり、情報源を減らして黙って処理を続けたり、証拠の欠落を正常と解釈したりしてはいけません。
- 失敗した事前確認を生の証拠として保存し、キャンペーンを
blockedに設定し、次回確認を更新してロックを解除し、復旧が必要なアクセスの種類を正確に示して明確に失敗を報告します。シークレットの値は記録してはいけません。 - GCP 認証を含め、定期的に期限切れになる CLI セッションは、回避すべき想定内の状態ではなく、更新が必要なブロッカーです。
必須のキャンペーン構成
少なくとも次を作成します:
<campaign>/
├── CAMPAIGN.md
├── RUNBOOK.md
├── state.json
├── logs/
├── prompts/
│ └── DAILY.md
├── reports/
└── snapshots/
CAMPAIGN.md には、安定した契約を記録します:
- 目的と、その重要性;
- 対象範囲と明示的な除外事項;
- 信頼できるリンクと識別子;
- 期待される結果と、起こり得るリグレッション;
- 観測可能な完了基準;
- 観測期間、必要最低限の証拠、期限切れのポリシー;
- 無人のエージェントが実行できる操作。デフォルトは読み取り専用です。
RUNBOOK.md には、再現可能な手順を記録します:
- 認証情報とツールの事前確認;
- 正確な収集コマンドまたはスクリプト;
- 解釈ルール、しきい値、比較期間;
- 不明/データなしの状態と正常な状態の見分け方;
- エスカレーション条件と復旧手順;
- 最終レポートの保存先。
state.json には、現在の機械可読な状態のみを記録します。キャンペーンのフェーズ、最終成功実行、次回確認、最新の不変スナップショット、連続失敗回数、現在のブロッカー、最終レポートの状態を含めます。このファイルを延々と肥大化させるのではなく、履歴はスナップショットとレポートに保存します。
prompts/DAILY.md には、新しいエージェントが1回分の範囲を限定した観測を実施する方法を記載します。特定のモデルやコーディングクライアントを指定するのではなく、能力と結果を説明します。
キャンペーンの引き継ぎ
- このスキルを読み、同じ目的の既存キャンペーンがないかルートを確認します。
- 目的が新しい場合は、新しいサブフォルダーを作成します。
- 決定事項と検証済みの事実を要約します。チャットの全文を主要な引き継ぎ資料として貼り付けてはいけません。
- 各主張を再現するために必要なタイムスタンプ、環境、コミット SHA、ロールアウトの境界、クエリ、情報源へのリンクを記録します。
- 現在のフェーズと次のアクションを
state.jsonに正確に記載します。 - 再利用可能な決定的なデータ収集はスクリプトに記述します。エージェントの判断は日次プロンプトとレポートに記載します。
- スケジューラーが停止すべき条件を定義します。終了条件のない定期キャンペーンは未完成です。
- キャンペーンフォルダーだけを持つ新しいエージェントが、以前の経緯を尋ねずに継続できることを検証します。
日次観測を実行する
- 2つの実行が同時に状態を更新できないよう、キャンペーンごとのロックを取得します。
- 収集を開始する前に、必要なすべてのツール、認証情報、コネクター、権限を事前確認します。更新可能な CLI セッションについては、無害な認証済みリクエストも含めます。
- 事前確認で失敗があった場合は、必要なツールおよび認証情報のポリシーに従います。ブロッカーを永続化し、実行を停止して、明確に失敗を報告します。
- 証拠を決定論的に収集し、日付入りの新しい不変スナップショットを書き込みます。
- 宣言されたベースライン、ロールアウト境界、期待値、前回のスナップショットと比較します。
state.jsonをアトミックに更新し、証拠またはフェーズに重大な変化があった場合にのみ、簡潔な日次レポートを書き込みます。- ガードレール違反が発生した場合は、証拠と最初に失敗した境界を添えてエスカレーションします。
CAMPAIGN.mdで明示的に許可されていない限り、本番環境や外部システムを変更しないでください。
実行ごとに新しいエージェントを起動することを推奨します。継続性を保つのは永続ファイルであり、チャットの記憶ではありません。
キャンペーンを完了する
- 観測可能な完了基準と最小証拠期間を満たした場合にのみ、完了とします。
- 何が変わったか、証拠が何を証明するか、何を証明できないか、サンプル数、確認したリグレッション、残っている担当者や対応事項を記載した最終レポートを作成します。
- スケジュールを無効にしつつ、フォルダーと不変の証拠は保持します。
- 証拠が不十分な場合は、データがない状態から成功または失敗を報告せず、キャンペーンを明示的に延長します。
コメント
Markdown 対応