一键导入
hud
Setup and manage Oh-My-Toong HUD for Claude Code statusLine
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Setup and manage Oh-My-Toong HUD for Claude Code statusLine
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
Use when asked to implement, build, fix, or create features - especially before writing any code or when scope and requirements are unclear
Use when orchestrating complex multi-step tasks requiring delegation, parallelization, or systematic completion verification - especially when tempted to do everything yourself or ask user codebase questions
Use when facing trade-offs, subjective judgments, uncertain decisions, or when diverse viewpoints would improve judgment quality. Triggers include "council", "다른 의견", "perspectives", "what do others think".
Code review orchestration skill - fans out angle finders across review angles and merges their raw candidate findings
Autonomous objective-pursuit executor — decomposes an objective into Six Slots and a Story set, dispatches execution to sisyphus, then re-pursues the objective across plan/execute cycles until an objective-level completion gate confirms the verification surface is met.
| name | hud |
| description | Setup and manage Oh-My-Toong HUD for Claude Code statusLine |
This skill configures the Oh-My-Toong HUD to display in Claude Code's status bar. Setup, restore, and backup all self-locate via ${CLAUDE_SKILL_DIR} substitution — no branch logic. The same skill source produces correct behavior whether deployed user-globally (~/.claude/skills/hud/) or project-locally (<project>/.claude/skills/hud/).
/hud setup # Install and configure HUD
/hud restore # Restore previous statusLine configuration
When user runs /hud setup:
Check dependencies
bun --version to verify Bun is installed.jq --version to verify jq is installed.Resolve self-located paths
!`
set -euo pipefail
SETTINGS_FILE="${CLAUDE_SKILL_DIR}/../../settings.local.json"
BACKUP_FILE="${CLAUDE_SKILL_DIR}/../../statusLine.backup.json"
SCRIPT_PATH="${CLAUDE_SKILL_DIR}/scripts/index.ts"
echo "SETTINGS_FILE=$SETTINGS_FILE"
echo "BACKUP_FILE=$BACKUP_FILE"
echo "SCRIPT_PATH=$SCRIPT_PATH"
`
Verify hud script exists
$SCRIPT_PATH (which is ${CLAUDE_SKILL_DIR}/scripts/index.ts) exists.make sync first and stop.Backup existing statusLine config (first-time-only invariant)
!`
set -euo pipefail
SETTINGS_FILE="${CLAUDE_SKILL_DIR}/../../settings.local.json"
BACKUP_FILE="${CLAUDE_SKILL_DIR}/../../statusLine.backup.json"
if [ -e "$BACKUP_FILE" ]; then
echo "backup exists — skipping (first-time-only invariant preserved)"
echo "BACKUP_FILE=$BACKUP_FILE"
exit 0
fi
SETTINGS_CONTENT="{}"
if [ -f "$SETTINGS_FILE" ]; then
SETTINGS_CONTENT="$(cat "$SETTINGS_FILE")"
fi
if echo "$SETTINGS_CONTENT" | jq -e 'has("statusLine")' > /dev/null 2>&1; then
echo "$SETTINGS_CONTENT" | jq '.statusLine' > "${BACKUP_FILE}.tmp"
mv "${BACKUP_FILE}.tmp" "$BACKUP_FILE"
echo "backed up existing statusLine to $BACKUP_FILE"
else
echo '{}' > "${BACKUP_FILE}.tmp"
mv "${BACKUP_FILE}.tmp" "$BACKUP_FILE"
echo "wrote sentinel {} to $BACKUP_FILE (no prior statusLine)"
fi
`
The first-time-only invariant ensures the original user statusLine is preserved on first setup; subsequent setups must not overwrite the backup with hud's own value. The sentinel {} represents "no prior statusLine existed" so /hud restore knows to remove the key on restore.
Update settings.local.json with hud statusLine (always executed — supports upgrades)
!`
set -euo pipefail
SETTINGS_FILE="${CLAUDE_SKILL_DIR}/../../settings.local.json"
SCRIPT_PATH="${CLAUDE_SKILL_DIR}/scripts/index.ts"
if [ ! -f "$SETTINGS_FILE" ]; then
echo '{}' > "$SETTINGS_FILE"
fi
jq --arg cmd "bun run $SCRIPT_PATH" \
'.statusLine = {"type":"command","command":$cmd}' \
"$SETTINGS_FILE" > "${SETTINGS_FILE}.tmp"
mv "${SETTINGS_FILE}.tmp" "$SETTINGS_FILE"
echo "Updated statusLine.command to: bun run $SCRIPT_PATH"
`
${CLAUDE_SKILL_DIR} is substituted by Claude Code at preprocessing time, so $SCRIPT_PATH resolves to an absolute path (e.g., /Users/toong/.claude/skills/hud/scripts/index.ts for user-global, or /Users/toong/repos/<project>/.claude/skills/hud/scripts/index.ts for project-local). The jq invocation preserves all other keys in settings.local.json — only .statusLine is updated.
Inform user
When user runs /hud restore:
Resolve self-located paths
!`
set -euo pipefail
SETTINGS_FILE="${CLAUDE_SKILL_DIR}/../../settings.local.json"
BACKUP_FILE="${CLAUDE_SKILL_DIR}/../../statusLine.backup.json"
echo "SETTINGS_FILE=$SETTINGS_FILE"
echo "BACKUP_FILE=$BACKUP_FILE"
`
Check ${CLAUDE_SKILL_DIR}/../../statusLine.backup.json exists.
Restore based on backup content
!`
set -euo pipefail
SETTINGS_FILE="${CLAUDE_SKILL_DIR}/../../settings.local.json"
BACKUP_FILE="${CLAUDE_SKILL_DIR}/../../statusLine.backup.json"
if [ ! -e "$BACKUP_FILE" ]; then
echo "no backup found — nothing to restore"
exit 0
fi
BACKUP_CONTENT="$(cat "$BACKUP_FILE")"
if [ ! -f "$SETTINGS_FILE" ]; then
echo '{}' > "$SETTINGS_FILE"
fi
if [ "$(echo "$BACKUP_CONTENT" | jq -c '.')" = "{}" ]; then
jq 'del(.statusLine)' "$SETTINGS_FILE" > "${SETTINGS_FILE}.tmp"
echo "removed statusLine key (sentinel — pre-setup state restored)"
else
jq --argjson sl "$BACKUP_CONTENT" '.statusLine = $sl' "$SETTINGS_FILE" > "${SETTINGS_FILE}.tmp"
echo "restored statusLine from backup"
fi
mv "${SETTINGS_FILE}.tmp" "$SETTINGS_FILE"
rm -f "$BACKUP_FILE"
echo "removed backup file"
`
The sentinel {} distinguishes "no prior statusLine existed" (remove key) from "user had a custom statusLine" (restore object).
After setup, the HUD shows:
[OMC] ultrawork | ctx:67% | agents:2 | bg:1 | todos:2/5 | skill:prometheus
| Element | Description |
|---|---|
[OMC] | Oh-My-Toong prefix (always shown) |
ultrawork | Ultrawork mode active |
ctx:N% | Context window usage (green <70%, yellow 70-85%, red >85%) |
agents:N | Running subagents count |
bg:N | Background tasks count |
todos:X/Y | Todo completion (green when done, yellow when pending) |
skill:name | Active skill name (truncated to 15 chars) |