Sandbox
@Joonghyun-Lee-Frieren/oh-my-antigravity

Antigravity CLI extension for multi-agent workflows

OmA turns Gemini CLI into a structured workflow system with slash commands, retained skills, and role-based sub-agents. It is organized as an extension package, so the commands, agents, hooks, and context files load together as one unit.

212 stars27 forksJavaScriptUpdated 2mo ago
Who it's for

Builders who want their Gemini CLI or Antigravity CLI sessions to follow a repeatable plan-execute-review loop.

What it delivers

You can run longer tasks with clearer roles, checkpoints, and verification instead of re-explaining the project each session.

What it does

Slash-command workflow control

Provides `/oma:*` commands for status, planning, team assembly, execution, verification, hooks, workspace, taskboard, and goal loops.

Retained skills

Ships compact skills like `$plan`, `$execute`, `$research`, `$prd`, and `$ultragoal` for common workflow steps.

Role-based sub-agents

Defines specialist agents such as architect, planner, executor, reviewer, verifier, debugger, and editor.

Hook-based behavior changes

Includes hook scripts and hook config for model routing and learn-signal behavior around agent turns.

Workspace and task state

Uses `.omg/state/` files for workspace, taskboard, checkpoints, interviews, and session lock state.

Extension packaging

Bundles everything as a Gemini Extension so it installs and updates as one package.

How to get it

  1. 1Install from GitHub using the official Gemini Extensions command
    gemini extensions install https://github.com/Joonghyun-Lee-Frieren/oh-my-antigravity
  2. 2Verify in interactive mode
    /extensions list
  3. 3Verify in terminal mode
    gemini extensions list
  4. 4Run a smoke test
    /oma:status
  5. 5Run a goal-style autonomous delivery loop
    /oma:goal "Implement the requested change, update tests, and verify acceptance criteria"

README

oh-my-antigravity (OmA)

Release Version Check License: MIT Stars Gemini Extension Sponsor

Landing Page | History

한국어 | 日本語 | Français | 中文 | Español

[!IMPORTANT] Antigravity CLI: Gemini CLI will be replaced by Antigravity CLI on June 18th.

If you previously installed oh-my-gemini-cli in Gemini CLI, Antigravity CLI will ask whether to import plugins during installation. Check that option to bring your plugin over.

You can also install OmA directly with:

agy plugin install https://github.com/Joonghyun-Lee-Frieren/oh-my-antigravity

Context-engineering-powered multi-agent workflow pack for Antigravity CLI.

"Claude Code's core competitiveness isn't the Opus or Sonnet engine. It's Claude Code itself. Surprisingly, Gemini works well too when attached to Claude Code."

  • Jeongkyu Shin (CEO of Lablup Inc.), from a YouTube channel interview

This project started from that observation: "What if we bring that harness model to Gemini CLI?"

OmA extends Gemini CLI from a single-session assistant into a structured, role-driven engineering workflow.

OmA Logo

Quick Start

Installation

Install from GitHub using the official Gemini Extensions command:

gemini extensions install https://github.com/Joonghyun-Lee-Frieren/oh-my-antigravity

Verify in interactive mode:

/extensions list

Verify in terminal mode:

gemini extensions list

Run a smoke test:

/oma:status

Run a goal-style autonomous delivery loop:

/oma:goal "Implement the requested change, update tests, and verify acceptance criteria"

Note: extension install/update commands run in terminal mode (gemini extensions ...), not in interactive slash-command mode.

What's New in v0.9.2

  • Orbit Router Diagnostics: The quiet BeforeModel router can now write an opt-in last-decision trace to .omg/state/model-router-last.json.
  • Trace Without Noise: Set OMG_MODEL_ROUTING_TRACE=1 to capture selected lane, model, strategy, and match reason without restoring the old per-request banner.
  • Doctor/Status Visibility: /oma:doctor, /oma:status, /oma:model, and hook validation guidance now account for router trace freshness and missing custom lane mappings.
  • Version Bump: Bumped project and extension version to v0.9.2.

Extension Boundary and Upgrade Safety

  • Install and update OmA through gemini extensions ...; do not rely on copied command/skill folders as the primary runtime path.
  • Keep one authoritative OmA hook registration path per event. Mixing extension-managed hooks with manual duplicates is the fastest way to get repeated AfterAgent output or stale behavior.
  • When OmA feels stale after an update, check gemini extensions list first, then refresh or reinstall the extension before editing shipped files.
  • For long or multi-lane work, treat /oma:workspace audit as the default preflight before review, automation, or team-exec.

Interview Session Storage

  • /oma:interview session state is now intended to live under .omg/state/interviews/[slug]/ instead of one shared interview file.
  • .omg/state/interviews/active.json tracks the current interview so resume/status commands stay deterministic without mixing separate requirement threads.
  • This keeps multiple requirement-discovery passes in the same project distinguishable and archive-friendly.

Shared Workflow State

  • .omg/state/session-lock.json is now the single-writer lock for shared workflow and operating-profile state inside one project.
  • Only the lock-owning orchestration session should write shared files like workspace.json, taskboard.md, workflow.md, checkpoint.md, mode.json, hud.json, approval.json, reasoning.json, hooks.json, and notify.json.
  • Parallel top-level sessions that do not own the lock should write session-local drafts under .omg/state/sessions/[session-slug]/ and hand those notes back to the orchestrator for merge.
  • Delegated worker/sub-agent turns should stay read-mostly and must not mutate shared workflow state directly.

At A Glance

ItemSummary
Delivery modelOfficial Gemini CLI extension (gemini-extension.json)
Core building blocksGEMINI.md, agents/, commands/, skills/, context/
Main use caseComplex implementation tasks that need plan -> execute -> review loops
Control surfaceSlash-command-first /oma:* control plane + 11 retained $skills (including oma-plan alias) + sub-agent delegation
Default model strategyConfigurable via /oma:model (balanced lane split uses gemini-3.1-pro-preview / gemini-3-flash-preview / gemini-3.1-flash-lite-preview by default, with optional auto or custom overrides)

Why OmA

Problem in raw single-session flowOmA response
Context gets mixed across planning and executionRole-separated agents with focused responsibilities
Hard to keep progress visible in long tasksExplicit workflow stages and command-driven status checks
Parallel lanes or worktrees drift out of syncworkspace + taskboard keep lane ownership, task IDs, and verification state compact and explicit
Permission-denied tool calls keep looping with no recovery pathDenied actions become explicit approval/fallback events with blocker tracking
Deep interview sessions get interrupted by automated nudgesLearn-signal hook suppresses nudges while deep-interview lock is active and resumes only after lock release
Repetitive prompt engineering for common jobsSlash commands for operational control plus retained deep-work skills ($plan, $oma-plan, $execute, $research)
Drift between "what was decided" and "what was changed"Review and debugging roles inside the same orchestration loop

Dynamic Team Assembly

Use team-assemble when a fixed engineering roster is not enough.

  • Split selection into:
    • domain specialists (problem expertise)
    • format specialists (report/content/output quality)
  • Spawn parallel exploration lanes (oma-researcher xN) for broad discovery tasks.
  • Route decisions through a judgment lane (oma-consultant or oma-architect).
  • Assign reasoning effort per lane from global profile + teammate overrides.
  • Keep verify/fix loops explicit (oma-reviewer -> oma-verifier -> oma-debugger).
  • Run anti-slop check before final delivery.
  • Require explicit approval before autonomous execution starts.

Example flow:

/oma:team-assemble "Compare 3 competitors and produce an exec report"
-> proposes: researcher x3 + consultant + editor + director
-> asks: Proceed with this team? (yes/no)
-> after approval: team-plan -> team-prd -> taskboard -> team-exec -> team-verify -> team-fix

Activation note:

  • No separate research-preview setting is required in OmA.
  • If the extension is loaded, /oma:team-assemble is immediately available.

Workspace and Taskboard Control

Use workspace and taskboard when work spans multiple roots, multiple implementation lanes, or long verify/fix loops.

  • /oma:workspace keeps the primary root plus optional worktree/path lanes in .omg/state/workspace.json.
  • Each lane can also carry a compact baseline branch/HEAD anchor so handoffs and resume flows can detect unexpected branch drift before implementation or review.
  • /oma:workspace audit checks lane cleanliness, trust status, and handoff readiness before parallel execution, review, or automation.
  • /oma:taskboard keeps stable task IDs, owners, dependencies, statuses (todo, ready, in-progress, blocked, done, verified), baseline anchors, lane-health notes, and evidence pointers in .omg/state/taskboard.md.
  • team-plan seeds stable task IDs plus lane assumptions and baseline anchors, team-exec pulls the smallest ready slice with explicit lane/subagent context and baseline checks, and team-verify marks tasks verified only with evidence plus safe lane state.
  • checkpoint and status can reference these files instead of replaying the whole chat, which improves cache stability and reduces token waste.
  • /oma:recall "<query>" performs state-first recall and bounded fallback search, so you can recover prior rationale without replaying full transcripts.

Example flow:

/oma:workspace set .
/oma:workspace audit
/oma:workspace add ../feature-auth oma-executor
/oma:taskboard sync
/oma:taskboard next
/oma:recall "why was auth lane blocked" scope=state

Workspace Hygiene and Hook Symmetry

Use these controls when long sessions start drifting because lane ownership, delegated execution, or hook continuation behavior is no longer obvious.

  • /oma:workspace audit surfaces dirty shared worktrees, untrusted review paths, and handoff-ready vs handoff-blocked lanes.
  • /oma:hooks and /oma:hooks-validate now model paired agent lifecycle outcomes (completed, blocked, stopped) so blocked continuations re-enter the safety lane once before downstream hooks resume.
  • team-exec, team, team-verify, stop, and cancel keep delegated lane/subagent context compact and explicit, expanding details only when execution stops early or hits a blocker.

Notification Routing

Use notify when a long-running OmA session needs explicit signals for approvals, verification outcomes, blockers, or idle drift.

  • Supported profiles:
    • quiet: only urgent interruptions (approval-needed, verify-failed, blocker-raised, session-stop)
    • balanced: quiet + checkpoint and team-approval updates
    • watchdog: balanced + idle-watchdog alerts for unattended loops
  • Supported channels:
    • desktop (host notification adapter)
    • terminal-bell
    • file
    • webhook (external bridge)
  • Safety boundary:
    • OmA manages event routing, templates, and persisted policy
    • actual delivery must be implemented by Gemini host hooks, shell adapters, or project-specific webhook bridges
    • delegated worker sessions keep external dispatch disabled unless the user explicitly opts in

Example flow:

/oma:notify profile watchdog
-> enables: approval-needed, verify-failed, blocker-raised, checkpoint-saved, idle-watchdog, session-stop
-> suggests channels: terminal-bell + file by default
-> persists policy: .omg/state/notify.json

Model Router (BeforeModel Hook)

OmA ships a quiet model-routing hook. The previous AfterAgent quota-watch usage monitor was removed in v0.8.4 because Gemini CLI can report usage as unavailable, which created noisy low-value output.

  • Hook entrypoint: hooks/hooks.json (BeforeModel -> oma-model-router)
  • Script: hooks/scripts/before-model-banner.js
  • Behavior: silently maps outgoing model requests to the active OmA strategy (balanced, auto, or custom) without printing a model banner
  • Default balanced routing: planning/review -> gemini-3.1-pro-preview, execution -> gemini-3-flash-preview, quick edits -> gemini-3.1-flash-lite-preview
  • Optional disable: OMG_DISABLED_HOOKS=model-routing or OMG_MODEL_ROUTING=off
  • Optional trace: OMG_MODEL_ROUTING_TRACE=1 writes the latest lane/model decision to .omg/state/model-router-last.json

Usage/quota visibility:

  • OmA no longer estimates or prints token usage after each turn.
  • Use Gemini CLI native /model or /stats model for authoritative usage and quota status.
  • Legacy .omg/state/quota-watch.json files can be ignored; new OmA releases no longer update them.

Learn-Signal Safety Filter (AfterAgent Hook)

OmA now also ships a safety-hardened learn-signal hook so /oma:learn nudges appear only when a session has actionable implementation intent.

  • Hook entrypoint: hooks/hooks.json (AfterAgent -> oma-learn-signal-after-agent)
  • Script: hooks/scripts/learn.js
  • State artifact: .omg/state/learn-watch.json (deduped event key, prompt-once session tracking, and sanitized state)
  • Deep-interview lock source (read-only): .omg/state/deep-interview.json
  • Runtime controls:
    • OMG_STATE_ROOT=<dir> to move learn-watch.json beside other OmA state
    • OMG_HOOKS_QUIET=1 to keep the hook silent while preserving state updates
    • OMG_HOOK_PROFILE=minimal|balanced|strict (minimal suppresses learn nudges)
    • OMG_DISABLED_HOOKS=learn to disable only the learn-signal hook by env
    • when no reliable session cwd is available, learn-state persistence is skipped to avoid cross-project collisions

Safety behavior:

  • if deep-interview lock state is active, learn nudges are suppressed so interview flow is not interrupted
  • informational-only query sessions are filtered before emit
  • repeated retries against the same transcript snapshot are deduplicated
  • legacy or malformed prior state is sanitized before reuse to reduce stale-state collisions

Disable only this hook:

{
  "hooksConfig": {
    "disabled": ["oma-learn-signal-after-agent"]
  }
}

Example (disable the shipped AfterAgent learn hook by env):

export OMG_DISABLED_HOOKS=learn

Interface Map

Commands

CommandPurposeTypical timing
/oma:statusSummarize progress, risks, and next actionsStart/end of a work session
/oma:doctorRun extension/team/workspace/hook readiness diagnostics, including priority/fallback-route drift checksBefore long autonomous runs or when setup seems broken
/oma:hudInspect or switch visual HUD profile (normal, compact, hidden)Before long sessions or when terminal density changes
/oma:hud-onQuick toggle HUD to full visual modeWhen returning to full status boards
/oma:hud-compactQuick toggle HUD to compact modeDuring dense implementation loops
/oma:hud-offQuick toggle HUD to hidden mode (plain status sections)When visual blocks are distracting
/oma:hooksInspect/switch hook pipeline profile and trigger policyBefore autonomous loops or when hook behavior drifts
/oma:hooks-initBootstrap hook config and plugin contract scaffoldingAt project kickoff or first hook adoption
/oma:hooks-validateValidate hook ordering, lifecycle symmetry, safety, and budget constraintsBefore enabling high-autonomy workflows
/oma:hooks-testDry-run hook event sequence and efficiency estimatesAfter policy changes or repeated loop stalls
/oma:notifyConfigure notification routing for approvals, blockers, verify results, checkpoints, and idle watchdog alertsBefore unattended autopilot/loop runs or when alert noise needs tuning
/oma:intentClassify task intent and route to the correct stage/commandBefore planning or coding when request intent is ambiguous
/oma:rulesActivate task-conditional guardrail rule packsBefore implementation on migration/security/performance-sensitive work
/oma:memoryMaintain MEMORY index, topic files, and path-aware rule packsDuring long sessions or when decisions/rules drift
/oma:workspaceInspect, audit, or set primary root, worktree/path lanes, and collision boundariesBefore parallel implementation or multi-root work
/oma:taskboardMaintain a compact task ledger with stable IDs, p0-p3 priority, deterministic next, baseline anchors, and verifier-backed completion stateAfter planning and throughout long exec/verify loops
/oma:recallRecover prior decisions/evidence with state-first search and bounded history fallbackWhen you need past rationale quickly without replaying full transcripts
/oma:reasoningSet global reasoning effort and teammate overrides (low/medium/high/xhigh)Before expensive planning/review loops or when depth is role-dependent
/oma:deep-initBuild deep project map and validation baseline for long sessionsAt project kickoff or when onboarding into unfamiliar codebases
/oma:blueprintDefine product/UI workflow decisions, interface states, content hierarchy, accessibility, and verification hooksBefore planning or coding user-facing flows
/oma:team-assembleDynamically compose a role-fit team with approval gate, lane-specific reasoning map, and fallback routing hintsBefore /oma:team on cross-domain or non-standard tasks
/oma:teamExecute full stage pipeline (team-assemble? -> plan -> prd -> taskboard -> exec -> verify -> fix)Complex feature or refactor delivery
/oma:team-planBuild dependency-aware execution planBefore implementation
/oma:team-prdLock measurable acceptance criteria and constraintsAfter planning, before coding
/oma:team-execImplement one highest-priority ready slice with explicit lane/subagent handoff and single-shot fallback rerouteMain implementation loop
/oma:team-verifyValidate acceptance criteria, regressions, and anti-slop quality gate, then emit priority-ordered fix backlogAfter each execution slice
/oma:team-fixPatch only verified failuresWhen verification fails
/oma:loopEnforce repeated exec -> verify -> fix cycles until done/blockerMid/late delivery when unresolved findings remain
/oma:modeInspect or switch operating profile (balanced/speed/deep/autopilot/ralph/ultrawork)At session start or posture change
/oma:modelInspect or switch model-selection strategy (balanced/auto/custom)When setting one default model policy (for example Gemini Auto across all tasks)
/oma:approvalInspect or switch approval posture (suggest/auto/full-auto)Before autonomous delivery loops or policy changes
/oma:goalRun a goal-driven autonomous delivery loop with routine work pre-approved and runtime-boundary blockers explicitWhen you want /goal-style hands-off delivery until verified, blocked, or max cycles
/oma:ultragoalRun a durable multi-goal workflow (Ultragoal) persisting checkpoints and progress in repository-native filesDecomposing large, complex requirements into sequential micro-goals that survive session restarts
/oma:autopilotRun iterative autonomous cycles with checkpointsComplex autonomous delivery
/oma:ralphEnforce strict quality-gated orchestrationRelease-critical tasks
/oma:ultraworkThroughput mode for batched independent tasksLarge backlogs
/oma:consensusConverge on one option from multiple designsDecision-heavy moments
/oma:launchInitialize persistent lifecycle state for long tasksBeginning of long sessions
/oma:checkpointSave compact checkpoint and resume hint with taskboard/workspace referencesMid-session handoff
/oma:stopGracefully stop autonomous mode and preserve progressPause/interrupt moments
/oma:cancelHarness-style cancel alias that stops safely and returns resume handoffWhen interrupting autonomous/team flow
/oma:optimizeImprove prompts/context for quality and token efficiencyAfter a noisy or expensive session
/oma:cacheInspect cache/context behavior and compact-state anchoringLong-running context-heavy tasks

Skills

Retained skills are intentionally limited to a compact set so the extension loads less discovery metadata at session start (with one compatibility alias: $oma-plan).

SkillFocusOutput style
$planConvert goals into phased planMilestones, risks, and acceptance criteria
$oma-planSlash-friendly planning alias that avoids native /plan collisionsSame planning output as $plan
$ralplanStrict, stage-gated planning with rollback pointsQuality-first execution map
$executeImplement a scoped plan sliceChange summary with validation notes
$prdConvert requests into measurable acceptance criteriaPRD-style scope contract
$researchExplore options/tradeoffsDecision-oriented comparison
$deep-diveRun trace-to-interview discovery before planningClarity score, assumption ledger, and launch brief
$ultragoalManage durable multi-goal workflows with repo-native checkpointsSequential goal map with verification criteria and ledger logs
$blueprintLock product/UI workflow decisions before implementationWorkflow map, interface decisions, state coverage, and verification hooks
$context-optimizeImprove context structureCompression and signal-to-noise adjustments
$learnExtract reusable session patternsLearned rule candidates and save recommendations

Sub-agents

AgentPrimary responsibilityPreferred model profile
oma-architectSystem boundaries, interfaces, long-term maintainabilitygemini-3.1-pro-preview
oma-plannerTask decomposition and sequencinggemini-3.1-pro-preview
oma-productScope lock, non-goals, and measurable acceptance criteriagemini-3.1-pro-preview
oma-executorFast implementation cyclesgemini-3-flash-preview
oma-reviewerCorrectness and regression risk checksgemini-3.1-pro-preview
oma-verifierAcceptance-gate evidence and release-readiness checksgemini-3.1-pro-preview
oma-debuggerRoot-cause analysis and patch strategygemini-3.1-pro-preview
oma-consensusOption scoring and decision convergencegemini-3.1-pro-preview
oma-researcherExternal option analysis and synthesisgemini-3.1-pro-preview
oma-directorTeam message routing, conflict resolution, and lifecycle orchestrationgemini-3.1-pro-preview
oma-consultantStrategic analysis criteria and recommendation framinggemini-3.1-pro-preview
oma-editorFinal deliverable structure, consistency, and audience fitgemini-3-flash-preview
oma-quickSmall, tactical fixesgemini-3.1-flash-lite-preview

Context Layer Model

LayerSourceGoal
1System / runtime constraintsKeep behavior aligned with platform guarantees
2Project standardsPreserve team conventions and architecture intent
3Thin GEMINI.md, MEMORY.md, and shared contextMaintain stable long-session memory without carrying heavy procedure every turn
4Active task brief + workspace/taskboard stateKeep current objective, active lanes, and acceptance criteria visible
5Latest execution tracesFeed immediate iteration and review loops without replaying full raw history

Project Structure

oh-my-antigravity/
|- GEMINI.md
|- gemini-extension.json
|- .omg/
|  `- state/
|     |- session-lock.json
|     `- interviews/
|     |  |- active.json
|     |  `- [slug]/
|     |     |- context.json
|     |     `- prd.md
|     `- sessions/
|        `- [session-slug]/
|           |- workspace.json
|           |- taskboard.m

Files in the repo

Repository payload18 top-level entries
  • .gemini
  • .github
  • agents
  • commands
  • context
  • docs
  • hooks
  • resources
  • scripts
  • skills
  • .editorconfig
  • .gitattributes
  • .gitignore
  • gemini-extension.json
  • GEMINI.md
  • LICENSE
  • package.json
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More plugins

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

138k
1 add

Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.

82k
code-yeongyu/
oh-my-openagent

OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.

69k

Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More

94k

Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns

4.3k