Gemini Interactions API
sickn33/agentic-awesome-skills
Build with the Gemini Interactions API for text, chat, multimodal generation, streaming, managed or background agents, function calling, structured output, and generateContent migrations.
Author and run multi-agent workflows with the omegacode CLI — JavaScript files that orchestrate Codex (gpt-5.x) and Claude Code agents deterministically via agent()/parallel()/pipeline()/phase().
$ npx skills add SawyerHood/omegacode --skill omegacode -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install SawyerHood/omegacode omegacode --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skill .claude/skills/omegacode && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .claude/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/SawyerHood/omegacode/tree/main/skillType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add SawyerHood/omegacode --skill omegacode -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install SawyerHood/omegacode omegacode --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skill .agents/skills/omegacode && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .agents/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SawyerHood/omegacode --skill omegacode -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install SawyerHood/omegacode omegacode --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skill .cursor/skills/omegacode && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .cursor/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/SawyerHood/omegacode.git --path skill--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add SawyerHood/omegacode --skill omegacode -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install SawyerHood/omegacode omegacode --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skill .gemini/skills/omegacode && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .gemini/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install SawyerHood/omegacode omegacodeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add SawyerHood/omegacode --skill omegacode -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .github/skills && cp -r skills-src/skill .github/skills/omegacode && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .github/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add SawyerHood/omegacode --skill omegacode -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install SawyerHood/omegacode omegacode --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/SawyerHood/omegacode.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skill .opencode/skills/omegacode && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "omegacode" agent skill from https://github.com/SawyerHood/omegacode/tree/main/skill into .opencode/skills/omegacode/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "omegacode", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
omegacodeAuthor and run multi-agent workflows with the omegacode CLI — JavaScript files that orchestrate Codex (gpt-5.x) and Claude Code agents deterministically via agent()/parallel()/pipeline()/phase().
Omegacode is an agent skill from SawyerHood/omegacode. Author and run multi-agent workflows with the omegacode CLI — JavaScript files that orchestrate Codex (gpt-5.x) and Claude Code agents deterministically via agent()/parallel()/pipeline()/phase(). Use when a task is big enough to decompose and run in parallel, when you want independent perspectives and adversarial checks before committing, or when the work is too large for one context (broad audits, migrations, multi-source research, exhaustive reviews). Covers the file shape, the DSL, mixing providers, structured…
Its SKILL.md is about 6.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering Structured output and tool calling, Deep research and Git worktrees. It works with OpenAI and JavaScript. The repository describes itself as: Code based orchestration for any coding agent. The licence is MIT.
Read from SKILL.md and the folder at commit 748d686. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
opencodeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Omegacode loads about 6.4k tokens when it runs. Until then it costs about 155 tokens; SKILL.md has 2,717 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from SawyerHood/omegacode at commit 748d686, republished under its MIT licence (© SawyerHood). 2,717 words, ~6,419 tokens.
.claude/skills/omegacode/SKILL.md (or your agent's skills folder).Run a workflow file that orchestrates multiple agents deterministically. omegacode run <file.workflow.js> executes the file; it persists to ~/.omegacode/runs/<id>/ and prints a runId. Use omegacode serve (or run --open) to watch live progress. Each agent() call spawns a real Codex (gpt-5.x) or Claude Code agent — you pick the provider per call.
A workflow structures work across many agents — to be comprehensive (decompose and cover in parallel), to be confident (independent perspectives and adversarial checks before committing), or to take on scale one context can't hold (migrations, audits, broad sweeps). The file is where you encode that structure: what fans out, what verifies, what synthesizes.
When you write one, the right move is often hybrid: scout first (list the files, find the channels, scope the diff) to discover the work-list, then write a workflow to pipeline over it. You don't need to know the shape before the task — only before the orchestration step.
Common single-phase workflows you can chain across runs:
For larger work, run several in sequence — read each result before deciding the next phase. You stay in the loop; each workflow is one well-scoped fan-out.
Every script must begin with export const meta = {...}:
export const meta = {
name: 'find-flaky-tests',
description: 'Find flaky tests and propose fixes', // one-line summary
phases: [ // one entry per phase() call
{ title: 'Scan', detail: 'grep test logs for retries' },
{ title: 'Fix', detail: 'one agent per flaky test' },
],
}
// script body starts here — use agent()/parallel()/pipeline()/phase()/log()
phase('Scan')
const flaky = await agent('grep CI logs for retry markers', { schema: FLAKY_SCHEMA })
// ...The meta object must be a PURE LITERAL — no variables, function calls, spreads, or template interpolation. Required fields: name, description. Optional: phases. Use the SAME phase titles in meta.phases as in phase() calls — titles are matched exactly; a phase() call with no matching meta entry just gets its own progress group.
Script body hooks:
<any> — spawn an agent. Without schema, returns its final text as a string. With schema (a JSON Schema), the agent is forced to return JSON matching it and agent() returns the validated object — no parsing needed. Returns null if the user skips the agent mid-run (filter with .filter(Boolean)). opts.provider / opts.model: default to omitting both — the agent inherits the provider and model the workflow is being run with (set by --provider/--model, default codex), which is almost always correct. Only set them when the user explicitly asks for a specific provider/model, or you're highly confident a particular step needs a different one — and then set them together: provider and model are both-or-neither (a lone provider: or lone model: is an error, so a model meant for one provider can never silently ride a different provider's call). opts.label overrides the display label. opts.sandbox defaults to read-only; use workspace-write (write to cwd + network) only when the agent must write. opts.worktree: true runs the agent in a fresh git worktree — EXPENSIVE (setup + disk per agent), use ONLY when agents mutate files in parallel and would otherwise conflict; the worktree is auto-removed if unchanged. opts.key is a stable resume pin that survives prompt-wording/reordering edits.null and skips its remaining stages.<any>>): Promise<any[]> — run tasks concurrently. This is a BARRIER: awaits all thunks before returning. A thunk that throws (or whose agent errors) resolves to null in the result array — the call itself never rejects, so .filter(Boolean) before using the results. Use ONLY when you genuinely need all results together.--args '<json>' / --args-file <f>, verbatim (undefined if not provided). Use this to parameterize a workflow — e.g. pass a research question, target path, or config object.--budget N. budget.total is null if no target was set. budget.spent() returns output tokens spent this run. budget.remaining() returns max(0, total - spent()), or Infinity if no target. The target is a HARD ceiling, not advisory: once spent() reaches total, further agent() calls throw. Use for dynamic loops: while (budget.total && budget.remaining() > 50_000) { ... }, or static scaling: const FLEET = budget.total ? Math.floor(budget.total / 100_000) : 5.Date.now()/Math.random() (which throw — see below).Agents are told their final text IS the return value (not a human-facing message), so they return raw data. For structured output, use the schema option — validation happens at the worker layer and the agent retries once on a mismatch.
Every agent() runs under a provider/model. By default, do NOT set provider or model per agent — each agent inherits the provider/model the workflow is being run with (--provider / --model, default codex), which is almost always what you want. Most workflows (including the canonical example and the patterns above) omit them entirely. Pin them only when the user explicitly asks for a specific provider/model, or you're confident a particular step needs a different one.
Provider and model are both-or-neither — at every site (per-call opts, meta.defaultProvider/defaultModel, --provider/--model): set both, or omit both to inherit the run defaults. A lone provider: (or lone model:) is rejected before the agent spawns. This exists because a lone provider override used to inherit the run-default model — a model belonging to a different provider. When you pin a provider, name the model explicitly (e.g. { provider: "codex", model: "gpt-5.5" }, { provider: "claude-code", model: "claude-fable-5" }). omegacode doctor shows which providers are installed/authed.
The four providers:
opts.effort tunes reasoning depth: "minimal" | "low" | "medium" | "high" | "xhigh". Requires the codex CLI authenticated (ChatGPT login); its built-in tools (incl. hosted image generation) come from that auth, and it ignores OPENAI_API_KEY. Native structured output via a free-form working turn then a schema-constrained extraction turn.claude CLI / SDK available. opts.effort accepts "low" | "medium" | "high" | "xhigh" | "max" (max is Opus-tier; the model silently downgrades unsupported levels). Structured output is delivered on the final result only (intermediate messages stay free-form).model is an open provider/model string routed by opencode (e.g. "openrouter/anthropic/claude-sonnet-4.5"), required whenever provider: "opencode" is set (both-or-neither). Requires sandbox: "danger-full-access" — opencode has no enforceable confinement, so the default read-only sandbox is rejected with an actionable error. effort maps directly to OpenCode's provider-specific --variant flag. maxTurns is rejected. Structured output via a silent extraction turn that reuses the working session.@earendil-works/pi-coding-agent ≥ 0.79.1) — spawn-per-call subprocess backend. model is an open pi model reference (e.g. "openrouter/moonshotai/kimi-k2.6"). Requires sandbox: "danger-full-access" — pi's tool allowlists are not OS confinement, so read-only/workspace-write are rejected. effort maps onto pi's full thinking range (none→off … max→xhigh); maxTurns is rejected. Structured output via a silent tool-less extraction turn.(opts.effort is a single union — "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" — and each worker maps to its nearest supported level: minimal→low on claude, max→xhigh on codex/pi. opencode passes the value through as --variant.)
codex and claude-code honor every sandbox mode (read-only by default); opencode and pi are full-access-only — every call on them needs an explicit sandbox: "danger-full-access" (per call or via --sandbox), a deliberate fail-closed choice because neither CLI can honestly enforce confinement. All providers honor cwd; worktree: true isolates parallel file edits regardless of provider. Outdated opencode/pi binaries are refused at runtime (provider_outdated); omegacode doctor flags them up front.
The default case — omit provider, so fan-out and synthesis run on whatever provider the workflow was invoked with:
const findings = await parallel(AREAS.map(area => () =>
agent(`Inspect ${area} and list concrete issues.`, { schema: FINDINGS_SCHEMA }))) // inherits the run's provider
const report = await agent(`Synthesize into a prioritized report:\n${JSON.stringify(findings.filter(Boolean), null, 2)}`)
return reportPin a provider only when you mean to — e.g. a deliberate cross-provider verify pass (propose on the run's provider, refute on a different one) when the user has asked for that diversity:
const verified = await pipeline(
suspects,
s => agent(`Is this a real bug? ${s.desc}`, { schema: VERDICT }), // run's provider
(v, s) => agent(`Try to REFUTE that ${s.desc} is a bug; default to refuted if unsure.`,
{ provider: "claude-code", model: "claude-fable-5", schema: VERDICT }).then(r => ({ ...s, real: v.real && !r.refuted })))Scripts are plain JavaScript, NOT TypeScript — type annotations (: string[]), interfaces, and generics fail to parse. The script body runs in an async context — use await directly. Standard JS built-ins (JSON, Math, Array, etc.) are available — EXCEPT Date.now()/Math.random()/argless new Date(), which throw (they would break resume) and are rejected by a submit-time lint; use the injected now()/random() instead, or pass timestamps in via args. No filesystem, network, or relative import/require in the workflow body (the agents do the I/O).
DEFAULT TO pipeline(). Only reach for a barrier (parallel between stages) when you genuinely need ALL prior-stage results together.
A barrier is correct ONLY when stage N needs cross-item context from all of stage N-1:
A barrier is NOT justified by:
Smell test: if you wrote
const a = await parallel(...)
const b = transform(a) // flatten, map, filter — no cross-item dependency
const c = await parallel(b.map(...))that middle transform doesn't need the barrier. Rewrite as a pipeline with the transform inside a stage. When in doubt: pipeline.
Concurrent agent() calls are capped at 100 per workflow by default (override with --concurrency N) — excess calls queue and run as slots free up. You can pass more items than the cap to parallel()/pipeline() and they all complete; only up to the cap run at any moment. Total agent count across a workflow's lifetime is capped at 1000 — a runaway-loop backstop set far above any real workflow. A single parallel()/pipeline() call accepts at most 4096 items; passing more is an explicit error, not a silent truncation.
The canonical multi-stage pattern — pipeline by default, each dimension verifies as soon as its review completes:
export const meta = {
name: 'review-changes',
description: 'Review changed files across dimensions, verify each finding',
phases: [{ title: 'Review' }, { title: 'Verify' }],
}
const DIMENSIONS = [{ key: 'bugs', prompt: '...' }, { key: 'perf', prompt: '...' }]
const results = await pipeline(
DIMENSIONS,
d => agent(d.prompt, { label: `review:${d.key}`, phase: 'Review', schema: FINDINGS_SCHEMA }),
review => parallel(review.findings.map(f => () =>
agent(`Adversarially verify: ${f.title}`, { label: `verify:${f.file}`, phase: 'Verify', schema: VERDICT_SCHEMA })
.then(v => ({ ...f, verdict: v }))
))
)
const confirmed = results.flat().filter(Boolean).filter(f => f.verdict?.isReal)
return { confirmed }
// Dimension 'bugs' findings verify while dimension 'perf' is still reviewing. No wasted wall-clock.When a barrier IS correct — dedup across all findings before expensive verification:
const all = await parallel(DIMENSIONS.map(d => () => agent(d.prompt, { schema: FINDINGS_SCHEMA })))
const deduped = dedupeByFileAndLine(all.filter(Boolean).flatMap(r => r.findings)) // <-- genuinely needs ALL at once
const verified = await parallel(deduped.map(f => () => agent(verifyPrompt(f), { schema: VERDICT_SCHEMA })))Loop-until-count pattern — accumulate to a target:
const bugs = []
while (bugs.length < 10) {
const result = await agent("Find bugs in this codebase.", { schema: BUGS_SCHEMA })
bugs.push(...result.bugs)
log(`${bugs.length}/10 found`)
}Loop-until-budget pattern — scale depth to --budget. Guard on budget.total: with no target set, remaining() is Infinity and the loop would run straight to the 1000-agent cap.
const bugs = []
while (budget.total && budget.remaining() > 50_000) {
const result = await agent("Find bugs in this codebase.", { schema: BUGS_SCHEMA })
bugs.push(...result.bugs)
log(`${bugs.length} found, ${Math.round(budget.remaining() / 1000)}k remaining`)
}Composing patterns — exhaustive review (find → dedup vs seen → diverse-lens panel → loop-until-dry):
const seen = new Set(), confirmed = []
let dry = 0
while (dry < 2) { // loop-until-dry
const found = (await parallel(FINDERS.map(f => () => // barrier: collect all finders this round
agent(f.prompt, { phase: 'Find', schema: BUGS })))).filter(Boolean).flatMap(r => r.bugs)
const fresh = found.filter(b => !seen.has(key(b))) // dedup vs ALL seen — plain code, not an agent
if (!fresh.length) { dry++; continue }
dry = 0; fresh.forEach(b => seen.add(key(b)))
const judged = await parallel(fresh.map(b => () => // every fresh bug judged concurrently...
parallel(['correctness', 'security', 'repro'].map(lens => () => // ...each by 3 distinct lenses
agent(`Judge "${b.desc}" via the ${lens} lens — real?`, { phase: 'Verify', schema: VERDICT })))
.then(vs => ({ b, real: vs.filter(Boolean).filter(v => v.real).length >= 2 }))))
confirmed.push(...judged.filter(v => v.real).map(v => v.b))
}
return confirmed
// dedup vs `seen`, NOT `confirmed` — else judge-rejected findings reappear every round and it never converges.Quality patterns — common shapes; pick by task and compose freely:
const votes = await parallel(Array.from({ length: 3 }, () => () =>
agent(`Try to refute: ${claim}. Default to refuted=true if uncertain.`, { schema: VERDICT })))
const survives = votes.filter(Boolean).filter(v => !v.refuted).length >= 2log() what was dropped — silent truncation reads as "covered everything" when it didn't.Scale to what the user asked for. "find any bugs" → a few finders, single-vote verify. "thoroughly audit this" or "be comprehensive" → larger finder pool, 3–5 vote adversarial pass, synthesis stage. When unsure, lean toward thoroughness for research/review/audit requests and toward brevity for quick checks.
These patterns aren't exhaustive — compose novel harnesses when the task calls for it (tournament brackets, self-repair loops, staged escalation, whatever fits).
Use a workflow for multi-step orchestration where control flow should be deterministic (loops, conditionals, fan-out) rather than model-driven.
Every run has a runId (printed on completion). To resume after a script edit or interruption, re-run with --resume <runId> — the longest unchanged prefix of agent() calls returns cached results instantly; the first edited/new call and everything after it runs live. Same file + same args → 100% cache hit. Date.now()/Math.random()/new Date() are unavailable in scripts (they would break this) — use now()/random(), or pass timestamps via args. Pin a call with opts.key to keep its cached result across reorders/edits.
omegacode run <file.workflow.js | name> [--args '<json>' | --args-file <f>]
[--provider codex|claude-code|opencode|pi --model m] [--effort e]
[--sandbox read-only|workspace-write|danger-full-access] [--cwd dir]
[--concurrency N] [--budget N] [--resume <runId>] [--fake] [--json] [--open]
omegacode serve [--port 4123] [--host h] Live read-only web viewer of all runs
omegacode runs [--prune --keep <N>] List runs (or prune old ones)
omegacode workflows [--json] List saved/named workflows (project, user, builtin)
omegacode save <file.workflow.js> [--project] [--force] Save a workflow under its meta.name
omegacode validate <file.workflow.js | name> Parse + check meta without running
omegacode doctor Check codex/claude availability + data dir
omegacode install-skill [--claude] [--agents] Install this skill into agent skill dirs--fake runs with a fake worker (no real agents) for a fast smoke test; --json prints {runId, status, url, result, error} (and still starts the viewer). The viewer (serve / run --open, and auto-started by run) reads ~/.omegacode/runs and shows a run list, a live phase/agent tree, and a per-agent chat-feed drilldown; it streams via SSE and never executes anything.
run and validate accept a bare name instead of a path (anything with a path separator or .js suffix is treated as a file). A name is the workflow's meta.name — not its filename — and resolves across three tiers, highest precedence first: project (every .omegacode/workflows/ from cwd up to the repo root; nearer shadows farther), user (~/.omegacode/workflows/), and the package built-ins. omegacode save <file> copies a validated workflow into the user tier (--project for the project tier; --force to overwrite); omegacode workflows lists everything visible.
Six built-ins ship with the package. Two are ports of Claude Code's bundled workflows:
deep-research — omegacode run deep-research --args '"<question>"': scope → 5 parallel web searches → fetch/dedup top sources → 3-vote adversarial verification per claim → cited report.code-review — omegacode run code-review [--args '{"target": "...", "level": "high|xhigh|max"}']: one finder per review angle, an independent verifier per finding (CONFIRMED/PLAUSIBLE/REFUTED), a gap-sweep at xhigh/max, ranked report.The other four are omegacode-original multi-provider workflows — designs where two models' decorrelated errors are the point:
multi-provider-review — omegacode run multi-provider-review [--args '{"target": "..."}']: Codex and Claude each review the entire feature/branch independently (identical prompts, blind to each other), then a synthesis agent merges both — consensus findings ranked first, unique catches attributed, disagreements called out. Target defaults to the current branch vs its merge-base with the default branch.bake-off — omegacode run bake-off --args '"<task>"': both providers implement the same task in isolated worktrees (committed work only), blind A/B judges from both providers score the diffs, a tie-break settles splits, and the report names what to graft from the loser. Both branches are preserved.provider-debate — omegacode run provider-debate --args '"<question>"' (or '{"question": "...", "rounds": 2, "proposer": "codex"}'): one provider proposes, the other attacks, N rounds of rebuttal, then a judge rules — recommendation, survived/conceded points, open questions.second-opinion — omegacode run second-opinion --args '"<question>"': both providers answer at low effort; if they agree the merged answer returns cheap, if they disagree both escalate to xhigh effort with the other's answer in hand and an adjudicator decides.When you (an agent such as Claude Code or Codex) run a workflow on a user's behalf, do two things:
omegacode run … in the background (your background-shell / detached process) and poll or await it for the result — don't run it in the foreground and block. If you are Codex, block on the run until it completes (run it in the foreground and wait for the result) unless the user specifies otherwise — Codex has no reliable background-shell to poll from, so blocking is the correct default.view: http://127.0.0.1:4123/#/run/<id> (and --json returns the same in the url field). Surface that URL to the user as a clickable link immediately — before the run finishes — so they can watch live: the phase tree and per-agent chat feed stream in real time. Then check back when the run completes and report the result.The viewer auto-starts on run (reused if already up) and idle-shuts-down once no run is active and no one is watching, so there's nothing to clean up.
© SawyerHood, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skill of SawyerHood/omegacode.
Open the folder on GitHubat commit 748d686
Omegacode next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Omegacode this skillSawyerHood/omegacode | 137 | — | ~6.4k | Automated safety check: Pass | MIT | |
| Gemini Interactions APIsickn33/agentic-awesome-skills | 47k | 1 repos | ~4.8k | Automated safety check: Pass | Apache-2.0 | |
| Sap Cloud SDK AIsecondsky/sap-skills | 462 | — | ~3.2k | Automated safety check: Pass | GPL-3.0 | |
| Gemini Interactions APIJetBrains/skills | 366 | — | ~2.5k | Automated safety check: Pass | None | |
| Routerbase API Integrationaiskillstore/marketplace | 433 | — | ~964 | Automated safety check: Pass | None | |
| Gemini Interactions APIAyuilos/Miffan | 225 | — | ~4.6k | Automated safety check: Pass | AGPL-3.0 |
sickn33/agentic-awesome-skills
Build with the Gemini Interactions API for text, chat, multimodal generation, streaming, managed or background agents, function calling, structured output, and generateContent migrations.
secondsky/sap-skills
Integrates SAP Cloud SDK for AI into JavaScript/TypeScript and Java applications.
JetBrains/skills
A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, streaming responses, background research tasks…
aiskillstore/marketplace
Integrate applications with RouterBase, the OpenAI-compatible model gateway at https://routerbase.com/v1.
Ayuilos/Miffan
A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, video generation, streaming responses…
omer-metin/skills-for-antigravity
Tools are how AI agents interact with the world. An agent skill from omer-metin/skills-for-antigravity.
Works with
Categories
Author and run multi-agent workflows with the omegacode CLI — JavaScript files that orchestrate Codex (gpt-5.x) and Claude Code agents deterministically via agent()/parallel()/pipeline()/phase(). Omegacode is an agent skill from SawyerHood/omegacode.x) and Claude Code agents deterministically via agent()/parallel()/pipeline()/phase().
Omegacode fits situations like: A task is big enough to decompose and run in parallel; you want independent perspectives and adversarial checks before committing; the work is too large for one context (broad audits; multi-source research.
Run `npx skills add SawyerHood/omegacode --skill omegacode -a claude-code`. Or copy the skill folder (skill in SawyerHood/omegacode) into .claude/skills/omegacode in your project. Claude Code loads it when a task matches its description.
Run `npx skills add SawyerHood/omegacode --skill omegacode -a codex`. Or copy the skill folder (skill in SawyerHood/omegacode) into .agents/skills/omegacode in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add SawyerHood/omegacode --skill omegacode -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/omegacode, .gemini/skills/omegacode, .github/skills/omegacode and .opencode/skills/omegacode in your project.
Going by SKILL.md and its folder, Omegacode needs the command-line tools its instructions call (opencode) and credentials named OPENAI_API_KEY. Our summary lists: A credential in OPENAI_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Omegacode is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.4k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Omegacode: Gemini Interactions API (sickn33/agentic-awesome-skills, 47k stars), Sap Cloud SDK AI (secondsky/sap-skills, 462 stars), Gemini Interactions API (JetBrains/skills, 366 stars) and Routerbase API Integration (aiskillstore/marketplace, 433 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
SawyerHood (a GitHub user) maintains it in SawyerHood/omegacode, which has 137 GitHub stars. The repository was last updated on June 29, 2026.
Source: SawyerHood/omegacode on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.