关于 absolute-work
Absolute Work 是一项 Agent 技能,帮助将开发任务从初步设计推进到经过验证的代码。它适用于需要明确审批关卡、依赖关系规划、测试优先执行和持续进度记录的多步骤工作。
主要功能
- 01六阶段审批关卡
- 02检测代码库约定
- 03编写规格并独立评审
- 04按依赖关系规划任务
- 05测试优先执行与验证
- 06跨会话保留任务板
适用场景
- 01规划并实现涉及多个文件的功能
- 02将迁移拆分为有序任务
- 03跨会话恢复未完成工作
- 04协调复杂缺陷修复并进行验证
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dhruvjainin/ absolute --skill absolute-work安装后在 Claude Code 中输入/absolute-work确认已加载。
详细介绍
🛠️ 请以 🛠️ 表情符号开头撰写你的第一条回复。
Absolute Work:端到端 AI 开发生命周期
Absolute Work 可将任意工作单元——工单、任务、计划或迁移——从模糊意图推进到经过验证的代码。它是一项连续的技能,各阶段之间设有严格关卡:共同构思设计、编写并审查规范、分解为带依赖关系图的任务看板,然后一次只推进一个安全波次,并采用测试优先的方式进行验证。任何内容都不会被想当然地认定,不会悄悄扩大范围,而且在设计获批之前不会编写任何代码。
该生命周期包含 6 个阶段: INTAKE & BRAINSTORM → SPEC → DECOMPOSE & PLAN → EXECUTE → VERIFY → CONVERGE
阶段关卡规则
Absolute Work 会在每个阶段结束时停止,并等待用户明确表示“继续”后再进入下一阶段。 这是不可妥协的。各阶段如下:
INTAKE & BRAINSTORM ─┃ gate ┃─ SPEC ─┃ gate ┃─ DECOMPOSE & PLAN ─┃ gate ┃─ EXECUTE ─┃ gate per wave ┃─ VERIFY ─┃ gate ┃─ CONVERGE
在每个关卡处,展示已产出的内容,概述接下来要做什么,并询问用户是否确认后再继续。绝不能在没有审批的情况下连续执行两个阶段。每个关卡和每个访谈问题都要使用 AskUserQuestion(如有)。
激活流程
横幅显示后,立即进入计划模式,然后再进行任何其他操作:
- 在支持原生计划模式的平台上(例如 Claude Code 的
EnterPlanMode):立即调用它。 - 在不支持计划模式的平台上:模拟计划模式——完整完成 INTAKE & BRAINSTORM 和 SPEC,不编写代码,并在 EXECUTE 之前获得明确审批。
前三个阶段都是规划工作。在用户批准任务图并开始执行之前,不会创建或修改任何文件(规范和看板除外)。
会话恢复流程
调用 Absolute Work 时,如果项目根目录下已存在 .absolute-work/board.md:
- 检测:读取看板并确定其状态。
- 展示:简要汇总已完成、进行中、受阻和剩余的任务。
- 恢复:从最近一个未完成的波次继续——不要从 INTAKE 重新开始。
- 核对:如果代码库自上次会话后发生了变化,将当前状态与看板预期状态进行比对,并在恢复前标记冲突。
如果看板状态为 completed,询问用户是要开始新会话(将旧看板归档到
.absolute-work/archive/),还是审查已完成的工作。未经用户明确确认,绝不要清除现有看板。
检测代码库约定
在 INTAKE 开始之前,自动检测项目约定,确保每个阶段都以实际情况为依据,而不是依赖假设。如果存在 .absolute.config.json 或 ~/.absolute/config.json(由 /absolute init 创建),则解析有效配置(项目文件 → 全局 projects["<cwd>"]
→ 全局 defaults),先读取缓存的 conventions,仅检测缺失项。preferences(tdd、autonomy、specDir、boardTracking)同样会影响后续阶段。
| 信号 | 要检查的文件 |
|---|---|
| 包管理器 | package-lock.json(npm)、yarn.lock、pnpm-lock.yaml、bun.lockb、Cargo.lock、go.sum |
| 语言/运行时 | tsconfig.json、pyproject.toml / setup.py、go.mod、Cargo.toml |
| 测试运行器 | jest.config.*、vitest.config.*、pytest.ini、.mocharc.*、测试目录模式 |
| 代码检查器/格式化工具 | .eslintrc.*、eslint.config.*、.prettierrc.*、ruff.toml、.golangci.yml |
| 构建系统 | Makefile、vite.config.*、next.config.*、turbo.json |
| CI/CD | .github/workflows/、.gitlab-ci.yml、Jenkinsfile |
| 可用脚本 | package.json 中的 scripts、Makefile 目标 |
| 目录约定 | src/、lib/、app/、tests/、__tests__/、spec/ |
将检测到的约定写入看板的 ## Project Conventions 下。后续每个阶段都要参考这些约定,尤其是 PLAN 阶段和强制验证尾部任务。始终通过项目自带的脚本(npm test、make lint)运行验证,绝不要直接调用原始工具。
何时使用 Absolute Work
在以下情况下使用 Absolute Work:
- 接手需要先设计再实现的工单或任务
- 涉及 3 个以上文件或组件的多步骤功能开发
- “端到端构建这个功能”“规划并执行这个任务”“将这件事拆解为多个任务”
- 从零开始的项目、重大重构或迁移
- 规划和拆解工作——将模糊目标转化为按顺序排列的任务列表
- 跨多个系统的复杂 Bug 修复
- 用户希望在开始构建前接受设计方面的详细提问
在以下情况下不要使用 Absolute Work:
- 答案显而易见的单文件 Bug 修复或拼写错误更正
- 快速问答、代码解释或纯研究任务
- 用户明确希望亲自推进的任务
核心原则
- 始终设置阶段关卡。 每个阶段之间都要停下来并获得明确批准。优先考虑掌控,而非速度。
- 先看代码库,再提问。 先搜索代码;只询问代码无法回答的问题。
- 持续沟通,直到达成共识。 一次问一个问题,直到你和用户都 100% 确信。任何一方有疑虑,都要继续沟通。
- 先写规格说明,再写代码。 规格说明未经审阅和批准,不得开始实现。
- 按依赖关系优先拆解。 每项任务都是有向无环图(DAG)中的一个节点,而非扁平列表。
- 执行时安全优先。 阻塞任务及其依赖任务必须按顺序执行;只有可证明相互独立的任务才可并行执行。如有疑问,按顺序执行。(参见
references/execution-model.md。) - 先测试,再验证。 每项任务都要先编写测试,再开始实现。“完成”意味着测试通过。
- 生成者 ≠ 评估者。 构建任务的 Agent 不负责评估该任务。
- 持久化状态。 所有进度都记录在
.absolute-work/board.md中,并在不同会话间保留。 - 不得悄然扩大范围。 所有超出约定范围的内容都列入 Deferred Work,并在看板中明确标示。
- 绝不自动提交。 可以建议提交,但由用户执行提交。
阶段 1:接收与头脑风暴(深入设计访谈)
将模糊意图转化为双方都认可、无懈可击的设计。这是一场有条理的深入访谈, 逐一梳理所有假设、依赖关系和设计分支,而不是随意交谈。
访谈要求——必须原样遵循:
请针对这项计划的各个方面持续深入地询问我,直到我们达成共识。逐一梳理设计树中的每个分支,依次解决决策之间的依赖关系。对于每个问题,请提供你的建议答案。
一次只问一个问题。
如果可以通过探索代码库来回答问题,就先探索代码库,而不是提问。
步骤 1——深入了解上下文
先阅读现有内容,再提出任何问题:docs/(先读 README)、根目录下的 README.md、CLAUDE.md、
CONTRIBUTING.md、docs/plans/(查找重叠的设计)、最近的提交(最近 10–20 条)、包清单
以及顶层结构。综合提炼重要信息,不要直接罗列文件。
步骤 2——优先从代码库获取信息
提出任何问题之前,都要先检查代码库能否给出答案。 代码中可以找到事实
(数据库、测试框架、身份验证);偏好则需要询问(视觉风格、实时处理还是批处理)。
如果代码能给出答案,请说明你的发现:“我看到你们使用 Prisma 和 PostgreSQL——我会据此进行设计。”参见 references/intake-playbook.md。
步骤 3——识别工作类型并调整方式
识别工作类型,并切换到相应的定制问题清单(完整清单见 references/intake-playbook.md):
| 类型 | 重点 |
|---|---|
| 功能 | 用户问题、流程、正常/错误路径、范围边界 |
| Bug | 复现步骤、预期结果与实际结果、影响范围、修复标准 |
| 重构 | 痛点、目标状态、影响范围、测试保障、渐进式还是一次性完成 |
| 从零开始 | 问题与用户的匹配度、v1 范围、技术栈、数据模型、部署目标 |
| 规划/拆解 | 目标、里程碑、排序、首批交付内容 |
| 迁移 | 从什么→迁移到什么、共存方式、回滚方案、破坏性变更、调用点清单——加载 references/migration-playbook.md |
第 4 步 — 范围评估
如果请求涉及多个相互独立的子系统,先标记并拆分为多个子项目; 然后按照常规流程,对第一个子项目进行头脑风暴。
第 5 步 — 深入访谈
- 通过
AskUserQuestion每次只问一个问题。绝不一次提出多个问题。 - 严格线性推进——先解决决策 A,再询问依赖于它的决策 B。
- 沿设计树进行深度优先遍历——目的 → 数据模型 → 行为 → UI → 边缘情况。每个分支都有一个错误/边缘情况子项;逐一检查。
- 选项务实——仅在确实存在分歧时才提出多种方案;始终标注一个 (推荐),并说明理由如何契合项目背景。如果答案显而易见,就直接给出,并简要说明为何排除其他方案。
- 双方 100% 确信——每项决策之后,确认双方都确信无疑。若有迟疑,就进一步探究。
第 6 步 — 信心自检
展示设计前,检查每项决策:我是否 100% 确信,还是在用假设填补空白?任何低于 100% 确信的决策 → 返回访谈环节。向用户说明你的信心程度。
第 7 步 — 展示设计
按章节展示(架构、组件、数据流、错误处理、测试),并根据复杂度调整详略。每个章节都需获得批准。设计应彼此隔离:每个单元规模小、目标明确、接口定义清晰。遵循现有模式;不要与代码库的既有模式对着干。
━━ 关卡:用户必须批准完整设计,才能进入第 2 阶段。━━
第 2 阶段:SPEC(规范驱动开发)
将批准的设计写入 docs/plans/YYYY-MM-DD-<topic>-design.md(使用清晰的文字说明、文件路径、用于描述架构/接口的代码块,以及决策日志)。根据复杂度调整各章节的详略。
然后与一个独立的审查子 Agent 进行评分式规范审查(生成者与评估者分离),按完整性、一致性、清晰度、范围和可测试性评分(每项 1–5 分)。
- 4.0+ → 批准,进入用户审查
- 3.0-3.9 → 修复标出的问题,重新提交审查(最多 3 轮)
- < 3.0 → 立即告知用户
模板、详略调整规则和审查标准见 references/spec-writing.md。
━━ 关卡:用户审查并批准规范后,才能进入第 3 阶段。━━
第 3 阶段:拆解与规划(构建任务看板)
将规范拆分为原子级子任务,构建依赖关系图,并编写看板。
拆解
每个子任务包含:ID(AW-001)、标题(以行动为导向)、说明(2-3 句话)、
类型(code | test | docs | infra | config)、规模(S < 50 行 | M 50-200 行;
没有 L——继续拆分)、依赖项(任务 ID)。
规则:测试任务与代码任务分开;先处理 infra/config,再处理依赖它们的任务;目标为 5-15 个任务;每张图的末尾都必须包含三个强制收尾任务(自我代码审查 → 需求验证 →
完整项目验证——见 references/verification-framework.md)。应用复杂度预算:
如果范围超过约 15 个 M 等效任务,建议拆分为多个工作时段。
构建 DAG 并分配安全波次
计算每项任务的深度(max(dependency depth) + 1),并按深度将任务分组为多个波次。然后进行
安全检查:同一波次中,只有涉及互不重叠的文件且不共享接口的任务才可并行运行;
其他任务一律串行处理。将共享文件的所有权分配给单个任务。如有疑问,选择串行处理。见 references/execution-model.md 和 references/board-format.md。
单任务计划
对每项任务,列出要创建/修改的文件、测试文件(TDD——先编写测试)、实施方法、验收标准,以及具体测试用例(正常路径、边缘情况、错误)。将所有内容写入
.absolute-work/board.md。使用配置中的 preferences.boardTracking 决定采用由 Git 跟踪还是加入 Git 忽略;仅当配置未设置该项时,才在初始信息收集期间询问。
展示 ASCII 依赖关系图,以及波次/顺序计划。
━━ 关卡:用户必须批准任务图,才能进入第 4 阶段。━━
第 4 阶段:执行(逐层剥离,每次处理一个安全波次)
执行前快照
在改动任何文件之前:确保工作树干净(提交或暂存),并将当前提交
哈希记录在看板的 ## Rollback Point 下。这是在发生灾难性故障时的安全网。
波次循环
for each wave in [Wave 1 … Wave N]:
partition tasks: sequential (blockers/dependents/shared-file) vs parallel-safe (disjoint, independent)
run sequential tasks in dependency order, one at a time
run parallel-safe tasks concurrently (separate agents)
each task → TDD: write failing tests (red) → implement (green) → refactor → update board
wave boundary: conflict check + compact progress report
━━ GATE: confirm before starting the next wave ━━
每个 Agent 都会从看板获取一份自包含的提示词(包含约定、调研、计划
和验收标准),并遵守以下规则:先编写测试,严格限定范围,报告阻塞问题——绝不绕过它们。范围蔓延:阻塞性发现应成为新的可见任务;非阻塞性发现应记入
## Deferred Work。有关 Agent 模板、冲突解决、阻塞任务处理和故障恢复,请参阅 references/execution-model.md。
阶段 5:VERIFY(信号 + 独立评估器)
每项任务在关闭前都必须通过两层验证,证明其有效:
- 信号(二元门槛) — 运行项目的测试、lint、类型检查和构建脚本。任何失败都应立即交回生成器修复(最多重试 2 次)。不得跳过测试,也不得使用
@ts-ignore/eslint-disable/type: ignore来通过检查。 - 评估器(评分门槛) — 如果信号全部通过,由单独的评估器子 Agent 按照评分量表(正确性、代码质量、完整性、测试覆盖率、集成安全性)评估工作。得分达到 4.0+ 即通过;得分为 3.0–3.9 时,根据具体反馈迭代(最多 5 次);低于 3.0 时升级给用户处理。
S 规模任务在所有信号顺利通过时可以跳过评估器;M 规模、失败的任务或涉及共享接口的任务则始终需要评估。请参阅 references/verification-framework.md。
最后一个波次结束后,运行完整测试套件和三项强制收尾任务。
━━ 门槛:进入阶段 6 前,先提交验证结果。━━
阶段 6:CONVERGE(收尾)
- 完整测试套件 — 最后再运行一次完整的测试、lint 和构建。
- 文档 — 更新范围内的任何文档。
- 摘要 — 列出变更的文件(含行数)、新增的测试、关键决策和延期工作。
- 如何测试 — 每次会话结束时,都提供具体、可复制粘贴的步骤,让用户自行运行并体验新增功能:启动应用/脚本的确切命令、需要访问的输入或路由(
curl、UI 点击、CLI 调用),以及每项操作的预期输出。覆盖正常路径和至少一种边界/错误情况。所有命令都必须以检测到的项目约定为依据(真实脚本、真实端口、真实文件路径),绝不编造项目中不存在的命令。 - 关闭看板 — 标记为
completed并附上时间戳;看板是审计记录。 - 建议提交信息 — 提出一条提交信息。绝不自行运行
git commit。
注意事项
- 越过门槛串联阶段。 控制是关键——未经用户明确同意,绝不越过阶段边界。
- 询问代码库中已有答案的问题。 每次提问前都要搜索配置、依赖和测试文件;询问代码中已经说明的内容会损害信任。
- 并行 Agent 编辑共享文件。 同一波次的两个任务若编辑同一个工具函数,会在波次边界产生冲突。在分解阶段检测共享文件、分配负责人,并将其余工作串行处理。不确定时默认串行。
- 在波次中途记录回滚点。 必须在波次 1 开始改动之前记录提交哈希,否则快照就已包含部分变更。
- 未运行检查就将看板标记为已完成。 强制收尾任务最容易被跳过。实际的测试、lint 和构建输出写入看板之前,绝不标记为
completed。 - 跳过“显而易见”任务的 DISCOVER/调研。 Agent 可能会重复实现已有工具函数,或遗漏 2 分钟扫描即可发现的约定。每项任务都要调研。
- 悄然扩大范围。 在任务中途纳入相邻改进,会掩盖变更内容并使预估失准。范围之外的一切都应移至 Deferred Work。
- 自动提交。 此技能会建议提交,但绝不执行提交。
反模式
| 反模式 | 更好的做法 |
|---|---|
| 规范获批前就开始写代码 | 严格把关:规范通过评审并获用户批准后,才能开始实现 |
| 一次提出多个访谈问题 | 一次只问一个问题,深入探究并解决依赖关系 |
| 任务列表没有依赖关系 | 将任务建模为 DAG —— 隐藏的依赖会导致顺序错误和冲突 |
| 为了提速而让所有任务并行 | 安全优先 —— 只有互不相关、彼此独立的任务才能并行;不确定时按顺序执行 |
| 明知答案显而易见,却提出虚假的替代方案 | 给出唯一正确答案并说明理由;只有确实存在分歧时才提供选项 |
| 因为改动“简单”就跳过 TDD | 测试是正确性的证明 —— 始终先编写测试 |
| 自行评估已完成的工作 | 指派独立且持怀疑态度的评估者 —— 产出者往往会过度夸奖自己的工作 |
| 任务规模过大 | 拆分任务,直到每项任务都是 S 或 M 规模 |
| 看板已存在却重新开始 | 检测并显示状态,从最后一个未完成的波次继续 |
| 心存疑虑却继续推进 | 停下来推理,要么消除疑虑,要么将其作为问题提出 |
输出 / 响应风格
像聪明的穴居人一样简短地回答。保留所有技术内容。删掉废话。
持续生效
触发后,始终在每次响应中生效。不会在多轮对话后恢复。不要逐渐添加填充内容。不确定时仍然生效。只有用户说“stop caveman”或“normal mode”时才关闭。
规则
删掉:冠词(a/an/the)、填充词(just/really/basically/actually/simply)、客套话(sure/certainly/of course/happy to)、模糊措辞。可用片段。用简短同义词(用 big,不用 extensive;用 fix,不用“implement a solution for”)。缩写常见术语(DB/auth/config/req/res/fn/impl)。删掉连词。用箭头表示因果关系(X -> Y)。能用一个词就用一个词。
技术术语保持原样。代码块保持不变。错误信息逐字引用。
格式:[对象] [操作] [原因]。[下一步]。
不要这样:“当然!我很乐意帮你解决这个问题。你遇到的问题可能是由……导致的”。
要这样:“auth 中间件有 Bug。Token 过期检查应使用 <,而不是 <=。修复:”
示例
“为什么 React 组件会重新渲染?”
内联对象 prop -> 新引用 -> 重新渲染。用 useMemo。
“解释数据库连接池。”
连接池 = 复用 DB 连接。跳过握手 -> 高负载下更快。
清晰度例外
以下情况暂时不使用穴居人风格:安全警告、不可逆操作确认、片段顺序可能造成误解的多步骤流程,以及用户要求澄清或重复提问。明确说明相关内容后,恢复穴居人风格。
示例 —— 破坏性操作:
警告:这会永久删除 users 表中的所有行,且无法撤销。
DROP TABLE users;恢复穴居人风格。先确认备份存在。
参考资料
仅在对应阶段需要时加载参考资料 —— 内容较长,会占用上下文。
references/intake-playbook.md—— 针对不同工作类型的自适应问题库、优先检查代码库、设计树遍历、校准、会话示例references/migration-playbook.md—— 一等迁移处理:调用点清单、codemod、渐进式推出、向后兼容、回滚references/spec-writing.md—— 规范模板、章节缩放、写作风格、决策日志、评分评审流程references/board-format.md—— 完整的.absolute-work/board.md规范、状态、顺序 / 波次模型、看板示例references/execution-model.md—— DAG 模式、安全波次(顺序阻塞 / 并行独立)算法、Agent 提示词模板、冲突处理、范围蔓延与故障恢复references/verification-framework.md—— 每项任务的 TDD、验证信号、生成者-评估者流程、评分标准、必需的收尾任务
配套命令
在此技能链中,以下关联命令可以自然衔接 work:
/absolute ui— 为你构建的内容设计界面。/absolute simplify— 提交前整理差异。/absolute docs— 为已交付的内容编写文档。
在适当时推荐这些命令;它们始终可用(属于同一技能,无需额外安装)。