# SpecPow 默认 Schema: spec-driven
# 五阶段工件流: proposal → specs → design → api-contract → tasks → apply
# 融合 OpenSpec 的规范驱动 + Superpowers 的执行方法论

name: spec-driven
description: |
  规格驱动开发工作流。
  在 AI 写代码之前，让人类和 AI 对"要构建什么"达成一致。
  然后通过 SDD 子代理驱动引擎高质量地执行实现。

apply:
  requires:
    - tasks    # 实施前必须完成所有工件

artifacts:
  - id: proposal
    name: 提案
    description: 为什么做这个变更？解决什么问题？
    requires: []
    template: proposal.md
    instruction: |
      创建变更提案。回答：
      1. 为什么要做这个变更？（动机）
      2. 要解决什么问题？
      3. 成功标准是什么？
      4. 影响范围和风险？
      
      注意：先使用 brainstorming 技能进行需求探索，再写提案。
    output: proposal.md

  - id: specs
    name: 规范
    description: 系统必须做什么？（行为契约，不是实现计划）
    requires:
      - proposal
    template: spec.md
    instruction: |
      创建 Delta 规范。使用增量操作描述变更：
      - ADDED Requirements: 新增的需求
      - MODIFIED Requirements: 修改的需求（包含完整更新内容）
      - REMOVED Requirements: 移除的需求（含原因和迁移方案）
      - RENAMED Requirements: 重命名的需求
      
      规范是行为契约，描述系统做什么，不描述怎么做。
      每个需求必须可验证。
    output: specs/<capability>/spec.md

  - id: api-contract
    name: API 契约
    description: REST API 接口契约（OpenAPI 3.0 YAML 可读子集）
    requires:
      - design
    template: api-contract.md
    instruction: |
      从 design.md 中提取 REST API 接口定义，转换为 OpenAPI 3.0 YAML 可读子集。

      规则：
      1. 仅当 design.md 包含 REST API 接口定义时生成
      2. 格式为 OpenAPI 3.0 YAML，包含 openapi、info、paths 三部分
      3. paths 中每个 endpoint 必须包含：method、summary、parameters（含类型/必填/enum）、requestBody（含 schema）、responses（含 schema）
      4. 支持嵌套对象、数组、enum、optional 字段
      5. 如果 design.md 中没有 REST API 定义，不生成此文件
    output: api-contract.md
    conditional: true
    autoGenerate: true

  - id: design
    name: 设计
    description: 怎么做？技术方案和架构决策
    requires:
      - proposal
      - specs
    template: design.md
    instruction: |
      创建技术设计文档。包含：
      1. 架构决策（ADR 格式）
      2. 模块划分和接口定义
      3. 数据模型设计
      4. 前后端分工
      5. 关键实现路径
      
      如果变更较小（< 3个文件），可以跳过此工件。
    output: design.md
    conditional: true

  - id: tasks
    name: 任务
    description: 实施步骤（SDD 引擎将逐个执行）
    requires:
      - proposal
      - specs
      - design
    template: tasks.md
    instruction: |
      创建实现任务列表。每个任务应该：
      1. 足够小（2-5分钟完成）
      2. 包含精确的文件路径
      3. 包含完整的代码或明确的修改指令
      4. 包含验证步骤
      5. 任务之间尽量独立（便于 SDD 并行）
      
      格式：
      - [ ] Task 1: <标题>
        <详细描述，包含精确文件路径和代码>
        验证: <如何验证>
    output: tasks.md
