SDD框架
规范驱动开发 -一种用于人工智能辅助软件开发的方法和工具集,其中规范是真理的来源。
  
安装
通过GitLab的pip(推荐)
# Install latest version
pip install git+https://gitlab.com/akercito/sdd-framework.git
# Install specific version
pip install git+https://gitlab.com/akercito/sdd-framework.git@v1.7.0
# Install with MCP server support (Python 3.10+)
pip install "sdd-framework[mcp] @ git+https://gitlab.com/akercito/sdd-framework.git"来自源头
git clone https://gitlab.com/akercito/sdd-framework.git
cd sdd-framework
pip install -e .
# With MCP support
pip install -e ".[mcp]"什么是规范驱动开发?
Traditional: Idea → Code → Tests → Docs (chaos)
SDD: Spec → Tests → Code → Validate (order)SDD合同:
- 没有SPEC的代码
- 未经测试不得实施
- 未经验证不得合并
主要特点
| 特性 | 描述 |
|---|---|
| 规范模板 | API、模型和功能的一致标记模板 |
| 棉绒规格 | 验证规范质量、结构和一致性的15条规则 |
| 依赖图 | 可视化规格之间的关系(ASCII、HTML、Mermaid) |
| 影响分析 | 更改规格时显示级联效果 |
| Wave执行 | 基于拓扑排序的最优并行执行排序 |
| 任务分解 | 将规范分解为可并行实现的任务 |
| 覆盖范围跟踪 | 将要求映射到测试和实施 |
| 需求追溯 | 跟踪规范中的要求→ 测试→ 全矩阵编码 |
| 孤立检测 | 查找没有规范引用的代码 |
| 度量与记录 | 执行跟踪和报告 |
快速开始
# Install the framework
pip install sdd-framework
# Initialize SDD in your project
cd /path/to/your/project
sdd init
# Create a new spec
sdd new-spec api users
# Validate all specs
sdd lint-all
# View dependency graph
sdd deps
# Generate task breakdown
sdd decompose specs/api/users.md替代方案:直接使用脚本
# Clone the framework
git clone https://github.com/akercito/sdd-framework.git
cd sdd-framework
# Copy to your project
cp templates/scripts/sdd.py /path/to/your/project/
cp -r templates/specs /path/to/your/project/
# Use directly
python3 sdd.py init项目结构
your-project/
├── sdd.py # Main SDD automation script
├── CLAUDE.md # AI assistant instructions
├── specs/
│ ├── OVERVIEW.md # Project overview spec
│ ├── api/ # API endpoint specs
│ ├── models/ # Data model specs
│ ├── features/ # Feature/business logic specs
│ ├── tasks/ # Task breakdown files
│ └── _templates/ # Spec templates
└── .sdd/
├── state.json # Execution state
├── metrics.json # Performance metrics
├── logs/ # Execution logs
└── reports/ # Generated reports (HTML graphs, coverage)壳牌完井
为sdd命令启用选项卡完成:
Bash (添加到 ~/.bashrc):
eval "$(sdd completion bash)"原有的质量 (添加到 ~/.zshrc):
eval "$(sdd completion zsh)"鱼 (保存到 ~/.config/fish/completions/sdd.fish):
sdd completion fish > ~/.config/fish/completions/sdd.fish特征:
- 命令名称完成
- 每个命令的选项完成
- 规范文件的文件路径完成
- 规格类型完成
new-spec(模型、api、功能、任务)
命令参考
规格管理
| 命令 | 描述 |
|---|---|
init | 在当前目录中初始化SDD |
new-spec | 从模板创建规范(api/模型/功能) |
validate-spec | 验证单个规范结构 |
validate-all | 验证所有规格 |
棉绒规格
| 命令 | 描述 |
|---|---|
lint | 针对质量问题制定单一规范 |
lint-all | 用摘要报告浏览所有规格 |
lint-all --verbose | 显示所有规格的所有问题 |
相关性分析
| 命令 | 描述 |
|---|---|
deps | 显示ASCII依赖关系图 |
deps --html | 生成交互式HTML可视化 |
deps --mermaid | 输出Mermaid图语法 |
deps --json | 输出JSON以供编程使用 |
impact | 分析更改规范的影响 |
waves | 通过波形显示最佳执行顺序 |
需求追溯
| 命令 | 描述 |
|---|---|
trace | 跟踪从规范到测试和实施的需求 |
trace --html | 生成交互式HTML可追溯性报告 |
trace --json | 输出JSON以供编程使用 |
trace --md | 输出标记表格式 |
trace-all | 用摘要跟踪项目中的所有规格 |
trace-all --html | 生成项目范围内的HTML可追溯性报告 |
orphans | 查找没有规范可追溯性的代码文件 |
代码生成
| 命令 | 描述 |
|---|---|
decompose | 生成任务分解文件 |
auto-execute | 全自动执行 |
auto-execute --dry-run | 预览而不生成 |
generate-tests | 生成测试提示 |
generate-impl | 生成实施提示 |
验证和覆盖
| 命令 | 描述 |
|---|---|
coverage | 显示规范到代码的覆盖率 |
full-check | 全面项目验证 |
status | 显示项目状态 |
logs | 查看执行日志 |
report | 生成或查看执行报告 |
CI/CD集成
| 命令 | 描述 |
|---|---|
ci-check | 运行所有CI检查(lint、deps、trace、孤儿) |
ci-check --lint-threshold 80 | 设置最小皮棉分数 |
ci-check --coverage-threshold 90 | 设置最小覆盖范围 |
ci-check --json | CI系统的JSON输出 |
ci-check --junit | 以JUnitXML格式输出给测试报告器 |
ci-setup | 生成CI/CD配置文件 |
ci-setup --platform github | 仅限GitHub操作 |
ci-setup --platform gitlab | 仅限GitLab CI |
ci-setup --pre-commit | 包括预提交挂钩 |
观看模式
| 命令 | 描述 |
|---|---|
watch | 观察规格变化并自动验证 |
watch --lint-only | 仅运行棉绒检查 |
watch --deps-only | 仅运行依赖性检查 |
watch --trace-only | 仅运行可追溯性检查 |
watch --no-lint | 禁用棉绒检查 |
watch --open | 自动打开故障HTML报告 |
watch --debounce 1000 | 设置去抖动时间(ms) |
watch --poll | 强制轮询而不是本地观看 |
watch --no-clear | 更改时不清除屏幕 |
全球旗帜
| 标志 | 描述 |
|---|---|
--ci | 启用CI模式(从CI环境变量自动检测) |
--no-color | 禁用彩色输出 |
--quiet | 最小输出(仅错误和警告) |
棉绒规格
门楣根据15条质量规则检查规格:
| 规则 | 类别 | 描述 |
|---|---|---|
| SPEC-001 | 结构 | 缺少必需的部分 |
| SPEC-002 | 结构 | 空段 |
| SPEC-003 | 语言 | 歧义词(可能、可能、也许) |
| SPEC-004 | 要求 | 不带ID的要求 |
| SPEC-005 | 完成 | 缺少验收标准 |
| SPEC-006 | 参考文献 | 损坏的规范参考文献 |
| SPEC-007 | 示例 | 缺少示例部分 |
| SPEC-008 | 元数据 | 版本格式无效 |
| SPEC-009 | 表 | 空表或格式错误的表 |
| SPEC-010 | 需求 | 重复的需求ID |
| SPEC-011 | 可追溯性 | 无REQ参考的验收标准 |
| SPEC-012 | 边缘案例 | 缺少边缘案例文档 |
| SPEC-013 | 错误 | 缺少错误处理文档 |
| SPEC-014 | 元数据 | 过时的更改日志 |
| SPEC-015 | 一致性 | 术语不一致 |
输出示例:
============================================================
SPEC LINT REPORT
============================================================
Spec: specs/api/users.md
Score: 84/100
Status: ✅ PASSED
Issues (2):
├── SPEC-003: warning - Line 45: Ambiguous word 'should'
└── SPEC-012: info - Consider documenting edge cases
Suggestions:
└── Add ## Edge Cases section依赖图
分析和可视化规格关系:
# ASCII visualization (default)
python3 sdd.py deps┌─ API SPECS ─────────────────────
│
├── users
│ ├─ Requirements: 6
│ ├─ Depends on: 1 specs
│ │ → user (model)
│ └─ Referenced by: 2 specs
EXECUTION ORDER (by wave):
Wave 1: user, config
Wave 2: users, auth
Wave 3: api-gateway# Interactive HTML with Mermaid diagrams
python3 sdd.py deps --html
# Saves to: .sdd/reports/dependency-graph.html影响分析
在更改规范之前了解波纹效应:
python3 sdd.py impact specs/models/user.md============================================================
IMPACT ANALYSIS
============================================================
Spec: user.md
Risk Level: HIGH
Total Affected: 5 specs
Direct Dependents:
├── users.md (API)
└── authentication.md (feature)
All Affected (cascade):
├── users.md
├── authentication.md
├── registration.md
├── admin-api.md
└── user-service.md
⚠️ HIGH RISK: Many specs depend on this基于波动的执行
获得最佳并行执行顺序:
python3 sdd.py waves============================================================
EXECUTION WAVES
============================================================
Total Specs: 8
Total Waves: 3
Max Parallelism: 4 specs
Wave 1 (4 parallel):
• user-model
• config
• errors
• constants
Wave 2 (3 parallel):
• user-service
• auth-service
• logger
Wave 3 (1 serial):
• api-gateway
✓ No circular dependencies需求追溯
跟踪从规范到测试再到实施的要求:
# Trace a single spec
python3 sdd.py trace specs/api/users.md============================================================
REQUIREMENT TRACEABILITY: users.md
============================================================
Summary:
Total Requirements: 6
Fully Traced: 6 (100.0%)
Has Tests: 6 (100.0%)
Has Implementation: 6 (100.0%)
Requirements:
┌─────────┬──────────────────────────────┬──────────┬────────────┬───────┬──────┐
│ ID │ Description │ Priority │ Status │ Tests │ Impl │
├─────────┼──────────────────────────────┼──────────┼────────────┼───────┼──────┤
│ REQ-001 │ POST /api/users creates user │ Must │ ✅ complete │ 3 │ 2 │
│ REQ-002 │ GET /api/users/:id returns │ Must │ ✅ complete │ 2 │ 1 │
│ REQ-003 │ PUT /api/users/:id updates │ Should │ ⚠️ missing_test │ 0 │ 1 │
└─────────┴──────────────────────────────┴──────────┴────────────┴───────┴──────┘# Generate HTML report
python3 sdd.py trace specs/api/users.md --html
# Saves to: .sdd/reports/trace-users.html# Trace all specs in project
python3 sdd.py trace-all======================================================================
PROJECT REQUIREMENT TRACEABILITY
======================================================================
📊 Summary:
Specs analyzed: 5
Total requirements: 44
Fully traced: 44 (100.0%)
Has tests: 44 (100.0%)
Has implementation: 44 (100.0%)
✅ OVERVIEW.md - 9/9 traced (100.0%)
✅ analytics.md - 11/11 traced (100.0%)
✅ short-url.md - 7/7 traced (100.0%)
✅ urls.md - 6/6 traced (100.0%)
Overall Health: 🟢 Healthy (100.0% average coverage)
======================================================================# Find orphan code (no spec references)
python3 sdd.py orphans============================================================
ORPHAN CODE DETECTION
============================================================
⚠️ Found orphan code files:
Tests without spec references:
├── tests/unit/utils.test.ts
│ └── Lines: 15, 42, 78
└── tests/e2e/helpers.test.ts
└── Lines: 23
Source without spec references:
├── src/utils/helpers.ts
│ └── Lines: 10, 45
└── src/services/legacy.ts
└── Lines: 8, 22, 56
Suggestion: Add @spec annotations to link to relevant specs
============================================================注释格式
跟踪器识别这些注释格式:
在测试文件中:
/**
* @spec specs/api/users.md
* @requirement REQ-001
*/
describe('User creation', () => { ... });
// Or in describe names
describe('REQ-001: User creation works', () => { ... });在实施文件中:
/**
* @implements REQ-001
* @spec specs/api/users.md
*/
export function createUser() { ... }CI/CD集成
为您的CI/CD管道设置自动质量门。
快速设置
# Generate CI configuration files
python3 sdd.py ci-setup --platform both --pre-commit这将创建:
.github/workflows/sdd-check.yml-GitHub操作工作流.gitlab-ci-sdd.yml-GitLab CI配置.pre-commit-config.yaml-预提交挂钩
运行CI检查
# Run all checks
python3 sdd.py ci-check
# With custom thresholds
python3 sdd.py ci-check --lint-threshold 80 --coverage-threshold 90
# JSON output for CI systems
python3 sdd.py ci-check --json
# JUnit XML for test reporters
python3 sdd.py ci-check --junit退出代码
| 代码 | 名称 | 描述 |
|---|---|---|
| 0 | 成功 | 所有检查均已通过 |
| 1 | 一般错误 | 意外错误 |
| 2 | LINT_FAILED | 规格皮棉得分低于阈值 |
| 3 | COVERAGE_BELOW_THRESHOLD | 可追溯性覆盖率太低 |
| 4 | 循环依赖 | 检测到循环依赖 |
| 5 | SPEC_INVALID | 规范格式无效 |
| 6 | ORPHAN_CODE_FOUND | 没有规范参考的代码 |
环境变量
| 变量 | 描述 |
|---|---|
CI | 设置后自动启用CI模式 |
SDD_LINT_THRESHOLD | 默认皮棉阈值(70) |
SDD_COVERAGE_THRESHOLD | 默认覆盖阈值(80) |
NO_COLOR | 禁用彩色输出 |
SDD_QUIET | 最小输出 |
GitHub操作示例
- name: Run SDD Checks
run: python3 sdd.py ci-check --lint-threshold 70 --coverage-threshold 80GitLab CI示例
include: '.gitlab-ci-sdd.yml'
variables:
SDD_LINT_THRESHOLD: "80"
SDD_COVERAGE_THRESHOLD: "90"观看模式
实时监控规格文件,并自动验证更改:
# Start watch mode (all checks)
python3 sdd.py watch
# Watch with specific checks only
python3 sdd.py watch --lint-only
python3 sdd.py watch --deps-only
python3 sdd.py watch --trace-only
# Disable specific checks
python3 sdd.py watch --no-lint --no-deps
# Auto-open HTML reports on failures
python3 sdd.py watch --open
# Custom debounce interval
python3 sdd.py watch --debounce 1000
# Force polling (instead of native file watching)
python3 sdd.py watch --poll
# Don't clear screen on changes
python3 sdd.py watch --no-clear监视模式输出:
============================================================
SDD WATCH MODE
============================================================
Watching: /path/to/specs
Checks: lint, deps, trace
Debounce: 500ms
Press Ctrl+C to stop
------------------------------------------------------------
[12:34:56] Changes detected:
• OVERVIEW.md
• users.md
Results: (took 125ms)
✅ Lint: score 85/100
✅ Dependencies: OK
✅ Traceability: 95.5% coverage
------------------------------------------------------------
✅ ALL CHECKS PASSED
------------------------------------------------------------
Watching for changes...规范格式
每个规范都遵循以下结构:
# [Name] Specification
> Spec ID: `TYPE-001`
> Version: 1.0.0
> Status: Draft | Approved | Implemented
## Overview
Brief description of what this spec defines.
## Requirements
| ID | Requirement | Priority |
|----|-------------|----------|
| REQ-001 | Description | Must/Should/Could |
## Schema/Interface
Data structures with types.
## Behavior
Expected behavior for normal and edge cases.
## Error Handling
How errors are handled.
## Examples
Concrete input/output examples.
## Acceptance Criteria
- [ ] REQ-001: Checklist item
- [ ] REQ-002: Another item
## Changelog
| Version | Date | Changes |
|---------|------|---------|
| 1.0.0 | 2025-01-09 | Initial |与Claude Code集成
这 CLAUDE.md 文件指示AI助手:
- 先检查规格 -在实施之前验证规范是否存在
- 先生成测试 -在代码之前创建测试(TDD)
- 严格遵循规格 -实现与规范完全匹配
- 添加可追溯性 -将代码链接到要求
- 运行验证 -完工前进行全面检查
用于AI集成的MCP服务器
SDD框架包括一个MCP(模型上下文协议)服务器,该服务器公开了所有SDD工具,供Claude和其他AI助手使用。
快速设置
# Install dependencies
pip install mcp pydantic
# Configure Claude Code (~/.config/claude-code/settings.json):
{
"mcpServers": {
"sdd": {
"command": "python3",
"args": ["/path/to/sdd-framework/mcp-server/sdd_mcp_server.py"]
}
}
}可用的MCP工具
| 工具 | 说明 |
|---|---|
sdd_init | 在项目中初始化SDD |
sdd_status | 获取项目状态 |
sdd_new_spec | 从模板创建规范 |
sdd_lint | Lint单一规格 |
sdd_lint_all | 浏览所有规格 |
sdd_deps | 显示依赖关系图 |
sdd_waves | 计算执行波 |
sdd_impact | 分析变更影响 |
sdd_trace | 跟踪要求 |
sdd_decompose | 将规范分解为任务 |
sdd_generate_tests | 生成测试提示 |
sdd_generate_impl | 生成实施提示 |
sdd_ci_check | 运行CI检查 |
sdd_validate | 验证实施 |
看 mcp服务器/README.md 详细文档。
工作流示例
# 1. Create spec
python3 sdd.py new-spec api orders
# 2. Edit with your requirements
vim specs/api/orders.md
# 3. Lint the spec
python3 sdd.py lint specs/api/orders.md
# 4. Check impact
python3 sdd.py impact specs/api/orders.md
# 5. Check execution order
python3 sdd.py waves
# 6. Generate tasks for parallel execution
python3 sdd.py decompose specs/api/orders.md
# 7. Auto-execute with Claude Code
python3 sdd.py auto-execute specs/api/orders.md
# 8. Verify coverage
python3 sdd.py coverage文档
配置
创建 sdd.config.json 在您的项目中:
{
"validation": {
"requireSpecForCode": true,
"requireTestsBeforeImpl": true,
"coverageThreshold": 80,
"strictMode": true
},
"linting": {
"errorOnWarning": false,
"minScore": 70
},
"testing": {
"runner": "pytest",
"patterns": ["tests/**/*.py", "test_*.py"]
}
}测试转轮自动检测
SDD会根据项目文件自动检测您的测试运行器:
| 文件存在 | 已使用运行程序 |
|---|---|
package.json npm (是) | |
pytest.ini / pyproject.toml | pytest |
go.mod | 去测试 |
Cargo.toml | 货物检验 |
覆盖 testing.runner 在配置中。
贡献
- 分叉存储库
- 创建要素分支
- 编写新功能的规格(SDD也适用于此!)
- 提交拉取请求
许可证
MIT许可证
更新日志
| 版本 | 日期 | 更改 |
|---|---|---|
| 1.7.0 | 2026-01-09 | Shell完成(bash/zsh/fish),可安装包,GitLab CI/CD管道,线程安全MCP服务器 |
| 1.6.1 | 2026-01-09 | URL缩短器E2E集成测试(11个阶段,56次检查) |
| 1.6.0 | 2026-01-09 | 添加了用于Claude集成的MCP服务器(14个工具),结构化的Pydantic响应 |
| 1.5.1 | 2026-01-09 | 修复状态损坏、配置处理、并发操作的错误 |
| 1.5.0 | 2026-01-09 | 已添加 init 命令、可配置的测试运行器(npm/pytest/go/cargo)、全面的回归测试 |
| 1.4.0 | 2026-01-09 | 添加了具有实时规格监控的监视模式、具有轮询回退的文件监视、取消抖动 |
| 1.3.0 | 2026-01-09 | 添加了CI/CD集成工具包(CI检查、CI设置)、GitHub/GitLab模板、预提交挂钩 |
| 1.2.0 | 2026-01-09 | 增加了需求可追溯性矩阵(跟踪、全部跟踪、孤立),多格式输出 |
| 1.1.0 | 2025-01-09 | 增加了规范linting(15条规则)、依赖图、影响分析、波动执行 |
| 1.0.0 | 2025-01-09 | 具有任务分解、自动执行、覆盖率跟踪的初始版本 |
看 更改日志.md 查看详细的发行说明。
______________________________________________________________________
记住:规范是真理的来源。如有疑问,请阅读说明书。
