No description
  • Shell 88.4%
  • Python 6.8%
  • Just 4.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-21 15:21:52 -04:00
omp/agent Disable Ollama provider in universal setup 2026-10-21 12:43:19 -04:00
scripts Initial omp global setup: installer, global AGENTS.md, commands, config merge, plugin and skill sync 2026-09-28 16:39:11 -04:00
.gitignore Initial omp global setup: installer, global AGENTS.md, commands, config merge, plugin and skill sync 2026-09-28 16:39:11 -04:00
AGENTS.md Add ponytail plugin; nest marketplace plugins in plugins.json 2026-10-21 12:55:41 -04:00
install.sh Add ponytail plugin; nest marketplace plugins in plugins.json 2026-10-21 12:55:41 -04:00
justfile improvements for install dir 2026-09-28 17:15:25 -04:00
plugins.json Add ponytail plugin; nest marketplace plugins in plugins.json 2026-10-21 12:55:41 -04:00
README.md Add ponytail plugin; nest marketplace plugins in plugins.json 2026-10-21 12:55:41 -04:00
skills-install.json added solidcraft design skill 2026-10-21 15:21:52 -04:00

omp global setup

This repo is the source of truth for my global omp (oh-my-pi) coding agent setup. It is modeled on my pi_setup repo but targets omp only; pi packages, pi settings, and pi-subagents agents are intentionally not carried over.

What this manages

  • syncs repo-managed global omp config from omp/agent/ into ~/.omp/agent by default
  • deep-merges repo-managed config.yml into the target config.yml instead of replacing it
  • optionally installs or updates omp using the official https://omp.sh/install installer when requested
  • optionally runs omp update when requested
  • adds marketplaces and installs/removes omp plugins declared in plugins.json
  • installs missing enabled external skills declared in skills-install.json via the skills CLI, and removes explicitly disabled ones
  • optionally runs a global skills update before syncing configured external skills

It never creates, replaces, or removes machine-local state in the target dir: agent.db (auth, credentials, runtime state), models.yml/models.yaml, or sessions/. Use omp login / /login for provider auth and edit ~/.omp/agent/models.yml for custom providers.

Repo layout

.
├── install.sh
├── justfile
├── plugins.json
├── skills-install.json
├── scripts/
│   ├── install-skills.sh
│   └── merge-yaml.py
└── omp/
    └── agent/
        ├── AGENTS.md
        ├── commands/
        │   ├── clone-prompt.md
        │   ├── gitship.md
        │   ├── init-just.md
        │   ├── jjship.md
        │   └── plan-progress.md
        └── config.yml

Other native omp files can be added under omp/agent/, for example RULES.md, SYSTEM.md, keybindings.yml, mcp.json, rules/, hooks/, tools/, extensions/, skills/<name>/SKILL.md, or agents/*.md. See https://omp.sh/docs.

Managed files:

  • AGENTS.md → ~/.omp/agent/AGENTS.md, user-level context loaded into every session. It shadows other user-level context files such as ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md.
  • commands/*.md → ~/.omp/agent/commands/, user slash commands:
    • /clone-prompt studies the current repo and generates reusable prompts for building a similar project
    • /gitship stages relevant work, creates a meaningful commit, and pushes, asking for confirmation only when real concerns are detected
    • /init-just creates a practical project justfile with documented tasks and a default task list
    • /jjship describes the working-copy change, updates bookmarks, and pushes via jj, asking for confirmation only when real concerns are detected
    • /plan-progress reviews a plan file against current repository progress with evidence-backed status reporting
  • config.yml → deep-merged into ~/.omp/agent/config.yml. Currently: UI preferences (theme.dark, statusLine, composer) and disabledProviders (amazon-bedrock, bedrock-mantle, and ollama). Machine-specific settings such as modelRoles stay local.

Each top-level item in omp/agent/ is copied (or symlinked with --symlink) into the target dir, replacing the target entry wholesale. This means ~/.omp/agent/commands/ is repo-owned: add personal commands to this repo, or to a project .omp/commands/.

config.yml is special-cased:

  • mappings merge recursively; scalars and lists in the repo file replace the target value; keys the repo does not mention are left alone
  • the merge uses ruamel.yaml round-trip mode (YAML 1.2), so comments and values such as off/"yes" in the local file survive
  • it is never symlinked, and --clean never removes it
  • it needs python3 with ruamel.yaml, or uv (the installer then runs uv run --with ruamel.yaml)

Usage

From inside this repo:

./install.sh

Or use the justfile:

just                  # show available recipes
just install          # sync config, plugins, and skills
just install --symlink # flags pass through to install.sh (see Options below)
just config           # sync only repo-managed files under omp/agent
just plugins          # sync only omp plugins from plugins.json
just skills           # install only external skills from skills-install.json
just update           # install omp if missing (else `omp update`), sync, then update plugins and skills
just clean            # remove and reinstall repo-managed config targets and configured plugins
just check            # validate scripts and config files

Options:

./install.sh --symlink            # symlink instead of copy
./install.sh --install-omp        # install omp via https://omp.sh/install, or `omp update` if already installed
./install.sh --update             # run `omp update` after syncing
./install.sh --config-only        # sync only repo-managed config files
./install.sh --plugins-only       # sync only omp plugins from plugins.json
./install.sh --clean              # remove repo-managed targets (except config.yml) and reinstall configured plugins
./install.sh --update-plugins     # `omp update --plugins` and reinstall unpinned npm plugins
./install.sh --update-skills      # run `npx skills update -g` before syncing configured skills
./install.sh --omp-dir ~/.omp/profiles/work/agent

The target dir is always ~/.omp/agent unless you pass --omp-dir. The installer deliberately ignores PI_CODING_AGENT_DIR: pi also reads that variable, so honoring it could sync omp config into pi's agent dir on a machine with both installed. For a named omp profile, pass --omp-dir ~/.omp/profiles/<name>/agent. Plugins are installed through the omp CLI into the default plugin root, not into --omp-dir.

--install-omp runs the official installer only when omp is not on PATH. If omp is already installed it is not reinstalled; omp update runs instead, at the same point as --update. The official installer overwrites the binary in place, which fails with curl: (23) (Text file busy) while omp sessions are running; omp update does not have this problem.

After changes, restart omp or run /reload-plugins for plugins.

Keeping machines in sync

On every machine:

git pull
./install.sh

That gives you:

  • the latest repo-managed config
  • any missing enabled plugins from plugins.json, and removal of plugins explicitly disabled there
  • any missing enabled external skills from skills-install.json, and removal of skills explicitly disabled there

omp plugins

plugins.json has three sections:

{
  "marketplaces": {
    "claude-plugins-official": {
      "source": "anthropics/claude-plugins-official",
      "plugins": {
        "code-review": true,
        "old-review": false
      }
    }
  },
  "npm": {
    "@scope/omp-plugin": true,
    "github:singh-gur/omp-langfuse": true,
    "git+https://github.com/example/example-plugin.git": true,
    "pinned-plugin@1.2.3": true,
    "old-plugin": false
  }
}
  • marketplaces maps a marketplace name (as reported by omp plugin marketplace list) to its declaration. source is passed to omp plugin marketplace add <source>; missing marketplaces are added, existing ones are left alone and never removed. The optional plugins map declares that marketplace's plugins by name — the sync derives the name@marketplace id omp uses. true installs if missing; false uninstalls if installed.
  • npm maps plugin specs to booleans. true installs if missing; false uninstalls if installed.
  • an npm spec pinned to an exact version (pkg@1.2.3) is reinstalled when the installed version differs. Unpinned npm plugins are reinstalled only with --update-plugins.
  • Git sources such as github:singh-gur/omp-langfuse or git+https://github.com/example/example-plugin.git#main go in npm: omp reports installed plugins by package name. The sync matches by repository basename (ignoring .git and #ref), so that basename must match the package name; do not declare the same plugin under both forms.
  • npm plugin install/uninstall needs bun on PATH. Without it, npm entries are skipped with a warning; marketplace entries still sync.
  • a failed plugin command logs a warning and the sync continues.

The file currently declares the ponytail marketplace (DietrichGebert/ponytail) with the ponytail plugin, and the github:singh-gur/omp-langfuse npm plugin. Most of the old pi packages cover things omp has built in: subagents (task), web access (web_search, browser), ask, MCP, omp worktree, omp usage, and the --advisor runtime.

External skills

Declare external skills in skills-install.json as an object mapping repository URLs to skill-name booleans. true installs if missing; false removes if installed.

{
  "https://github.com/singh-gur/agent_skills": {
    "arch-design": true,
    "old-skill": false
  }
}

Current external skills config:

{
  "https://github.com/singh-gur/agent_skills": {
    "arch-design": true,
    "draw-diagram": true,
    "skill-writer": true,
    "alignment-interview": true,
    "setup-ci": true,
    "arcane-compose": true
  },
  "https://github.com/vercel-labs/agent-browser": {
    "agent-browser": true
  }
}

Each skill is installed with:

npx skills add <repo> --skill <skill> -g -y -a universal
npx skills remove <skill> -g -y -a universal

-a universal installs into ~/.agents/skills/, which omp discovers through its agents skill provider. pi also reads that directory, so removing a skill here removes it for pi too. Skills not listed in the file are left alone. If jq or npx is missing, external skill sync is skipped with a warning.

Prerequisites

  • bash, jq, curl (for --install-omp)
  • python3 with ruamel.yaml, or uv (for the config.yml merge)
  • npx (for external skills)
  • bun (only for npm plugins)
  • just (optional)