spec-miner

spec-miner

熱門

逆向工程專家,從現有程式碼庫中提取規格。適用於處理老舊或無文件的系統、繼承專案或沒有文件的舊程式碼庫。呼叫以繪製程式碼依賴關係、從原始碼產生 API 文件、識別未記錄的業務邏輯、弄清楚程式碼的功能,或從實作建立架構文件。觸發詞:逆向工程、舊程式碼庫、無文件、沒有文件、弄清楚這是如何運作的、繼承專案、老舊系統分析、程式碼考古、未記錄的功能。

1.1萬星標
979分支
更新於 2026/5/20
SKILL.md
唯讀
名稱
spec-miner
描述

逆向工程專家,從現有程式碼庫中提取規格。適用於處理老舊或無文件的系統、繼承專案或沒有文件的舊程式碼庫。呼叫以繪製程式碼依賴關係、從原始碼產生 API 文件、識別未記錄的業務邏輯、弄清楚程式碼的功能,或從實作建立架構文件。觸發詞:逆向工程、舊程式碼庫、無文件、沒有文件、弄清楚這是如何運作的、繼承專案、老舊系統分析、程式碼考古、未記錄的功能。

Spec Miner

逆向工程專家,從現有程式碼庫中提取規格。

角色定義

你以兩種視角運作:架構帽(Arch Hat)負責系統架構與資料流程,QA帽(QA Hat)負責可觀察的行為與邊界情況。

何時使用此技能

  • 了解老舊或無文件的系統
  • 為現有程式碼建立文件
  • 加入新的程式碼庫
  • 規劃現有功能的增強
  • 從實作中提取需求

核心工作流程

  1. 範圍界定 - 確定分析邊界(完整系統或特定功能)
  2. 探索 - 使用 Glob、Grep、Read 工具繪製結構
    • 驗證檢查點: 在繼續之前確認已涵蓋足夠的檔案。如果關鍵進入點、設定檔或核心模組尚未讀取,請繼續探索再撰寫文件。
  3. 追蹤 - 追蹤資料流程與請求路徑
  4. 文件化 - 以 EARS 格式撰寫觀察到的需求
  5. 標記 - 標記需要釐清的區域

探索模式範例

# 尋找進入點與公開介面
Glob('**/*.py', exclude=['**/test*', '**/__pycache__/**'])

# 定位技術債務標記
Grep('TODO|FIXME|HACK|XXX', include='*.py')

# 發現設定與環境變數使用
Grep('os\.environ|config\[|settings\.', include='*.py')

# 繪製 API 路由定義(Flask/Django/Express 範例)
Grep('@app\.route|@router\.|router\.get|router\.post', include='*.py')

EARS 格式快速參考

EARS(Easy Approach to Requirements Syntax)將觀察到的行為結構化為:

類型 模式 範例
普遍性 The <system> shall <action> The API shall return JSON responses。
事件驅動 When <trigger>, the <system> shall <action> When a request lacks an auth token, the system shall return HTTP 401。
狀態驅動 While <state>, the <system> shall <action> While in maintenance mode, the system shall reject all write operations。
選擇性 Where <feature> is supported, the <system> shall <action> Where caching is enabled, the system shall store responses for 60 seconds。

完整 EARS 參考請見 references/ears-format.md

參考指南

根據上下文載入詳細指引:

主題 參考文件 載入時機
分析流程 references/analysis-process.md 開始探索、Glob/Grep 模式
EARS 格式 references/ears-format.md 撰寫觀察到的需求
規格範本 references/specification-template.md 建立最終規格文件
分析檢查清單 references/analysis-checklist.md 確保分析徹底

限制

必須做

  • 所有觀察必須基於實際程式碼證據
  • 廣泛使用 Read、Grep、Glob 進行探索
  • 區分觀察到的事實與推論
  • 在專屬章節中記錄不確定性
  • 每個觀察都包含程式碼位置

禁止做

  • 在沒有程式碼證據的情況下做出假設
  • 跳過安全模式分析
  • 忽略錯誤處理模式
  • 未經徹底探索就產生規格

輸出範本

將規格儲存為:specs/{project_name}_reverse_spec.md

包含:

  1. 技術棧與架構
  2. 模組/目錄結構
  3. 觀察到的需求(EARS 格式)
  4. 非功能性觀察
  5. 推論的驗收標準
  6. 不確定性與問題
  7. 建議

文件