sop-forge:SOP → Skill 自动化生产线
实现 业务素材/SOP → Skill 设计手册 → Skill 的三层生产线,支持对话驱动迭代与全生命周期版本管理。
最高优先级原则:忠实还原
- 生成 SOP、设计手册、Skill 时完整保留用户材料的业务细节、术语、数字与步骤,禁止擅自精简、合并、改写业务语义。
- 允许结构化整理(分章节、列表格、画流程图),只允许改变组织形式,不允许丢失信息。
- 缺失项以"待确认"清单显式列出;补全建议须标注来源(
用户提供/系统补全建议),与用户原材料严格区分。 - 任何对用户素材的加工、调整、增删,经用户确认后方可写入正式产物。
其他设计原则
- SSOT:SOP 是单一事实源;设计手册与 Skill 是派生物,可从 SOP 重建。同步可双向,但收敛点永远是 SOP——下层手改内容须经用户裁决回写 SOP 后再正向级联。
- 人审节点:任何自动级联在发布前必须经用户确认。
- 纯文本产物:三层全部使用 Markdown/YAML。
工作区布局与命名
workspace/
├── sop/ # <流程名>sop文档-v<版本号>.md
├── design/ # <流程名>skill设计手册-v<版本号>.md
├── skills/ # <skill名>/(不加版本号)
├── versions/<流程名>/<semver>/ # 快照,含 sop/ design/ skills/ 三层完整副本,只增不改
├── registry.json # 注册表(scripts/registry.py 读写,schema 见 assets/registry.schema.json)
└── changelog/ # 变更单(格式见 references/version-policy.md)
命名规则:sop/design 文件名中的版本号必须等于 registry 的 current_version,版本升级时同步更名;工作目录只放当前版,历史只存 versions/。skill 名仅小写字母/数字/连字符(≤64 字符),中文流程名与 skill 名的映射登记在 registry skill_name 字段。Skill 文件夹格式与 SKILL.md 规范见 references/skill-anatomy.md。
八条核心工作流
WF-0 素材 → SOP 撰写与规范化
用户只有零散材料(纪要、表格、聊天记录、口头描述)时执行:
- 通读全部原始材料,完整保留,不做删减。
- 按 references/sop-template.md 的模板梳理为 SOP 草稿。
- 输出查漏补缺清单(缺失项 + 系统补全建议,严格区分来源),一次不超过 3 个关键问题。
- 逐条与用户确认;未确认的补全建议以
> ⚠️ 待确认:引用块留在草稿中。 - 确认后定稿写入
sop/<流程名>sop文档-v1.0.0.md,进入 WF-1 第 3 步。
WF-1 新建:SOP → 设计手册 → Skill
- 接收 SOP;若用户只有素材,先走 WF-0;若 SOP 不规范,按模板引导补全(补全须确认)。
- 运行
scripts/parse_sop.py <sop.md> --out /tmp/<流程名>.json生成结构化数据;歧义点向用户提问(一次不超过 3 个)。 - 运行
scripts/render_design.py /tmp/<流程名>.json --flow <流程名> --skill-name <skill名> --version 1.0.0 --draft --out design/<流程名>skill设计手册-v1.0.0-draft.md生成设计手册草案;补全<<<TODO>>>项(自由度标注、资源规划等),呈现给用户确认。草案不进注册表、不快照。 - 确认后去除
-draft后缀(三层统一定版 1.0.0),运行scripts/scaffold_skill.py create design/<...>.md --workspace <ws>生成 Skill 骨架,补全 SKILL.md 与资源文件。 - 运行
scripts/scaffold_skill.py validate skills/<skill名> --design design/<...>.md,全部 PASS 才允许发布。 scripts/registry.py <ws> add-flow+set-version 1.0.0+set-status active+set-lineage(三层 sha256)。- 快照三层至
versions/<流程名>/1.0.0/;写变更单。
WF-2 SOP 调整 → 级联更新
- 修改点先回写 SOP(保持 SSOT)。
scripts/diff_version.py sop <旧sop> <新sop>生成变更影响分析与 SemVer 增幅建议;触及 lock 章节时单独高亮(lock 语义见 references/design-manual-spec.md 第三节)。- 按 references/version-policy.md 确认版本号增幅。
- 呈现变更单(diff + 影响面 + 新版本号)供确认。
- 确认后级联重生成设计手册与 Skill(lock 章节保留手工内容),三层同步升版、sop/design 文件更名、快照、registry 指针前移。
WF-3 对话想法 → SOP → 设计手册 → Skill
- 用户在对话中提出流程优化想法时,先讨论成形,输出变更提案(改动点、理由、影响步骤),不直接改文件。
- 用户确认后先回写 SOP,再走 WF-2。
- 用户只想"记录待定"时,提案写入
changelog/,状态proposed,不触发级联。
WF-4 版本管理
list:scripts/registry.py <ws> get <流程名>+ versions/ 目录,列出版本/日期/状态/变更摘要/hash。diff v1 v2:scripts/diff_version.py snapshot versions/<流程名> <v1> <v2>,输出三向对比报告。rollback vN:复制versions/<流程名>/vN/三层副本回工作目录,新版本号 = 当前最新版 PATCH+1(内容同 vN),变更单type: rollback;不删除历史。tag:scripts/registry.py <ws> set-tag <流程名> <draft|staging|production> <版本号>。
WF-5 生命周期操作
状态机与操作语义见 references/version-policy.md 第四节。要点:
- pause/deprecate 时在目标 Skill 的 description 前注入警告横幅("⚠️ 已暂停,勿触发。" / "⚠️ 已弃用,建议改用 xxx。");resume 时移除。
- 状态变更不升版、不快照,只更新 registry
status并留存type: lifecycle变更单。 - 血缘 hash 对剥离状态横幅后的内容计算,避免 doctor 把横幅误判为漂移。
- retired 是终态;恢复须按 rollback 语义从 versions/ 快照发布新版本。
WF-6 一致性体检(doctor)
定期或用户要求时执行三项校验,发现问题生成修复方案交用户裁决:
- 血缘一致性:重算三层 hash(skill 剥离状态横幅)与 registry
lineage对比;lock 章节豁免。漂移修复路径:以 SOP 为准重建下层,或以手改层为准回写 SOP 后正向级联。 - 命名一致性:sop/design 文件名版本号 =
current_version;skill 文件夹名 =skill_name= SKILL.md 的 name 字段。 - 状态一致性:Skill description 的横幅存在性 ↔ registry
status。
WF-7 批量与依赖管理
- 声明依赖:
scripts/registry.py <ws> add-dep <流程名> <依赖流程名> --constraint ">=1.0.0 <2.0.0"。 - 某流程升版时遍历注册表,检查所有依赖它的下游流程的 constraint 是否仍满足新版本,列出受影响清单提示用户。
参考文件索引
- references/sop-template.md — SOP 模板、解析规则、查漏补缺清单格式(WF-0/WF-1 必读)
- references/design-manual-spec.md — 设计手册 8 章结构、生成规则、lock 机制(WF-1/WF-2 必读)
- references/version-policy.md — SemVer 映射、变更单格式、状态机(WF-2/WF-4/WF-5 必读)
- references/skill-anatomy.md — 目标 Skill 目录格式、命名规范、校验清单(WF-1 生成 Skill 时必读)
- assets/registry.schema.json — registry.json 结构定义