# 用 Claude Code 和 Cursor 做规范驱动开发

Canonical: https://specscore.md/zh-cn/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-cn/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-cn/validators/)（CI，continuous integration）是对每一项提议变更的自动检查。这项检查是一条[命令行界面](https://specscore.md/zh-cn/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-cn/articles/feature-spec-template/)。`specscore spec lint` 检查这个形态：标题、必需的节、索引行和引用。它不判断产品想法是不是个好主意。[在 CI 中用规格检查器检查规格](https://specscore.md/zh-cn/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-cn/cli/install/)上。然后把功能和检查器保持在与代理相同的循环里。

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

用[PRD 模板](https://specscore.md/zh-cn/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-cn/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-cn/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-cn/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-cn/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-cn/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-cn/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-cn/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/zh-cn/ai/specstudio-skills/)
- [面向 AI 编程的 Markdown PRD 模板](https://specscore.md/zh-cn/articles/feature-spec-template/)
- [在 CI 中用规格检查器检查规格](https://specscore.md/zh-cn/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-cn/spec-driven-development/tools/)

## 相关

- [面向 AI 编程的 Markdown PRD 模板](https://specscore.md/zh-cn/articles/feature-spec-template/)
- [在 CI 中用规格检查器检查规格](https://specscore.md/zh-cn/articles/lint-specs-in-ci/)
- [怎样写出 AI 代理能够验证的验收标准](https://specscore.md/zh-cn/articles/acceptance-criteria/)
- [EARS 需求语法详解与示例](https://specscore.md/zh-cn/articles/ears-requirements/)
- [规范驱动开发](https://specscore.md/zh-cn/spec-driven-development/)
- [规范驱动开发工具](https://specscore.md/zh-cn/spec-driven-development/tools/)
- [CLI Skills](https://specscore.md/zh-cn/ai/cli-skills/)
- [SpecStudio Skills](https://specscore.md/zh-cn/ai/specstudio-skills/)
- [CLI](https://specscore.md/zh-cn/cli/)
- [功能规格](https://specscore.md/feature-specification)
