agent-doc-discipline
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before…
Configure HUD display options (layout, presets, display elements)
$ npx -y skills add Yeachan-Heo/oh-my-claudecode --skill hud --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/hudContext preview
The summary Claude sees to decide when to auto-load this skill.
Configure HUD display options (layout, presets, display elements)
name: hud description: Configure HUD display options (layout, presets, display elements) argument-hint: "[setup|minimal|focused|full|status]" role: config-writer # DOCUMENTATION ONLY - This skill writes to ~/.claude/ paths scope: ~/.claude/** # DOCUMENTATION ONLY - Allowed write scope level: 2
Configure the OMC HUD (Heads-Up Display) for the statusline.
Note: All `~/.claude/...` paths in this guide respect `CLAUDE_CONFIG_DIR` when that environment variable is set.
| Command | Description | |---------|-------------| | `/oh-my-claudecode:hud` | Show current HUD status (auto-setup if needed) | | `/oh-my-claudecode:hud setup` | Install/repair HUD statusline | | `/oh-my-claudecode:hud minimal` | Switch to minimal display | | `/oh-my-claudecode:hud focused` | Switch to focused display (default) | | `/oh-my-claudecode:hud full` | Switch to full display | | `/oh-my-claudecode:hud status` | Show detailed HUD status |
When you run `/oh-my-claudecode:hud` or `/oh-my-claudecode:hud setup`, the system will automatically: 1. Check if `~/.claude/hud/omc-hud.mjs` exists 2. Check if `statusLine` is configured in `~/.claude/settings.json` 3. If missing, create the HUD wrapper script and configure settings 4. Report status and prompt to restart Claude Code if changes were made
**IMPORTANT**: If the argument is `setup` OR if the HUD script doesn't exist at `~/.claude/hud/omc-hud.mjs`, you MUST create the HUD files directly using the instructions below.
**Step 1:** Check if setup is needed:
node -e "const p=require('path'),f=require('fs'),d=process.env.CLAUDE_CONFIG_DIR||p.join(require('os').homedir(),'.claude');console.log(f.existsSync(p.join(d,'hud','omc-hud.mjs'))?'EXISTS':'MISSING')"**Step 2:** Verify the plugin is installed:
node -e "const p=require('path'),f=require('fs'),d=process.env.CLAUDE_CONFIG_DIR||p.join(require('os').homedir(),'.claude'),b=p.join(d,'plugins','cache','omc','oh-my-claudecode');try{const v=f.readdirSync(b).filter(x=>/^\d/.test(x)).sort((a,c)=>a.localeCompare(c,void 0,{numeric:true}));if(v.length===0){console.log('Plugin not installed - run: /plugin install oh-my-claudecode');process.exit()}const l=v[v.length-1],h=p.join(b,l,'dist','hud','index.js');console.log('Version:',l);console.log(f.existsSync(h)?'READY':'NOT_FOUND - try reinstalling: /plugin install oh-my-claudecode')}catch{console.log('Plugin not installed - run: /plugin install oh-my-claudecode')}"**Step 3:** If omc-hud.mjs is MISSING or argument is `setup`, install the HUD wrapper and its dependency from the canonical template:
HUD_DIR="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hud"
mkdir -p "$HUD_DIR/lib"
cp "${CLAUDE_PLUGIN_ROOT}/scripts/lib/hud-wrapper-template.txt" "$HUD_DIR/omc-hud.mjs"
cp "${CLAUDE_PLUGIN_ROOT}/scripts/lib/config-dir.mjs" "$HUD_DIR/lib/config-dir.mjs"**IMPORTANT:** Always copy from the canonical template at `scripts/lib/hud-wrapper-template.txt`. Do NOT write the wrapper content inline — the template is the single source of truth and is guarded by drift tests (`src/__tests__/hud-wrapper-template-sync.test.ts`, `src/__tests__/paths-consistency.test.ts`).
**Step 4:** Make it executable (Unix only, skip on Windows):
node -e "if(process.platform==='win32'){console.log('Skipped (Windows)')}else{require('fs').chmodSync(require('path').join(process.env.CLAUDE_CONFIG_DIR||require('path').join(require('os').homedir(),'.claude'),'hud','omc-hud.mjs'),0o755);console.log('Done')}"**Step 5:** Update settings.json to use the HUD:
Read `${CLAUDE_CONFIG_DIR:-~/.claude}/settings.json`, then update/add the `statusLine` field.
**IMPORTANT:** Do not use `~` in the command. On Unix, use `$HOME` to keep the path portable across machines. On Windows, use an absolute path because Windows does not expand `~` in shell commands.
If you are on Windows, first determine the correct path:
node -e "const p=require('path').join(require('os').homedir(),'.claude','hud','omc-hud.mjs').split(require('path').sep).join('/');console.log(JSON.stringify(p))"**IMPORTANT:** The command path MUST use forward slashes on all platforms. Claude Code executes statusLine commands via bash, which interprets backslashes as escape characters and breaks the path.
Then set the `statusLine` field. On Unix it should stay portable and look like:
{
"statusLine": {
"type": "command",
"command": "node ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/hud/omc-hud.mjs"
}
}On Windows the path uses forward slashes (not backslashes):
{
"statusLine": {
"type": "command",
"command": "node C:/Users/username/.claude/hud/omc-hud.mjs"
}
}Use the Edit tool to add/update this field while preserving other settings.
**Step 6:** Clean up old HUD scripts (if any):
node -e "const p=require('path'),f=require('fs'),d=process.env.CLAUDE_CONFIG_DIR||p.join(require('os').homedir(),'.claude'),t=p.join(d,'hud','omc-hud.js');try{if(f.existsSync(t)){f.unlinkSync(t);console.log('Removed legacy omc-hud.js')}else{console.log('No legacy script found')}}catch{}"**Step 7:** Tell the user to restart Claude Code for changes to take effect.
Shows only the essentials:
[OMC] ralph | todos:2/5
Shows all relevant elements:
[OMC] branch:main | ralph:3/10 | US-002 | skill:planner | ctx:67% | agents:2 | bg:3/5 | todos:2/5
Shows everything including multi-line agent details:
[OMC] repo:oh-my-claudecode branch:main | ralph:3/10 | US-002 (2/5) | ctx:[████░░]67% | agents:3 | bg:3/5 | todos:2/5 ├─ O architect 2m analyzing architecture patterns... ├─ e explore 45s searching for test files └─ s executor 1m implementing validation logic
When agents are running, the HUD shows detailed information on separate lines:
For Codex users: Check out oh-my-codex — the same orchestration experience for OpenAI Codex CLI. Liked OmC but found it a bit overkill? Try gajae-code.
Repo: Yeachan-Heo/oh-my-claudecode
Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before…
Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode
Shipyard's navigator — chart a foggy effort (destination unclear, questions not yet stateable) into a map of decision tickets on the repo's issue tracker, then…
Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly
Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior