hud

yeachan-heo/oh-my-claudecode · updated Apr 8, 2026

$npx skills add https://github.com/yeachan-heo/oh-my-claudecode --skill hud
0 commentsdiscussion
summary

Configure the OMC HUD (Heads-Up Display) for the statusline.

skill.md

HUD Skill

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.

Quick Commands

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

Auto-Setup

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.

Setup Instructions (Run These Commands)

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, create the HUD directory and script:

First, create the directory:

node -e "require('fs').mkdirSync(require('path').join(process.env.CLAUDE_CONFIG_DIR||require('path').join(require('os').homedir(),'.claude'),'hud'),{recursive:true})"

Then, use the Write tool to create ${CLAUDE_CONFIG_DIR:-~/.claude}/hud/omc-hud.mjs with this exact content:

#!/usr/bin/env node
/**
 * OMC HUD - Statusline Script
 * Wrapper that imports from dev paths, plugin cache, or npm package
 */

import { existsSync, readdirSync } from "node:fs";
import { homedir } from "node:os";
import { join } from "node:path";
import { pathToFileURL } from "node:url";

async function main() {
  const home = homedir();
  let pluginCacheVersion = null;
  let pluginCacheDir = null;

  // 1. Development paths (only when OMC_DEV=1)
  if (process.env.OMC_DEV === "1") {
    const devPaths = [
      join(home, "Workspace/oh-my-claudecode/dist/hud/index.js"),
      join(home, "workspace/oh-my-claudecode/dist/hud/index.js"),
      join(home, "projects/oh-my-claudecode/dist/hud/index.js"),
    ];

    for (const devPath of devPaths) {
      if (existsSync(devPath)) {
        try {
          await import(pathToFileURL(devPath).href);
          return;
        } catch { /* continue */ }
      }
    }
  }

  // 2. Plugin cache (for production installs)
  // Respect CLAUDE_CONFIG_DIR so installs under a custom config dir are found
  const configDir = process.env.CLAUDE_CONFIG_DIR || join(home, ".claude");
  const pluginCacheBase = join(configDir, "plugins", "cache", "omc", "oh-my-claudecode");
  if (existsSync(pluginCacheBase)) {
    try {
      const versions = readdirSync(pluginCacheBase);
      if (versions.length > 0) {
        // Filter to only versions with built dist/hud/index.js
        // This prevents picking an unbuilt new version after plugin update
        const builtVersions = versions.filter(version => {
          const pluginPath = join(pluginCacheBase, version, "dist/hud/index.js");
          return existsSync(pluginPath);
        });

        if (builtVersions.length > 0) {
          const latestVersion = builtVersions.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })).reverse()[0];
          pluginCacheVersion = latestVersion;
          pluginCacheDir = join(pluginCacheBase, latestVersion);
          const pluginPath = join(pluginCacheDir, "dist/hud/index.js");
          await import(pathToFileURL(pluginPath).href);
          return;
        }
      }
    } catch { /* continue */ }
  }

  // 3. npm package (global or local install)
  try {
    await import("oh-my-claudecode/dist/hud/index.js");
    return;
  } catch { /* continue */ }

  // 4. Fallback: provide detailed error message with fix instructions
  if (pluginCacheDir && existsSync(pluginCacheDir)) {
    // Plugin exists but dist/ folder is missing - needs build
    const distDir = join(pluginCacheDir, "dist");
    if (!existsSync(distDir)) {
      console.log(`[OMC HUD] Plugin installed but not built. Run: cd "${pluginCacheDir}" && npm install && npm run build`);
    } else {
      console.log(`[OMC HUD] Plugin dist/ exists but HUD not found. Run: cd "${pluginCacheDir}" && npm run build`);
    }
  } else if (existsSync(pluginCacheBase)) {

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.746 reviews
  • Soo Jain· Dec 24, 2024

    Useful defaults in hud — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Sofia Rao· Dec 24, 2024

    Keeps context tight: hud is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Yash Thakker· Nov 27, 2024

    hud fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Mateo Bhatia· Nov 15, 2024

    We added hud from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Valentina Choi· Nov 15, 2024

    hud is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Daniel Flores· Nov 7, 2024

    Useful defaults in hud — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Daniel Farah· Oct 26, 2024

    Registry listing for hud matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Dhruvi Jain· Oct 18, 2024

    hud has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Hana Rahman· Oct 6, 2024

    hud reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Dev Martin· Oct 6, 2024

    Solid pick for teams standardizing on skills: hud is focused, and the summary matches what you get after install.

showing 1-10 of 46

1 / 5