Skip to content
Back to skills

Omca Setup

BSecurity

Use to install, check, repair or uninstall oh-my-claudeagent's setup in ~/.claude/ (dependencies, runtime, status line), or when the user says \"setup omca\".

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 16, 2026
ai-agentsgoshellbashaws

Works with

  • claude code
  • terminal
  • cli
  • mcp

Security analysis

B75/100
  • criticalSends environment variables or credentials to an external URL

Pro shows the line behind each finding and how to fix it

Scanned October 16, 2026

npx -y skills add UtsavBalar1231/oh-my-claudeagent --skill omca-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Omca Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Omca Setup
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/utsavbalar1231-omca-setup/badge)](https://www.skillsdirectory.com/skills/utsavbalar1231-omca-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: omca-setup
description: "Use to install, check, repair or uninstall oh-my-claudeagent's setup in ~/.claude/ (dependencies, runtime, status line), or when the user says \"setup omca\"."
user-invocable: true
shell: bash
argument-hint: "[--uninstall | --check | --doctor | --migrate]"
allowed-tools:
  - Read
  - Bash(claude --version)
  - Bash(bun --version)
  - Bash(ast-grep --version)
  - Bash(sg --version)
  - Bash(bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" *)
  - mcp__plugin_oh-my-claudeagent_omca__health_check
---

# omca-setup

Checks what OMCA needs, asks whether the terminal font draws Nerd Font icons, then points the status line and the subagent status line at OMCA's renderer. The only file outside the plugin it writes is the user settings file (the two status line keys and `env.OMCA_GLYPHS`), plus the launcher `omca/statusline.ts` beside it, and only after the user confirms the printed change. OMCA's server delivers the orchestration guidance on each session's first prompt, so setup writes nothing into `CLAUDE.md`.

The user settings directory is `$CLAUDE_CONFIG_DIR` when that variable is set and not empty, and `~/.claude` otherwise; the launcher goes under the same directory. In bash the settings file is `"${CLAUDE_CONFIG_DIR:-$HOME/.claude}/settings.json"`. In PowerShell it is `"$(if ($env:CLAUDE_CONFIG_DIR) { $env:CLAUDE_CONFIG_DIR } else { "$HOME\.claude" })\settings.json"`. `SETTINGS` below stands for that quoted path in the shell the session uses.

**Policy baseline**: Claude Code's native settings are authoritative. Managed settings are non-overridable policy, and keys such as `allowManagedPermissionRulesOnly`, `allowManagedHooksOnly` and `sandbox.failIfUnavailable` belong there; this skill never writes or enforces them. OMCA's hooks never auto-allow a command, so allow decisions come from the permission rules in the user's settings, and `/fewer-permission-prompts` proposes them from past transcripts. The mod's guard denies catastrophic removals outright. For another destructive Bash command it asks in a review dialog when the `guardMode` option is `dialog` and a dialog can show; otherwise it denies a command that discards work.

## Mode detection

Parse `$ARGUMENTS`:

- `--uninstall`: UNINSTALL MODE
- `--migrate`: MIGRATE MODE
- `--check` or `--doctor`: tell the user to run `/omca doctor`, which reports the mod, the client and bun versions, the hooks, ast-grep, the plugin options, effort and model overrides, the advisor and the status line. Stop there.
- No flag: SETUP MODE

## Setup mode

### Phase 1: dependency check

Run each command and compare the version it prints:

```bash
claude --version
```

PASS at 2.1.295 or later. Otherwise FAIL and **stop**: OMCA's mod needs Claude Code 2.1.295 or later.

```bash
bun --version
```

PASS at 1.4.2 or later. Otherwise, including when bun is missing, FAIL and **stop**: OMCA's server, its hooks and the status line run on bun.

```bash
ast-grep --version
```

When `ast-grep` is missing, run `sg --version` instead. Either one is PASS. Neither is WARN, not a stop: only the structural code search tools need it.

### Phase 2: runtime check

Call the `health_check` tool, loading it if needed: `ToolSearch({query: "select:mcp__plugin_oh-my-claudeagent_omca__health_check", max_results: 1})`. When `runtime` is `ok`, report PASS. Otherwise report the `runtime` value and `runtime_reason` verbatim, and continue: the status line works without the runtime. When the tool is still missing, OMCA's server is not connected; report that and continue.

### Phase 3: glyphs

The `/omca` pane, the band and the status line draw Nerd Font icons unless `OMCA_GLYPHS` names `unicode` or `ascii`. No surface can see the terminal's font, so ask.

1. Print the test line with the script, so the user's terminal draws it:

   ```bash
   bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" --glyph-test
   ```

   It prints four Nerd Font icons: a check in a circle, gears, an eye and a terminal prompt. They are private-use characters that do not survive being retyped, so never write them into your own reply; point the user at the command's output.

2. Ask with `AskUserQuestion` whether that output shows four small icons or boxes and blanks. When they see the icons, report `nerd` and end the phase.

3. When they see boxes, preview the change:

   ```bash
   bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" --settings SETTINGS --glyphs unicode --glyphs-only
   ```

   It prints `Already configured: ...` when the settings already name `unicode`; report that and end the phase. Otherwise show the printed diff unchanged and ask with `AskUserQuestion` whether to apply it. On yes, run the same command with `--yes`; on no, change nothing and print the command. `unicode` keeps every pane and status line glyph inside common monospace fonts; `ascii` is for plain-text output and screen readers.

### Phase 4: status line

The `statuslineMode` plugin option is `${user_config.statuslineMode}`. Claude Code substitutes the option into this file only when the user has set it, so when that still reads as a placeholder instead of `off` or `on`, the default `on` applies. When it is `off`, skip this phase.

1. Preview the change:

   ```bash
   bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" --settings SETTINGS
   ```

   It writes nothing. It prints `Already configured: ...` when there is nothing to do; report that and end the phase. Otherwise it prints a unified diff of the settings file and the launcher it would copy. It sets `statusLine` to the absolute bun path plus the launcher's path with `padding: 1`, `refreshInterval: 5` and `hideVimModeIndicator: true`, and `subagentStatusLine` to the same command with `--subagent`. Any other `statusLine` or `subagentStatusLine` is replaced, and every other key and byte of the file stays as it is. When it exits 1, report its one-line reason and end the phase.

2. Show the user the printed diff unchanged, then ask with `AskUserQuestion` whether to apply it. Say that the previous file is kept beside it as `settings.json.omca-bak`.

3. On yes, apply it:

   ```bash
   bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" --settings SETTINGS --yes
   ```

   On no, change nothing and print that command so the user can run it later.

The launcher runs the renderer of the enabled plugin install that Claude Code recorded most recently, under any marketplace, so a plugin update needs no second setup run. In a `--plugin-dir` checkout, with no installed version, the status line reads `omca: no installed plugin version found`.

### Phase 5: force-style opt-out

The `disableForceOrchestrationStyle` option is `${user_config.disableForceOrchestrationStyle}`; a placeholder means the default `false`. When it is not `true`, skip this phase.

Only the installed cache copy is edited, because a `--plugin-dir` checkout is tracked source. When `${CLAUDE_PLUGIN_ROOT}` lies under `plugins/cache/` in the user settings directory, Read `${CLAUDE_PLUGIN_ROOT}/output-styles/omca-default.md`. If its frontmatter has the line `force-for-plugin: true`, remove that line with Edit and report that the user's own `outputStyle` now takes precedence. If the line is already gone, report that. A plugin update restores the line, so this phase has to run again after each update. Outside the cache, report that the opt-out applies only to an installed copy.

### Report

```
=== oh-my-claudeagent setup ===
Claude Code  PASS 2.1.295
bun          PASS 1.4.2
ast-grep     PASS 0.44.0 | WARN not found
Runtime      PASS | <runtime>: <runtime_reason>
Glyphs       nerd | unicode written | already unicode | declined
Status line  configured | already configured | declined | off | <reason>
Force style  stripped | already stripped | skipped
```

## Uninstall mode

1. Preview what setup wrote:

   ```bash
   bun "${CLAUDE_PLUGIN_ROOT}/scripts/setup-statusline.ts" --settings SETTINGS --uninstall
   ```

   It removes a `statusLine` or `subagentStatusLine` only when it runs OMCA's launcher, the launcher file itself, and `OMCA_GLYPHS` from `env`. When it prints `Nothing to remove: ...`, report that and go to step 3.

2. Show the diff, ask with `AskUserQuestion`, and on yes run the same command with `--yes`.

3. Tell the user that the plugin itself is removed with `/plugin uninstall oh-my-claudeagent@omca`, and its marketplace with `/plugin marketplace remove omca`. This skill does not run either, and it leaves `.omca/` in each project alone.

## Migrate mode

Moves a project's agent memories, and the agent ids in the user settings, to the names the roles carry now. It runs per project: tell the user to run it in each project that has agent memories. It never runs from the doctor or at session start.

1. Load the tool: `ToolSearch({query: "select:mcp__plugin_oh-my-claudeagent_omca__agents_migrate", max_results: 1})`. When it is still missing, OMCA's server is not connected; report that and stop.

2. Call `agents_migrate` with no `apply`. It changes nothing and returns `actions`, `collisions` and `mentions`. Show them as a short list: each action, each collision with its reason, and each mention, which is a file that names an agent from the rename table and that the tool leaves for the user to edit. When all three are empty, report that there is nothing to migrate and stop.

3. Ask with `AskUserQuestion` whether to apply the actions (apply or skip). On skip, change nothing.

4. On apply, call `agents_migrate` with `apply: true` and report the actions it took. When a `MEMORY.md` collided, ask with `AskUserQuestion` whether to merge the indexes, and on yes call it again with `apply: true` and `merge_indexes: true`.

## Constraints

- Write only through `scripts/setup-statusline.ts`, after the user confirms the diff it printed, through the Edit in phase 5, and through `agents_migrate` with `apply: true`, after the user confirms the listed actions.
- Never edit project, local or managed settings.
- A second run changes nothing that is already configured.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.