# 用 Claude Code 和 Cursor 做規範驅動開發

Canonical: https://specscore.md/zh-tw/articles/claude-code-specs/

最近更新：2026年11月6日

[Claude Code](https://code.claude.com/docs/en/overview) 是一個代理式寫程式工具，它讀取程式碼庫、編輯檔案並執行命令。[Cursor](https://cursor.com/docs/rules) 是編輯器，其專案規則放在 `.cursor/rules`，形式是 `.mdc` 檔案。[規範驅動開發](https://specscore.md/zh-tw/spec-driven-development/)（SDD，spec-driven development）是先寫規格、再寫程式，並把規格當作事實來源的做法。產品需求文件（PRD，product requirements document）是在把工作拆成任務之前，陳述問題和範圍的散文。在 [SpecScore](https://specscore.md/) 裡，[功能規範](https://specscore.md/feature-specification)是一項產品能力的檔案，[需求](https://specscore.md/requirement-specification)（REQ，requirement）是該功能內部一條有名字的規則，[驗收標準](https://specscore.md/acceptance-criteria-specification)（AC，acceptance criterion）是可選的抽象條件，指向其中一條或多條規則。[持續整合](https://specscore.md/zh-tw/validators/)（CI，continuous integration）是對每一項提議變更的自動檢查。這項檢查是一條[命令列介面](https://specscore.md/zh-tw/cli/)（CLI，command-line interface）的命令 `specscore spec lint`，來自 [specscore/specscore-cli](https://github.com/specscore/specscore-cli) 裡的 CLI。本頁所說的 Cursor 規格，是那份功能檔案，加上告訴代理去檢查它的 Cursor 專案規則。

## 什麼放進功能，什麼放進代理檔案

功能檔案持有義務。`spec/features/` 下的功能 README 載有 `#### REQ:` 規則和 `### AC:` 標準。填好的形態、計畫、任務就是[Markdown 中的 PRD 範本](https://specscore.md/zh-tw/articles/feature-spec-template/)。`specscore spec lint` 檢查這個形態：標題、必要的小節、索引行和參照。它不判斷產品想法是不是個好主意。[在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)是這條命令的更長說明。

代理檔案持有針對一個工具的指示。Anthropic 的概述說，`CLAUDE.md` 是專案根目錄的 Markdown 檔案，Claude Code 在每次工作階段開始時讀取它。Cursor 的規則文件說，專案規則是 `.mdc` 檔案，位於 `.cursor/rules`，該目錄裡沒有 frontmatter 的普通 `.md` 檔案會被忽略。這些檔案告訴代理如何在儲存庫裡工作。它們不是檢查器所檢查的規格。只存在於 `CLAUDE.md`，或只存在於 `.cursor/rules/specscore.mdc` 的需求，對 `specscore spec lint` 不可見。

## specscore agent setup 寫入什麼

[CLI README](https://github.com/specscore/specscore-cli/blob/main/README.md) 說，`specscore agent setup` 寫入每個代理的指示檔案，並且在該代理有技能目錄時，把 SpecScore 技能包複製進去。除非傳入 `--force`，命令會略過既有檔案。契約是 [agent-setup 功能](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md)，位於 [specscore/specscore-cli](https://github.com/specscore/specscore-cli)。

那份契約把呼叫端 id `claude` 對應到 `CLAUDE.md` 和 `.claude/skills/`，把呼叫端 id `cursor` 對應到 `.cursor/rules/specscore.mdc` 和 `.cursor/skills/`。在已經有 `specscore.yaml` 的專案裡執行這條命令。如果缺少該檔案，命令以 6 結束，訊息建議 `specscore init`。一次點名兩個代理的呼叫是 `specscore agent setup claude,cursor`。功能說，逗號分隔的清單與分開的參數相同。父目錄會被建立。每條路徑都被報告為已新增、已修改或已略過。

產生的 `CLAUDE.md` 包含專案標題、傳入 `--caller claude` 的 CLI 範例，以及安裝行 `/plugin install specscore@specscore`。Cursor 的檔案是帶 YAML frontmatter 的 Markdown。frontmatter 含有 `description` 和 `alwaysApply: true`。Cursor 的規則表說，`alwaysApply: true` 表示這條規則被納入每一次聊天。`--no-skills` 寫入指示檔案，不複製技能包。同一張契約表還點名 `codex`、`copilot`、`antigravity.google`、`pi.dev`、`opencode` 和 `deepseek`。本頁寫的是標題裡的兩個代理。

### 寫入 Claude Code 和 Cursor 的檔案。在已有 specscore.yaml 的專案裡執行。

```text
specscore agent setup claude,cursor
```

### 契約分配給 claude 和 cursor 的路徑。傳入 --no-skills 時不建立技能目錄。除非傳入 --force，既有檔案保持原樣。

```text
CLAUDE.md
.claude/skills/
.cursor/rules/specscore.mdc
.cursor/skills/
```

指示檔案指向功能樹。它不取代功能樹。設定之後，Claude Code 仍然必須讀取 `spec/features/`，Cursor 的規則仍然必須指向同一棵樹。[功能規範](https://specscore.md/feature-specification)仍然是 `specscore spec lint` 接受或拒絕的文件。

## 在迴圈裡執行 specscore spec lint

先安裝 CLI。安裝方法在[安裝頁面](https://specscore.md/zh-tw/cli/install/)上。然後把功能和檢查器保持在與代理相同的迴圈裡。

### 在提示之前寫下功能

用[PRD 範本](https://specscore.md/zh-tw/articles/feature-spec-template/)加入功能 README、功能索引行和 `specscore.yaml`。把每條義務放在 `## Behavior` 下，寫成 `#### REQ: {slug}`。用 `**Requirements:**` 讓驗收標準指向那些 id。把 `CLAUDE.md` 和 `.cursor/rules/` 留到下一步。

### 在代理編輯程式之前檢查

在儲存庫裡執行 `specscore spec lint`。乾淨的樹印出 `0 violations found` 並以 0 結束。失敗報告——檔案、行、嚴重程度、規則、訊息——在 [在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)。把功能改到那條命令乾淨為止。從檢查器已經拒絕的功能起步的代理，會照抄壞掉的形態。

### 讓 Claude Code 和 Cursor 指向這棵樹

執行 `specscore agent setup claude,cursor`。閱讀新增的 `CLAUDE.md` 和 `.cursor/rules/specscore.mdc`，確認它們點名規格樹和 CLI，包括 `--caller`。如果其中任一檔案已經存在，命令就略過它。只有在你打算替換那個檔案時才傳入 `--force`。

### 要求一項點名標準的任務

在代理的工作階段裡，點名這項工作必須滿足的功能和驗收標準。計畫裡的任務用 `**Verifies:**` 和驗收標準的 id 來做這件事。讓代理在結束前再次執行 `specscore spec lint`，並在行為改變時修改功能檔案。指示檔案告訴代理去執行命令。命令檢查的是功能檔案。

## 露出 lint、feature 和 task 的技能

對包裝外掛，CLI README 的安裝行是 `/plugin marketplace add specscore/ai-marketplace` 和 `/plugin install specscore@specscore`。外掛儲存庫是 [specscore/ai-plugin-specscore](https://github.com/specscore/ai-plugin-specscore)，採用 [MIT 授權](https://github.com/specscore/ai-plugin-specscore/blob/main/LICENSE)。它的 [skills README](https://github.com/specscore/ai-plugin-specscore/blob/main/skills/README.md) 說，使用者呼叫 `/specscore:<skill-name>`。隨附的包裝包括 `/specscore:spec`，它包裝 `specscore spec lint`；`/specscore:feature`，它包裝 `specscore feature`（`list`、`info`、`tree`、`deps`、`refs`、`new` 和 `change-status`）；以及 `/specscore:task`，它包裝 `specscore task`。`/specscore:change-status` 涵蓋功能和想法的狀態變更。本站的 [CLI Skills](https://specscore.md/zh-tw/ai/cli-skills/) 頁面就是那個包裝。`specscore agent setup` 把那些技能包複製進 `.claude/skills/` 和 `.cursor/skills/`，除非傳入 `--no-skills`。

外掛 README 說，Cursor 沒有遠端安裝命令，並從專案裡的 `.cursor/skills/` 或從 `~/.cursor/skills/` 載入技能。它展示的手動複製是 `git clone` [ai-plugin-specscore](https://github.com/specscore/ai-plugin-specscore/blob/main/README.md)，以及 `cp -R` `skills/*` 到 `.cursor/skills/`。`specscore agent setup cursor` 就是替你做這次複製的命令，來自功能規範點名的市集。

[SpecStudio Skills](https://specscore.md/zh-tw/ai/specstudio-skills/) 是有引導的工作流程。儲存庫是 [specscore/specstudio-skills](https://github.com/specscore/specstudio-skills)，採用 [MIT 授權](https://github.com/specscore/specstudio-skills/blob/main/LICENSE)。它的 README 裡 Claude Code 的安裝行是 `/plugin install specstudio@specscore`，並且說 Claude Code 把 `specscore` 外掛作為相依安裝。狀態一節點名版本 0.0.7，並說 `ideate`、`specify`、`plan`、`implement`、`verify` 和 `recap` 技能已經活躍到足以 dogfood。同一份 README 的清單表詳細記錄了 `specstudio:ideate` 和 `specstudio:specify`。那些技能寫下 SpecScore 產物。它們不取代 `specscore spec lint`。

## CI 裡的同一條命令

[dogfood.yml](https://github.com/specscore/specscore/blob/main/.github/workflows/dogfood.yml) 在 [specscore/specscore](https://github.com/specscore/specscore) 裡把 `SPECSCORE_VERSION` 設為 `v0.39.1`，並在 pull request 以及向 main 的 push 上執行 `specscore spec lint`。工作流程摘錄和文字報告在 [在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)。弄壞標題的功能會讓那個作業失敗，不論檔案是 Claude Code 還是 Cursor 寫的。代理迴圈和 CI 呼叫同一條命令。

格式授權是 [CC BY 4.0](https://github.com/specscore/specscore/blob/main/LICENSE)，位於 [specscore/specscore](https://github.com/specscore/specscore)。CLI 授權是 [Apache-2.0](https://github.com/specscore/specscore-cli/blob/main/LICENSE)，位於 [specscore/specscore-cli](https://github.com/specscore/specscore-cli)。

其他規範驅動工具公布的檢查各不相同。下面的句子只用那些專案自己的頁面所說的內容。[工具彙整](https://specscore.md/zh-tw/spec-driven-development/tools/)把同樣的頁面記為 2026年10月30日讀過，Spec Kit 文件首頁除外，那一頁印著 2026年9月28日。

[OpenSpec](https://github.com/Fission-AI/OpenSpec) 在它的 [CLI 參考](https://openspec.dev/docs/cli) 裡記錄了 `openspec validate`。該命令檢查 OpenSpec 的變更和規格結構。它不檢查 SpecScore 的 `### AC:` 標題。

[Task Master](https://github.com/eyaltoledano/claude-task-master) 的 README 描述用 `task-master parse-prd` 把 PRD 解析成任務。它沒有描述針對那份 PRD 的檢查器。

[GitHub Spec Kit](https://github.github.io/spec-kit/) 描述一套代理工作流程，其階段寫下 Markdown 產物。那份文件首頁沒有描述一條在 CI 中檢查 SpecScore 功能 README 的命令。

## 常見問題

### 什麼是 Claude Code 的規範驅動開發？

就是在 Claude Code 寫程式之前寫下 SpecScore 功能，然後把 `CLAUDE.md` 保持為指向該功能的指示檔案。功能持有需求（REQ）和驗收標準（AC）。`specscore spec lint` 檢查功能。`specscore agent setup claude` 把 `CLAUDE.md` 寫進已經有 `specscore.yaml` 的專案。

### Cursor 的規格放在哪裡？

產品義務放在 `spec/features/` 下的功能 README 裡。Cursor 專案規則放在 `.cursor/rules/specscore.mdc`。技能檔案放在 `.cursor/skills/`。`specscore agent setup cursor` 寫入規則，並且除非傳入 `--no-skills`，還複製技能包。Cursor 自己的文件是 `.mdc` 規則如何被套用的來源。

### CLAUDE.md 會取代功能規範嗎？

不是。`CLAUDE.md` 是 Claude Code 當作指示來讀的檔案。功能 README 是 `specscore spec lint` 所檢查的檔案。[agent-setup 功能](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md)說，產生的檔案把規格樹和 CLI 命令教給代理。它沒有說指示檔案就是規格。

### 如果 CLAUDE.md 或 Cursor 規則已經存在呢？

命令略過既有檔案，並印出一行提到 `--force` 的略過說明。既有的位元組保持不變。只有在替換正是你想要的時候才傳入 `--force`。同一條略過規則也適用於已經存在的技能檔案。

### 哪個技能執行檢查器？

在外掛的 skills README 裡，`/specscore:spec` 包裝 `specscore spec lint`。你也可以自己執行那條 CLI 命令，在代理的工作階段裡或在 CI 裡。`/specscore:feature` 和 `/specscore:task` 包裝功能和任務命令。它們自己並不檢查。

### 檢查器為散文打分嗎？

不。`specscore spec lint` 檢查結構。[在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)給出報告。一次乾淨的結構檢查並不是產品評審。

## 來源

agent-setup 的行為是 main 上 specscore-cli spec/features/cli/agent/setup/README.md 裡的契約，閱讀日期為 2026年11月6日。技能名稱來自 main 上的 ai-plugin-specscore skills/README.md，同一天閱讀。SpecStudio 的安裝行和版本 0.0.7 的狀態列表來自 main 上的 specstudio-skills README.md，同一天閱讀。Claude Code 的說明和 CLAUDE.md 那一句來自 code.claude.com/docs/en/overview。Cursor 專案規則路徑來自 cursor.com/docs/rules。本儲存庫的 dogfood.yml 把 SPECSCORE_VERSION 釘在 v0.39.1。競爭頁面就是下面連結的那些；工具彙整把它們記為 2026年10月30日讀過，Spec Kit 文件首頁除外，那一頁印著 2026年9月28日。

- [Claude Code — 概述（CLAUDE.md）](https://code.claude.com/docs/en/overview)
- [Cursor — 規則（專案規則是 .mdc 檔案）](https://cursor.com/docs/rules)
- [specscore-cli — agent-setup 功能](https://github.com/specscore/specscore-cli/blob/main/spec/features/cli/agent/setup/README.md)
- [specscore-cli — README（agent setup 與外掛安裝）](https://github.com/specscore/specscore-cli/blob/main/README.md)
- [specscore/specscore-cli](https://github.com/specscore/specscore-cli)
- [specscore-cli — Apache-2.0 授權](https://github.com/specscore/specscore-cli/blob/main/LICENSE)
- [specscore/specscore](https://github.com/specscore/specscore)
- [specscore/specscore — CC BY 4.0 授權](https://github.com/specscore/specscore/blob/main/LICENSE)
- [specscore/specscore — dogfood.yml（CLI v0.39.1）](https://github.com/specscore/specscore/blob/main/.github/workflows/dogfood.yml)
- [specscore/ai-plugin-specscore](https://github.com/specscore/ai-plugin-specscore)
- [ai-plugin-specscore — MIT 授權](https://github.com/specscore/ai-plugin-specscore/blob/main/LICENSE)
- [ai-plugin-specscore — skills README](https://github.com/specscore/ai-plugin-specscore/blob/main/skills/README.md)
- [ai-plugin-specscore — README（複製到 Cursor）](https://github.com/specscore/ai-plugin-specscore/blob/main/README.md)
- [specscore/specstudio-skills](https://github.com/specscore/specstudio-skills)
- [specstudio-skills — MIT 授權](https://github.com/specscore/specstudio-skills/blob/main/LICENSE)
- [specstudio-skills — README（版本 0.0.7）](https://github.com/specscore/specstudio-skills/blob/main/README.md)
- [CLI Skills](https://specscore.md/zh-tw/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/zh-tw/ai/specstudio-skills/)
- [給 AI 寫程式用的 Markdown PRD 範本](https://specscore.md/zh-tw/articles/feature-spec-template/)
- [在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)
- [功能規範](https://specscore.md/feature-specification)
- [驗收標準規範](https://specscore.md/acceptance-criteria-specification)
- [OpenSpec CLI 參考 — openspec validate](https://openspec.dev/docs/cli)
- [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec)
- [eyaltoledano/claude-task-master](https://github.com/eyaltoledano/claude-task-master)
- [GitHub Spec Kit 文件（頁面日期 2026年9月28日）](https://github.github.io/spec-kit/)
- [規範驅動開發工具](https://specscore.md/zh-tw/spec-driven-development/tools/)

## 相關

- [給 AI 寫程式用的 Markdown PRD 範本](https://specscore.md/zh-tw/articles/feature-spec-template/)
- [在 CI 中用規格檢查器檢查規格](https://specscore.md/zh-tw/articles/lint-specs-in-ci/)
- [寫出 AI 代理驗得過的驗收標準](https://specscore.md/zh-tw/articles/acceptance-criteria/)
- [EARS 需求語法詳解與範例](https://specscore.md/zh-tw/articles/ears-requirements/)
- [規範驅動開發](https://specscore.md/zh-tw/spec-driven-development/)
- [規範驅動開發工具](https://specscore.md/zh-tw/spec-driven-development/tools/)
- [CLI Skills](https://specscore.md/zh-tw/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/zh-tw/ai/specstudio-skills/)
- [CLI](https://specscore.md/zh-tw/cli/)
- [功能規範](https://specscore.md/feature-specification)
