agni-kai
Zuko's Agni Kai for bakeoffs. The formal firebending duel, where competing implementations fight under the same rules and a judge…
Aang choosing which bender takes which fight. Configures which model each Team Avatar character runs on, the default reasoning effort, and whether the SessionStart hook routes work into avatar-mode. Use for /avatar-setup, "setup team avatar", "configure team avatar models",
$ npx -y skills add tmcfarlane/team-avatar --skill avatar-setup --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/avatar-setupContext preview
The summary Claude sees to decide when to auto-load this skill.
Aang choosing which bender takes which fight. Configures which model each Team Avatar character runs on, the default reasoning effort, and whether the SessionStart hook routes work into avatar-mode. Use for /avatar-setup, "setup team avatar", "configure team avatar models",
name: avatar-setup description: Aang choosing which bender takes which fight. Configures which model each Team Avatar character runs on, the default reasoning effort, and whether the SessionStart hook routes work into avatar-mode. Use for /avatar-setup, "setup team avatar", "configure team avatar models", changing a character's model, or turning the session hook on or off.
Before the first battle, the Avatar decides who stands where. Each character runs on the model that fits the discipline, and the user decides what models they have. This skill writes that choice down once, in one sheet, so every dispatch reads the same answer.
On Codex, read [avatar-mode/references/codex.md](../avatar-mode/references/codex.md) for tool equivalents, including its note for this skill.
| Runtime | Sheet | How it loads | |---------|-------|--------------| | Claude Code | `${CLAUDE_CONFIG_DIR:-~/.claude}/team-avatar-models.md` | `avatar-mode` prints it with `show-sheet.sh claude` before the first dispatch. The SessionStart hook reads its `session hook` line. | | Codex | `${CODEX_HOME:-~/.codex}/team-avatar-models.md` | `avatar-mode` prints it with `show-sheet.sh codex` before the first dispatch. The SessionStart hook reads its `session hook` line. |
The scripts live in [scripts/](scripts/), and every one runs with plain `sh` and POSIX `awk`.
List the model names the `Agent` tool's `model` parameter accepts in this session. That is the dependable source. On Claude Code they are the family names `opus`, `fable`, `sonnet`, and `haiku`, each running that family's current model, and a full model ID is rejected. On Codex, use the Codex models you have configured (see the codex.md note). Ask the user to confirm the list or paste more names. Never write a model name you have not confirmed is available. `inherit` is always valid. It runs the line on the parent session's model, which a dispatch expresses by omitting `model`.
Print the current lines with `sh <this skill>/scripts/show-sheet.sh claude` (or `codex`). Lines marked `(sheet)` are the user's current choices. Lines marked `(default)` are the defaults below. Then run `check-sheet.sh` on the sheet if one exists, and note each problem it prints.
An older sheet may hold a line this skill no longer writes, or a full model ID that starts with `claude-`, which the `Agent` tool rejects. Drop the unknown line. Replace the full ID with its family name, the word after `claude-`.
Show every line with its current value. Mark any model name not in the detected set as needing a choice, and list each line step 2 dropped or rewrote. Ask whether to accept as-is or change specific lines, offering the detected models plus `inherit`. Prefer `AskUserQuestion` over free text.
Then ask for the default reasoning effort, the `default effort` line. It is `session`, which keeps the parent session's effort, or one of `low`, `medium`, `high`, `xhigh`, `max`. Every value without a suffix runs at it. Then ask whether any line should run at another level. A value may carry one after its model, as in `sokka: opus @high`. Panel entries take their own, as in `panel: opus @xhigh, fable @max`. On Claude Code the level goes out as the `Agent` tool's `effort` parameter. On Codex it goes out as `spawn_agent`'s `reasoning_effort`.
On Claude Code and Codex, the plugin's SessionStart hook injects a short routing context on startup, resume, clear, and compact. It sends nontrivial work into `avatar-mode`. Codex asks the user to trust plugin hooks through `/hooks` before running them. Ask whether to keep the hook. The default is on. The answer is the `session hook` line, `on` or `off`. With no sheet or no line, the hook injects.
Every model name written must be in the detected set. `inherit` always passes. Check the name without its `@<level>` suffix, and the level against the levels above. On Codex, the levels are the `reasoning_effort` values your Codex models accept. If a chosen name or level is not available, stop and ask again.
Write the whole file with the shape below, so a rerun stays idempotent. Keep every line, in this order, with the user's values. The defaults are shown.
# Team Avatar models Which model each Team Avatar character runs on. avatar-mode reads this sheet before it dispatches, and a line it lacks keeps its default. `inherit` runs on the parent session's model. A value may carry a reasoning effort, as in `opus @high` (levels: low, medium, high, xhigh, max). `panel` is a list, one runner per entry. `default effort` sets the level for a value without one, and `session` keeps the parent session's effort. `session hook: off` stops the SessionStart hook from routing wor
Team Avatar: a universal agent orchestrator for Claude Code, Codex, and Cursor. Nine Avatar characters, 58 engineering skills. pstack with Avatar characters on top.
Zuko's Agni Kai for bakeoffs. The formal firebending duel, where competing implementations fight under the same rules and a judge…
Aang showing a new friend around the team. Explains Team Avatar to a user, the roster and who owns what, how to invoke a skill on…
Aang's operating mode for Team Avatar, principal-level engineering where each task goes to the character who owns that…
Sokka's battle map, the decision trail he keeps so anyone can see how the campaign was won. Use for show-me-your-work,…
Appa's morning departure for picking up paused or handed-off work. The team breaks camp, reads the map they left, and flies on…
Zuko's breath of fire for performance work. Use for slowness, high latency, memory growth, CPU spin, bundle size, cloud cost,…