Passer au contenu principal
F

oh-my-agent (dsh)

first-fluke/oh-my-agent/integrations/dsh

Exécute les vérifications OMA du projet avant et après les outils et lorsqu’un tour tente de se terminer. Installe la dépendance OMA CLI et initialise au premier usage les projets non configurés. Nécessite Node.js 22+ ; la configuration initiale demande un accès réseau et en écriture au projet.

Installer

dsh plugin --profile web add github:first-fluke/oh-my-agent

Ce plugin se trouve dans le sous-répertoire integrations/dsh du dépôt.

README

oh-my-agent: A Specialist Team for the Coding Agent You Already Use

npm version npm downloads GitHub stars License Last Updated

한국어 | 中文 | Português | 日本語 | Français | Español | Nederlands | Polski | Русский | Deutsch | Tiếng Việt | ภาษาไทย

oh-my-agent (oma) adds a team of specialists to the coding agent you already use: Claude Code, Codex CLI, Cursor, and 11 more. A planner breaks the work down, engineers build in parallel, a reviewer checks the result, and a debugger fixes root causes. It also does cited research, slide decks, videos and images. Most steps leave a file you can open, and in the long-running workflows a gate can send the agent back to work until your own test, lint or typecheck script passes.

Run this from your project root:

curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash

Then run oma doctor and type /plan add user accounts with a settings page in your agent. Your first 5 minutes walks through it.

oh-my-agent explainer

Watch the full video (35s)

What you get

Workflows are what you type (or just say). They call in roles, the specialists. Skills are the know-how: each role carries its own, and your agent loads the rest whenever a task needs them.

What it gives youTry it
12 specialist rolesPM, architect, backend, frontend, mobile, database and infra engineers, QA reviewer, debugger, refactorer, docs curator, researcher (meet them)/orchestrate build a TODO app with login
21 workflowsSlash commands from /brainstorm and /plan to /review, /debug and /scm. Most also start from a plain request (keyword banks in up to 11 languages)"review this PR"
33 skillsDomain know-how that loads only when a task needs it: UI, APIs, schemas, Terraform, CI, security, git, observabilityloads by itself, e.g. "add a Terraform S3 bucket"
Files you can openPlans, design docs, API contracts, ADRs, bug notes, per-agent results, security evidence, HTML explainers, recapsls .agents/results
Checks that don't take the agent's wordIn a long-running workflow, your own test, lint or typecheck script must pass before the agent may stop; oma ralph verify checks that a /ralph run left its plan, QA and refactor files/ultrawork …, then oma goal set --gate test
Research and contentCited search, market research, papers, slide decks, MP4 videos, images, local voice, PDF/HWP to Markdown/video, /convert
One folder, 14 runtimesOne portable .agents/ directory, written into each runtime's own config filesoma link cursor

Install · First 5 minutes · The team · Which workflow? · Everything in the box · Works with · Verification · FAQ · Docs

Install

The script installs bun if it is missing, installs the oma command globally (bun install --global oh-my-agent, skipped when oma is already on your PATH), then starts the interactive setup. The global command matters: the hooks (keyword detection, the Stop gate) and several workflows call oma, and the hooks silently do nothing when they cannot find it. If you skip the script, install it yourself with bun install --global oh-my-agent (npm install --global oh-my-agent or brew install oh-my-agent also work).

Windows, or without the install script
# Windows (PowerShell)
irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex
# Any OS with bun installed: the same setup, plus the global `oma` command
bun install --global oh-my-agent
oma

On Windows the installer hides Antigravity, Hermes, and Kimi, and the hook wrapper is a bash script. The default Aside browser MCP installs through bash, so deselect it if you have no bash.

The setup asks for your response language, which agent runtimes to wire up, capability providers, a browser MCP, a model preset, and a skill preset. Pick All for the skill preset if you are unsure: workflows are always installed, and several of them (/orchestrate, /work, /ultrawork, /ralph, /docs, /security) need skills that only All includes.

What the installer also does by default
  • Installs bun (required). Tries uv, Serena (uv tool install), and CUE (brew install cue or winget), and continues with a warning if any of them fails.
  • Pre-selects the Aside browser MCP in the interactive setup, and installs it with curl -fsSL https://releases.aside.com/install.sh | bash only if you keep it selected. Deselect it in the browser MCP step, or change it later with oma update mcp.
  • Uses AgentMemory for semantic memory, which runs bun install -g @agentmemory/agentmemory and registers it as a login service (launchd, systemd user unit, or Windows scheduled task). Choose provider none or set OMA_NO_AGENTMEMORY=1 to skip it.
  • Asks before linking skills into home-directory vendor folders (Antigravity, Hermes, Kimi). In $HOME without --global it asks for confirmation.
  • Writes some files outside the project without asking: ~/.claude.json (marks the project as a trusted Claude Code workspace), ~/.serena/ (OMA context, answer-size floor, project registration), ~/.cursor/cli-config.json (turns off Cursor's commit attribution), ~/.grok/config.toml (telemetry), and ~/.gemini/antigravity-cli/ (HUD), each only for a vendor you selected.
  • Writes telemetry opt-outs into vendor settings (Claude DISABLE_TELEMETRY=1, which also turns off Claude Code Remote Control; Gemini, Qwen, Codex, and Grok usage stats). Set telemetry: true to keep vendor defaults.
  • Disables Qwen Code automatic memory saving by adding memory.enableManagedAutoMemory: false when the setting is absent. Explicit true or false preferences and other memory settings are preserved.
  • Adds unset Claude Code settings to .claude/settings.json, including skipDangerousModePermissionPrompt: true, effortLevel: high, cleanupPeriodDays: 180, and env flags that turn off auto memory, adaptive thinking, error reporting, and built-in git instructions. Values you already set are kept.
  • Adds a co-author trailer: Claude Code's commit attribution becomes Co-Authored-By: First Fluke <our.first.fluke@gmail.com> and PRs get a "Generated with oh-my-agent" line. Set scm.co_author.enabled: false to turn this off.
  • Installs a commit-msg guard in .githooks/ that rejects unlisted Co-authored-by addresses, and sets git config --local core.hooksPath .githooks when no other hooks are active. Set scm.co_author.enforce_hook: false to opt out.
  • oma update updates the oma CLI in the background (auto_update_cli: false or OMA_SKIP_VERSION_CHECK=1 to stop it) and runs uv tool upgrade serena-agent --prerelease=allow (serena.auto_update: false).
  • With Serena in the default bridge mode, the first agent session that starts a shared Serena server registers a cleanup timer that stops idle shared Serena servers every 5 minutes (launchd dev.oma.serena-daemon-gc, systemd user timer oma-serena-daemon-gc.timer, or Windows scheduled task OMA Serena Daemon GC). Set serena.mode: stdio to skip the shared server and its timer. oma uninstall does not remove the timer.
  • Non-interactive runs (-y, OMA_YES=1, CI=true) use the All skill preset, model_preset: auto, and Python as the backend language. They select no browser MCP (and skip the Aside install script) unless mcp.devtools_browsers already lists one.
Skill presets
PresetSkills
AllAll 33 skills (recommended)
Fullstackarchitecture, backend, brainstorm, db, debug, design, dev-workflow, frontend, mobile, pm, qa, scm, tf-infra
Fullstack WebFullstack without mobile and tf-infra
Fullstack MobileFullstack without frontend and tf-infra
Frontendarchitecture, brainstorm, debug, design, frontend, pm, qa, scm
Backendarchitecture, backend, brainstorm, db, debug, dev-workflow, pm, qa, scm
Mobilearchitecture, brainstorm, debug, mobile, pm, qa, scm
DevOpsarchitecture, brainstorm, debug, dev-workflow, observability, pm, qa, scm, tf-infra
Researchacademic-writing, hwp, market, pdf, scholar, scm, search, translation
Contentacademic-writing, design, image, scm, translation, voice
CustomPick skills one by one

Of the named presets, only All includes coordination, orchestration, docs, security, refactor, explanation, recap, video, slide, and skill-creation (or pick them under Custom). Research and Content lack the skills behind /plan, /review, /debug, /architecture, and /brainstorm. See Workflows that need skills outside a preset.

Your first 5 minutes

  1. Install with the command above.

  2. Check the install:

    oma doctor
    

    You should see CLI Status (which agent CLIs are installed and signed in) and Skills Status (for example Skills (33/33 installed, 33 complete)). If oma is not found, open a new terminal (the installer may have just added ~/.bun/bin to your PATH) or run bun install --global oh-my-agent.

  3. Open your agent in the project and ask for a plan:

    /plan add user accounts with a settings page
    

    Or just write "plan user accounts with a settings page": on runtimes with a prompt hook, the keyword starts the same workflow.

  4. Check what you got. /plan runs in the current session. For work that spans several areas, like this one, it writes .agents/results/plan-<session-id>.json and a tracker at docs/plans/work/<NNN>-<name>.md. A small, single-area request gets a direct recommendation instead of a plan file.

Stop there. You will know whether this is for you. When you want more, run /work or /orchestrate on the plan.

Meet the team

Your own agent leads the team. In /work, /orchestrate and /ultrawork it hands each job to the right specialist, which runs as its own subagent. /plan, /architecture and /docs run in your current session with that role's skill, and /review and /debug call in their specialist for large scopes. When a role is on another vendor's CLI, oma agent spawn runs it there.

Your specialistCarriesCall them withLeaves behind
Product manager (pm-planner)oma-pm/plan, or "plan the payment feature"A plan JSON and a tracker in docs/plans/work/ for Medium and Complex work (Simple requests get a direct recommendation)
Architect (architecture-reviewer)oma-architecture/architectureAn ADR or recommendation in .agents/results/architecture/
Backend, frontend, mobile, database and infra engineersoma-backend, oma-frontend + oma-design, oma-mobile, oma-db, oma-tf-infra/work, /orchestrateCode, tests, and a result-<agent> file per task
QA reviewer (qa-reviewer)oma-qa/review, or "review this PR"Findings ranked CRITICAL to LOW, each with file:line and fix code
Debugger (debug-investigator)oma-debug/debug, or "fix this bug"A minimal fix, a regression test, and a bug note in .agents/results/bugs/ when one is warranted
The other three roles, and the skills without a role
Your specialistCarriesCall them withLeaves behind
Refactorer (refactor-engineer)oma-refactor/ultrawork's REFINE phaseBehavior-preserving refactor: commits and a result-refactor-<session>.md report
Docs curator (docs-curator)oma-docs/docs, or "verify docs"docs/generated/doc-refs.json and the doc patches you approve
Researcher (research-explorer)oma-search, oma-market, oma-scholara research requestCited sources with trust labels; market briefs in .agents/results/market/

The infra engineer (tf-infra-engineer) is told to ask before any destructive or production apply or destroy. The remaining skills (brainstorm, security, scm, dev-workflow, observability, explanation, recap, translation, coordination, orchestration, skill-creation, content and media) have no dedicated role. Your agent loads them itself, and for most of them the skill injector suggests the right one from your prompt.

How the team works together

 THINK   /brainstorm ......................... docs/plans/designs/<NNN>-<feature>.md
 PLAN    /plan · /architecture ............... plan JSON, API contracts, ADR
 DESIGN  /design ............................. DESIGN.md + tokens
 BUILD   /work · /orchestrate · /ultrawork ... code + result-<agent> files, engineers in parallel
 CHECK   /review · /security · /debug ........ findings, security evidence, regression test
 SHIP    /scm · /docs ........................ Conventional Commits, doc fixes

Each step hands a file to the next. /brainstorm saves a design that /plan reads, and /plan writes a plan in which every task has an agent, dependencies, acceptance criteria and a check command. /orchestrate runs that plan (it loads the most recent plan-*.json, or writes one). /work and /ultrawork start by having the PM write their own plan. Skip any stage you don't need; every stage also works on its own.

Which workflow should run the team?

You wantRunHow it ends
Just a plan/planA plan file for multi-area work, or a direct recommendation for small work
A PM-led build you follow step by step/workPM, then engineers tier by tier, then QA. CRITICAL and HIGH findings go into a fix loop (up to 5 cycles)
A hands-off parallel build/orchestrateOnly tasks whose checks pass count as done; each task gets up to 3 attempts, then is marked partial or failed
Maximum care/ultraworkFive gated phases (PLAN, IMPL, VERIFY, REFINE, SHIP); every review runs in a fresh reviewer session
"Don't stop until it's really done"/ralphRepeats /ultrawork with a separately spawned, fresh-context judge until every criterion passes; stops with a partial report when criteria are blocked or after 5 iterations
The team on a timeroma schedule create qa-reviewer "review open PRs" --every 2hOne Markdown log per run in ~/.oma/schedule/runs/<id>/

You don't need slash commands. On runtimes with a prompt hook, plain requests (keyword banks in up to 11 languages) can start most workflows: "review this PR" starts /review. Describing a whole app ("Build a TODO app with user authentication") suggests /orchestrate, and your agent decides whether to run it. Keywords inside code blocks are ignored.

/orchestrate, /work, /ultrawork and /ralph are persistent when you invoke them by name, as a slash command or in plain text ("ultrawork: add rate limiting"). The agent is then sent back to work when it tries to stop early (up to 5 times or 2 hours) until you say "workflow done". A loosely matching request only suggests them.

Measured, with caveats. In the benchmark (one prompt, Claude Code with five different add-on setups including plain, claude-opus-4-6, one build each), oma scored 80.6 against 70.7 for plain Claude Code, at 1.7x the cost ($4.04 vs $2.37) and 1.8x the time.

All 21 workflows
CommandWhat it does
/architectureWeighs design tradeoffs and produces a recommendation, review, or ADR
/brainstormExplores ideas and constraints and produces an approved design before planning
/convertConverts PDF/HWP to Markdown, or transcodes images, video, and audio with ffmpeg
/debugReproduces a bug, fixes the root cause, writes a regression test, and scans for similar patterns
/deepinitMaps an existing codebase into AGENTS.md, ARCHITECTURE.md, and a docs/ knowledge base
/designBuilds a design system, DESIGN.md, and tokens with accessibility checks
/docsFinds broken doc references and proposes patches for docs a diff touched
/explainTurns a diff, PR, branch, or topic into a self-contained interactive HTML explainer
/orchestrateRuns agents in parallel, coordinates them through file state, and verifies the result (persistent)
/planBreaks a feature into prioritized tasks with API contracts
/ralphRepeats /ultrawork with a separately spawned judge, up to 5 iterations (persistent)
/recapSummarizes your AI conversation history for a day or period
/reviewReviews security (OWASP Top 10), performance, accessibility (WCAG 2.2 AA), and code quality
/scheduleRegisters an agent job that runs on a recurring interval
/scmHandles branches, merges, conflicts, worktrees, and Conventional Commits
/securityScans source, agent skills, and MCP components, validates findings, and sets up CI gates
/stack-setDetects your tech stack and generates stack-specific references for domain skills
/toolsLists, enables, and disables MCP tools in plain language
/ultraworkFive phases (PLAN, IMPL, VERIFY, REFINE, SHIP), each review in a fresh reviewer session (persistent)
/videoTurns a brief into a finished MP4 through a key-optional pipeline
/workCoordinates several agents on a multi-domain project with PM planning and QA review (persistent)

Trigger accuracy is measured, not assumed: oma verify triggers scores the detector against a labeled English and Korean corpus of 212 prompts, and CI fails above 10% false fires or 20% missed fires. Last measured: 0% missed-fire, 5.3% false-fire. Full reference: Workflows.

See it work

An illustrative /ultrawork session. The [OMA PERSISTENT MODE: ULTRAWORK] block is the exact format the Stop hook prints; the other lines are paraphrased:

you    /ultrawork add rate limiting to POST /login
agent  runs `oma goal set --gate test`
agent  PLAN writes .agents/results/plan-<run-id>.json
agent  IMPL -> VERIFY -> REFINE -> SHIP  (each review runs in a fresh reviewer session)
agent  "Rate limiting added. All tests pass."
oma    [OMA PERSISTENT MODE: ULTRAWORK]
       Stop gate 'test' FAILED (reinforcement 1/5).
       Fix the failures below, then finish the workflow — the stop is allowed only when the gate passes.
       --- gate output (tail) ---
       FAIL  src/auth/login.test.ts > returns 429 after 5 attempts
       To abandon instead: delete .agents/state/ultrawork-state-<host-session>.json or say "workflow done".
agent  fixes the limiter and stops again
oma    `test` exits 0: stop allowed, gate.passed appended to the session log

Afterwards, oma state list finds the session and oma state get <oma-sid> (the ID state list prints) shows every gate event. Under /ralph, oma ralph verify --json also checks that the phases left their files behind (output trimmed):

{ "ok": false,
  "missing": [{ "id": "A3", "description": "a distinct QA agent ran (VERIFY phase)",
                "pattern": ".agents/state/memories/result-qa*.md or .agents/results/result-qa*.md",
                "status": "missing" }] }

Everything in the box

Plan and design: /brainstorm, /plan, /architecture, /design
CommandWhat it doesWrites
/brainstormAsks one clarifying question at a time and proposes 2-3 approaches that work differently, then hands off to /plan. Writes no codedocs/plans/designs/<NNN>-<feature>.md
/planSizes the work as Simple, Medium or Complex; for Medium and Complex work, splits it into tasks, each with an agent, dependencies, acceptance criteria and a check command, and defines API contracts when the work crosses a boundary.agents/results/plan-<sid>.json, docs/plans/work/<NNN>-<name>.md, contracts in .agents/results/api-contracts/ when needed
/architectureReads earlier decisions first, compares at least 2 options, and marks replaced ADRs as supersededAn ADR or recommendation in .agents/results/architecture/
/designProposes 2-3 directions, then writes DESIGN.md with tokens and audits responsive layout and accessibilityDESIGN.md, CSS/Tailwind/shadcn tokens
Build: 7 domain skills, plus /stack-set to fit them to your stack
SkillBuilds
oma-frontendReact/Next.js or Angular UI that follows your tokens, i18n and accessibility rules
oma-backendAPIs, auth and data access, layered router → service → repository
oma-mobileFlutter, React Native or Swift apps
oma-dbSchemas, migrations, query tuning, vector/RAG retrieval plans
oma-tf-infraTerraform for any cloud, with drift, destructive-change and cost risks called out
oma-dev-workflowmise tasks, lint/format/typecheck, commitlint, git hooks, CI/CD and releases
oma-observabilityOpenTelemetry, SLOs, alerting and incident forensics

/stack-set reads your manifests and writes stack-specific references for the backend, frontend and mobile skills. In a monorepo, frontend, backend and mobile engineers are pointed at their workspace (pnpm, npm/yarn/bun workspaces, lerna, nx, turbo, mise.toml).

Review, fix and ship: /review, /security, /debug, refactor, /scm
Command or skillWhat it doesWrites
/reviewA dependency audit, then OWASP Top 10, performance, WCAG 2.2 AA and code quality. Every finding gets file:line and fix codeThe report in chat plus a memory record; no report file
/securityScans your source, agent skills and MCP servers (Deepsec, Cisco Skill and MCP Scanner) and, given a scoped test deployment, runs ARTEX pen tests. The workflow requires an engine that failed to run to be reported as failed, not as clean.agents/results/security/<run-id>/
/debugReproduces the failure, fixes the root cause with a minimal change, adds a regression test, and scans for the same pattern elsewhereThe fix and test; a bug note in .agents/results/bugs/ when one is warranted
oma-refactorChanges structure without changing behavior: characterization tests first, then refactor-only commits.agents/results/refactor/
/scmConventional Commits split by logical change; branches, merges, rebases and worktreesCommits and branches
Docs and knowledge: /deepinit, /docs, /explain, /recap, translation
Command or skillWhat it doesWrites
/deepinitTurns an existing repo into an agent-ready knowledge baseAGENTS.md, ARCHITECTURE.md, docs/
/docsFinds broken references, patches the docs a diff touched (only the patches you approve), and finds stale translationsdocs/generated/doc-refs.json, patched docs
/explainTurns a PR, branch or staged change into an HTML walkthrough with a 5-question quiz, or a topic into a one-page visual explainer.agents/results/explain/<date>-<slug>.html
/recapSummarizes your AI conversations across tools for a day or a period.agents/results/recap/<date>.md
oma-translationTranslation that reads natively; placeholders, code and locale keys stay unchangedTranslated text
Research: search, market, papers, academic writing
SkillWhat it doesWrites
oma-searchDocs, web and code search, with a trust label on each sourceCited results
oma-marketPain points, trends and competitors from community signals, framed with SWOT, Porter's 5 Forces and PESTEL.agents/results/market/<topic>-<date>.md
oma-scholarPaper search that reads a compact claims file (Knows format, about 700 tokens) instead of the full PDF (about 10K tokens)<paper>.knows.yaml
oma-academic-writingDrafts and audits academic prose against a rubricYour file
Content and media: /video, /convert, slides, images, voice
Command or skillWhat it makesWrites
/videoShorts, explainers or demos as a finished MP4; keyed providers have key-free fallbacks.agents/results/videos/<run>/ with a manifest
oma-slide1920×1080 HTML decks, exported to PDF, PNG or PPTX.agents/results/slides/<session>/
oma-imageImages through the vendor CLIs you're signed into, compared side by side.agents/results/images/<run>/
oma-voiceLocal text-to-speech and transcription through the Voicebox app.agents/results/voice/<run>/
/convertPDF or HWP to Markdown; image, video and audio conversion through ffmpegNext to the input file

These pipelines report a missing source or vendor key instead of silently returning a thinner result.

Hooks that run without being asked
HookWhat it doesOff switch / limit
Keyword startStarts the matching workflow from a plain requestQuestions, pasted text and code blocks are skipped
Skill injectorPoints your agent at the right skills for the promptPaused while a persistent workflow is active
Stop gateSends a persistent workflow back to work; with oma goal set --gate test, the stop is allowed when that script exits 0 within 25 sSay "workflow done"; it also releases after 5 blocks or 2 hours
Refactor guardAt stop, flags edited files over 500 lines for refactor-engineerOpt-in: refactor_guard.enabled
Secret guardBlocks git add of *.env, *.pem, id_rsa*, *.tfstate and similar filesPrefix that one command with OMA_SCM_ALLOW_SECRETS=1
Code-search guardBlocks native recursive search in the project so the agent uses Serena or Gortexproviders.code_intelligence_guard: off
Test filterKeeps only failures and summaries from test output, so fewer tokens are spentOMA_TEST_FILTER=0
Session memoryWhen you switch or resume a session (or after compaction), re-injects the active session's recent events plus AgentMemory recallMemory provider none or OMA_NO_AGENTMEMORY=1 turns off the recall; the local event snapshot stays

oma hook probe checks that oma's prompt hooks accept each runtime's hook input (it does not launch the runtime). Which hooks each runtime wires is in Host differences.

Parallel agents, sessions and dashboards
  • oma agent spawn <role> "<task>" <sid> runs a role on Antigravity, Claude, Codex, Cursor, OpenCode, Qwen, Grok or Pi, with --isolation worktree and --fallback-vendors. oma agent parallel runs several at once.
  • Add --read-only to require a vendor restriction before launch. Codex uses its read-only sandbox, Claude uses plan mode, and Pi excludes edit, write, bash, and powershell. Other CLIs require an explicit read_only_flag; missing, empty, or known conflicting flags stop dispatch. Custom flags declare support in your CLI or wrapper. Pi's tool exclusions do not restrict arbitrary extension or MCP tools; OMA does not add an operating-system sandbox.
  • oma state list --all-projects and oma state get <sid>: sessions and every recorded event.
  • oma dashboard terminal / oma dashboard web: live agent status (the web dashboard listens on 127.0.0.1 only). Dashboard guide.
  • oma stats get (productivity metrics), oma retro (a git retrospective), oma recap --window 7d (what you did across AI tools).
  • oma visualize --affected <paths>: which skills, workflows, agents and checks depend on the .agents/ files you changed.
Code intelligence, memory and MCP
SlotDefaultAlternatives
DocsContext7—
Code intelligenceSerena, one shared server per projectGortex (experimental)
Semantic memoryAgentMemoryHoncho (experimental), none
Browser MCPAsideChrome DevTools, Firefox DevTools

Agents coordinate through plain files in .agents/state/, with no outside service. /tools turns MCP tools on or off in plain language. Details: Capability Providers.

Getting better over time
  • oma skill eval measures a skill's lift over a baseline on held-out tasks. oma skill optimize proposes edits that raise it, and --apply keeps them (skill-eval guide).
  • oma harness evolution enable --max-dispatches <n> schedules a nightly cycle that turns failed runs into regression fixtures and applies skill improvements that pass evaluation as project overlays. Add --mode propose to only record them.
  • oma emit exports the .agents/ source as an Agent Skills package, an Agent Plugins package, a Claude Code plugin marketplace, or AGENTS.md.
Config and safety rails
  • One user-owned .agents/oma-config.yaml survives updates (only oma update --force resets it); private .local.yaml or .local.cue overlays can sit on top of it. language sets the response language.
  • 13 project rules (backend, commit, database, debug, design, and more) load as native rules in Claude Code and Cursor, and are indexed in the managed AGENTS.md block written for Codex, Qwen Code and Pi.
  • Updates keep config and migration backups in .agents/backup/; shipped skills and workflows are replaced in place, so keep local changes outside them. oma uninstall --dry-run shows what would be removed. first-fluke/oma-update-action@v1 runs oma update in CI and opens a PR.
All 33 skills
SkillWhat it does
oma-academic-writingDrafts, revises, and audits academic prose.
oma-architectureWeighs architecture tradeoffs and draws module boundaries, with ADR/ATAM/CBAM analysis.
oma-backendBuilds APIs, authentication, and data access in Python, Node.js, or Rust.
oma-brainstormExplores ideas with you before you commit to building.
oma-coordinationGuides manual, step-by-step coordination of PM, frontend, backend, mobile, and QA agents.
oma-dbDesigns schemas, migrations, indexes, and vector stores.
oma-debugFinds the root cause, fixes the bug, and writes a regression test.
oma-designBuilds design systems with tokens, accessibility, and responsive layouts.
oma-dev-workflowAutomates CI/CD, releases, and monorepo tasks.
oma-docsChecks docs for broken references, syncs them with code changes, and flags translation drift.
oma-explanationTurns a diff, PR, branch, or topic into a self-contained HTML explainer, with a quiz for code changes.
oma-frontendBuilds UI in React/Next.js or Angular.
oma-hwpConverts HWP, HWPX, and HWPML files to Markdown.
oma-imageGenerates images and reference-guided variations, and can compare AI vendors side by side.
oma-marketResearches your market from community signals and frames it with SWOT, 5F, and PESTEL.
oma-mobileBuilds mobile apps with Flutter, React Native, or native Swift.
oma-observabilityRoutes observability work across metrics, logs, traces, SLOs, and incident forensics.
oma-orchestrationRuns multiple agents in parallel from the CLI.
oma-pdfConverts PDF files to Markdown.
oma-pmPlans tasks, breaks down requirements, and defines API contracts.
oma-qaReviews changes for correctness, OWASP security, performance, and accessibility.
oma-recapRecaps your conversation history into themed work summaries.
oma-refactorRefactors without changing behavior, using hotspot targeting, characterization tests, and refactor-only commits.
oma-scholarSearches academic literature and builds Knows paper sidecars for claims, evidence, and peer review.
oma-scmManages branches, merges, worktrees, and Conventional Commits.
oma-searchRoutes each query to the best source and scores how much you can trust the result.
oma-securityScans source, agent skills, and MCP components; tests deployed web apps and validates findings.
oma-skill-creationWrites and audits new OMA skills.
oma-slideGenerates HTML presentation decks and exports them to PDF/PNG/PPTX.
oma-tf-infraProvisions multi-cloud infrastructure with Terraform.
oma-translationTranslates so the result reads like a native speaker wrote it.
oma-videoGenerates short-form, explainer, and demo videos through a key-optional HyperFrames pipeline.
oma-voiceGenerates voiceovers and transcribes audio on-device.

Works with

14 installer targets: Claude Code, Codex CLI, Cursor, Antigravity, Qwen Code, Grok, Kiro, Kimi, OpenCode, Pi, GitHub Copilot, Hermes, CommandCode, and ZCode. Wire a runtime you skipped with oma link <vendor>. Runtimes differ in which hooks they offer; the full matrix is in Supported Agents.

  • Orca IDE: OMA for Orca adds a sidebar panel and command-palette actions (Orca 1.4.197+ with experimental plugins).
  • DeepSeek Harness: OMA for DeepSeek Harness connects OMA checks through a Cordis plugin. It needs oma on your PATH.
Runtime logos (installer targets plus Amp and DeepSeek Harness)

native = oma writes the runtime's own config files; adapter = oma also adds hook or agent shims. Amp reads .agents/skills/ by itself and is not an installer target.

Claude Code
Claude Code
native + adapter
Codex CLI
Codex CLI
native + adapter
Antigravity
Antigravity
native SSOT
Cursor
Cursor
native + adapter
Qwen Code
Qwen Code
native dispatch
DeepSeek Harness
DeepSeek Harness
Cordis plugin
Pi
Pi
native-compatible
OpenCode
OpenCode
native-compatible
Amp
Amp
reads .agents/skills
GitHub Copilot
GitHub Copilot
symlinked skills
Grok Build
Grok Build
native hooks
Kiro CLI
Kiro CLI
native hooks + agents

& more

Host differences: which runtimes get keyword detection and the Stop gate
RuntimeKeyword detectionStop gate
Claude Code, Codex CLI, Qwen Code, Grok, Kimiyesyes
Cursoryesyes (re-enters as a follow-up message)
Antigravityyesyes (runs handlers through bun, not the oma wrapper)
OpenCode, Piyesbest-effort (Pi needs a build with agent_settled)
Kiroyesno: Kiro ignores Stop hook output
CommandCodeno prompt hookyes
GitHub Copilot, Hermes, ZCodeno hooksno hooks

Per-agent models

model_preset in .agents/oma-config.yaml chooses which model each agent role uses. The default, auto, follows the running runtime's own agent and model settings.

language: en
model_preset: auto   # auto | free | antigravity | claude | codex | cursor | kiro | mixed | qwen | <custom_presets key>

# Optional per-agent overrides; they win over the preset
agents:
  backend: { model: openai/gpt-5.5, effort: high }
  • mixed uses Claude for orchestrator, architecture, QA, PM, and docs, and Codex gpt-5.5 for implementation roles, so it needs both Claude Code and Codex CLI.
  • free routes through a FreeLLMAPI gateway and needs FREELLM_API_KEY plus a running server.
  • kiro is not in the installer menu; set it in the config file.
  • oma doctor --profile prints the resolved model for each role.
  • Full guide: Per-agent models

Verification, Not Narration

Agents narrate success. oh-my-agent checks the artifacts. See it work shows the Stop gate in action; here is every check oma runs, and what each one proves.

Every mechanism below except the prompted judge is mechanical: a command exits 0 or it doesn't, a file is on disk or it isn't. None of those asks an LLM whether the work "looks correct."

MechanismWhat it checksSource
Stop-hook gateDuring a persistent workflow, oma goal set --gate test (or lint, typecheck) allows the stop only when that package.json script exits 0 within 25 s.persistent-mode.ts
Artifact gateoma ralph verify --json checks for the phase records, the plan JSON, and result files from a distinct QA agent and a distinct refactor agent, each bound to recorded agent runs.ralph.md
Prompted judgeNot mechanical: the /ralph prompt tells the orchestrator to spawn a fresh-context judge that re-checks every criterion each iteration. Nothing checks that the spawn happened.judge-protocol.md
Event logIn an OMA session, gate passes, gate failures, and decisions append one JSON line each to the session's events.jsonl.state-core.ts · event-spec.md
Per-agent checksoma verify agent <type> runs Scope Check, Charter Preflight, Hardcoded Secrets, TODO/FIXME Comments, Declared outputs, and TDD Evidence, plus per-type checks such as TypeScript, Any Types, SQL Injection, and tests.oma verify agent --help

No session, no trail. The Stop hook records gate events under the OMA session opened when the persistent workflow started. Event writes are best-effort. If that session could not be created (stderr shows [oma] L1 session activation failed), a failing gate still blocks the stop, but no gate.failed line is written. Before you rely on the trail, or demo it, check that oma state list shows an active session; oma state get <sid> then shows its events.

Limits, details, and how the Stop hook decides

Limits to know:

  • The Stop gate applies only to the persistent workflows (/orchestrate, /work, /ultrawork, /ralph). Without oma goal set --gate, it only re-prompts the agent to continue. /ultrawork tells the agent to set a gate when the project has a cheap check, but nothing enforces it. Run oma goal set --gate test yourself if you want to be sure; the other persistent workflows never set one.
  • Only the typecheck, test, and lint keywords are accepted, and they run the package.json script of that name. No package.json, or no script with that name, means the gate is not run. Non-JS projects need a package.json wrapper script.
  • The block is released and logged as failed after 5 reinforcements, after 2 hours, or when --budget-minutes runs out, so a permanently red gate cannot trap you.
  • Budgets: session.quota_cap caps tokens, spawn count, and per-vendor tokens; the orchestrator refuses the next spawn when a dimension is exceeded.

Artifact gate. A missing artifact means the phase did not run, whatever the narration says. The refactor check also passes as skip-recorded when the session log records a REFINE skip reason.

Prompted judge. The /ralph workflow prompt tells the orchestrator to spawn the judge as a separate agent with fresh context, briefed on the criteria only (never on what the implementer claims it fixed), and to re-verify every criterion each iteration, including earlier PASSes, because fixing C2 is how C1 silently regresses. Nothing checks that the spawn happened: oma ralph verify gates the EXEC artifacts, not the judge, and a runtime that cannot spawn subagents is told to judge inline and record ralph.judge-inline-fallback. /ralph stops after 5 iterations with a partial report.

Event log. Find the session with oma state list and read it with oma state get <sid>. Each event is stamped with vendor and runtime session id. The file's location depends on OMA_HOME, OMA_STATE_HOME, OMA_PROFILE, and older project-local session folders, so don't hard-code it.

Per-agent checks. Types: backend, frontend, mobile, qa, debug, pm. The command exits 1 when any check fails; TODO/FIXME Comments and Inline Styles only warn.

  • backend: <Language> Syntax, SQL Injection (raw SQL patterns), and <Language> Tests, from the commands in stack/stack.yaml. Without that file (generate it with /stack-set) they are skipped.
  • frontend: the stack/stack.yaml syntax and test commands (under oma-frontend, or angular-developer when that skill is installed), or TypeScript (tsc --noEmit) and Frontend Tests (Vitest). Inline Styles and Any Types always run.
  • mobile: the stack/stack.yaml syntax and test commands, or Flutter/Dart Analysis and Flutter Tests.
  • debug: Python Tests (pytest through uv) or Frontend Tests (Vitest).
  • pm: PM Plan (the plan file is valid JSON).
  • qa: no mechanical checks.
flowchart TD
    S[Agent tries to stop] --> P{Persistent workflow active?}
    P -- no --> A[Stop allowed]
    P -- yes --> D{User or agent said workflow done?}
    D -- yes --> A
    D -- no --> R{Budget spent, state older than 2 h, or 5 blocks reached?}
    R -- yes --> F[Stop allowed, logged as gate.failed]
    R -- no --> G{Gate set and package.json script exists?}
    G -- no --> B1[Blocked: workflow still active]
    G -- yes --> X{Script exits 0 within 25 s?}
    X -- yes --> OK[Stop allowed, logged as gate.passed]
    X -- no --> B2[Blocked with output tail, logged as gate.failed]

FAQ

Do I need every skill?

No. See Skill presets; All is the safe default.

How do I know it is working?

oma doctor shows installed skills and warns when hooks can't find oma. During a persistent workflow, oma state list shows the active session and oma state get <sid> shows its gate events.

Does it cost more tokens?

Usually, yes. Skills load only when a task needs them, but multi-agent workflows and fresh-context reviews spend more. In the one-prompt benchmark, oma cost 1.7x plain Claude Code.

The Stop hook keeps blocking. How do I get out?

Say "workflow done" (or "workflow complete" / "workflow finished", or the equivalent in the other supported languages), or delete .agents/state/<workflow>-state-<sid>.json. If you do neither, it releases on its own after 5 blocks or 2 hours.

How do I update or uninstall?

oma update refreshes skills, workflows, and hooks and keeps your config (--with-new-skills adds skills new in the release; oma update mcp re-chooses the browser MCP). oma uninstall --dry-run shows what would be removed; oma uninstall removes it and keeps oma-config.yaml, mcp.json, and skills you wrote. More fixes: Troubleshooting.

What does oh-my-agent leave to the model?

Planning and choosing the next step stay with your agent's model; oma has no fixed workflow graph. What oma enforces outside the model: tool guardrails (secret and search guards), budgets, retry and stop limits, an event log, and, when you set a gate, a stop that waits for your own checks to pass.

Learn More

Like this project? Give it a star!

gh api --method PUT /user/starred/first-fluke/oh-my-agent

Try our optimized starter template: fullstack-starter

Star History

Star History Chart

References

Research this builds on (7 papers)
  • Li, X., Liu, Y., Chen, W., You, B., Di, Z., He, Y., Zheng, S., Choe, K. W., Sun, J., Wang, S., Tao, C., Li, B., Zhao, X., Geng, H., Wu, X., Zhou, J., Chen, X., Xing, H., Li, Y., … Song, D. (2026). SkillsBench: Benchmarking how well agent skills work across diverse tasks (Version 4) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2602.12670
  • Yu, G., & Wang, X. (2026). Knows: Agent-native structured research representations (Version 1) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2604.17309
  • Liang, Q., Wang, H., Liang, Z., & Liu, Y. (2026). From skill text to skill structure: The scheduling-structural-logical representation for agent skills (Version 4) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2604.24026
  • Chen, C., Yu, Q., Gu, Y., Huang, Z., Li, H., Liu, H., Liu, S., Liu, J., Peng, D., Wang, J., Yan, Z., Meng, F., Qin, E., Che, C., & Hu, M. (2026). The scaling laws of skills in LLM agent systems (Version 1) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2605.16508
  • Tang, L., Rashtchian, C., Ferng, C.-S., Tomkins, A., Juan, D.-C., & Vu, T. (2026). WikiSkill: Compiling agent experience into persistent knowledge for skill evolution [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2608.27454
  • Huang, Z., Xu, J., Yang, Y., Gong, Z., Yang, Q., Tian, M., Wang, X., Lv, C., Gao, X., Dai, Q., Liu, B., Qiu, K., Yang, X., Chen, D., Zheng, X., & Luo, C. (2026). From raw experience to skill consumption: A systematic study of model-generated agent skills [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2605.23899
  • Hong, D. B., Imani, A., & Ahmed, I. (2026). From anatomy to smells: An empirical study of SKILL.md in agent skills (Version 2) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2607.01456

License

MIT

Plugins associés