execplan
任务开工前用这个 skill 评估是否需要先写 spec。触发:涉及 ≥3 模块、>30 文件改动、>10 步骤、架构级决策、或用户说「先出方案 / 先写 spec」。生成的 spec 放 workspace/specs/
- License 许可
- MIT
- 所属仓库
- KarryViber/Orb
- 最近更新
- 2026-05-14
- Stars
- ★ 66
- Forks
- 8
01 前言 Front Matter
- name
- execplan
- provenance
- user-authored
- description
- 任务开工前用这个 skill 评估是否需要先写 spec。触发:涉及 ≥3 模块、>30 文件改动、>10 步骤、架构级决策、或用户说「先出方案 / 先写 spec」。生成的 spec 放 workspace/specs/
03 SKILL.md 正文
复杂任务(>10 步骤、>30 文件、跨会话恢复、需要 Karry 审阅后 agent 独立推进)前写一份 ExecPlan,让不知道任何上下文的新会话也能接着干完。
基于 OpenAI Codex Exec Plans + Yansu scenario-simulation 改造。
双层触发(与 skill-factory 对称)
即时层:任务开工前的 Gate
每次 worker 收到任务,开工前先评估复杂度(不向用户输出评估过程,只在命中时开口):
命中门槛(满足任一就必须提议):
- 任务涉及 ≥ 3 个模块 / 文件目录
- 预估 > 30 个文件改动 或 > 10 个有序步骤
- 架构级决策(新增存储 / 改 IPC / 增 cron / 改 schema)
- Karry 明说「先出方案」「先写 spec」「先想清楚」
- 预估单次 worker 无法完成(需要跨会话推进)
命中时的提议格式(任务回复的开头,而不是夹在中间):
:clipboard: 这个任务建议先写 ExecPlan
*理由*:{触发的具体门槛}
*spec 路径*:`workspace/specs/{kebab-name}.md`
*选项*:
- `写 spec` — 我先出 ExecPlan 供你审阅再开工
- `直接干` — 跳过 spec,立即执行
- `我来写` — 你自己写 spec
用户回复「直接干」或已显式给出简单指令 → 不再追问,正常执行。
用户回复「写 spec」→ 按骨架写完 ExecPlan 并 commit,等 Karry 在 ## 验收场景 段对场景拍板后再进实施 turn。
被动层:现有 spec 的活文档维护
进入 workspace/specs/{name}.md 相关任务时:
- 每个停顿点必须更新 Progress(勾选 / 拆分 / 时间戳)
- 发现意外 → Surprises & Discoveries 追加
- 改方向 → Decision Log 追加
- milestone 完成 → Outcomes & Retrospective 追加
- 每次 commit 带对应 spec 引用(
spec(xxx): ...)
聚合层:spec 健康度按需巡检
用户说「巡检一下 spec / 看看 spec 状态」时执行:
- 扫
workspace/specs/*.md,按 Progress 未勾选比例、最后更新时间排序 - 发现 Progress 停滞 > 7 天且未标完结 → 报告
- 发现 Outcomes 未填但最后 Progress 显示 100% → 提醒补 retrospective
- 不自动修改 spec 文件,只做诊断
不设 cron(2026-04-18 决定,遵循简洁原则)。
核心铁律
- 自包含:单个文件看完就能干活,不依赖「你之前说过」「见上一版」
- 活文档:边做边改 Progress / Decision Log,不是写完就扔
- 可验证结果:每个 milestone 描述可观测的行为(跑什么命令、看到什么输出),不是「加了个 struct」
- 绝对路径 + 具体命令:文件路径从 repo root 写全,命令写清 cwd
- 嵌入知识:需要的背景直接写进来,不要「参见某博客」
- 场景先于代码(2026-04-25 起):spec 草稿必带
## 验收场景段(≥3 条),Karry 拍板才进实施。借鉴 Yansu,挡前置理解错位
Orb 工作流约定
- 位置:
~/Orb/profiles/<your-profile>/workspace/specs/{task-name}.md - 命名:kebab-case,见名知意(
dm-routing.md/worker-zombie-cleanup.md) - 提交时机:ExecPlan 本身就是一个 commit,后续每个 milestone 完成也要 commit
- 不要在 ExecPlan 里再嵌套
代码块(用缩进块替代);顶层也不必用包裹整份文档 - 必带「执行」段:spec 末尾必须有
## 执行段,注明总 turn 预算;大改拆「调研 turn ≤ X」+「实施 turn ≤ Y」两段 - 必带「验收场景」段(2026-04-25 起):≥3 条 happy/edge/fail 场景,写完发 Slack 等 Karry 拍板后再开工
骨架(必须包含这些段)
# {动作短语标题}
## Purpose / 大图景
做完这个 Karry 能做什么之前做不了的?用户可见行为是什么?
## Progress
- [x] (2026-04-18 11:30 JST) 已完成项
- [ ] 待办项
## Surprises & Discoveries
- 观察: ...
证据: {日志/测试输出}
## Decision Log
- 决策: 用 A 不用 B
理由: ...
日期: 2026-04-18
## Outcomes & Retrospective
(收尾写)
## Context / 当前状态
假设读者零上下文。关键文件写全路径,定义每个术语。
## Plan of Work
散文描述:改哪些文件(全路径)、加什么、为什么。
## 验收场景 ← Karry 拍板 gate
列 ≥3 条具体场景,每条写「输入 → 期望可观测行为」。覆盖至少:
- **Happy path**:典型成功用例
- **Edge case**:边界 / 罕见输入 / 并发 / 部分失败
- **Failure mode**:明确的失败行为(报错文案 / 降级路径 / 不该发生什么)
写完发 Slack 等 Karry 确认。Karry 改场景 = spec 调整;Karry 点头 = 进实施。
## Concrete Steps
具体命令 + cwd + 预期输出片段。
## Validation / Acceptance
跑什么、看到什么——对应「验收场景」每条要可执行验证。
## Idempotence / Recovery
能不能重跑?失败如何回滚?
## Interfaces / Dependencies
涉及的模块、函数签名、IPC 协议。写全限定路径。
## 执行
总预算 ≤ N turn;若是大改,拆「调研 turn ≤ X」+「实施 turn ≤ Y」两次 codex session。
Milestone 原则
每个 milestone 独立可验证、增量交付。写 milestone 时讲故事:目标 → 工作 → 结果 → 证据。
什么时候更新 ExecPlan
- 每个停顿点:更新 Progress(必要时拆分「已做 X / 剩余 Y」)
- 发现意外行为:写入 Surprises,附证据
- 改变方向:写入 Decision Log,说明 why
- Milestone 完成:写 Outcomes 片段
- 大改完方向:文档底部加一条 revision note
反模式
- :x: 方案写一半,Progress 永远停留在 Day 1
- :x: 步骤抽象到「合理处理 X」「按架构调整」——新会话看不懂
- :x: 引用「上次那个 spec」但没 checked in
- :x: 验收写成「代码通过 lint」而不是「用户可看到的行为」
- :x: 每次停顿都不 commit,丢状态
- :x: 跳过验收场景评审直接进实施(场景先于代码是硬约束)
- :x: 验收场景写成「能跑 / work / 不报错」——必须是具体可观测行为
与 Orb 其他 skill 的分工
| 工具 | 用途 | 触发层次 |
|---|---|---|
execplan (本文件) |
把一次性复杂任务拆成可独立执行的 spec | 即时 gate + 周扫 |
skill-factory |
把重复工作流沉淀为可复用 skill | 即时提议 + 周聚合 |
state-assumptions-before-acting |
开工前显式化假设 | 任务进入实施前 |
commit-lineage |
commit message 锚定 spec/lesson | 每次 commit |
04 同仓库更多 Skills
webapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
vendor-doc-actionability
对外合作文档(交付文档 / POC 文档 / Solution Doc / 提案书)必须为每个「需对方执行」的动作写清具体操作入口(URL / 工单系统 / 脚本路径 / 联系人 + 联系方式 / 步骤编号)。Use when 给客户、vendor、合作方写交付文档、POC 文档、Solution Doc、提案书;或检视已有对外文档是否抽象到无法执行。
vendor-api-param-validation
第三方 API / SDK 集成开工前,强制先列参数 checklist 并对照官方文档逐项验证(名称 / 类型 / 必填 / 默认 / 上限),通过后再编码——不是「写完再调通」。Use when 新接 vendor API/SDK(Slack / LongPort / freee / LLM API 等)、既有集成追加新 endpoint 或新字段、用户说「调通某接口」「接入 X」「集成 X」。
truth-ladder
状态放行三层阶梯(attempted / observed / confirmed)—— 汇报任务、API、命令、消息或外部动作状态时强制分层,避免把"动作已发起"误写成"结果已达成"。Use when 准备写「任务已完成」「API 返回成功」「exit code 0」「用户已收到」「ok:true」类状态汇报;或在 cron 报告 / Slack 回报 / project status / receipt 中表达完成度时。
thread-object-realignment
长 thread 切题后的对象重定协议——thread 历史 ≥5 条且检测到切题信号时,回复前必做「用户最后显式问题对象 vs 待发回复对象」一致性校验,不一致则改写或反问。Use when Slack thread 历史 ≥5 条且当前用户消息出现切题信号(主题词突变、问句指向新实体、时间线跳跃、出现「另外」「话说」「回到 X」「换个话题」等切题语,或 ≥3 turn 后用户显式问题对象与最近 assistant 回复对象不同)。
theme-factory
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.