workflow-template-1
Skill1 starsChanged 8 days agoMITView on GitHub
Use when a task needs more than ~3 steps, will span sessions, or must be handed to another session — an eight-node delivery workflow (recon, report, decision, implement, verify, gate, commit, acceptance) with five named rework edges and a HANDOFF skeleton. 工作流模板、多步交付、跨会话接手、返工环、HANDOFF 骨架、交接.
In this repository11 other files it gives its agents.
- agent-execution-hygieneSkill
- change-verification-with-evidenceSkill
- dsh-upgrade-pitfallsSkill
- git-remote-disaster-recoverySkill
- recurring-root-cause-atlasSkill
- session-handoffSkill
- skill-evolutionSkill
- source-code-recovery-from-pycSkill
- when-measurement-liesSkill
- when-to-rollback-or-not-changeSkill
- windows-path-damage-diagnosisSkill
The file
Files
⚠️ 注意:本模板沉淀自特定项目,加载后请首先评估当前项目是否适用,切勿无脑套用。
⚠️ 使用前必读(给后来的智能体)
这份文件是"某个项目里跑出来的一套工作流模板",不是通用标准。 它来自一个真实项目连续数十轮任务的复盘(含失败的返工),因此带有那个项目的形状: 一次一条命令的授权方式、特定的门禁命令、特定的留档目录。
请先做三件事,再决定要不要采纳:
- 判断适配性:本项目的"完成"怎么定义?门禁是什么?谁能批准?留档放哪? 若与模板不符 —— 改模板,不要改事实。
- 只取能对上的部分:8 个节点里通常 5~7 个能直接对上;对不上的(例如没有独立验收人)就删掉该节点, 并在你自己的流程文档里写明"为什么删"。
- 返工环必须保留:只画直线(侦察→实现→验证→提交)的流程会骗人。真实项目一定有返工。
另:文中的"卡片 / 改动编号 / commit hash"是该项目的原始记录,仅作实证注解,不要照搬其命名。
工作流模板 1:从症状到验收(8 节点 + 5 条返工边)
适用
- 需求 / 故障驱动的单次任务(有明确的"要修什么 / 要做什么")
- 跨会话接手(配一份"项目状态文档"一起用:流程看这份,状态看那份)
不适用
- 纯探索性调研(只为搞清一件事、不打算改代码)—— 只走节点 1~2
- 事故应急(源码损坏 / 环境变量损坏等)—— 直接进对应的事故恢复技能,不走完 8 个节点
流程形状(★ 带返工环,不是流水线)
┌──────────────── 返工环(真实发生过,必须画出来)────────────────┐
│ │
┌──────┐ ┌──────┐│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│ 侦察 │──▶│ 报告 │┴─▶│ 拍板 │──▶│ 实现 │──▶│ 验证 │──▶│ 门禁 │──▶│commit│──▶│ 验收 │
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘
▲ │ │ │ │
│ ┌──── 退回收侦察 ◀────────┘ │ │ │
│ │ │ │ │
│ └──── 验证红 ⇒ 改实现 ◀───────────────┘ │ │
│ │ │
│ 门禁红 ⇒ 回滚 / 改架构(判据见「何时该回滚不改」)┘ │
│ │
└──────────── 验收打回 ⇒ 回到"侦察"(不是回到"实现")◀───────────────────────┘五条返工边(为什么必须有)
| 返工边 | 什么时候会发生 |
| 实现 → 侦察 | 实现到一半发现作用层错了(改的地方根本不是问题所在层) |
| 验证 → 实现 | 第一版修复量出来仍不达标(差一点点,但方向对) |
| 门禁 → 回滚 / 改架构 | 门禁红,且半成品会退化已发布效果 |
| 验收 → 侦察 | 用户报"还是有毛病" —— 先确认是不是回归,再决定改什么 |
| 节点内自环(侦察 → 侦察) | 一次侦察给不出结论是常态:症状 A → 查到 B → B 又需要查 C |
节点详表
| # | 节点 | 入口条件 | 产出物 | 出口条件 | 挂哪些技能 |
| 1 | 侦察 | 有症状/需求,但根因未知 | 现场事实:数字、代码位置、复现步骤、缺什么证据 | 能回答"根因是什么";答不上就明说缺证据 | 测量工具会骗人(主)· 同一病根反复出现 · 事故恢复类(仅当是那类事故) |
| 2 | 报告 | 侦察有结论(或确认缺证据) | 结构化报告:事实 → 根因 → 方案对比 → 建议 → 待确认清单 | 决策者能据此拍板;含"不知道的部分" | 测量工具会骗人 · 何时该回滚不改(方案对比要含"不改"选项) |
| 3 | 拍板 | 报告已交 | 授权(范围 + 理由) | 决策者明确说"做" | 何时该回滚不改 |
| 4 | 实现 | 已授权 | 代码改动 | 真跑过一次 + 既存检查不破(编译通过不算) | 同一病根反复出现 · 执行卫生(写→验→跑 / 复制先扫未定义名) |
| 5 | 验证 | 实现完成 | 证据:数字 / 对照 / 回归结果 | 每条证据都能回答"如果没改会怎样";指标只对目标敏感 | 改动的验证要有证据(主)· 测量工具会骗人 |
| 6 | 门禁 | 验证通过 | 退出码 + 明细 | 全部门禁为 0,且输出非空(空结果 = 失败) | 改动的验证要有证据 · 执行卫生(重定向前建目录) |
| 7 | commit | 门禁绿 | 1~N 张 commit(一主题一张) | 工作树干净;消息含"为什么 + 数字" | 同一病根反复出现 · 执行卫生(提交前后各跑一次门禁) |
| 8 | 验收 | commit 落地 | 决策者的"通过 / 打回" | 决策者明确答复 | 何时该回滚不改 |
⚠️ 只有人能验收 —— "完成"是决策者的动作,不是执行者的自评。
横切关注点(不占节点,但每步都适用)
① 授权与范围
- 高危动作(删文件、改配置、动用户数据、放宽权限)逐条说明理由并取得同意; 授权粒度按项目风险定(高风险项目 = 一次一条)。
- 权限被拒时按提示重试一次并附理由,不要反复试;被拒本身是信息,写进报告。
② 留档分层(过程产物 vs 结论)
| 类别 | 去哪 | 规矩 |
| 过程产物(探针、临时目录、门禁输出) | 临时目录(已被版本控制忽略) | 用完即删;结论必须先提取出来 |
| 对照物(A/B 截图 / PDF / 数据快照) | 独立对照目录(按任务命名) | 文件名带方向(A_修前 / B_修后)+ 同目录一句话结论 |
| 结论 + 数字 | commit 消息 / 项目状态文档 / 设计文档 | 这是唯一能跨会话存活的东西 |
③ 新教训(本模板第二轮补充)
- 编译通过 ≠ 可运行:改完必须真跑(
NameError/UnboundLocalError都发生在"编译绿"之后)。 - 验收指标只对目标敏感:别把无关信号算进阈值(例:中文全角括号因折行单独成行 vs 英文括号)。
- 门禁输出为空 = 失败:重定向到不存在目录会得到空文件,必须显式判空。
可移植规律(跨项目)
| # | 规律 | 一句话理由 |
| 1 | 侦察与实现必须分开 | 先出架构/根因报告,确认后才写代码,避免在错层上打补丁 |
| 2 | 执行前给命令清单并等授权 | 授权是决策者的动作;执行者不能自批 |
| 3 | 失败也是产出,必须如实写进报告 | 隐瞒失败会让下一个人重走一遍 |
| 4 | 只在"内部函数层"验证不算完 | 端到端跑一遍真实数据,才算证据 |
| 5 | commit 粒度 = 一主题 | 门禁红时能立刻定位是哪处引起的 |
| 6 | 门禁之外还要"现场重跑" | 门禁绿了,仍要用用户那条真实数据跑一次 |
项目状态文档骨架(与流程配套,11 节)
| # | 章节 | 回答什么问题 | 可移植性 |
| 1 | 一句话 | 这是什么项目 | ✅ 必留 |
| 2 | 技术栈 | 用什么跑的、版本 | ✅ 必留 |
| 3 | 架构 | 代码在哪、谁负责什么 | ✅ 必留 |
| 4 | 关键设计 | 为什么这样设计(决策而非实现) | ✅ 必留 |
| 5 | 测试与验证 | 有哪些门禁、怎么跑、注意事项(数字随门禁同步) | ✅ 必留 |
| 6 | 项目规范 | 代码怎么写 + 怎么协作 / 怎么报告 | ✅ 必留 |
| 7 | 当前进度 | 做到哪了、下一步 | ✅ 必留 |
| 8 | 已知遗留(坑 + 触发条件) | 哪些坑已知、什么条件下会爆 | ✅ 必留(最有价值的一节) |
| 9 | 路径速查 | 关键文件 / 解释器 / 沙箱在哪 | ⚠️ 项目特化 |
| 10 | 启动与部署 | 怎么跑起来 | ⚠️ 项目特化 |
| 11 | 发布待办 | 对外发布前要做什么 | ⚠️ 可选 |
两条元规则(骨架里必须固化)
- 每条遗留必须带"触发条件" —— 否则接手者不知道什么时候该动它;
- 每条"不改"决策必须带"理由 + 当时数字" —— 否则下一个人会重新提一遍。
移植到新项目(清单)
- 复制本文件当骨架,保留第 1~8 节点与 5 条返工边(这是骨架主体)。
- 替换三处项目特化:门禁命令、留档目录、授权方式。
- 删掉对不上的节点(并在你的文档里写明"为什么删")。
- 新建你的"项目状态文档"(用上面的 11 节骨架),先把第 8 节写起来。
- 把"挂哪些技能"换成你实际拥有的技能名(本模板末尾有索引示例)。
- 第一次跑完后回来改模板:把你踩到的返工边补进"五条返工边"表。
维护
| 触发 | 动作 |
| 新增 / 重命名一份技能 | 更新 §技能索引 + 节点详表的"挂哪些技能"列 |
| 流程节点变化 | 改 §流程形状 与 §节点详表,并在"返工边"表补实证 |
| 某条"规律"被证伪 | 直接从 §规律 删掉(留一句"曾以为 X,实测否"更好) |
| 移植到新项目 | 按 §移植到新项目 清单走一遍 |
这份文件自己也要遵守的原则
- 只写"什么时候用哪份",不重复技能正文(否则两处会打架)
- 每条结论尽量带实证(commit hash / 数字),不要写成"最佳实践"式空话
- 返工环不能删 —— 它是这份文件存在的理由(只画直线会骗人)
技能索引(迁移后口径:技能目录名,而非旧 .md 文件名)
| 技能名(目录名) | 类型 | 挂哪个节点 | 一句话用途 |
source-code-recovery-from-pyc | 入口绑定 | 1(应急) | 源码被编码往返 / 误操作破坏时,用编译产物反演逐段恢复 |
windows-path-damage-diagnosis | 入口绑定 | 1(应急) | 命令突然找不到时,用注册表键时间 + 形态判据定位 |
when-measurement-lies | 节点挂载 | 1 / 2 / 5 | 数字不对先怀疑尺子:六层分类 + 换口径工具箱(含原则 7/8) |
change-verification-with-evidence | 节点挂载 | 5 / 6 | 七类证据 + 「完成」四段式 + 删除走可恢复路径 |
when-to-rollback-or-not-change | 节点挂载 | 2 / 3 / 6 / 8 | 五条判据 + 层错判三信号 + 幂等性自检 + 回滚清单 |
recurring-root-cause-atlas | 节点挂载 | 1 / 4 / 7 | 病根谱系(含病根 ⑧:同一根因多落点只修一处) |
agent-execution-hygiene | 节点挂载 | 4 / 5 / 6 / 7 | 执行卫生:写→验→跑、空输出=失败、编译≠可运行、提交前后各跑门禁 |
实战案例与复盘
以下为该项目当时的一手记录,保留原始术语(卡片编号 / commit hash / 具体命令),仅作方法论的实证注解。
- 返工边 · 实现 → 侦察:卡片 H 的片级放宽第一次作用层错(在 region 级判"无中文"必然为假)⇒
回侦察改在 region 内部再切一层(
bbe6a00);卡片 L 先出架构报告、用户确认"写代码"才动手(acefa66)。 - 返工边 · 验证 → 实现:卡片 M 的第一版修复按 493.23 钳制后仍越界 6.00pt ⇒ 改实现为 481.23(
081ab05)。 - 返工边 · 门禁 → 回滚:集题本切片器重写架构错误 ⇒ 回滚到
23b6a5e; "重做"现场试做更差 ⇒os.replace放回备份(276baa7)。 - 返工边 · 验收 → 侦察:笔记 PDF "乱码"报回来 ⇒ 先侦察(是否 H2b 回归?)才动手,
结论是"新 tex 触发了预存在路径"(
acefa66)。 - 节点内自环:乱码 → 越界 → 6pt 内边距 → …(一次侦察给不出结论是常态)。
- 规律 1 实证:卡片 L 先出架构报告(含 5 组反例、函数位置、边界),用户确认后才写代码(
acefa66)。 - 规律 5 实证:卡片 L:实现一张(
acefa66)、测试+截图一张(5d12857); 卡片 O:实现一张(e2d3838)、文档一张(98e3a9f)。 - 规律 6 实证:卡片 L/M:
--selftest绿了,仍要用用户那条真实数据重跑(verify_L:文字层 62 → 141 字)。 - 本项目形态(节点详表末列):门禁 =
python -m src.main --selftest/--smoke; 跑时输出先落文件再读(控制台会把中文转 GBK);探针写data/tmp/(gitignore); A/B 截图 →docs/screenshots/<卡片名>/;commit 消息写文件 +git commit -F(绝不用-m)。 - 两份历史遗留教训(本模板第 3 条横切由此而来):
NameError: name 'logging' is not defined(编译绿、运行炸,自检44/1);UnboundLocalError: cannot access local variable 'hit'(从相邻函数复制代码带进孤儿变量,四份 PDF 全部 build 失败)。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

