Files
git-learn/.agents/skills/sm-flow/references/operating-rules.md
T

5.2 KiB
Raw Blame History

运行规则

本文件承载稳定但不必放在顶层 SKILL.md 的运行规则。

接口影响分级

接口影响分级决定“记录在哪里”以及“是否需要独立接口文档”。凡涉及字段、DTO、service 方法、API、事件、回调、数据库契约、命令契约、跨模块调用语义,或内部决策逻辑改变可观察行为的变更,都必须先做分级。

级别 判断条件 产物要求
L1 内部实现 不改变调用方可观察行为 在 OpenSpec tasks 或 acceptance 记录验证
L2 内部接口 内部 DTO/service/event/RPC/decision-logic 变化,且所有消费者仍在同一实现边界内 在 OpenSpec design/specs/tasks 或 devflow evidence/decisions 中内联记录影响
L3 协作接口 影响其他模块/服务、前端、外部系统、跨团队消费者、数据库契约、事件、回调或 SDK 产出独立接口文档或等价独立章节
L4 破坏性接口 破坏兼容、改变语义/错误码/状态机、可能让旧调用方失败,或需要迁移/灰度/回滚 独立接口文档 + 迁移/回滚说明;必要时创建 ADR

判断启发:

  • 如果变更只是把接口恢复到原 OpenSpec 或既有文档承诺,通常是 L1 或 L2。
  • 如果决策逻辑改变了返回数据、错误码、状态、权限结果、排序/过滤、幂等性、时序或副作用,至少按 L3 检查。
  • 如果旧调用方不改代码就可能失败,或会观察到缺失/额外数据、不同状态或不同错误码,按 L4 处理。
  • 如果消费者边界或兼容性不明确,默认提高一级,并转成 user-interview 问题。

启动检查

  1. 判断启动模式:
    • 完整模式:用户提供粗略想法或初始 PRD。
    • Research 模式:用户已有 research,需要生成或修正 OpenSpec。
    • PRD 文件模式:用户提供已有 PRD 路径。
    • 指定阶段模式:用户希望从某个 Phase 恢复。
    • 快速模式:小改动;Phase 2 和 Phase 4 可以轻量化,但不能跳过。
  2. 如果缺少 devflow/,初始化:
    • devflow/projects/
    • devflow/glossary/CONTEXT.md
    • devflow/compound/
    • devflow/reference/
  3. 如果根目录旧 CONTEXT.md 存在,而 devflow/glossary/CONTEXT.md 缺失或为空,询问是迁移还是合并。
  4. 检查 OpenSpec 和辅助能力是否可用:
    • OpenSpec 能力:openspec-propose、openspec-apply-change、openspec-archive-change
    • 辅助能力:to-prd、grill-with-docs、diagnose、tdd、zoom-out
  5. 如果 OpenSpec 能力不可用,不要静默绕过;要走 fallback 协议,并在 Phase 3 前披露降级风险。

项目标识规则

  • 整个流程使用同一个 slug。
  • 优先使用 OpenSpec change name。
  • 如果还没有,则从功能标题生成 kebab-case slug。
  • 项目档案目录格式:devflow/projects/YYYY-MM-DD-{slug}/
  • 如果目录已存在,默认恢复该项目;除非用户明确要求新开一轮。

Devflow 产物分层

Devflow 是辅助 OpenSpec 的人类可读档案层,不应复制 OpenSpec 的执行产物。

必需产物:

  • brief.md:背景、目标、范围、非目标、分档、关联 OpenSpec change
  • evidence.md:代码/文档证据、历史决策、evidence-driven 结论、汇报状态
  • decisions.md:user-interview 条目、确认结果、取舍、风险接受、OpenSpec 回写记录
  • acceptance.md:结果、验证、未验证项、归档状态、后续事项

按需产物:

  • prd.md:复杂需求、用户明确要求,或需要对外协作
  • research.md:真实调研、代码考古、竞品/API 对比或复杂方案比较
  • design.md:不适合放进 OpenSpec design 的长期背景或架构审计摘要
  • tasks.md:跨会话的人类追踪;执行任务仍属于 OpenSpec
  • alignment.md / clarifications.md:仅在 gap 或澄清很多时使用
  • adr/*.md 和 compound/*.md:仅在满足 ADR / compound knowledge 规则时使用

分档:

  • micro:使用 brief.md、decisions.md、acceptance.md;证据很少时并入 brief.md
  • standard:使用 brief.md、evidence.md、decisions.md、acceptance.md
  • complex:standard 基础上按需增加 PRD/research/design/tasks/alignment

快速模式

快速模式只适用于小而低风险的变更。它可以压缩 Phase 1.5 和 Phase 2.5,但必须保留:

  • 最小 Phase 0.5 上下文收集:至少检查 glossary 和相关 ADR
  • 最小 Phase 2 澄清:至少一个术语问题、一个边界问题、一个验收问题;evidence-driven 结论仍需汇报
  • Phase 2.9 commit gate:确认没有未解决用户问题、接口影响已记录、OpenSpec tasks/specs 可执行
  • Phase 3 仍由 OpenSpec tasks/specs 驱动执行
  • 轻量 Phase 4 回填:记录验收结果、OpenSpec 链接和归档状态

完成标准

只有同时满足以下条件,流程才算完成:

  • OpenSpec proposal/design/specs/tasks 已生成或更新到可执行状态
  • 实现或规划工作已完成,且执行依据来自 OpenSpec
  • 已运行验证,或已记录未运行验证的原因
  • devflow/projects/YYYY-MM-DD-{slug}/ 包含所选分档要求的必要产物
  • 用户知道剩余风险与下一步,并已被询问是否归档 OpenSpec change