关于 task-forest
task-forest 是面向不同 Agent 的技能,用于维护工作区任务结构、提案、进度和历史。它导出独立的只读 HTML 视图,并要求正式修改任务图前先获确认。
主要功能
- 01管理任务图与进度
- 02通过提案修改任务图
- 03HTML 导出含历史回放
- 04跨平台 Python 脚本
- 05可选工作区发现注册表
适用场景
- 01跟踪已完成和进行中的任务及其必要上级
- 02审核任务图变更提案后再应用
- 03分享独立的任务进度与历史视图
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dongshuyan/ compass-skills --skill task-forest安装后在 Claude Code 中输入/task-forest确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/task-forest-overview.htmlreferences/concurrency.mdgoal-alignment.mdhtml-visualization-contract.mdintegration-contract.mdnode-types.mdschema.mdsession-close-workflow.mdscripts/task_forest_html.pytask_forest_ordering.pytask_forest.pyvalidate_task_forest_export.py详细介绍
Task Forest
用途
维护当前工作区的任务结构、提案、历史记录和进度。生成一份独立的 HTML 交付物,让初次阅读者无需打开其他任务列表或内部文件即可理解内容。
任务内容、提案、报告和 HTML 均使用用户所用的语言;若语言未知,默认使用中文。
可移植性
此技能与 Agent 无关。将整个 task-forest 目录安装到主机支持的任意技能位置,然后从包含此 SKILL.md 的目录解析脚本、引用和资源。不要假设特定的 Agent 名称、技能根目录、主目录布局、Shell、路径分隔符或操作系统。
使用主机上可用的 Python 3 启动器(python3、python 或 py -3)。脚本使用 Python 标准库,并支持 macOS、Linux 和 Windows。若要在任务历史记录中标记调用方 Agent,请设置 COMPASS_AGENT_NAME 或 AGENT_NAME,或者传入 --actor;否则使用中性值 agent。
核心规则
- 只能通过
scripts/task_forest.py读取和写入任务森林数据;绝不要手动编辑.agent-workbench/task-forest/中的规范文件。 - 每个节点使用一个主要的
child_of父节点;使用contributes_to表示次要归属,使用depends_on表示前置依赖。 - 将图结构变更保存为提案,并等待用户确认后再运行
proposal-apply --yes。 - 将低置信度推断保留在问题或提案中。将重要的执行偏差记录为偏离。
- 使用通俗易懂的语言编写对用户可见的任务标题和用途。读者无需了解
P04等内部代码或阅读其他文件,就能理解任务交付的内容、任务存在的原因以及已完成的工作。 - 仅导出一个 HTML 界面:
exports/task-forest.html。它展示done、in_progress任务及其必要的child_of祖先节点,并支持历史回放。不要在 HTML 中公开内部讨论、证据、队列、文件系统路径、会话或提案内容。 - HTML 交互必须为只读。正式变更始终通过提案工作流进行。
- 默认将任务数据和发现元数据保存在仓库本地。可选择启用跨工作区发现:只有在用户明确选择启用并设置
TASK_FOREST_ENABLE_GLOBAL_REGISTRY=1后,才可启用。此操作会将轻量级工作区路径和健康摘要写入AGENT_WORKBENCH_DB;若未设置该变量,则写入~/.agent-workbench/agent-workbench.sqlite3,且绝不会存储任务内容。
主要工作流
初始化、更新或结束会话时:
- 运行
init。 - 读取
list --json和todo --json。 - 确定本次会话服务的全局目标,以及必须保持可见的任务结构。
- 如果工作区有权威任务列表,则对每个
done或in_progress任务保留其有意义的目标 -> 阶段 -> 模块 -> 具体任务层级和同级顺序。包含必要的祖先节点,省略完全未启动的分支,并将额外修复任务归入其所改进的功能下。绝不要将多个阶段合并为一个节点,也不要依赖边的创建顺序。如果某个同级任务需要display_order,则为整个同级组设置唯一的数值;不完整、重复或无效的值必须导致验证失败。 - 让每个可见节点都能独立理解。使用清晰的标题和
summary或purpose;在有助于说明交付内容时,补充结果或验收标准。内部代码只能作为次要标签,不能用作任务名称。 - 展示并保存提案。未经确认不得应用。
- 获得确认后,运行
proposal-apply --yes、validate和export。 - 返回提案路径和唯一的 HTML 路径。
当用户意图或目标全局目标确实不明确时,使用 $task-clarifier。
命令
从此文件解析 <skill-dir>,并使用可用的 Python 3 可执行文件。示例使用 python3;必要时替换为宿主机上可用的启动器。
python3 <skill-dir>/scripts/task_forest.py init
python3 <skill-dir>/scripts/task_forest.py list --json
python3 <skill-dir>/scripts/task_forest.py todo --json
python3 <skill-dir>/scripts/task_forest.py proposal-save --proposal-file /path/to/proposal.json
python3 <skill-dir>/scripts/task_forest.py proposal-apply <proposal-id> --yes
python3 <skill-dir>/scripts/task_forest.py validate
python3 <skill-dir>/scripts/task_forest.py export
默认工作区为当前目录。仅在明确指定其他工作区时使用 --workspace。仅在调用方明确选择了非默认任务森林根目录时使用 --root。
全局注册表集成默认关闭。若宿主机全局设置了启用标志,TASK_FOREST_DISABLE_GLOBAL_REGISTRY=1 仍可作为显式覆盖项。
输出
面向用户的交付物如下:
proposals/<proposal_id>.json
exports/task-forest.html
导出器还会为 gap-router 和 local-agent-control-room 维护三个内部兼容性文件:
exports/task-forest.graph.json
exports/task-forest.todos.json
exports/task-forest.timeline.json
除非用户明确要求机器可读数据,否则不要将这些 JSON 文件作为交付物呈现。
参考资料与验证
- 阅读
references/schema.md,了解节点字段、提案操作和规范不变量。 - 仅在判断是否符合全局目标或比较候选计划时,阅读
references/goal-alignment.md。 - 仅在节点分类不明确时,阅读
references/node-types.md。 - 在解决过时提案或并发写入问题前,阅读
references/concurrency.md。 - 在修改或验证 HTML 时,阅读
references/html-visualization-contract.md。 - 仅在修改 JSON 或注册表兼容性时,阅读
references/integration-contract.md。
对于 HTML 或导出器的更改,请运行:
python3 <skill-dir>/scripts/validate_task_forest_export.py --skill-dir <skill-dir>
HTML 仍是派生的只读视图。规范任务数据和提案历史保留在仓库本地。