Use the right provider. Stay in one place.

Agent skills for Claude Code and Codex CLI. delegate reaches other providers from the session you are already in, matches each task to the cheapest capable model, and uses plan allowances you already pay for — no moving work between IDEs or chat apps.

skill

A prepared demo, not a screen recording of production work: a throwaway repo with one deliberately unvalidated function, so the flow fits on a page. The commands, the models and every line of output are real and unedited — only the file paths are shortened.

fixing a bug in a shopping cart, start to finish 6 commands · 4 providers · $0

delegate.sh providers

Who is available, and which model each tier is wired to.

antigravity available (plan) hard=claude-opus-4-6-thinking code=claude-sonnet-4-6 read=gemini-3.7-flash-high cheap=gemini-3.7-flash-low codex available (plan: chatgpt) openrouter key present (not verified; use: providers --check) ai-studio key present (images blocked on free tier)

delegate.sh read "List every exported function in src/cart.js"

Reading is cheap work, so it goes to Gemini Flash. free · plan

- subtotal (src/cart.js:1-3): Calculates the total sum of items in the cart by multiplying each item's price by its quantity. - applyDiscount (src/cart.js:5-7): Computes the discounted total by applying a given percentage reduction to an amount.

delegate.sh code "applyDiscount does not validate percent. Add a guard that throws a RangeError when it is below 0 or above 100." --write

A bounded change you could hand a competent stranger, so Claude Sonnet writes it. free · plan

Done. applyDiscount now throws a RangeError before any calculation when percent is outside [0, 100]. Everything else in the file is unchanged.

git diff

Read the diff yourself — a delegate reporting success is a claim, not evidence. delegate also checks the files really changed.

src/cart.js | 3 +++   function applyDiscount(total, percent) { + if (percent < 0 || percent > 100) { + throw new RangeError('percent must be between 0 and 100'); + } return total - (total * percent / 100);

delegate.sh review --uncommitted

Claude wrote it, so Codex reviews it. A model reviewing its own work mostly agrees with itself. free · plan

- [P2] Reject nonnumeric discount percentages — src/cart.js:6 When percent is NaN, undefined, or a nonnumeric string, both comparisons evaluate to false, so the new guard is bypassed and the function returns NaN instead of rejecting an invalid percentage. Validate that percent is a finite number before applying the range check.

delegate.sh image "a flat-design shopping cart icon" cart-icon.png

Image generation has its own small quota, separate from the model quota — and it was spent. Two free paths run before anything paid, so the second picked it up.

[delegate] antigravity produced no image, trying codex imagegen wrote cart-icon.png (codex imagegen, free)

Spend for that session: nothing. Every step ran on a subscription that was already being paid for — and the review caught a real hole in the guard that had just been written.

install

Three ways in. Each links the skill into Claude Code, and into Codex too when it is installed. Then start a new agent session — skills load at startup.

Ask your agent

Paste this into Claude Code or Codex. It reads the repo and does the rest.

Install the skills from https://github.com/krzysztofradomski/skills — clone it, then symlink the skills into my agent skill directory and any bundled scripts onto my PATH. Show me what you linked.

One command

Clones to ~/.local/share/agent-skills, links the skills, puts scripts on your PATH. Re-run it to update. It skips anything that is already a real directory rather than overwriting it.

curl -fsSL https://raw.githubusercontent.com/krzysztofradomski/skills/main/install.sh | bash

Piping a stranger's script into your shell is a habit worth resisting — download it and read it first if you would rather. It is about sixty lines.

By hand

Symlinks, not copies, so git pull updates everything with nothing to reinstall.

git clone https://github.com/krzysztofradomski/skills.git ~/code/skills
cd ~/code/skills
ln -s "$PWD/delegate" ~/.claude/skills/delegate
ln -s "$PWD/delegate" ~/.codex/skills/delegate
ln -s "$PWD/delegate/scripts/delegate.sh" ~/.local/bin/

api keys

None are required. Antigravity and Codex sign in through their own CLIs, and that covers every default path. Keys only add the two optional providers below.

OpenRouter — free frontier models, and the paid image fallback

Get one at openrouter.ai/keys. Read from a file, so it never lands in your shell history or in ps output.

mkdir -p ~/.config/openrouter
printf 'OpenRouter key: '; read -rs k; echo
printf '%s' "$k" > ~/.config/openrouter/key; chmod 600 ~/.config/openrouter/key; unset k

Google AI Studio — tried first for images

Get one at aistudio.google.com/apikey.

mkdir -p ~/.config/google-ai
printf 'AI Studio key: '; read -rs k; echo
printf '%s' "$k" > ~/.config/google-ai/key; chmod 600 ~/.config/google-ai/key; unset k

Worth knowing before you bother: AI Studio's free tier grants zero image quota — every image model returns RESOURCE_EXHAUSTED with limit: 0 until billing is enabled on the Google project. Without billing this key changes nothing for images, and the chain falls through to the free paths anyway.

Check what actually works

A key file existing proves nothing. This validates the OpenRouter key against the API and exits nonzero if it is rejected.

delegate.sh providers --check

$OPENROUTER_API_KEY and $GEMINI_API_KEY work too if you prefer environment variables.

where the work goes

Antigravity and Codex bill against a subscription rather than per token, so the default path costs nothing on top of what you already pay. Anything that spends money is opt-in behind a flag.

providerauthused for
antigravityplanthe default — reading, coding, and image generation
codexplanreview, and anything that has to actually run your tests
openrouterfree tierone-shot text when no repo context is needed
paid fallback--paidimages only, only when both free paths fail, only if you ask

what it actually does for you