Durable multi-goal workflow that persists plan/ledger artifacts under .omc/ultragoal and prints Claude /goal handoff text for the active session
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-ultragoal-700588858cbe ,按照其中的说明把「ultragoal」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
<Use_When>
/goal directive coordinated with the ledger so that a session restart does not lose progress
</Use_When><Do_Not_Use_When>
ralph instead/goal itself from the shell — that is not possible; omc ultragoal only writes artifacts and prints handoff textplan instead
</Do_Not_Use_When><Why_This_Exists>
Claude Code /goal is a session-scoped Stop hook: it blocks the session from stopping until a condition holds, and auto-clears on success. That is a great single-session execution primitive, but it loses state across sessions and does not by itself enforce a final review gate. omc ultragoal adds a durable plan, ledger, and gating layer so a long multi-step initiative can survive session restarts, fresh worktrees, and review iterations while still leveraging Claude /goal to keep the active agent focused.
</Why_This_Exists>
<How_To_Use>
Create a plan from a brief:
omc ultragoal create-goals --brief-file plan.md
Or with explicit stories:
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"
The default mode is aggregate (one Claude /goal covers the run).
Pass --claude-goal-mode per-story if you want each story to have its own /goal.
Multi-repo workspaces / parallel sessions: when several Claude sessions
in the same workspace need to run /ultragoal concurrently, pass either
--plan-id <stable-id> or --auto-plan-id so the plan is written to
.omc/ultragoal/plans/{planId}/ instead of the shared single-plan path.
Without that flag, two sessions creating goals would clobber each other.
--auto-plan-id derives {epochMs}-{slug} from the brief title. Then thread
the same --plan-id <id> through every subsequent subcommand in that session.
Use omc ultragoal list-plans to enumerate available planIds when needed.
Start (or resume) the next story:
omc ultragoal complete-goals [<goal-id>]
With no goal id, this preserves the default behavior of resuming the active story or starting the first pending story. With a goal id, OMC targets exactly that named eligible story (a pending story may be started out of order); it never falls through to another story. An active different story, unknown id, completed or review-blocked story, or failed story without --retry-failed is rejected without state mutation. An in-progress named story is resumed without changing its attempt. This prints a model-facing handoff. The active Claude agent must read it and:
/goal for this session — in standalone Claude Code neither the
shell nor the agent can do it, so ask the user to type /goal <aggregate objective> and
wait. --claude-goal-json (below) reconciles the ledger only and does not satisfy the
PreToolUse /goal guard, which blocks tool calls until it observes an active /goal./goal state and call checkpoint.Checkpoint a story:
omc ultragoal checkpoint --goal-id G001-... --status complete \
--evidence "tests/files/PR evidence" \
--claude-goal-json '{"goal":{"objective":"...","status":"active"}}'
For the final story, also pass --quality-gate-json containing
aiSlopCleaner, verification, and codeReview evidence (all clean).
If the final review is not clean, do NOT mark complete. Record blockers:
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"}}'
This appends a new blocker story and keeps the Claude /goal active.
Inspect state at any time:
omc ultragoal status
</How_To_Use>
<Important_Limitations>
/goal state. omc ultragoal only persists durable artifacts and prints instructions that the active Claude agent reads and acts on in-session.--claude-goal-json are model-supplied proof of the active /goal state; OMC validates them for textual consistency with the plan's expected objective and ledger event, but it cannot independently observe Claude /goal state. They do not satisfy the PreToolUse /goal guard, which requires an actual active /goal — a host-injected snapshot or the native /goal the user set in-session./goal slash command is renamed or restructured, only the handoff wording needs to change; the reconciliation logic is name-agnostic.
</Important_Limitations>.omc-workspace marker at the parent directory so multiple sessions across sub-repos share one .omc/. Resolution order: OMC_STATE_DIR > .omc-workspace > git > cwd. See docs/REFERENCE.md.--plan-id to keep parallel ultragoal runs on separate ledgers.