mcpField
W
workmap

workmap

github.com/wkentaroAgent 工作流038 次安装4 天前更新
代码仓库

关于 workmap

将当前对话整理为包含想法、项目、任务和待解决问题的结构化工作图。适用于追踪会话中的工作,同时不改动原有待办、文件或跟踪器。

主要功能

  1. 01基于对话的工作树
  2. 02项目与任务依赖关系
  3. 03任务状态标记
  4. 04拆分并重绘工作图
  5. 05稳定的节点 ID

适用场景

  1. 01汇总当前会话的工作
  2. 02将目标拆分为项目任务
  3. 03检查未决决定和阻碍

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/wkentaro/agent-skills --skill workmap

安装后在 Claude Code 中输入/workmap确认已加载。

附带文件agents/openai.yaml

详细介绍

Workmap

将当前对话中的工作绘制为工作图:一棵包含一个想法及其项目、任务和问题的树。工作图仅根据对话构建;绘制工作图不会改变工作本身、原生待办事项、文件或跟踪器。

节点

  • 想法:本次会话围绕的问题或目标,用一行表述。
  • 项目:一个目标,附带一行完成条件,并且与同级项目互不重叠。
  • 任务:一项可审核的变更;在代码仓库中,即一个 PR。
  • 问题:尚待解决的决策或未知事项。

这些名称指的是工作图中的工作单元,无论仓库自身如何称呼项目或任务。

这棵树也体现工作的顺序:

  • 项目的任务按列出顺序组成一个堆栈:每项任务都建立在列表中上一项任务的基础上,每项对应一个 PR,且每个 PR 都基于前一个 PR(GitHub 上的 gh stack)。∥ 表示该任务不属于堆栈。
  • 各项目并行推进,分别位于各自的工作树中。after P1 表示该项目须等待另一个项目。
  • touches: 用于标明项目会修改的领域;领域未知时省略。同一领域被两个项目修改时,这些项目就不再互不重叠:应合并项目,或用 after 排定先后顺序。

不属于任何项目的节点放在 Loose 下。没有项目的会话,其所有节点都放在 Loose 下。

拆分

用户说“拆分为项目”或“拆分为任务”时,只拆分该层并重新绘制。新节点在用户接受前标记为 [proposed];以用户最近一次明确决定为准。用户通过对话编辑工作图;每次变更后都要重新绘制。

范围

仅使用当前线程。将继承的上下文、父级上下文或侧边对话中的上下文视为解释背景,而非节点,除非用户明确将其纳入。

包括:

  • 明确提出的请求和已接受的行动。
  • 已开始或已完成的工作。
  • 承诺和具有重要影响但尚未回答的问题。
  • 正在讨论的重要选择、阻碍因素和延期跟进事项。
  • 具体的助手建议,并将其整合为可执行节点。
  • 具有重要影响但已被拒绝或取代的选择。

排除机械性工具步骤、次要头脑风暴、示例说明、没有对应行动或决策的事实、已由父节点表示的已完成子步骤,以及重复内容。

状态

为每项任务和问题使用固定的表情符号和文本:

  • ✅ [done]:已有可见证据或用户明确确认已完成。
  • 🔄 [in-progress]:已开始但尚未完成。若中断,添加 Interrupted at: 并保留此状态。
  • ⏳ [pending]:已同意且可执行,但尚未开始。
  • 💬 [discussing]:决策或方案仍未确定。
  • ⛔ [blocked]:正在等待输入、访问权限或外部事件。
  • ⏸️ [deferred]:有意推迟到满足某项条件后;条件明确时添加 Resume when:。
  • 💡 [proposed]:已具体提出,但从未被接受。
  • 🚫 [cancelled]:已被拒绝、取代或不再需要;有帮助时添加 Reason:。

若工作确实并行进行或被中断,多个节点可同时标记为 [in-progress]。只有在其任务状态未能体现项目状态时,才为项目标注状态,例如尚未拆分的 [proposed] 项目。

ID

项目使用 P1、P2;任务使用 T1、T2;问题使用 Q1、Q2。每类编号在整张工作图中全局递增,因此,移至另一个项目的任务仍保留原 ID。此后每次绘制,无论行内还是完整绘制,都要复用已有 ID,新节点使用下一个空闲编号,并且不再使用已退役的编号。如果压缩上下文后无法看到早先的工作图,说明无法保证 ID 连续性。

绘制

每个节点占一行。只有在省略后会隐藏依赖关系、阻碍因素、负责人、中断位置、恢复条件或关键证据时,才添加一个缩进的续行。仅当责任归属不明确或负责人并非 Agent 时,才标明负责人。项目的任务按堆栈顺序列出,其他节点按讨论顺序列出。

内联视图

在讨论中,只绘制回复涉及的节点,并围绕这些节点展开讨论。省略标题、Outcome so far 和 Next move,并在正文中使用节点 ID 来指代节点。关于某个节点的说明直接放在该节点下方:

P2 Sidebar clears the home indicator        after P1
├─ 💡 [proposed] T4 safe-area foot
│    could fold into T2: same file, ten lines
└─ 💬 [discussing] Q1 pad the foot or the whole sidebar?
完整视图

当用户按名称调用该技能或询问当前会话进展时,按以下格式绘制工作图。各部分之间空一行,相邻节点之间不留空行:

Workmap — <idea>

Outcome so far
<one-sentence outcome summary>

P1 <goal>                                   touches: <area>
├─ ✅ [done] T1 <change> (#<PR>)
├─ 🔄 [in-progress] T2 <change> (#<PR>)
└─ ⏳ [pending] T3 <change>
P2 <goal>                                   touches: <area>   after P1
├─ ⏳ [pending] T4 <change>
├─ ⏳ [pending] T5 <change>  ∥
└─ 💬 [discussing] Q1 <open decision>
💡 [proposed] P3 <goal>
Loose
└─ ⏸️ [deferred] T6 <change>
     Resume when: <condition>

Next move
<one-sentence recommendation, by ID>

请求

技能名称后面的文字说明用户想查看什么;绘制能回答该请求的完整工作图。若没有附加文字,则绘制当前的完整工作图。

  • 若要制定完成计划,例如列出仍需完成的堆叠式 PR:先将剩余工作拆分为任务,然后绘制每个项目的完整任务栈,包括 [done] 任务。
  • 若请求范围较窄,例如询问还剩什么或只想查看决策:仅绘制匹配的节点,并将每个节点放在其所属项目行下方。

评论

支持 Markdown