0. 顶层整体视角(信息分层逻辑)
分层 |
目录/文件 |
作用范畴 |
核心关键词 |
治理层 |
memory/ |
原则、约束、演进 |
宪法、守护一致性 |
生成规范层 |
templates/ |
规格/计划/任务模版 |
约束 AI 输出形态 |
执行自动化层 |
scripts/ |
过程自动化 |
创建、检查、衔接 |
业务特性层 |
specs// |
需求→计划→任务→实现细节 |
可执行规范 |
协作与代理层 |
CLAUDE.md (或其他 AI 协作文件) |
给 AI 的上下文记忆 |
“长程思维” |
根级元数据 |
README / pyproject.toml / .gitignore / LICENSE 等 |
基础工程结构 |
规范化工程项目 |
工件派生层 |
contracts/、data-model.md、tasks.md |
从规范派生的结构化工件 |
可生成/可验证 |
演进反馈层 |
research.md / quickstart.md / implementation-details/ |
细化、验证、复盘 |
持续精炼 |
记住:一切的“源”是 spec.md(功能规格),其余文件均为衍生或支撑。
1. memory/ (项目“宪法与治理”)
1.1 memory/constitution.md
- What:项目的“开发宪法”——硬性基础原则集合(例如 Library-First、CLI 强制、Test-First、反过度抽象、集成优先测试等)。
- Why:
- 统一 AI 与人类贡献者的系统级思维方式。
- 防止在多迭代、多成员、多 AI 模型参与下偏离初衷。
- 作为评审和拒绝“不符合项目精神”提交的依据。
- How:
- 新特性规划前,让 AI / 人类都“读宪法”——可以在 prompt 中引用其核心条目。
- 任何与宪法冲突的实现需显式记录 justification(理由),并在 PR 评审中讨论。
- 更新宪法必须走变更流程(见 checklist)。
1.2 memory/constitution_update_checklist.md
- What:修改宪法时的审批清单(是否有破坏性影响、是否向后兼容、是否有记录等)。
- Why:防止随意变更原则导致“方法学漂移”或架构碎片化。
- How:
- 修改前复制 checklist,填写变更标题、动机、影响面、回滚策略。
- 评审通过后更新 constitution.md 并在 Git 历史中留存审议记录(建议提交信息含 “Constitution Update”)。
2. templates/ (模板驱动高质量生成)
2.1 templates/spec-template.md
- What:生成规范 spec.md 的骨架,包含功能描述、用户场景、功能需求、关键实体、测试与验收清单、[NEEDS CLARIFICATION] 标记策略等。
- Why:
- 约束 AI 不要掺入“实现细节”
- 强制显式列出不确定项,防止无声假设。
- How:
- 不建议在此加入具体技术栈字段。
- 自定义时:仅新增你团队“必填业务维度”(如合规、风控、国际化)。
2.2 templates/plan-template.md
- What:技术实施计划结构(架构视图、组件分解、数据流、接口契约指针、阶段 Gate、自查清单等)。
- Why:
- 把 “WHAT” 转为 “HOW” 但又保持高层抽象→防止过早写代码。
- 让 AI 先验证“结构是否健壮”,而不是直接跳入代码生成。
- How:
- 若团队有特定“性能预算”“安全策略”,可在模板中预置栏目。
- Phase -1 Gates(简化、反抽象、集成优先)要保留,防止膨胀。
2.3 templates/tasks-template.md
- What:任务拆分与并行标记([P])、依赖标识、交付标准格式。
- Why:
- 保证任务粒度可执行、可估时、可追踪。
- 避免纯自然语言“空洞任务”。
- How:
- 可新增 “Owner”/“Estimate” 字段配合 PM 工具同步。
- 任务变更时应反查是否需同步 plan/spec。
2.4 可能出现的其他模板(视版本而定)
- CLAUDE-template.md、research-template.md 等,用于统一 AI 行为或研究记录格式。
3. scripts/ (流程自动化与一致性保障)
文件 |
What |
Why |
How(常用触发/注意事项) |
common.sh |
公共函数库 |
复用日志、颜色、校验逻辑 |
不要直接在其他脚本复制粘贴逻辑,保持 DRY |
create-new-feature.sh |
新功能目录+分支创建脚本 |
标准化命名、编号、目录结构 |
通常被 /specify 间接触发;命令行也可手动执行 |
get-feature-paths.sh |
获取当前或所有 feature 目录路径 |
供其他脚本快速定位 |
不建议硬编码路径,调用它 |
setup-plan.sh |
在已有 spec 基础上生成 plan 与相关文档骨架 |
确保 plan 生成一致 |
若手动修改路径可能导致此脚本失效 |
check-task-prerequisites.sh |
任务执行前环境检查 |
防止缺依赖导致半途失败 |
在 CI/CD 或本地任务执行前调用 |
update-claude-md.sh |
同步/刷新 AI 协作文件 |
保持 AI 的上下文最新 |
变更 constitution 或全局策略后运行 |
(可能有 PowerShell 对应 .ps1) |
Windows / 跨平台支持 |
降低环境壁垒 |
Windows 成员使用 ps 版本 |
扩展脚本时:保持“单一职责”,新增脚本需在 README 或内部开发手册中注册。
4. specs/-/ (特性级“单元宇宙”)
目录命名约定:
NNN-kebab-name
,数字递增(001、002……),slug 由初次描述自动生成。 - 建议:不要手动改编号;重命名 slug 要检查引用。
下面逐文件详解(按形成顺序和依赖关系组织):
4.1 spec.md (功能规格)
- What:唯一的“业务与功能意图”根文件:包含范围、场景、功能需求(FR)、非功能约束(NFR)、关键实体与关系、测试/验收条件、风险与未决项。
- Why:所有后续 artefacts 必须可追溯映射到它(需求可追踪性矩阵思想)。
- How:
- 填写或澄清 [NEEDS CLARIFICATION] 标记,最终需清零或解释保留原因。
- 变更流程:每次修改应写进 commit message(如 “Spec: clarify FR-007 retention policy”)。
- 可添加自定义区块:合规、数据治理、隐私策略。
4.2 plan.md (技术实施计划)
- What:抽象架构、模块划分、架构选型理由、数据流、组件边界、阶段 Gate、自查 checklist。
- Why:防止 AI 或成员直接从 spec “跃迁”到代码,遗漏架构合理性评估。
- How:
- 每个技术决策要指向其 FR / NFR 来源(如 “Decision D3 -> FR-004, NFR-02”)。
- 如果与宪法冲突,必须写 “Justification” 块。
- 若后期发现实现困难,先回溯 plan 调整再改代码。
4.3 data-model.md (数据模型)
- What:实体 → 字段(类型/约束)→ 关系(1:N / M:N / 聚合)→ 语义说明。
- Why:统一 API / DB / 前端模型防止分歧;是合约与测试生成的一个核心源。
- How:
- 优先用“概念模型”语言(领域话语)而非直接数据库表结构。
- 变更字段需同步:contracts、测试、迁移脚本(如存在)。
- 最好添加“来源需求(FR-xxx)”列以追溯。
4.4 contracts/
- What:接口协议(REST/OpenAPI/WebSocket 事件、CLI 命令列表、消息格式等)。
- 示例:
api-spec.json
(OpenAPI)、signalr-spec.md
、events.yml
。
- Why:提供模块/客户端间“稳定契约”,支持自动生成 Stub/SDK/测试。
- How:
- 不要在实现阶段随意改签名 → 若需修改,先改 spec 与 plan。
- 建议为每个 endpoint/消息添加:来源 FR、成功/失败场景、错误码策略。
4.5 research.md
- What:围绕本功能的调研:框架对比、性能评估、风险分析、库版本锁定、参考资料链接。
- Why:让“决策理由”与“事实证据”绑定,避免经验化决策变成口口相传。
- How:
- 结构建议:Question → Findings → Sources → Decision → Linked FR。
- 添加日期戳(如 “2025-09-19 Research Refresh”)以提示过期风险。
4.6 quickstart.md
- What:最低摩擦的“运行/验证该功能”指南(启动命令、环境变量、最小测试路径)。
- Why:支持新成员快速加入;为 QA / 运维 / Demo 提供统一入口。
- How:
- 只写“核心路径”,详尽部署放 README 或 ops 手册。
- 可附:示例 CLI 调用 / cURL / seed 数据脚本指针。
4.7 tasks.md
- What:根据 plan+contracts+data-model 派生的任务拆解表。
- Why:组织执行、度量进度、控制并行化风险。
- How:
- 任务命名建议:
[Layer] Verb Object Qualifier
(如 [Backend] Implement album reorder endpoint
)。 - 加
[P]
表示可并行;依赖用 “Blocked by #T5”。 - 完成后若产生新需求 → 回写 spec(形成闭环)。
4.8 implementation-details/ (可能由后续命令或人工创建)
- What:存放深入技术说明,如复杂算法、性能调优策略、数据迁移流程、特定序列图等。
- Why:保持 plan.md / spec.md 高层“可阅读”,把噪音隔离。
- How:
- 命名建议:
caching-strategy.md
, migration-plan-v1.md
, rate-limiter-design.md
。 - 不要让这里“倒灌”成源码复制粘贴仓库;保持抽象层次。
4.9 可能派生的其他文件
文件 |
场景 |
tests/(或 test specs) |
初始阶段若引入测试文件夹并与任务关联 |
quickstart-assets/ |
Demo 截图、脚本等 |
README (feature 局部) |
特性级介绍(通常不鼓励,集中在主 README) |
5. 根目录常见文件
文件 |
What |
Why |
How |
README.md |
项目整体介绍、快速开始、核心理念入口 |
给新读者 5 分钟了解 |
保持精炼,深度内容指向 spec-driven.md |
spec-driven.md |
完整方法论阐述(哲学、工作流、命令说明、示例) |
提供统一心智模型 |
若流程演进,先改这里再改模板 |
pyproject.toml / uv.lock(视版本) |
Python 构建、依赖声明 |
可复现实验环境 |
锁定关键依赖版本,避免 AI 生成代码不兼容 |
LICENSE |
开源协议(MIT) |
法律边界 |
不修改或遵规范 |
.gitignore |
Git 过滤规则 |
保持仓库整洁 |
如新增生成目录,记得补充 |
CLAUDE.md / AGENT.md |
提供给特定 AI 的上下文记忆/使用方式 |
减少重复 prompt、稳定 AI 输出风格 |
宪法或流程更新后同步刷新 |
CONTRIBUTING.md |
贡献流程、分支策略、提交流程 |
降低外部贡献摩擦 |
保持与脚本和模板一致 |
scripts/(见上) |
—— |
—— |
—— |
6. AI 协作类文件(如 CLAUDE.md)
- What:一个汇总性“AI 使用上下文”文件(当前约束、命令说明、历史决策摘要)。
- Why:为长周期对话提供“持久记忆”——在多轮交互中维持一致性。
- How:
- 结构建议:Context / Active Features / Recent Decisions / Open Clarifications。
- 可以让脚本(如 update-claude-md.sh)在每次新 feature 生成后自动补充摘要。
7. 文件之间的“溯源链路”(Traceability Map)
spec.md
├─ 派生 → plan.md
│ ├─ 细化 → data-model.md
│ ├─ 细化 → contracts/
│ ├─ 触发 → research.md (补充信息反向修正 plan / spec)
│ └─ 输出 → tasks.md
│ └─ 驱动 → 代码 / 测试实现
├─ 校验 ← quickstart.md (验证路径来自 spec 用户旅程)
└─ 指导 ← constitution.md(约束变更与架构风格)
任何一个下游文件的“重大变更”原则上必须向上溯源确认是否需要更新 spec / plan。
8. 协作与治理建议
场景 |
行为 |
反模式警告 |
新功能启动 |
先 /specify 生成规范,再人工审校 spec.md |
直接跳过到 /plan |
技术分歧 |
在 plan.md 写出“多备选比较”并链接 research.md |
在 PR 代码里才开始争论 |
新人入组 |
先读 README → spec-driven.md → constitution.md → 最新两个 feature spec |
直接看代码目录 |
需求变更 |
标记 spec.md 变更块 + 更新 plan/data-model/contracts |
只改代码不改文档 |
任务管理 |
从 tasks.md 同步到外部工具(如 Jira)并保持单一真实来源 |
双重维护导致不一致 |
异常情况 |
在 quickstart.md 添加“故障排查最短路径” |
FAQ 散落在聊天记录 |
9. 自定义扩展建议(成熟团队可引入)
新目录/文件 |
目的 |
说明 |
compliance/ |
合规与审计条目 |
与金融、医疗等行业相关 |
docs/decisions/ADR-xxx.md |
架构决策记录(ADR) |
可与 plan.md 双向引用 |
ops/ |
部署与运维脚本 |
与开发规范隔离 |
qa/ |
手动测试脚本、覆盖率策略 |
与自动化测试形成互补 |
localization/ |
多语言资源规划说明 |
与实体/界面需求关联 |
10. 常见误区与纠偏
误区 |
危害 |
纠正做法 |
在 spec.md 写实现技术细节 |
规格僵化、复用性下降 |
技术放 plan / implementation-details |
tasks.md 直接手写不由工具生成 |
缺失溯源、遗漏需求 |
始终用 /tasks 初生,再人工微调 |
research.md 只贴链接无结论 |
决策不可复核 |
采用 “Question → Analysis → Decision → Linked FR” 模板 |
contracts 与代码脱节 |
接口漂移、客户端破裂 |
每次接口变更先改 contracts 再实现 |
不维护 constitution |
架构风格分裂 |
定期(如月度)审查是否需修订 |
不清理 [NEEDS CLARIFICATION] |
需求歧义放大到实现 |
在计划前必须清零或显式延期标注 |
11. 示例:一个完整特性目录展开(带文件角色标注)
specs/
└── 003-chat-system/
├── spec.md # 功能规格(源头)
├── plan.md # 技术规划(结构与路径)
├── data-model.md # 实体/关系模型
├── contracts/
│ ├── api-spec.json # REST/OpenAPI 合约
│ └── websocket-events.md# 实时消息事件协议
├── research.md # 库/协议对比与决策
├── quickstart.md # 启动与最小验证
├── tasks.md # 拆解任务(含并行标记)
├── implementation-details/
│ ├── scaling-strategy.md
│ └── message-retention-design.md
└── attachments/ # (可选)图表/序列图/流程图
12. 快速判断“这个文件应不应该放这里”的三问法
- 它是否属于“意图/需求解释”?→ spec.md
- 是否是“需求到技术的翻译与结构化决策”?→ plan.md / research.md
- 是否是“对外协议或内部协作契约”?→ contracts/
- 是否是“数据语义中心”?→ data-model.md
- 是否是“执行级拆解”?→ tasks.md
- 是否是“具体实现策略/深度细节/调优”?→ implementation-details/
- 是否跨特性且长期约束?→ memory/constitution.md
- 是否是支撑型骨架?→ templates/
- 是否是把流程自动化?→ scripts/
说明该内容混杂,需拆分
13. 维护节奏建议(周期化运营)
周期 |
关注点 |
产出 |
每开发迭代(Sprint) |
新 feature 规格与计划 |
新 specs// 目录 |
每周 |
清理未解决 [NEEDS CLARIFICATION] |
状态报告/回溯列表 |
每两周 |
review constitution 适配性 |
是否需要修订提案 |
每月 |
研究文档是否过期 |
标记过期/刷新 research |
每季度 |
模板健康检查(是否需增强) |
模板迭代 changelog |
14. 你可以立刻落地的操作清单(Checklist)
操作 |
价值 |
为现有 specs 反向补上 FR 编号与 contracts 链接 |
建立追踪矩阵 |
在 tasks.md 增加 “Source FR” 列 |
保障需求完整覆盖 |
为 research.md 增加 “Last Validated Date” 字段 |
提醒陈旧风险 |
建立 scripts/validate-traceability.sh |
自动校验 spec→plan→tasks 链路 |
在 CI 中加入 “contracts drift check” |
防止接口漂移 |
引入 “spec review 模板” Pull Request 模板 |
规范评审尺度 |