Skip to content
Back to skills

Setup

ASecurity

Configure the multi-agent role map for a person or a repository: check prints the resolved map (model and effort per role, single and fan-out variants, the layer behind each value) and whether the personal overlay is gitignored; apply writes the keys you confirm into the user-global, team or local multi-agent.yaml layer, showing the map before and after. Use when: 'set up multi-agent', 'configure model routing', 'change the worker effort for this repo', 'turn off the fan-out guard', 'which la...

  • 21 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
ai-agentsgoshellbashgit

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add melodic-software/claude-code-plugins --skill setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/melodic-software-setup-4b8ab3d9/badge)](https://www.skillsdirectory.com/skills/melodic-software-setup-4b8ab3d9)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: "Configure the multi-agent role map for a person or a repository: check prints the resolved map (model and effort per role, single and fan-out variants, the layer behind each value) and whether the personal overlay is gitignored; apply writes the keys you confirm into the user-global, team or local multi-agent.yaml layer, showing the map before and after. Use when: 'set up multi-agent', 'configure model routing', 'change the worker effort for this repo', 'turn off the fan-out guard', 'which layer sets the verifier model', 'multi-agent setup'. Re-runnable."
argument-hint: "[check|apply] [--layer user|team|local] [<key>=<value> ...] [session=<alias>]"
user-invocable: true
disable-model-invocation: true
allowed-tools: ["Bash(${CLAUDE_SKILL_DIR}/scripts/setup.sh:*)"]
shell: bash
---

## Purpose

`/multi-agent:route` resolves the role map through four layers: the bundled
defaults, `~/.claude/multi-agent.yaml`, the team layer and
`.claude/multi-agent.local.yaml`. This skill shows what those layers resolve to
and writes one of them. All three consumer layers absent is a valid state: the
bundled defaults apply. Keys, values, layer paths and the fan-out guard are
owned by
[`${CLAUDE_PLUGIN_ROOT}/reference/config.md`](${CLAUDE_PLUGIN_ROOT}/reference/config.md).

No argument means `check`. `apply` runs `check`, proposes, asks, writes, and
runs `check` again. It installs nothing; the resolver needs only Bash, awk and
git.

## `check` (read-only)

```bash
${CLAUDE_SKILL_DIR}/scripts/setup.sh check session=<alias>
```

Pass `session=<alias>` with the family in your own model ID (`opus`, `sonnet`,
`haiku`, `fable`); omit it when you cannot tell, and the map is resolved as
under a frontier session. The script runs the route wrapper, so the JSON is the
one `/multi-agent:route all` prints. Show:

1. one line per role: `single <model> @ <effort>; fanout <model> @ <effort>`,
   with `inherit` written as `inherit: omit the model option`, and the layer
   in `source` for each value;
2. the `layers` rows (read, absent, skipped, or not applicable at a home or
   non-repository root) and every entry of `notes` as written;
3. the overlay row: PASS when `.claude/multi-agent.local.yaml` is gitignored,
   else WARN with the recommended line `.claude/**/*.local.*`. Recommend the
   line; do not edit `.gitignore`.

It modifies nothing. A note in `notes` (a skipped layer, a rejected value, an
ignored key) is a finding to report.

## `apply`

1. Run `check` and show the map. This is the before state.
2. Settle the layer with the user, recommendation first:
   - `local` (`.claude/multi-agent.local.yaml`): this checkout only, for this
     person. The default for a personal preference.
   - `team`: the `yaml config` block of `docs/conventions/multi-agent.md`,
     else `.claude/multi-agent.yaml` when that file is already in use. Shared
     with everyone who clones the repository.
   - `user` (`~/.claude/multi-agent.yaml`): every repository on this machine.

   `team` and `local` are refused at a home or non-repository root.
3. Settle the keys. Ask only for what the user wants changed; each value comes
   from the table in `config.md`. Pass every key to set as `<key>=<value>`, and
   `<key>=` to remove one from that layer. Existing keys in the layer are kept.
4. Preview, writing nothing:

   ```bash
   ${CLAUDE_SKILL_DIR}/scripts/setup.sh apply --layer <layer> <key>=<value> ...
   ```

   It prints the target path and a diff. It exits 1 without writing when the
   resolver would reject or ignore a key; relay the reason and return to
   step 3.
5. Show the diff and ask for an explicit yes. Write only on that yes:

   ```bash
   ${CLAUDE_SKILL_DIR}/scripts/setup.sh apply --layer <layer> --write <key>=<value> ...
   ```

   It prints the path written and the keys it read back from the file.
6. Run `check` again and show the after map beside the before one, naming each
   value that changed and the layer that now supplies it. The file is what the
   next `/multi-agent:route` run reads; nothing about the running session
   changes. For `team`, offer `git add` and a commit and run each only when the
   user accepts.

### The fan-out guard

With `fanout.frontier_guard: true`, the bundled value, a stage that runs more
than one agent never runs them on a frontier model: under a Fable or `best`
session, or a session the caller did not name, each fan-out variant that would
inherit or name a frontier model takes `fanout.model` (`opus`) instead. A
single synthesis or judge agent keeps the role's own model. The basis is
recorded beside the key in
[`${CLAUDE_PLUGIN_ROOT}/reference/defaults.yaml`](${CLAUDE_PLUGIN_ROOT}/reference/defaults.yaml).

`fanout.frontier_guard=false` is an explicit opt-in to frontier fan-outs: every
parallel worker then runs on the session model, so a frontier session runs
every agent of the stage on the frontier model (rates:
[Pricing](https://platform.claude.com/docs/en/about-claude/pricing); usage:
[Manage costs: Track your costs](https://code.claude.com/docs/en/costs#track-your-costs)).
Before writing
it, say this and ask the user to confirm that specific key, separately from the
rest of the change. Recommend the narrowest layer that covers what they mean:
`local` for one checkout, `user` for one machine, `team` only when the whole
team has agreed.

## What this skill does NOT do

- Edit `.gitignore`, `CLAUDE.md` or `AGENTS.md`.
- Write a model ID. Only aliases are accepted, so the map stays portable across
  providers.
- Change a named agent's model or effort. An agent such as
  `implementation:implementer` or `implementation:scoped-implementer` owns its
  tier through its own frontmatter; the role map governs generic `agent()` and
  Agent dispatches only.
- Recheck a default against upstream. That is `/multi-agent:audit-defaults`.

## Next

/multi-agent:route all
Prints the map the next workflow reads from `args.roles`.

## Gotchas

- A file layer is rewritten whole, so its comments are not kept; the preview
  says so when the file has any. A docs block has only its body replaced, and
  the prose around it stays.
- An existing layer that does not parse stops `apply` with the line and the
  reason. Fix or remove the file first; setup never overwrites content it could
  not read.
- When both `docs/conventions/multi-agent.md` (with a block) and
  `.claude/multi-agent.yaml` exist, the docs block is the team layer and the
  `.claude` file is ignored. `check` names both in `notes`.
- Team and local layers resolve against the repository root of the working
  directory. Inside a second worktree, run from that worktree.

Files in this skill

  • SKILL.md6.5 KB
  • evals/evals.json3 KB
  • scripts/setup.sh8.8 KB
  • scripts/setup.test.sh6.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…