| name | omc-setup |
| description | Setup and configure oh-my-gemini (the ONLY command you need to learn) |
OMC Setup
This is the only command you need to learn. After running this, everything else is automatic.
Graceful Interrupt Handling
IMPORTANT: This setup process saves progress after each step. If interrupted (Ctrl+C or connection loss), the setup can resume from where it left off.
State File Location
.omc/state/setup-state.json - Tracks completed steps
Resume Detection (Step 0)
Before starting any step, check for existing state:
STATE_FILE=".omc/state/setup-state.json"
iso_to_epoch() {
local iso_date="$1"
local epoch=""
epoch=$(date -d "$iso_date" +%s 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$epoch" ]; then
echo "$epoch"
return 0
fi
local clean_date=$(echo "$iso_date" | sed 's/[+-][0-9][0-9]:[0-9][0-9]$//' | sed 's/Z$//' | sed 's/T/ /')
epoch=$(date -j -f "%Y-%m-%d %H:%M:%S" "$clean_date" +%s 2>/dev/null)
if [ $? -eq 0 ] && [ -n "$epoch" ]; then
echo "$epoch"
return 0
fi
echo "0"
}
if [ -f "$STATE_FILE" ]; then
TIMESTAMP_RAW=$(jq -r '.timestamp // empty' "$STATE_FILE" 2>/dev/null)
if [ -n "$TIMESTAMP_RAW" ]; then
TIMESTAMP_EPOCH=$(iso_to_epoch "$TIMESTAMP_RAW")
NOW_EPOCH=$(date +%s)
STATE_AGE=$((NOW_EPOCH - TIMESTAMP_EPOCH))
else
STATE_AGE=999999
fi
if [ "$STATE_AGE" -gt 86400 ]; then
echo "Previous setup state is more than 24 hours old. Starting fresh."
rm -f "$STATE_FILE"
else
LAST_STEP=$(jq -r ".lastCompletedStep // 0" "$STATE_FILE" 2>/dev/null || echo "0")
TIMESTAMP=$(jq -r .timestamp "$STATE_FILE" 2>/dev/null || echo "unknown")
echo "Found previous setup session (Step $LAST_STEP completed at $TIMESTAMP)"
fi
fi
If state exists, use AskUserQuestion to prompt:
Question: "Found a previous setup session. Would you like to resume or start fresh?"
Options:
- Resume from step $LAST_STEP - Continue where you left off
- Start fresh - Begin from the beginning (clears saved state)
If user chooses "Start fresh":
rm -f ".omc/state/setup-state.json"
echo "Previous state cleared. Starting fresh setup."
Save Progress Helper
After completing each major step, save progress:
save_setup_progress() {
mkdir -p .omc/state
cat > ".omc/state/setup-state.json" << EOF
{
"lastCompletedStep": $1,
"timestamp": "$(date -Iseconds)",
"configType": "${CONFIG_TYPE:-unknown}"
}
EOF
}
Clear State on Completion
After successful setup completion (Step 7/8), remove the state file:
rm -f ".omc/state/setup-state.json"
echo "Setup completed successfully. State cleared."
Usage Modes
This skill handles three scenarios:
- Initial Setup (no flags): First-time installation wizard
- Local Configuration (
--local): Configure project-specific settings (.gemini-cli/GEMINI.md)
- Global Configuration (
--global): Configure global settings (~/.gemini-cli/GEMINI.md)
Mode Detection
Check for flags in the user's invocation:
- If
--local flag present → Skip to Local Configuration (Step 2A)
- If
--global flag present → Skip to Global Configuration (Step 2B)
- If no flags → Run Initial Setup wizard (Step 1)
Step 1: Initial Setup Wizard (Default Behavior)
Note: If resuming and lastCompletedStep >= 1, skip to the appropriate step based on configType.
Use the AskUserQuestion tool to prompt the user:
Question: "Where should I configure oh-my-gemini?"
Options:
- Local (this project) - Creates
.gemini-cli/GEMINI.md in current project directory. Best for project-specific configurations.
- Global (all projects) - Creates
~/.gemini-cli/GEMINI.md for all Gemini CLI sessions. Best for consistent behavior everywhere.
Step 2A: Local Configuration (--local flag or user chose LOCAL)
CRITICAL: This ALWAYS downloads fresh GEMINI.md from GitHub to the local project. DO NOT use the Write tool - use bash curl exclusively.
Create Local .claude Directory
mkdir -p .claude && echo ".claude directory ready"
Download Fresh GEMINI.md
TARGET_PATH=".gemini-cli/GEMINI.md"
OLD_VERSION=$(grep -m1 "^# oh-my-gemini" "$TARGET_PATH" 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "none")
if [ -f "$TARGET_PATH" ]; then
BACKUP_DATE=$(date +%Y-%m-%d_%H%M%S)
BACKUP_PATH="${TARGET_PATH}.backup.${BACKUP_DATE}"
cp "$TARGET_PATH" "$BACKUP_PATH"
echo "Backed up existing GEMINI.md to $BACKUP_PATH"
fi
TEMP_OMC=$(mktemp /tmp/omc-claude-XXXXXX.md)
trap 'rm -f "$TEMP_OMC"' EXIT
curl -fsSL "https://raw.githubusercontent.com/Yeachan-Heo/oh-my-gemini/main/docs/GEMINI.md" -o "$TEMP_OMC"
if [ ! -s "$TEMP_OMC" ]; then
echo "ERROR: Failed to download GEMINI.md. Aborting."
rm -f "$TEMP_OMC"
return 1
fi
if grep -q '<!-- OMC:START -->' "$TEMP_OMC"; then
sed -n '/<!-- OMC:START -->/,/<!-- OMC:END -->/{//!p}' "$TEMP_OMC" > "${TEMP_OMC}.clean"
mv "${TEMP_OMC}.clean" "$TEMP_OMC"
fi
if [ ! -f "$TARGET_PATH" ]; then
{
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
} > "$TARGET_PATH"
rm -f "$TEMP_OMC"
echo "Installed GEMINI.md (fresh)"
else
if grep -q '<!-- OMC:START -->' "$TARGET_PATH"; then
BEFORE_OMC=$(sed -n '1,/<!-- OMC:START -->/{ /<!-- OMC:START -->/!p }' "$TARGET_PATH")
AFTER_OMC=$(sed -n '/<!-- OMC:END -->/,${ /<!-- OMC:END -->/!p }' "$TARGET_PATH")
{
[ -n "$BEFORE_OMC" ] && printf '%s\n' "$BEFORE_OMC"
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
[ -n "$AFTER_OMC" ] && printf '%s\n' "$AFTER_OMC"
} > "${TARGET_PATH}.tmp"
mv "${TARGET_PATH}.tmp" "$TARGET_PATH"
echo "Updated OMC section (user customizations preserved)"
else
OLD_CONTENT=$(cat "$TARGET_PATH")
{
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
echo ""
echo "<!-- User customizations (migrated from previous GEMINI.md) -->"
printf '%s\n' "$OLD_CONTENT"
} > "${TARGET_PATH}.tmp"
mv "${TARGET_PATH}.tmp" "$TARGET_PATH"
echo "Migrated existing GEMINI.md (added OMC markers, preserved old content)"
fi
rm -f "$TEMP_OMC"
fi
NEW_VERSION=$(grep -m1 "^# oh-my-gemini" "$TARGET_PATH" 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown")
if [ "$OLD_VERSION" = "none" ]; then
echo "Installed GEMINI.md: $NEW_VERSION"
elif [ "$OLD_VERSION" = "$NEW_VERSION" ]; then
echo "GEMINI.md unchanged: $NEW_VERSION"
else
echo "Updated GEMINI.md: $OLD_VERSION -> $NEW_VERSION"
fi
Note: The downloaded GEMINI.md includes Context Persistence instructions with <remember> tags for surviving conversation compaction.
Note: If an existing GEMINI.md is found, it will be backed up to .gemini-cli/GEMINI.md.backup.YYYY-MM-DD before downloading the new version.
MANDATORY: Always run this command. Do NOT skip. Do NOT use Write tool.
FALLBACK if curl fails:
Tell user to manually download from:
https://raw.githubusercontent.com/Yeachan-Heo/oh-my-gemini/main/docs/GEMINI.md
Verify Plugin Installation
grep -q "oh-my-gemini" ~/.gemini-cli/settings.json && echo "Plugin verified" || echo "Plugin NOT found - run: claude /install-plugin oh-my-gemini"
Confirm Local Configuration Success
After completing local configuration, save progress and report:
mkdir -p .omc/state
cat > ".omc/state/setup-state.json" << EOF
{
"lastCompletedStep": 2,
"timestamp": "$(date -Iseconds)",
"configType": "local"
}
EOF
OMC Project Configuration Complete
- GEMINI.md: Updated with latest configuration from GitHub at ./.gemini-cli/GEMINI.md
- Backup: Previous GEMINI.md backed up to
.gemini-cli/GEMINI.md.backup.YYYY-MM-DD (if existed)
- Scope: PROJECT - applies only to this project
- Hooks: Provided by plugin (no manual installation needed)
- Agents: 28+ available (base + tiered variants)
- Model routing: Haiku/Sonnet/Opus based on task complexity
Note: This configuration is project-specific and won't affect other projects or global settings.
If --local flag was used, clear state and STOP HERE:
rm -f ".omc/state/setup-state.json"
Do not continue to HUD setup or other steps.
Step 2B: Global Configuration (--global flag or user chose GLOBAL)
CRITICAL: This ALWAYS downloads fresh GEMINI.md from GitHub to global config. DO NOT use the Write tool - use bash curl exclusively.
Download Fresh GEMINI.md
TARGET_PATH="$HOME/.gemini-cli/GEMINI.md"
OLD_VERSION=$(grep -m1 "^# oh-my-gemini" "$TARGET_PATH" 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "none")
if [ -f "$TARGET_PATH" ]; then
BACKUP_DATE=$(date +%Y-%m-%d_%H%M%S)
BACKUP_PATH="${TARGET_PATH}.backup.${BACKUP_DATE}"
cp "$TARGET_PATH" "$BACKUP_PATH"
echo "Backed up existing GEMINI.md to $BACKUP_PATH"
fi
TEMP_OMC=$(mktemp /tmp/omc-claude-XXXXXX.md)
trap 'rm -f "$TEMP_OMC"' EXIT
curl -fsSL "https://raw.githubusercontent.com/Yeachan-Heo/oh-my-gemini/main/docs/GEMINI.md" -o "$TEMP_OMC"
if [ ! -s "$TEMP_OMC" ]; then
echo "ERROR: Failed to download GEMINI.md. Aborting."
rm -f "$TEMP_OMC"
return 1
fi
if grep -q '<!-- OMC:START -->' "$TEMP_OMC"; then
sed -n '/<!-- OMC:START -->/,/<!-- OMC:END -->/{//!p}' "$TEMP_OMC" > "${TEMP_OMC}.clean"
mv "${TEMP_OMC}.clean" "$TEMP_OMC"
fi
if [ ! -f "$TARGET_PATH" ]; then
{
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
} > "$TARGET_PATH"
rm -f "$TEMP_OMC"
echo "Installed GEMINI.md (fresh)"
else
if grep -q '<!-- OMC:START -->' "$TARGET_PATH"; then
BEFORE_OMC=$(sed -n '1,/<!-- OMC:START -->/{ /<!-- OMC:START -->/!p }' "$TARGET_PATH")
AFTER_OMC=$(sed -n '/<!-- OMC:END -->/,${ /<!-- OMC:END -->/!p }' "$TARGET_PATH")
{
[ -n "$BEFORE_OMC" ] && printf '%s\n' "$BEFORE_OMC"
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
[ -n "$AFTER_OMC" ] && printf '%s\n' "$AFTER_OMC"
} > "${TARGET_PATH}.tmp"
mv "${TARGET_PATH}.tmp" "$TARGET_PATH"
echo "Updated OMC section (user customizations preserved)"
else
OLD_CONTENT=$(cat "$TARGET_PATH")
{
echo '<!-- OMC:START -->'
cat "$TEMP_OMC"
echo '<!-- OMC:END -->'
echo ""
echo "<!-- User customizations (migrated from previous GEMINI.md) -->"
printf '%s\n' "$OLD_CONTENT"
} > "${TARGET_PATH}.tmp"
mv "${TARGET_PATH}.tmp" "$TARGET_PATH"
echo "Migrated existing GEMINI.md (added OMC markers, preserved old content)"
fi
rm -f "$TEMP_OMC"
fi
NEW_VERSION=$(grep -m1 "^# oh-my-gemini" "$TARGET_PATH" 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown")
if [ "$OLD_VERSION" = "none" ]; then
echo "Installed GEMINI.md: $NEW_VERSION"
elif [ "$OLD_VERSION" = "$NEW_VERSION" ]; then
echo "GEMINI.md unchanged: $NEW_VERSION"
else
echo "Updated GEMINI.md: $OLD_VERSION -> $NEW_VERSION"
fi
Note: If an existing GEMINI.md is found, it will be backed up to ~/.gemini-cli/GEMINI.md.backup.YYYY-MM-DD before downloading the new version.
Clean Up Legacy Hooks (if present)
Check if old manual hooks exist and remove them to prevent duplicates:
rm -f ~/.gemini-cli/hooks/keyword-detector.sh
rm -f ~/.gemini-cli/hooks/stop-continuation.sh
rm -f ~/.gemini-cli/hooks/persistent-mode.sh
rm -f ~/.gemini-cli/hooks/session-start.sh
echo "Legacy hooks cleaned"
Check ~/.gemini-cli/settings.json for manual hook entries. If the "hooks" key exists with UserPromptSubmit, Stop, or SessionStart entries pointing to bash scripts, inform the user:
Note: Found legacy hooks in settings.json. These should be removed since the plugin now provides hooks automatically. Remove the "hooks" section from ~/.gemini-cli/settings.json to prevent duplicate hook execution.
Verify Plugin Installation
grep -q "oh-my-gemini" ~/.gemini-cli/settings.json && echo "Plugin verified" || echo "Plugin NOT found - run: claude /install-plugin oh-my-gemini"
Confirm Global Configuration Success
After completing global configuration, save progress and report:
mkdir -p .omc/state
cat > ".omc/state/setup-state.json" << EOF
{
"lastCompletedStep": 2,
"timestamp": "$(date -Iseconds)",
"configType": "global"
}
EOF
OMC Global Configuration Complete
- GEMINI.md: Updated with latest configuration from GitHub at ~/.gemini-cli/GEMINI.md
- Backup: Previous GEMINI.md backed up to
~/.gemini-cli/GEMINI.md.backup.YYYY-MM-DD (if existed)
- Scope: GLOBAL - applies to all Gemini CLI sessions
- Hooks: Provided by plugin (no manual installation needed)
- Agents: 28+ available (base + tiered variants)
- Model routing: Haiku/Sonnet/Opus based on task complexity
Note: Hooks are now managed by the plugin system automatically. No manual hook installation required.
If --global flag was used, clear state and STOP HERE:
rm -f ".omc/state/setup-state.json"
Do not continue to HUD setup or other steps.
Step 3: Setup HUD Statusline
Note: If resuming and lastCompletedStep >= 3, skip to Step 3.5.
The HUD shows real-time status in Gemini CLI's status bar. Invoke the hud skill to set up and configure:
Use the Skill tool to invoke: hud with args: setup
This will:
- Install the HUD wrapper script to
~/.gemini-cli/hud/omc-hud.mjs
- Configure
statusLine in ~/.gemini-cli/settings.json
- Report status and prompt to restart if needed
After HUD setup completes, save progress:
mkdir -p .omc/state
CONFIG_TYPE=$(cat ".omc/state/setup-state.json" 2>/dev/null | grep -oE '"configType":\s*"[^"]+"' | cut -d'"' -f4 || echo "unknown")
cat > ".omc/state/setup-state.json" << EOF
{
"lastCompletedStep": 3,
"timestamp": "$(date -Iseconds)",
"configType": "$CONFIG_TYPE"
}
EOF
Step 3.5: Clear Stale Plugin Cache
Clear old cached plugin versions to avoid conflicts:
CACHE_DIR="$HOME/.gemini-cli/plugins/cache/omc/oh-my-gemini"
if [ -d "$CACHE_DIR" ]; then
LATEST=$(ls -1 "$CACHE_DIR" | sort -V | tail -1)
CLEARED=0
for dir in "$CACHE_DIR"/*; do
if [ "$(basename "$dir")" != "$LATEST" ]; then
rm -rf "$dir"
CLEARED=$((CLEARED + 1))
fi
done
[ $CLEARED -gt 0 ] && echo "Cleared $CLEARED stale cache version(s)" || echo "Cache is clean"
else
echo "No cache directory found (normal for new installs)"
fi
Step 3.6: Check for Updates
Notify user if a newer version is available:
INSTALLED_VERSION=""
if [ -d "$HOME/.gemini-cli/plugins/cache/omc/oh-my-gemini" ]; then
INSTALLED_VERSION=$(ls -1 "$HOME/.gemini-cli/plugins/cache/omc/oh-my-gemini" | sort -V | tail -1)
fi
if [ -z "$INSTALLED_VERSION" ] && [ -f ".omc-version.json" ]; then
INSTALLED_VERSION=$(grep -oE '"version":\s*"[^"]+' .omc-version.json | cut -d'"' -f4)
fi
if [ -z "$INSTALLED_VERSION" ]; then
if [ -f ".gemini-cli/GEMINI.md" ]; then
INSTALLED_VERSION=$(grep -m1 "^# oh-my-gemini" .gemini-cli/GEMINI.md 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | sed 's/^v//')
elif [ -f "$HOME/.gemini-cli/GEMINI.md" ]; then
INSTALLED_VERSION=$(grep -m1 "^# oh-my-gemini" "$HOME/.gemini-cli/GEMINI.md" 2>/dev/null | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | sed 's/^v//')
fi
fi
LATEST_VERSION=$(npm view oh-my-claude-sisyphus version 2>/dev/null)
if [ -n "$INSTALLED_VERSION" ] && [ -n "$LATEST_VERSION" ]; then
if [ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]; then
echo ""
echo "UPDATE AVAILABLE:"
echo " Installed: v$INSTALLED_VERSION"
echo " Latest: v$LATEST_VERSION"
echo ""
echo "To update, run: claude /install-plugin oh-my-gemini"
else
echo "You're on the latest version: v$INSTALLED_VERSION"
fi
elif [ -n "$LATEST_VERSION" ]; then
echo "Latest version available: v$LATEST_VERSION"
fi
Step 3.7: Set Default Execution Mode
Use the AskUserQuestion tool to prompt the user:
Question: "Which parallel execution mode should be your default when you say 'fast' or 'parallel'?"
Options:
- ultrawork (maximum capability) - Uses all agent tiers including Opus for complex tasks. Best for challenging work where quality matters most. (Recommended)
- ecomode (token efficient) - Prefers Haiku/Sonnet agents, avoids Opus. Best for pro-plan users who want cost efficiency.
Store the preference in ~/.gemini-cli/.omc-config.json:
CONFIG_FILE="$HOME/.gemini-cli/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"
if [ -f "$CONFIG_FILE" ]; then
EXISTING=$(cat "$CONFIG_FILE")
else
EXISTING='{}'
fi
echo "$EXISTING" | jq --arg mode "USER_CHOICE" '. + {defaultExecutionMode: $mode, configuredAt: (now | todate)}' > "$CONFIG_FILE"
echo "Default execution mode set to: USER_CHOICE"
Note: This preference ONLY affects generic keywords ("fast", "parallel"). Explicit keywords ("ulw", "eco") always override this preference.
Optional: Disable Ecomode Entirely
If the user wants to disable ecomode completely (so ecomode keywords are ignored), add to the config:
echo "$EXISTING" | jq '. + {ecomode: {enabled: false}}' > "$CONFIG_FILE"
echo "Ecomode disabled completely"
Step 3.8: Install CLI Analytics Tools (Optional)
The OMC CLI provides standalone token analytics commands (omc stats, omc agents, omc tui).
Ask user: "Would you like to install the OMC CLI for standalone analytics? (Recommended for tracking token usage and costs)"
Options:
- Yes (Recommended) - Install CLI tools globally for
omc stats, omc agents, etc.
- No - Skip CLI installation, use only plugin skills
CLI Installation Note
The CLI (omc command) is no longer supported via npm/bun global install.
All functionality is available through the plugin system:
- Use
/oh-my-gemini:help for guidance
- Use
/oh-my-gemini:doctor for diagnostics
Skip this step - the plugin provides all features.
Step 3.8.5: Select Task Management Tool
First, detect available task tools:
BD_VERSION=""
if command -v bd &>/dev/null; then
BD_VERSION=$(bd --version 2>/dev/null | head -1 || echo "installed")
fi
BR_VERSION=""
if command -v br &>/dev/null; then
BR_VERSION=$(br --version 2>/dev/null | head -1 || echo "installed")
fi
if [ -n "$BD_VERSION" ]; then
echo "Found beads (bd): $BD_VERSION"
fi
if [ -n "$BR_VERSION" ]; then
echo "Found beads-rust (br): $BR_VERSION"
fi
if [ -z "$BD_VERSION" ] && [ -z "$BR_VERSION" ]; then
echo "No external task tools found. Using built-in Tasks."
fi
If neither beads nor beads-rust is detected, skip this step (default to built-in).
If beads or beads-rust is detected, use AskUserQuestion:
Question: "Which task management tool should I use for tracking work?"
Options:
- Built-in Tasks (default) - Use Gemini CLI's native TaskCreate/TodoWrite. Tasks are session-only.
- Beads (bd) - Git-backed persistent tasks. Survives across sessions. [Only if detected]
- Beads-Rust (br) - Lightweight Rust port of beads. [Only if detected]
(Only show options 2/3 if the corresponding tool is detected)
Store the preference:
CONFIG_FILE="$HOME/.gemini-cli/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"
if [ -f "$CONFIG_FILE" ]; then
EXISTING=$(cat "$CONFIG_FILE")
else
EXISTING='{}'
fi
echo "$EXISTING" | jq --arg tool "USER_CHOICE" '. + {taskTool: $tool, taskToolConfig: {injectInstructions: true, useMcp: false}}' > "$CONFIG_FILE"
echo "Task tool set to: USER_CHOICE"
Note: The beads context instructions will be injected automatically on the next session start. No restart is needed for config to take effect.
Step 4: Verify Plugin Installation
grep -q "oh-my-gemini" ~/.gemini-cli/settings.json && echo "Plugin verified" || echo "Plugin NOT found - run: claude /install-plugin oh-my-gemini"
Step 5: Offer MCP Server Configuration
MCP servers extend Gemini CLI with additional tools (web search, GitHub, etc.).
Ask user: "Would you like to configure MCP servers for enhanced capabilities? (Context7, Exa search, GitHub, etc.)"
If yes, invoke the mcp-setup skill:
/oh-my-gemini:mcp-setup
If no, skip to next step.
Step 6: Detect Upgrade from 2.x
Check if user has existing configuration:
ls ~/.gemini-cli/commands/ralph-loop.md 2>/dev/null || ls ~/.gemini-cli/commands/ultrawork.md 2>/dev/null
If found, this is an upgrade from 2.x.
Step 7: Show Welcome Message
For New Users:
OMC Setup Complete!
You don't need to learn any commands. I now have intelligent behaviors that activate automatically.
WHAT HAPPENS AUTOMATICALLY:
- Complex tasks -> I parallelize and delegate to specialists
- "plan this" -> I start a planning interview
- "don't stop until done" -> I persist until verified complete
- "stop" or "cancel" -> I intelligently stop current operation
MAGIC KEYWORDS (optional power-user shortcuts):
Just include these words naturally in your request:
| Keyword | Effect | Example |
|---------|--------|---------|
| ralph | Persistence mode | "ralph: fix the auth bug" |
| ralplan | Iterative planning | "ralplan this feature" |
| ulw | Max parallelism | "ulw refactor the API" |
| eco | Token-efficient mode | "eco refactor the API" |
| plan | Planning interview | "plan the new endpoints" |
**ralph includes ultrawork:** When you activate ralph mode, it automatically includes ultrawork's parallel execution. No need to combine keywords.
MCP SERVERS:
Run /oh-my-gemini:mcp-setup to add tools like web search, GitHub, etc.
HUD STATUSLINE:
The status bar now shows OMC state. Restart Gemini CLI to see it.
CLI ANALYTICS (if installed):
- omc - Full dashboard (stats + agents + cost)
- omc stats - View token usage and costs
- omc agents - See agent breakdown by cost
- omc tui - Launch interactive TUI dashboard
That's it! Just use Gemini CLI normally.
For Users Upgrading from 2.x:
OMC Setup Complete! (Upgraded from 2.x)
GOOD NEWS: Your existing commands still work!
- /ralph, /ultrawork, /plan, etc. all still function
WHAT'S NEW in 3.0:
You no longer NEED those commands. Everything is automatic now:
- Just say "don't stop until done" instead of /ralph
- Just say "fast" or "parallel" instead of /ultrawork
- Just say "plan this" instead of /plan
- Just say "stop" instead of /cancel
MAGIC KEYWORDS (power-user shortcuts):
| Keyword | Same as old... | Example |
|---------|----------------|---------|
| ralph | /ralph | "ralph: fix the bug" |
| ralplan | /ralplan | "ralplan this feature" |
| ulw | /ultrawork | "ulw refactor API" |
| eco | (new!) | "eco fix all errors" |
| plan | /plan | "plan the endpoints" |
HUD STATUSLINE:
The status bar now shows OMC state. Restart Gemini CLI to see it.
CLI ANALYTICS (if installed):
- omc - Full dashboard (stats + agents + cost)
- omc stats - View token usage and costs
- omc agents - See agent breakdown by cost
- omc tui - Launch interactive TUI dashboard
Your workflow won't break - it just got easier!
Step 8: Ask About Starring Repository
First, check if gh CLI is available and authenticated:
gh auth status &>/dev/null
If gh is available and authenticated:
Use the AskUserQuestion tool to prompt the user:
Question: "If you're enjoying oh-my-gemini, would you like to support the project by starring it on GitHub?"
Options:
- Yes, star it! - Star the repository
- No thanks - Skip without further prompts
- Maybe later - Skip without further prompts
If user chooses "Yes, star it!":
gh api -X PUT /user/starred/Yeachan-Heo/oh-my-gemini 2>/dev/null && echo "Thanks for starring! ⭐" || true
Note: Fail silently if the API call doesn't work - never block setup completion.
If gh is NOT available or not authenticated:
echo ""
echo "If you enjoy oh-my-gemini, consider starring the repo:"
echo " https://github.com/Yeachan-Heo/oh-my-gemini"
echo ""
Clear Setup State on Completion
After Step 8 completes (regardless of star choice), clear the setup state:
rm -f ".omc/state/setup-state.json"
echo "Setup completed successfully!"
Keeping Up to Date
After installing oh-my-gemini updates (via npm or plugin update), run:
/oh-my-gemini:omc-setup --local to update project config
/oh-my-gemini:omc-setup --global to update global config
This ensures you have the newest features and agent configurations.
Help Text
When user runs /oh-my-gemini:omc-setup --help or just --help, display:
OMC Setup - Configure oh-my-gemini
USAGE:
/oh-my-gemini:omc-setup Run initial setup wizard
/oh-my-gemini:omc-setup --local Configure local project (.gemini-cli/GEMINI.md)
/oh-my-gemini:omc-setup --global Configure global settings (~/.gemini-cli/GEMINI.md)
/oh-my-gemini:omc-setup --help Show this help
MODES:
Initial Setup (no flags)
- Interactive wizard for first-time setup
- Configures GEMINI.md (local or global)
- Sets up HUD statusline
- Checks for updates
- Offers MCP server configuration
Local Configuration (--local)
- Downloads fresh GEMINI.md to ./.gemini-cli/
- Backs up existing GEMINI.md to .gemini-cli/GEMINI.md.backup.YYYY-MM-DD
- Project-specific settings
- Use this to update project config after OMC upgrades
Global Configuration (--global)
- Downloads fresh GEMINI.md to ~/.gemini-cli/
- Backs up existing GEMINI.md to ~/.gemini-cli/GEMINI.md.backup.YYYY-MM-DD
- Applies to all Gemini CLI sessions
- Cleans up legacy hooks
- Use this to update global config after OMC upgrades
EXAMPLES:
/oh-my-gemini:omc-setup # First time setup
/oh-my-gemini:omc-setup --local # Update this project
/oh-my-gemini:omc-setup --global # Update all projects
For more info: https://github.com/Yeachan-Heo/oh-my-gemini