ultragoal
GitHub持久化多目标工作流,跨会话追踪计划与账本,生成Claude /goal交接文本以驱动执行。
Trigger Scenarios
Install
npx skills add Yeachan-Heo/oh-my-claudecode --skill ultragoal -g -y
SKILL.md
Frontmatter
{
"name": "ultragoal",
"level": 3,
"description": "Durable multi-goal workflow that persists plan\/ledger artifacts under .omc\/ultragoal and prints Claude \/goal handoff text for the active session",
"argument-hint": "<brief or subcommand>"
}
<Use_When>
- The user wants a durable, repo-native way to track an ultragoal across multiple Claude sessions or worktrees
- The work is large enough to warrant multiple ordered "stories" with attempt counts and per-story evidence
- The user wants the final completion gated behind ai-slop-cleaner + verification + $code-review
- The user wants the active Claude
/goaldirective coordinated with the ledger so that a session restart does not lose progress </Use_When>
<Do_Not_Use_When>
- The task is a single small change — use direct delegation or
ralphinstead - The user wants the assistant to literally invoke
/goalitself from the shell — that is not possible;omc ultragoalonly writes artifacts and prints handoff text - The user wants a planning-only artifact with no execution loop — use
planinstead </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.mdOr 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/goalcovers the run). Pass--claude-goal-mode per-storyif 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
/ultragoalconcurrently, pass either--plan-id <stable-id>or--auto-plan-idso 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-idderives{epochMs}-{slug}from the brief title. Then thread the same--plan-id <id>through every subsequent subcommand in that session. Useomc ultragoal list-plansto enumerate available planIds when needed. -
Start (or resume) the next story:
omc ultragoal complete-goalsThis prints a model-facing handoff. The active Claude agent must read it and:
- Set the native Claude
/goalfor 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/goalguard, which blocks tool calls until it observes an active/goal. - Work the story.
- When the story is complete (and for the final story, after the full quality gate), share back a snapshot of the active
/goalstate and callcheckpoint.
- Set the native Claude
-
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-jsoncontainingaiSlopCleaner,verification, andcodeReviewevidence (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
/goalactive. -
Inspect state at any time:
omc ultragoal status
</How_To_Use>
<Important_Limitations>
- The shell cannot invoke or mutate Claude Code
/goalstate.omc ultragoalonly persists durable artifacts and prints instructions that the active Claude agent reads and acts on in-session. - Snapshots passed via
--claude-goal-jsonare model-supplied proof of the active/goalstate; OMC validates them for textual consistency with the plan's expected objective and ledger event, but it cannot independently observe Claude/goalstate. They do not satisfy the PreToolUse/goalguard, which requires an actual active/goal— a host-injected snapshot or the native/goalthe user set in-session. - If the Claude
/goalslash command is renamed or restructured, only the handoff wording needs to change; the reconciliation logic is name-agnostic. </Important_Limitations>
Version History
- 41a4c0f Current 2026-07-25 07:06


