关于 ultragoal
ultragoal 用于在多个 Claude Code 会话间协调包含多个故事的长期任务。它以持久账本保存计划和进度,由当前 Claude Agent 操作会话级 /goal,并处理交接与最终审核门槛。
主要功能
- 01将简述拆为有序目标
- 02追加式进度账本
- 03跨会话恢复任务
- 04与 Claude Code /goal 协同
- 05以审核证据作为完成门槛
适用场景
- 01跨会话重启跟踪多步骤项目
- 02在新的工作树中恢复任务
- 03用独立 ID 管理并行计划
- 04完成前记录审核阻塞项
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill ultragoal安装后在 Claude Code 中输入/ultragoal确认已加载。
详细介绍
<Use_When>
- 用户希望通过持久化、原生于仓库的方式,跨多个 Claude 会话或工作树跟踪 ultragoal
- 工作规模足以拆分为多个有序的“故事”,并跟踪尝试次数和每个故事的证据
- 用户希望最终完成必须经过 ai-slop-cleaner、验证和 $code-review
- 用户希望协调当前 Claude
/goal指令与日志,避免会话重启导致进度丢失 </Use_When>
<Do_Not_Use_When>
- 任务只是单个小改动——改用直接委派或
ralph - 用户希望助手直接从 shell 调用
/goal——这是不可能的;omc ultragoal只会写入工件并输出交接文本 - 用户只想要规划工件,不需要执行循环——改用
plan</Do_Not_Use_When>
<Why_This_Exists>
Claude Code /goal 是一个会话范围的 Stop 钩子:只要条件尚未满足,它就会阻止会话停止,并在成功时自动清除。这是一个很好的单会话执行原语,但它无法跨会话保留状态,也不会自行强制执行最终审查关卡。omc ultragoal 增加了持久化计划、日志和关卡,使长期、多步骤的工作能够在会话重启、新建工作树和审查迭代期间继续推进,同时仍可借助 Claude /goal 让当前 Agent 保持专注。
</Why_This_Exists>
<How_To_Use>
在 omc 不在 PATH 中的纯插件安装环境下,请将以下命令和生成的交接信息中的 omc 前缀替换为 oh-my-claudecode.js,或使用
node <plugin-root>/bin/oh-my-claudecode.js。
-
根据简要描述创建计划:
omc ultragoal create-goals --brief-file plan.md或显式指定故事:
omc ultragoal create-goals --brief "ship the migration" \ --goal "Schema::Add new columns" \ --goal "Backfill::Backfill rows in batches" \ --goal "Cutover::Drop old columns and switch reads"默认模式为
aggregate(一个 Claude/goal覆盖整个执行过程)。 如果希望每个故事都有自己的/goal,请传入--claude-goal-mode per-story。**多仓库工作区/并行会话:**如果同一工作区中的多个 Claude 会话需要并发运行
/ultragoal,请传入--plan-id <stable-id>或--auto-plan-id,这样计划就会写入.omc/ultragoal/plans/{planId}/,而不是共享的单计划路径。 如果不传此标志,两个会话创建目标时会相互覆盖。--auto-plan-id会根据简要描述标题生成{epochMs}-{slug}。随后,在该会话的每个子命令中都传入 相同的--plan-id <id>。 必要时使用omc ultragoal list-plans枚举可用的 planId。
-
检查点记录故事:
omc ultragoal checkpoint --goal-id G001-... --status complete \ --evidence "tests/files/PR evidence" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'对于最后一个故事,还需传入包含
aiSlopCleaner、verification和codeReview证据(均无问题)的--quality-gate-json。 -
如果最终审核未通过,不要标记为已完成。记录阻塞项:
omc ultragoal record-review-blockers --goal-id G00X-... \ --title "Resolve final code-review blockers" \ --objective "Fix the listed review findings and rerun final gates" \ --evidence "<the review findings>" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'这会追加一个新的阻塞故事,并保持 Claude
/goal处于活动状态。 -
随时检查状态:
omc ultragoal status
</How_To_Use>
<Important_Limitations>
- shell 无法调用或更改 Claude Code 的
/goal状态。omc ultragoal只会持久化可靠的工件,并打印说明,供当前会话中的活动 Claude Agent 阅读并执行。 - 通过
--claude-goal-json传入的快照是由模型提供的活动/goal状态证明;OMC 会验证其文本是否与计划预期目标和账本事件一致,但无法独立观测 Claude 的/goal状态。它们不满足 PreToolUse/goal防护条件;该防护要求实际存在活动的/goal——由宿主注入的快照,或用户在会话中设置的原生/goal。 - 如果 Claude
/goal斜杠命令被重命名或重构,只需更改交接说明措辞;协调逻辑与名称无关。 </Important_Limitations>
并行会话注意事项
- **多仓库工作区锚点:**在父目录中放置
.omc-workspace标记,以便多个跨子仓库的会话共用一个.omc/。解析顺序:OMC_STATE_DIR > .omc-workspace > git > cwd。参见docs/REFERENCE.md。 - **会话 ID 来源:**在 CLI 上下文中,OMC_SESSION_ID 环境变量优先;在 hook 上下文中,hook 负载数据中的 session_id 优先。
- **计划 ID(适用时):**同一工作区中的两次运行会在共享计划工件上发生冲突。请使用不同的会话 ID(hook 负载中的 session_id 已按 Claude Code 会话隔离),或传入
--plan-id,使并行的 ultragoal 运行使用不同账本。 - **并行判定:**支持(每个会话都会写入各自会话范围内的状态)