<Use_When>
- 사용자가 여러 Claude 세션 또는 작업 트리에서 초목표를 추적할 수 있는 내구성 있고 저장소 네이티브한 방법을 원할 때
- 작업이 여러 개의 순서가 있는 '스토리'와 시도 횟수 및 스토리별 증거를 필요로 할 만큼 클 때
- 사용자가 최종 완료를 AI 슬롭 클리너 + 검증 + $code-review로 게이트하기를 원할 때
- 사용자가 활성 Claude
/goal지시를 원장과 조정하여 세션 재시작 시 진행 상황이 손실되지 않도록 하려 할 때 </Use_When>
<Do_Not_Use_When>
- 작업이 단일 작은 변경인 경우 — 대신 직접 위임 또는
ralph사용 - 사용자가 셸에서 직접
/goal을 호출하기를 원하는 경우 — 불가능합니다.omc ultragoal은 아티팩트를 쓰고 핸드오프 텍스트만 출력합니다. - 사용자가 실행 루프 없이 계획 전용 아티팩트를 원하는 경우 — 대신
plan사용 </Do_Not_Use_When>
<Why_This_Exists>
Claude Code /goal은 세션 범위의 Stop 훅입니다. 조건이 유지될 때까지 세션이 중지되는 것을 차단하고, 성공 시 자동으로 해제됩니다. 이것은 훌륭한 단일 세션 실행 기본 요소이지만, 세션 간에 상태가 손실되고 최종 검토 게이트를 자체적으로 강제하지 않습니다. omc ultragoal은 내구성 있는 계획, 원장 및 게이팅 레이어를 추가하여 긴 다단계 이니셔티브가 세션 재시작, 새로운 작업 트리 및 검토 반복에서도 생존할 수 있도록 하면서, Claude /goal을 활용하여 활성 에이전트의 집중을 유지합니다.
</Why_This_Exists>
<How_To_Use>
-
브리프에서 계획을 생성합니다:
omc ultragoal create-goals --brief-file plan.md또는 명시적 스토리 사용:
omc ultragoal create-goals --brief "ship the migration" \ --goal "Schema::새 컬럼 추가" \ --goal "Backfill::배치로 행 백필" \ --goal "Cutover::이전 컬럼 삭제 및 읽기 전환"기본 모드는
aggregate입니다(하나의 Claude/goal이 전체 실행을 포함). 각 스토리에 자체/goal을 원하면--claude-goal-mode per-story를 전달하세요.다중 저장소 워크스페이스 / 병렬 세션: 동일한 워크스페이스의 여러 Claude 세션이 동시에
/ultragoal을 실행해야 하는 경우,--plan-id <안정-id>또는--auto-plan-id를 전달하여 계획이 공유 단일 계획 경로 대신.omc/ultragoal/plans/{planId}/에 기록되도록 합니다. 이 플래그가 없으면 두 세션이 목표를 생성할 때 서로 덮어쓰게 됩니다.--auto-plan-id는 브리프 제목에서{epochMs}-{slug}를 파생합니다. 그런 다음 해당 세션의 모든 후속 하위 명령어에 동일한--plan-id <id>를 전달하세요. 필요시omc ultragoal list-plans를 사용하여 사용 가능한 planId를 열거합니다. -
다음 스토리를 시작(또는 재개)합니다:
omc ultragoal complete-goals [<goal-id>]goal-id가 없으면 활성 스토리를 재개하거나 첫 번째 대기 중인 스토리를 시작하는 기본 동작을 유지합니다. goal-id가 있으면 OMC는 정확히 그 이름이 붙은 적격 스토리를 대상으로 합니다(대기 중인 스토리는 순서에 관계없이 시작될 수 있음). 다른 활성 스토리, 알 수 없는 id, 완료 또는 검토 차단된 스토리, 또는
--retry-failed없이 실패한 스토리는 상태 변경 없이 거부됩니다. 진행 중인 이름이 붙은 스토리는 시도 횟수를 변경하지 않고 재개됩니다. 이 명령어는 모델 지향 핸드오프를 출력합니다. 활성 Claude 에이전트는 이를 읽고 다음을 수행해야 합니다:- 이 세션에 대한 네이티브 Claude
/goal을 설정합니다 — 독립형 Claude Code에서는 셸과 에이전트 모두 할 수 없으므로, 사용자에게/goal <집계 목표>를 입력하고 기다리도록 요청하세요.--claude-goal-json(아래 참조)은 원장만 조정할 뿐 PreToolUse/goal가드를 충족하지 않으며, 이 가드는 활성/goal이 관찰될 때까지 도구 호출을 차단합니다. - 스토리를 작업합니다.
- 스토리가 완료되면(그리고 마지막 스토리의 경우 전체 품질 게이트 이후), 활성
/goal상태의 스냅샷을 공유하고checkpoint를 호출합니다.
- 이 세션에 대한 네이티브 Claude
-
스토리를 체크포인트합니다:
omc ultragoal checkpoint --goal-id G001-... --status complete \ --evidence "tests/files/PR evidence" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'마지막 스토리의 경우,
--quality-gate-json도 전달하여aiSlopCleaner,verification,codeReview증거(모두 깨끗함)를 포함합니다. -
최종 검토가 깨끗하지 않으면 complete를 표시하지 마세요. 블로커를 기록합니다:
omc ultragoal record-review-blockers --goal-id G00X-... \ --title "최종 코드 리뷰 블로커 해결" \ --objective "지적된 리뷰 항목을 수정하고 최종 게이트 재실행" \ --evidence "<리뷰 결과>" \ --claude-goal-json '{"goal":{"objective":"...","status":"active"}}'이 명령어는 새로운 블로커 스토리를 추가하고 Claude
/goal을 계속 활성 상태로 유지합니다. -
언제든지 상태를 확인합니다:
omc ultragoal status
</How_To_Use>
<Important_Limitations>
- 셸은 Claude Code
/goal상태를 호출하거나 변경할 수 없습니다.omc ultragoal은 내구성 있는 아티팩트를 유지하고 활성 Claude 에이전트가 세션 내에서 읽고 실행할 지침을 출력할 뿐입니다. --claude-goal-json을 통해 전달된 스냅샷은 모델이 제공한 활성/goal상태의 증거입니다. OMC는 이를 계획의 예상 목표 및 원장 이벤트와 텍스트적으로 일관성 있는지 검증하지만, Claude/goal상태를 독립적으로 관찰할 수는 없습니다. 이는 PreToolUse/goal가드를 충족하지 않으며, 이 가드는 실제 활성/goal을 필요로 합니다 — 호스트가 주입한 스냅샷이나 사용자가 세션에서 설정한 네이티브/goal이 필요합니다.- Claude
/goal슬래시 명령어의 이름이 바뀌거나 재구성되어도 핸드오프 문구만 변경하면 됩니다. 조정 로직은 이름에 구애받지 않습니다. </Important_Limitations>
병렬 세션 주의 사항
- 다중 저장소 워크스페이스 앵커: 여러 세션이 하위 저장소에 걸쳐 하나의
.omc/를 공유할 수 있도록 상위 디렉토리에.omc-workspace마커를 추가하세요. 해석 순서:OMC_STATE_DIR > .omc-workspace > git > cwd.docs/REFERENCE.md를 참조하세요. - 세션 ID 출처: CLI 컨텍스트에서는
OMC_SESSION_ID환경 변수가 우선하며, 훅 컨텍스트에서는payload.data.session_id가 우선합니다. - 계획 ID (해당하는 경우): 동일한 워크스페이스에서 두 번 실행하면 공유 계획 아티팩트에 충돌이 발생합니다. 고유한 세션 ID(훅 페이로드 session_id는 이미 각 Claude Code 세션별로 격리됨)를 사용하거나
--plan-id를 전달하여 병렬 ultragoal 실행을 별도의 원장에 유지하세요. - 병렬 판정: 지원됨 (각 세션은 자체 세션 범위 상태를 작성함)