设计与规划工具(流程 D)
流程 D 包含 7 个工具,用于将规格转化为可执行的实现工件 — 数据库模式、UI 契约、架构决策、执行计划和事件契约。
generate_adr
为规格生成架构决策记录(ADR)。
输出内容: 结构化的 ADR 文档,涵盖决策背景、考虑的选项、所做的决策和后果。格式遵循 MADR(Markdown 架构决策记录)。
适用场景: 当规格涉及重大技术选择、架构模式或未来开发者需要理解的权衡取舍时。
提示词:"为项目 proj_abc123 中的规格 SPEC-004 生成 ADR"示例输出:
markdown
# ADR-001: 使用 Redis 进行会话存储
## 状态:已接受
## 背景
身份验证规格需要跨多个服务器实例的会话持久性...
## 决策
使用 Redis 作为会话存储...
## 后果
- 正面:无需粘性会话即可水平扩展
- 负面:将 Redis 添加为必需的基础设施依赖design_schema
根据规格需求设计数据库模式。
输出内容:
- 带列、类型和约束的表定义
- 主键和外键关系
- 查询性能的索引建议
- 迁移提示
- 多种方言的模式(SQL、Prisma、SQLAlchemy、GORM 等)
适用场景: 当规格涉及数据持久化,需要数据库层的具体起始点时。
提示词:"为项目 proj_abc123 中的规格 SPEC-002 设计数据库模式"define_ui_contract
定义 UI 组件契约、数据流和状态管理。
输出内容:
- 组件接口定义(props、事件、插槽)
- 数据流图(哪些组件拥有哪些状态)
- 状态管理方式(本地、上下文、store)
- 前端和后端之间的 API 契约
- 无障碍需求
适用场景: 对于任何包含前端组件、表单或用户交互的规格。
提示词:"为项目 proj_abc123 中规格 SPEC-001 的登录流程定义 UI 契约"challenge_spec
对规格进行故障、并发、规模和边缘情况的压力测试。
检查内容:
- 并发问题(竞态条件、死锁)
- 规模临界点(10 倍、100 倍负载时会发生什么?)
- 故障模式(数据库不可用时会怎样?)
- 验收标准未涵盖的边缘情况
- 安全攻击面
适用场景: 对于任何将在有真实用户的生产环境中运行的规格。对于涉及支付、身份验证或实时功能的规格尤其有价值。
提示词:"挑战项目 proj_abc123 中的规格 SPEC-003"generate_execution_plan
生成实现规格的逐步 PLAN.md — RED/GREEN/VERIFY 循环,带可并行步骤标识。
输出内容:
markdown
## 第 1 阶段:基础(并行)
- [ ] 步骤 1a:创建数据库迁移
- [ ] 步骤 1b:定义 TypeScript 接口
- [ ] 步骤 1c:编写失败测试(RED)
## 第 2 阶段:实现(顺序)
- [ ] 步骤 2a:实现仓储层(GREEN)
- [ ] 步骤 2b:实现服务层
## 第 3 阶段:验证
- [ ] 步骤 3a:运行完整测试套件(VERIFY)
- [ ] 步骤 3b:将规格状态更新为 review适用场景: 在实现开始之前。PLAN.md 成为 AI 代理或开发者的实现契约。
提示词:"为项目 proj_abc123 中的规格 SPEC-005 生成执行计划"generate_orchestration_script
生成 3 层并行自动化脚本(worktrees + claude -p),用于同时运行多个规格。
输出内容: 一个 shell 脚本,用于:
- 每个规格创建隔离的 git worktree
- 并行启动
claude -p工作进程 - 根据可用 CPU 和 RAM 管理资源分配
- 监控工作进程健康状态并处理故障
适用场景: 当你需要同时实现多个独立规格并希望最大化并行度时。
提示词:"为项目 proj_abc123 中的规格 SPEC-010、SPEC-011、SPEC-012 生成编排脚本"event_contracts
管理事件驱动架构契约 — 为生产者/消费者验证生成 JSON Schema 事件契约。
输出内容:
- 每种事件类型的 JSON Schema 定义
- 生产者契约(发布者的保证)
- 消费者契约(订阅者的预期)
- 版本控制策略
- 向后兼容性说明
适用场景: 对于任何涉及消息队列、事件总线(Kafka、RabbitMQ、AWS SQS/SNS、NATS)或 webhook 集成的规格。
提示词:"为项目 proj_abc123 中规格 SPEC-008 的订单处理流程定义事件契约"示例输出:
json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "OrderPlaced",
"version": "1.0.0",
"type": "object",
"required": ["orderId", "customerId", "items", "total", "placedAt"],
"properties": {
"orderId": { "type": "string", "format": "uuid" },
"customerId": { "type": "string", "format": "uuid" },
"items": { "type": "array", "items": { "$ref": "#/definitions/OrderItem" } },
"total": { "type": "number", "minimum": 0 },
"placedAt": { "type": "string", "format": "date-time" }
}
}