oma-bootstrap ยท diff
git:20261006.afe76ac to git:20261006.35f12f1
31 added, 17 removed. Audit B to A.
---
name: oma-bootstrap
- description: Install or verify the oma CLI before any oma-* skill, agent, or workflow runs an `oma` command. Use when `oma` is missing from PATH, when a skill says to run `oma ...` and the shell reports "command not found", or on the first task in a fresh Cursor or Grok Bot workspace.
+ description: Install or verify the oma CLI and its runtimes (bun, uv, serena) before any oma-* skill, agent, or workflow runs an `oma` command. Use when `oma` is missing from PATH, when a skill says to run `oma ...` and the shell reports "command not found", or on the first task in a fresh Cursor or Grok Bot workspace.
---
# oma bootstrap
The oma-* skills in this plugin describe *what* to do. Several of them delegate
the mechanics to the `oma` CLI (`oma agent spawn`, `oma market run`,
- `oma recap`, `oma hook run`, `oma doctor`). Marketplace installs ship the
- skill text, not the binary, so a fresh workspace may not have `oma` yet.
+ `oma recap`, `oma hook run`, `oma doctor`), and code search expects the
+ Serena MCP binary. Marketplace installs ship the skill text, not the binaries,
+ so a fresh workspace may have neither.
## When to run
- A skill instruction contains an `oma ...` command and `command -v oma` is empty.
- - The shell reports `oma: command not found`.
+ - The shell reports `oma: command not found` or `serena: command not found`.
- The workspace has no `.agents/` directory and a skill needs project state
(`.agents/state/`, `.agents/results/`, `oma-config.yaml`).
Skip this skill when `oma --version` already prints a version.
## Steps
+ Run from the repository root. Every step is idempotent; rerunning is safe.
+
1. Check: `command -v oma && oma --version`. If both succeed, stop here.
- 2. Install the CLI (first option that works):
+ 2. Provision the runtimes with the official installer in non-interactive
+ mode. It installs bun, uv, serena-agent, and cue when missing, and
+ `OMA_INSTALL_NO_RUN=1` skips the interactive setup it would otherwise
+ launch at the end:
```bash
- # bun available
- bun install --global oh-my-agent
+ curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh \
+ | OMA_INSTALL_NO_RUN=1 bash
+ export PATH="$HOME/.bun/bin:$HOME/.local/bin:$PATH"
+ ```
- # npm only
- npm install --global oh-my-agent
+ Without `curl`, use `wget -qO-` in its place. Each dependency is
+ best-effort: the installer warns and continues when one fails.
- # no global install allowed: use it ad hoc
- bunx oh-my-agent@latest --version # or: npx oh-my-agent@latest --version
+ 3. Install the CLI as a persistent global binary (skills call bare `oma`):
+
+ ```bash
+ bun install --global oh-my-agent
```
- 3. Wire the project non-interactively from the repository root. This creates
- `.agents/` with the default preset and leaves existing files untouched:
+ 4. Wire the project non-interactively. This creates `.agents/` with the
+ default preset and leaves existing files untouched:
```bash
oma install --yes
```
- 4. Verify: `oma doctor`. Report any warning it prints before continuing with
- the original task.
+ 5. Verify: `oma doctor`. It reports whether `serena` is on PATH and whether
+ the project is registered. Report any warning before continuing with the
+ original task.
## Rules
- Ask before `oma install --yes` when the repository is not yours or when
`.agents/` already exists with local changes.
- Do not fall back to re-implementing an `oma` command by hand. If the CLI
cannot be installed, say so and complete only the parts of the task that do
not need it.
- - Keep the one-liner installers (`curl ... | bash`) for interactive sessions;
- they prompt for presets and vendors and are not suited to a headless Bot.
+ - Do not run the installer without `OMA_INSTALL_NO_RUN=1` in a headless Bot:
+ the interactive setup reads from `/dev/tty` and hangs.
+ - If `serena` is still missing after step 2, run
+ `uv tool install -p 3.13 serena-agent@latest --prerelease=allow` once, then
+ `uv tool update-shell`.