setup-benny について
pstack内の休止状態の自動化パックBennyを、Cursorでの issue トリアージと再現ワークフロー向けに導入・設定するスキルです。リポジトリ設定、外部設定、連携機能の確認と、2つの自動化の作成または見直しを案内します。
主な機能
- 01Bennyパックのコピーと検証
- 02プロジェクトスコープのpstackスキル有効化
- 03外部設定と機能マップの準備
- 04Slack、トラッカー、制御アダプターの機能確認
- 05トリアージと再現自動化の設定
活用シーン
- 01対象リポジトリへのBenny導入
- 02プロジェクト固有のルーティングと機能マップの準備
- 03自動化を有効にする前の連携機能の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cursor/ plugins --skill setup-bennyインストール後、Claude Code で/setup-bennyを入力して読み込まれたか確認します。
詳細
Benny を設定する
Benny は、pstack 内の休止状態の自動化パックとして提供されます。プラグインマニフェストが公開するのは、pstack の通常のスキルルートのみです。このファイルと 2 つの運用ファイルはスラッシュスキルではありません。
ユーザーは、Cursor でパック内の FOR_AGENTS.md を指定してセットアップを開始します。ブートストラップフローでは、パック全体を対象リポジトリにコピーし、このファイルを .cursor/automations/benny/skills/setup-benny/SKILL.md から直接読み込みます。
Benny には外部設定と、稼働中の Cursor オートメーションが 2 つ必要です。
ユーザーが明示的に依頼するまで、オートメーションを作成または更新してはいけません。シークレット値をプラグインファイル、プロンプト、またはコミット対象の設定に記載してはいけません。
1. パックをコピーし、共有 pstack スキルを有効にする
Benny の設定について尋ねる前、および組み込みの /automate スキルを呼び出す前に、これを行ってください。
オートメーションを実行するリポジトリを確認してください。ソースパックは FOR_AGENTS.md を含むディレクトリです。コピー先は <target-repository>/.cursor/automations/benny/ です。
ソースパック全体をコピー先にマージしてください。
- コピー先が存在しない場合は作成します。
- すべてのソースファイルを同じ相対パスにコピーします。
- コピー先にのみ存在するファイルは保持します。インストールまたは更新中に無関係なファイルを削除してはいけません。
- ユーザー所有の設定、機能マップ、ルーティングマップはコピー先の外に保持します。上書きしてはいけません。
- 既存のソース管理対象ファイルに差分がある場合は、差分を確認して、ローカルの編集内容を破棄せずにマージします。所有者が不明確な場合は、置き換える前に停止して確認してください。
- コピー先に
FOR_AGENTS.md、このセットアップファイル、両方の運用ファイル、それらが参照するファイル、およびテンプレートが含まれていることを確認します。
このファイルを対象コピー先からすでに読み込んでいる場合は、コピーが完了したものとして扱い、続行する前に同じ確認を行ってください。
対象リポジトリの .cursor/settings.json に pstack を追加してください。ファイルまたは .cursor ディレクトリが存在しない場合は作成します。
既存の JSON または JSONC に次の項目をマージします。
{
"plugins": {
"pstack": { "enabled": true }
}
}
無関係なトップレベル設定と、その他すべてのプラグイン項目を保持してください。plugins.pstack がすでに存在する場合は、enabled の値だけを変更してください。ファイルが JSONC の場合は、コメントと有効な JSONC 構文を保持します。編集後、ファイルを検証してください。
対象プロジェクトを再読み込みするか、対象リポジトリをルートとする新しいエージェントを起動してください。次の共有 pstack スキルがプロジェクトスコープから解決されることを確認します。
howwhytddunslopprinciple-separate-before-serializing-shared-stateprinciple-minimize-reader-loadprinciple-guard-the-context-windowprinciple-sequence-verifiable-unitsprinciple-fix-root-causesprinciple-prove-it-works
現在のセッションから読み込まれたスキルや、ユーザースコープのプラグインから読み込まれたスキルは、確認対象に含めないでください。この確認では、対象リポジトリの新しいエージェントが、プロジェクト設定を通じて pstack を利用できることを示す必要があります。
プロジェクトスコープのプラグインをインストールできない場合、または共有依存関係が 1 つでも解決されない場合は、停止して問題を説明してください。
Benny のファイルは .cursor/automations/benny/ から直接読み込みます。このディレクトリをプラグインマニフェストに追加したり、その SKILL.md ファイルがスラッシュスキル一覧に表示されることを期待したりしてはいけません。
いずれかのオートメーションを有効にする前に、.cursor/settings.json、.cursor/automations/benny/、および参照されるシークレットを含まない設定をコミットする必要があることをユーザーに伝えてください。ユーザーから依頼されない限り、コミットしてはいけません。
この確認が完了したら、稼働中のオートメーションプロンプトから、安定したリポジトリ相対パスを使ってコミット済みの運用ファイルを読み込めます。プラグインキャッシュのパスを埋め込んだり、ファイルの内容をコピーしたりしてはいけません。
2. 設定を調整する
次のコピー済みサンプルを開きます。
../../templates/configuration.example.yaml../reproduce-and-fix-issues/references/feature-map.example.md
.cursor/automations/benny/ の外に、ユーザーが管理するコピーを作成します。これらは設定ファイルであり、パックファイルではありません。配置場所の例:
- プロジェクト設定(例:
.cursor/benny/configuration.yaml) - プロジェクト機能マップ(例:
.cursor/benny/feature-map.md) - プロジェクトルーティングマップ(例:
.cursor/benny/routing.md) - ユーザー設定(例:
~/.config/benny/configuration.yaml) - ユーザー機能マップ(例:
~/.config/benny/feature-map.md)
自動化で再現する可能性のある、ユーザー向け機能ごとに機能マップのセクションを1つ記入します。ユーザーの視点を保ちます。実装の詳細や現在のコードパスをマップに固定しないでください。
コピーしたサンプルは編集しないでください。競合を確認した後、パックの更新でソース管理対象のファイルを更新することはできますが、ユーザー管理のコピーには決して手を加えてはいけません。
自動化のチェックアウトを新たに行った際に読み込む必要がある場合は、対象リポジトリ内にコミット済みで、シークレットを含まないファイルを優先します。それ以外の場合は、必要な値をライブプロンプトに言い換えて記載します。組み込みの /automate スキルで、自動化が実行されるリポジトリにそのファイルがコミット済みであることを確認した後に限り、リポジトリ内のファイルを参照してください。
コミット済みのパックファイルおよび設定ファイルには、安定したリポジトリ相対パスを使用します。実行中の自動化から、プラグインのソースディレクトリやプラグインキャッシュのパスを決して参照しないでください。
3. 必須項目を確定する
次の項目について、確認または情報の提供を求めます。
- 送信元 Slack チャンネル ID
- 任意の運用またはステータス用チャンネル ID
- リポジトリの URL とデフォルトブランチ
- トリアージ担当者の ID、または Slack ユーザー ID
- イシュートラッカーの種類、チーム、プロジェクト、ラベル、受付ステータス
- トラッカーアダプターのスキルまたは MCP アクション
- 任意のルーティングマップのパス
- 必須の制御スキル名
- 必須のユーザー向け機能マップのパス
- ステータス絵文字文字列
- プルリクエスト URL の形式
- ポーリングおよび作業量の予算
- トリアージ、再現、コード作業、メディアレビューに使用するモデルスラッグ
ユーザーの Cursor モデルピッカーまたはサポート対象モデル一覧に利用可能と表示されているモデルスラッグのみを使用します。スラッグを推測したり、非公開のデフォルト値を引き継いだりしないでください。
送信元チャンネル、トリアージ担当者、リポジトリ、トラッカーアダプター、制御スキル、機能マップは明示されている必要があります。必須項目に曖昧な点が残る場合は、セットアップを中止してください。
保存する前に、最終的な自動化名、説明、プロンプトシムに pstack の unslop スキルを使用します。
4. 連携機能を確認する
トリアージ自動化には、次の機能が必要です。
- 設定された送信元 Slack チャンネルおよびスレッドの読み取りアクセス
- そのチャンネルでのスレッド返信アクセス
- 報告にメディアが含まれる場合の、添付ファイルのメタデータおよびファイルのダウンロードアクセス
- 設定されたイシュートラッカーアダプターを介した検索、読み取り、作成、更新アクセス
再現自動化には、次の機能が必要です。
- 送信元スレッドの読み取りアクセス
- 送信元チャンネルでのスレッド返信アクセス
- 設定された運用チャンネルでの任意の投稿および編集アクセス
- リポジトリの読み取りおよび履歴へのアクセス
- ドラフトのプルリクエストを作成できるプルリクエストアクション
- 設定された制御アダプタースキル
読み取りおよび投稿には、設定済みの Cursor Slack アクションを優先して使用します。任意の BENNY_SLACK_BOT_TOKEN は、運用ステータスメッセージ1件の編集や添付ファイルのダウンロードなど、限定的な機能不足を補うために使用できます。この値は YAML ではなく、シークレットマネージャーまたは環境に保存してください。
ドキュメント化されていない連携エンドポイントは使用しないでください。
5. ルーティングマップを準備する
ユーザーが振り分け変更や担当者への通知を希望する場合は、次の手順を実行します。
../triage-issue-reports/references/routing.example.mdを.cursor/automations/benny/の外にコピーします。- すべてのプレースホルダーを、公開情報または組織内の値に置き換えます。
- 担当者への通知は、デフォルトで無効にします。
- 設定済みの機能担当者、または回帰を引き起こした可能性が高いと確認された開発者に限り、通知を許可します。
ルーティングマップが設定されていない場合、トリアージで報告を分類することはできますが、振り分け先や担当者を推測してはいけません。
6. 制御アダプターを検証する
../reproduce-and-fix-issues/references/control-adapter.md と、ユーザーが完成させた機能マップを読みます。
指定されたスキルで次の操作ができることを確認します。
- 対象アプリを起動する
- 実際の UI から、マップされたすべての機能に移動する
- 宣言されたアダプターアクションを通じて、マップされた状態を操作する
- 結果を強制せずに状態を調べる
- スクリーンショットを撮影する
- 録画を開始および停止する
- プロセスと一時データをクリーンアップする
機能が不足している場合は、再現の自動化を無効のままにします。実施していない再現を実施したと主張せず、必ず安全側に失敗させてください。
7. ライブ自動化を準備する
自動化を初めて作成するのか、既存の自動化を設定するのかを確認します。
どちらの手順でも、コピーしたパック内の ../../FOR_AGENTS.md を、ユーザーの意図を示す主要な情報源として読みます。2 つのトリガー、ツール、指示、成果、および共通ルールを把握してください。
初回作成
自動化は 1 つずつ作成します。
各自動化について、次の手順を行います。
- 該当するコピー済みプロンプトテンプレートを、副次的な内部資料として読みます。
FOR_AGENTS.md、完成した Benny 設定、テンプレートの意図を組み合わせ、自然言語による完全なリクエストを作成します。- ライブプロンプトに、
.cursor/automations/benny/内にコミット済みの正確な運用ファイルを読み、それに従うよう指示します。 - プラグインのソースパスやキャッシュパスではなく、リポジトリ相対の安定したパスを使用します。運用ファイルの内容をライブプロンプトにコピーしてはいけません。
- 組み込みの
automateスキルを読み、それに従います。 - Slack チャンネル、リポジトリ、接続済みのインテグレーションは、
automateに検出させます。 - コピー済みパックと、参照されている設定ファイルが、いずれも自動化の実行先と同じリポジトリにコミット済みであることを、
automateに確認させます。 automateに下書きの表を表示させ、承認を得て、準備状況を確認させてから、自動化エディターを開かせます。- 次の自動化を始める前に、この自動化についてエディターへの引き継ぎを完了します。
設定に基づいて内容を埋めた、次の完全なトリアージの意図を automate に伝えます。
- 名前は
benny-triage。 - 実行のたびに
.cursor/automations/benny/skills/triage-issue-reports/SKILL.mdを読み、それに従う。 - 設定されたソース Slack チャンネルで、新しいトップレベルのレポートが投稿されるたびにトリガーする。
- トリガーとなったスレッドを読み、返信はそのスレッド内だけに投稿する。
- 設定された課題トラッカーのインテグレーションを使用する。
- 分類、証拠の確認、原因の追跡、重複の確認を行い、新規のバグが明確な場合に限って作成する。
- 設定された
[benny:bug]、[benny:performance]、または[benny:other]マーカーと、任意のトラッカー URL を付けた判定を、1 つのスレッド内の返信で完結させる。 - ソースチャンネルにトップレベルのメッセージを投稿しない。
トリアージのエディターへの引き継ぎが完了した後に、次の完全な再現と修正の意図を automate に伝えます。
- 名前は
benny-reproduce。 - 実行のたびに
.cursor/automations/benny/skills/reproduce-and-fix-issues/SKILL.mdを読み、それに従う。 - 設定されたソース Slack チャンネルで、同じ新しいトップレベルのレポートが投稿されたときにトリガーする。
- 設定されたリポジトリとデフォルトブランチを使用する。
- ソーススレッドを読み、返信はそのスレッド内だけに投稿する。
- プルリクエストの作成に加え、設定されたトラッカー、制御アダプター、機能マップの要件も含める。
automateが同じリポジトリ内に条件を満たすコミット済みファイルがあると確認しない限り、マップされたユーザーパスと状態は言い換えて記述する。 - 信頼できるトリアージマーカーが付くまで対応しない。
- マップされた実際の UI から、正確な症状を 2 回再現し、証拠を取得する。
- 既存の修正を確認し、上書きする変更は作成しない。
- 再現が確認された場合に限り、任意の範囲を限定した修正を試み、証拠とチェックが通った後にドラフトのプルリクエストを作成する。
- ソースチャンネルにトップレベルのメッセージを投稿しない。
Slack、リポジトリ、インテグレーション、完全性、認証、下書きのレビュー、承認、準備状況の確認、エディターへの引き継ぎに関する automate の作業を重複して行わないでください。
既存の自動化
組み込みの automate スキルは作成専用です。既存の自動化の検索、確認、更新には使用しないでください。
設定、ルーティング、制御アダプター、機能マップの検証を完了します。その後、ユーザーに次の簡潔な編集チェックリストを提示してください。
既存のトリアージ自動化について、次の項目を更新します。
- 名前と説明
.cursor/automations/benny/skills/triage-issue-reports/SKILL.mdを読み込むよう直接指示- 新しいトップレベルの Slack レポートトリガーとソースチャンネル
- Slack スレッドの読み取りと返信機能
- 課題トラッカーとの連携
- 言い換えたトリアージ手順、スレッド内のみのルール、Benny の判定マーカー
既存の再現自動化について、次の項目を更新します。
- 名前と説明
.cursor/automations/benny/skills/reproduce-and-fix-issues/SKILL.mdを読み込むよう直接指示- 対応する Slack トリガーとソースチャンネル
- リポジトリとデフォルトブランチ
- Slack スレッドの読み取りと返信機能
- プルリクエストのアクション
- トラッカー、制御アダプター、機能マップの要件
- マーカーの待機、証拠、検証、範囲を限定した修正の指示を言い換えたもの
既存の各自動化を Automations エディターで直接更新するよう、ユーザーに依頼してください。置き換えや重複を作成しないでください。
作成の境界
自動化のバックエンドサービスやバックエンドツールを直接呼び出してはいけません。下書きフィールドを含むブラウザー URL を使用してはいけません。Cursor プロトコルのディープリンクを作成したり、開いたりしてはいけません。新しい自動化を作成する場合、完了できるのは、組み込みの automate スキルによるレビュー済みの Automations エディターへの引き渡しのみです。
エディターで保存した後、スレッド安全性テストに合格するまでは、どちらの自動化も有効にしないでください。
8. スレッド安全性をテストする
テストチャンネルまたは無害なテストレポートを使用します。
テストの前に、自動化のチェックアウトに使用するブランチで、対象リポジトリの .cursor/settings.json、.cursor/automations/benny/、および参照されている秘密情報を含まないすべての設定ファイルがコミット済みであることを確認します。また、両方の有効なプロンプトが、それぞれ正確なコミット済み運用ファイルを参照していることを確認します。いずれかの確認に失敗した場合は中止します。自動化をまだ有効にできないことをユーザーに伝えてください。
次の項目を検証します。
- トリアージがルートの
thread_tsを保存し、返信として判定を正確に1件投稿する。 - 判定に設定済みマーカーが1つ含まれている。
- 再現自動化が、設定済みのトリアージ ID からのマーカーのみ受け付ける。
- 再現自動化が、同一で変更不能なソース座標を維持する。
- ソースチャンネルにルートメッセージが投稿されない。
- 委任されたワーカーが Slack の書き込みアクションを一切使用できない。
- 座標の欠落、親メッセージの削除、または事前チェックの失敗時に、投稿も課題トラッカーへの課題作成も行われない。
7項目すべてに合格してから、通常のトラフィックを有効にしてください。