Community程式設計與開發github.com

goal-miner

將模糊的專案想法轉化為可驗證的「完成定義」(GOAL.md),在撰寫任何程式碼之前完成,並在範圍變更時進行修訂,以及檢查專案是否符合目標。

goal-miner 是什麼?

Goal Miner 是一個專為 AI 代理設計的技能,旨在將模糊的專案構想轉化為結構化、可驗證的完成文件(GOAL.md),確保在開始編寫任何程式碼之前先明確定義成功標準。它透過詳細的訪談流程,引導使用者釐清受眾、核心成果、非目標、硬性限制和品質標準,並將每個需求標註來源(使用者陳述、研究或假設)。此技能支援三種模式:建立(建立新 GOAL.md)、修訂(根據範圍變更更新現有文件)和驗證(針對已定義的驗收標準檢查專案進度)。Goal Miner 會強制執行防護措施,例如僅寫入 GOAL.md 和 CLAUDE.md,在開始提問前從現有專案檔案中收集已知事實,並利用閘門腳本(check_goal.sh)確保文件完整性。它還能與 CLAUDE.md 整合,自動添加一行指示,在開始任何任務前先讀取 GOAL.md。透過將模糊的想法轉化為可測試、可追蹤的標準,Goal Miner 有助於防止專案蔓延,並確保開發工作與既定目標保持一致。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 → 建立。將引數或使用者的訊息視為想法。
    • 存在 GOAL.md 且使用者描述了範圍、需求或限制的變更 → 修訂。
    • 存在 GOAL.md 且使用者詢問工作是否完成或是否符合目標 → 驗證。
    • 存在 GOAL.md 但意圖不明確 → 使用 AskUserQuestion 詢問一次:修訂 / 驗證 / 取消。
  3. 如果模式是 create 但 GOAL.md 已經存在,則停止。顯示其 Goal 行並提供修訂作為替代。

模式:建立

按順序完成各個階段。用一句話告訴使用者你正在開始哪個階段。

第一階段:檢查(在詢問任何問題之前)

讀取所有存在的檔案:

  • README*
  • 清單檔案(package.json、pyproject.toml、Cargo.toml、go.mod、Gemfile、pom.xml、Makefile,…)
  • CLAUDE.md 和 docs/
  • 測試目錄和 CI 配置(.github/workflows/)
  • 頂層目錄列表

為自己記錄:

  • 已知事實:技術棧、測試執行器、現有命令、陳述的目的。每個都標記為 [user] 並引用其檔案。
  • 未知項:想法中未明確的部分。

一個空的倉庫是有效的結果。直接說明並繼續。

第二階段:研究(委派)

使用 Agent 工具(subagent_type: "goal-researcher",或當安裝為外掛時使用 "goal-miner:goal-researcher" — 使用你的代理列表中出現的任何一個)生成 goal-researcher 子代理。給它一個自包含的簡報:

  • 想法,逐字
  • 來自第一階段的已知事實
  • 3–6 個最重要的未知項
  • 你需要回傳的內容:領域規範、相關 API 及其限制、常見故障模式、以及候選需求

如果該代理類型不可用,請使用 general-purpose 代理。將 .claude/agents/goal-researcher.md 的角色部分貼到其簡報中,並添加「唯讀:不要寫入檔案、安裝任何東西或執行命令」。

將它回傳的所有內容視為候選項。它回傳的任何內容都不是最終決定。用它來:

  • 銳化你提供給使用者的選項
  • 添加帶有 URL 的 [research] 限制
  • 為「開放風險」部分提供素材

讓研究在你起草問題時運行。在它回傳之前不要問使用者任何事情,因為其發現會改變選項。

第三階段:詢問(有界)

先閱讀 reference/question-bank.md。

限制:

  • 最多 3 輪的 AskUserQuestion。
  • 每輪最多 4 個問題。
  • 每個問題都是多選題。第一個選項是推薦的預設值,標記為「(Recommended)」。

該問什麼:

  • 按照猜錯的代價排序問題,代價最高的優先。
  • 在幾輪中,涵蓋:受眾、核心成果、非目標、硬性限制、品質標準、如何判斷成功。跳過任何已經回答的問題,並說明答案的來源。
  • 僅在第一層或第二層未知項仍然存在時才使用第二或第三輪。當沒有重要問題待解決時,提前停止。

記錄答案:

  • 「由你決定」、推遲或沒有答案 → 記錄一個使用推薦預設值及其原因的 A-n 假設。
  • 當輪次用完時,每個剩餘的未知項都變成一個 A-n。不要問第 4 輪。

第四階段:草擬、檢查、確認

  1. 閱讀 templates/GOAL.template.md。從中撰寫 GOAL.md:
    • 填寫每個部分,並刪除模板註解和佔位符。
    • 撰寫 5–15 個驗收標準。每個都是一個可觀察的結果,並附有 verified by: 子句。
    • 優先使用專案自身工具鏈的命令和測試(例如 npm test、pytest -k …)。僅在沒有任何東西可以自動化檢查時,才使用 manual — <具體步驟和你應該看到的>。
    • 如果你有超過 15 個,將它們分組到 ### Milestone n 子標題下,並告知使用者。
    • 「驗證」部分包含一個將執行所有自動化檢查的命令。該命令目前不存在也沒關係;它將成為第一個專案工作。
  2. 閘門:執行 bash ${CLAUDE_SKILL_DIR}/scripts/check_goal.sh GOAL.md。修正每個 FAIL 並重新執行,直到退出碼為 0。向使用者提及任何 WARN 行。這些修正屬於你自己的,不計入使用者的修訂次數。
  3. 向使用者顯示完整的 GOAL.md。然後使用 AskUserQuestion 詢問:Approve (Recommended) / Request changes (透過「Other」自由文字)。
  4. 一輪修訂。 如果使用者要求變更:
    • 應用它們,重新執行閘門,並顯示變更的內容。
    • 再次詢問:Approve / Approve, and record my remaining concerns as open risks。
    • 不要開始第三個循環。任何仍未解決的內容都進入「開放風險」部分。
  5. 批准後,確保 Changelog 中有 - YYYY-MM-DD — Created with Goal Miner (create mode); signed off by user.(今天的日期)。
  6. 執行下面的 CLAUDE.md 整合。

停止規則。 僅當所有下列條件成立時,建立才算完成:

  • check_goal.sh 退出碼為 0,這意味著每個 AC 都是可測試的,並且每個假設的項目都有 A-n
  • 沒有問題懸而未決:每個問題都已回答或記錄為 A-n
  • 使用者已簽署

模式:修訂

  1. 閱讀 GOAL.md 和 CLAUDE.md。用一句話重申請求的變更。
  2. 如果變更不明確,則針對該變更僅詢問一輪 AskUserQuestion(最多 4 個問題)。僅當變更引入新的領域或 API 時才重新研究,並且僅使用狹隘的 goal-researcher 簡報。
  3. 僅編輯受影響的部分:
    • 絕不重新編號 AC。 將已移除的 AC 標記為 - ~~AC-4~~ removed: <原因> (YYYY-MM-DD),在刪除線內保留原始文字。
    • 新的 AC 採用歷史上使用過的最大編號之後的下一個編號。
    • 已變更的 AC 保留其 ID。更新其文字和來源標籤。
    • 保持每個未受影響的行完全不變。
  4. 附加一個 Changelog 條目:- YYYY-MM-DD — Amended: <變更內容和原因>; added: …; removed: …; changed: ….
  5. 執行閘門。顯示 diff 的簡短摘要。使用與建立模式相同的單輪修訂規則獲得批准。
  6. 執行 CLAUDE.md 整合。如果該行已存在,則不做任何添加。

模式:驗證

此模式僅報告:不要編輯 GOAL.md 或任何其他檔案,也永遠不要撰寫程式碼來使檢查通過。

  1. 閱讀 GOAL.md 並執行閘門。如果閘門失敗,則先報告該情況。目標檔案本身在修復之前是不可驗證的。

  2. 執行「驗證」部分中的命令。如果該命令不存在(沒有 Makefile 目標、缺少腳本),則將其記錄為帶有該原因的 FAIL,然後繼續。

  3. 對於每個活躍的 AC:

    • verified by: 是命令 → 執行它。
    • verified by: 是測試 → 使用專案的執行器執行該測試。
    • verified by: 是 manual → 不執行任何操作;將其標記為 MANUAL 並為人類重複可觀察的步驟。

    在執行任何安裝、刪除、部署或超出專案範圍觸及網路的命令之前,先進行詢問。

  4. 報告一個表格:AC | status (PASS / FAIL / MANUAL) | evidence (exit code + key output line)。然後給出一行結論:僅當每個 AC 都是 PASS,或是 MANUAL 且經使用者確認時,才為 Done。否則為 Not done: N failing。


CLAUDE.md 整合

確切的內容行:

Read GOAL.md before starting any task; work is done only when its acceptance checks pass.
  • 使用 Grep(固定字串)在 CLAUDE.md 中查找該行。如果已存在,則不做任何事。
  • 如果 CLAUDE.md 存在但不包含該行,則在末尾附加該行,前面加一個空行。使用 Edit 並且不要觸碰任何其他內容。
  • 如果 CLAUDE.md 不存在,則建立一個僅包含該行的檔案。

相關技能