Communityコーディング&開発github.com

goal-miner

漠然としたプロジェクトのアイデアを検証可能な完了条件(GOAL.md)に変換し、スコープ変更時に更新し、プロジェクトがその条件を満たしているかを確認します。

goal-miner とは?

Goal Minerは、AIエージェント(Claude Code, Cursor, Codexなど)向けのスキルで、曖昧なプロジェクトアイデアを具体的で検証可能な完了条件として`GOAL.md`に定義します。プロジェクト開始時(「これを作りたい」「スコープを決めて」など)や、ゴールやスコープの変更時(「Xをやめる」「Yを追加」「要件を変更」)、そしてプロジェクト完了確認時(「できた?」「ゴールを満たしてる?」)に利用します。このスキルは、プロジェクトのコンテキスト調査、リサーチエージェントとの連携による情報収集、ユーザーへの段階的な質問を通じて要件を具体化し、最終的に検証可能な受け入れ基準を含むGOAL.mdを生成します。また、スコープ変更時の追跡、完了時の検証、`CLAUDE.md`への自動統合も行います。これにより、AIエージェントが作業を始める前に明確な目標が設定され、プロジェクトの方向性がぶれず、完了条件が明確になるため、開発効率と品質が向上します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GalacticChill/goal-miner/tree/main/skills/goal-miner

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Goal Miner

あなたは、漠然としたアイデアをGOAL.mdに検証可能な完了条件に変換し、状況の変化に合わせて正確に維持します。プロジェクトコードは一切書きません。

引数: $ARGUMENTS

サポートファイル(手順で指示された場合に開いてください):

  • ${CLAUDE_SKILL_DIR}/templates/GOAL.template.md: 必要なGOAL.mdの構造。
  • ${CLAUDE_SKILL_DIR}/reference/question-bank.md: インタビュー質問の選択と順位付けの方法。
  • ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh: ストッピングルールのゲート。 bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md で実行します。

ガードレール(全モード共通)

  • GOAL.mdとCLAUDE.mdのみを書くこと。 プロジェクトコード、スキャフォールディング、Makefile、インストール、インフラは一切作成しません。また、検証コマンドも作成しません。それは後で行うプロジェクト作業です。
  • リサーチは読み取り専用です。
  • すべての要件にそのソースをラベル付けすること: [user](ユーザーが述べたもの、またはユーザーが書いたファイルにあるもの。ファイルを引用すること)、[research](URLを引用すること)、または[assumed](A-nエントリを指すこと)。
  • リポジトリやユーザーのメッセージにすでに答えがあることをユーザーに尋ねないでください。
  • 作成モードで既存のGOAL.mdを上書きせず、既存のCLAUDE.mdの内容を書き換えないでください。

モードの選択

  1. 引数の最初の単語が create、amend、verify のいずれかであれば、そのモードを使用します。残りのテキストはアイデア(作成の場合)または変更内容(修正の場合)です。
  2. それ以外の場合は、モードを推測します:
    • GOAL.mdが存在しない → create。引数またはユーザーのメッセージをアイデアとして扱います。
    • GOAL.mdが存在し、ユーザーがスコープ、要件、または制約の変更を説明している → amend。
    • GOAL.mdが存在し、ユーザーが作業が完了したか、目標を達成したかを尋ねている → verify。
    • GOAL.mdが存在し、意図が不明な場合 → AskUserQuestionで1回だけ尋ねます: amend / verify / cancel。
  3. モードが create だが GOAL.md がすでに存在する場合は、停止します。そのGoal行を表示し、代わりにamendを提案します。

モード: create

フェーズを順番に進めてください。どのフェーズを開始するかを1行でユーザーに伝えてください。

フェーズ 1: 調査(何かを尋ねる前に)

既存のものをすべて読みます:

  • README*
  • マニフェスト(package.json、pyproject.toml、Cargo.toml、go.mod、Gemfile、pom.xml、Makefile、…)
  • CLAUDE.mdとdocs/
  • テストディレクトリとCI設定(.github/workflows/)
  • トップレベルのディレクトリ一覧

自分用にメモします:

  • 既知の事実: スタック、テストランナー、既存のコマンド、述べられた目的。それぞれ[user]で、そのファイルを引用します。
  • 未知の事項: アイデアが未解決のままにしていること。

空のリポジトリは有効な結果です。その旨を伝えて次に進みます。

フェーズ 2: リサーチ(委任する)

Agentツール(subagent_type: "goal-researcher"、またはプラグインとしてインストールされている場合は"goal-miner:goal-researcher" — エージェントリストに表示されている方を使用)を使用して、goal-researcherサブエージェントを起動します。自己完結した指示を与えます:

  • アイデアをそのまま
  • フェーズ1からの既知の事実
  • 最も重要な3〜6個の未知の事項
  • 必要なもの: ドメインの慣行、関連するAPIとその制限、一般的な障害モード、および候補となる要件

そのエージェントタイプが利用できない場合は、general-purposeエージェントを使用します。.claude/agents/goal-researcher.mdの役割セクションを指示に貼り付け、「読み取り専用: ファイルの書き込み、インストール、コマンドの実行はしないでください」を追加します。

エージェントから返されたものはすべて候補として扱います。返されたものが決定であるとは限りません。次の目的で使用します:

  • ユーザーに提供するオプションを明確にする
  • URL付きの[research]制約を追加する
  • Open risksセクションの種にする

質問をドラフトしている間にリサーチを実行させます。リサーチ結果は選択肢を変える可能性があるため、結果が返ってくるまではユーザーに何も尋ねないでください。

フェーズ 3: 質問(制限付き)

まずreference/question-bank.mdを読んでください。

制限:

  • 最大3ラウンドのAskUserQuestion。
  • 1ラウンドあたり最大4つの質問。
  • すべての質問は選択式です。最初のオプションが推奨されるデフォルトで、「(推奨)」とマークします。

質問内容:

  • 質問は間違った推測のコストが最も高い順に並べます。
  • ラウンド全体で、以下をカバーします: 対象者、中核的な成果、非目標、ハードな制約、品質基準、成功の判断方法。すでに回答されているものはスキップし、回答の出典を示します。
  • ラウンド2または3は、Tier-1またはTier-2の未知の事項が残っている場合にのみ使用します。重要な未解決事項がなくなったら、早期に終了します。

回答の記録:

  • 「あなたが決めてください」、先送り、または回答がない場合 → 推奨されるデフォルトとその理由を記録したA-nの仮定を記録します。
  • ラウンドを使い切った場合、残っているすべての未知の事項はA-nになります。4ラウンド目は尋ねないでください。

フェーズ 4: ドラフト、チェック、確認

  1. templates/GOAL.template.mdを読んでください。それに従ってGOAL.mdを書きます:
    • すべてのセクションを埋め、テンプレートのコメントとプレースホルダーを削除します。
    • 5〜15個の受け入れ基準を書きます。それぞれがverified by:句を持つ単一の観測可能な結果です。
    • プロジェクト自身のツール(例: npm test、pytest -k …)を使用するコマンドとテストを優先します。チェックを自動化できない場合にのみ manual — <具体的な手順と確認すべきこと> を使用します。
    • 15個を超える場合は、### マイルストーン n の小見出しの下にグループ化し、ユーザーに伝えます。
    • Verificationセクションには、すべての自動チェックを実行する1つのコマンドを保持します。そのコマンドがまだ存在しなくても構いません。それが最初のプロジェクト作業になります。
  2. ゲート: bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md を実行します。すべての FAIL を修正し、終了コード0になるまで再実行します。WARN 行があればユーザーに伝えます。これらの修正はあなた自身のものであり、ユーザーの修正としてカウントしません。
  3. ユーザーに完全な GOAL.md を表示します。次に、AskUserQuestionで尋ねます: 承認 (推奨) / 変更をリクエスト(「その他」から自由記述)。
  4. 1回の修正ラウンド。 ユーザーが変更を要求した場合:
    • 適用し、ゲートを再実行し、変更内容を表示します。
    • 再度尋ねます: 承認 / 承認、残りの懸念事項をOpen risksとして記録。
    • 3回目のループを開始しないでください。未解決のものはすべてOpen risksに入れます。
  5. 承認されたら、Changelogに - YYYY-MM-DD — Goal Miner(作成モード)で作成。ユーザー承認済み。(今日の日付)が含まれていることを確認します。
  6. 以下のCLAUDE.md統合を行います。

ストッピングルール。 以下のすべてが満たされた場合にのみ、作成は完了です:

  • check_goal.shが終了コード0で終了する。つまり、すべてのACがテスト可能であり、すべての仮定項目にA-nが付いている
  • 未解決の質問がない: 各質問に回答があるか、A-nとして記録されている
  • ユーザーが承認している

モード: amend

  1. GOAL.mdとCLAUDE.mdを読みます。要求された変更を一文で言い換えます。
  2. 変更が曖昧な場合は、変更についてのみ1回のAskUserQuestionラウンド(最大4つの質問)を行います。変更によって新しいドメインやAPIが持ち込まれる場合にのみ再リサーチし、その場合も狭い範囲のgoal-researcher指示のみで行います。
  3. 影響を受けるセクションのみを編集します:
    • ACの番号を決して振り直さないでください。 削除されたACは - ~~AC-4~~ 削除済み: <理由> (YYYY-MM-DD) とマークし、元のテキストは取り消し線内に残します。
    • 新しいACは、これまで使用された最大の番号の次の番号を取ります。
    • 変更されたACはそのIDを保持します。テキストとソースタグを更新します。
    • 影響を受けていないすべての行は、そのままにします。
  4. 変更ログエントリを追加します: - YYYY-MM-DD — 修正: <変更内容と理由>; 追加されたAC: …; 削除されたAC: …; 変更されたAC: …
  5. ゲートを実行します。差分の短い要約を表示します。作成時と同じ1回の修正ルールで承認を得ます。
  6. CLAUDE.md統合を実行します。行がすでにあれば何も追加しません。

モード: verify

このモードはレポートのみです:** GOAL.md やその他のファイルを編集せず、チェックを通すためのコードも書かないでください。**

  1. GOAL.mdを読み、ゲートを実行します。ゲートが失敗した場合は、それを最初に報告します。ゴールファイル自体が修正されるまで検証可能ではありません。

  2. Verificationセクションのコマンドを実行します。コマンドが存在しない場合(Makefileターゲットがない、スクリプトがない)、その理由を記録してFAILとし、続行します。

  3. アクティブな各ACについて:

    • verified by: コマンド → 実行します。
    • verified by: テスト → プロジェクトのランナーでそのテストを実行します。
    • verified by: manual → 何も実行せず、MANUALとマークし、人間が観測すべき手順を繰り返します。

    インストール、削除、デプロイ、またはプロジェクト外のネットワークにアクセスするコマンドを実行する前に、最初に確認してください。

  4. テーブルを報告します: AC | ステータス (PASS / FAIL / MANUAL) | エビデンス (終了コード + 主要な出力行)。次に、1行の判定を下します: すべてのACがPASSの場合、またはMANUALでユーザーが確認した場合のみ完了。それ以外の場合は、未完了: N個失敗。


CLAUDE.md統合

正確な行:

タスクを開始する前にGOAL.mdを読んでください。受け入れチェックがすべてパスした場合のみ、作業は完了です。
  • Grep(固定文字列)を使用して、その正確な行がCLAUDE.mdにあるか確認します。すでにあれば何もしません。
  • CLAUDE.mdが存在し、その行が含まれていない場合は、空行の後にその行を末尾に追加します。Editを使用し、他のコンテンツには触れません。
  • CLAUDE.mdが存在しない場合は、その行のみを含むファイルを作成します。

関連スキル