← All skills
agent-router-setup
87 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By kochetkov-ma/claude-brewcode (GitHub) · coding · 39 stars · scanned at commit 5da825f
Installs, configures or removes the agent-router hook (routes a generic Agent spawn to the real project/plugin expert). Triggers: agent-router, wrong agent, route to expert, роутер агентов, не тот агент.
Works with any agent that supports SKILL.md skills.
Partially scanned — some files couldn't be read; we'll retry on the next scan
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. Expected for a coding skill.
Found in 35 places.
Show 17 more
- brewtools/skills/agent-router-setup/SKILL.md, line 405
BT_ROOT="${CLAUDE_PLUGIN_ROOT}" - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 3
import { spawnSync } from 'node:child_process'; - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 62
const first = spawnSync('bash', ['-c', block], { encoding: 'utf8', env, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 64
const second = spawnSync('bash', ['-c', block], { encoding: 'utf8', env, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 91
const portableStatus = spawnSync('bash', ['-c', statusBlock], { cwd: nested, encoding: 'utf8', env: statusEnv, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 103
const legacyStatus = spawnSync('bash', ['-c', statusBlock], { cwd: nested, encoding: 'utf8', env: statusEnv, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 116
const miswiredStatus = spawnSync('bash', ['-c', statusBlock], { cwd: nested, encoding: 'utf8', env: statusEnv, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 145
const result = spawnSync(process.execPath, [HOOK, '--probe', settingsPath], { encoding: 'utf8', timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 157
const strictMerge = spawnSync('bash', ['-c', block], { encoding: 'utf8', env: { ...env, LEVEL: 'strict' }, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 168
const fastMerge = spawnSync('bash', ['-c', block], { encoding: 'utf8', env, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 184
const duplicateTier1Status = spawnSync('bash', ['-c', statusBlock], { cwd: nested, encoding: 'utf8', env: statusEnv, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 217
const probeWith = hook => spawnSync(process.execPath, [hook, '--probe', settingsPath], { encoding: 'utf8', timeout: 30000 }).stdout; - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 223
const metaMerge = spawnSync('bash', ['-c', block], { encoding: 'utf8', env: { ...env, LEVEL: 'strict' }, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 257
const uninstall = spawnSync('bash', ['-c', uninstallBlock], { encoding: 'utf8', env: { ...process.env, ROOT: project }, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 275
spawnSync(process.execPath, [HOOK], { input: JSON.stringify({ session_id: 'S1', cwd, hook_event_name: 'PreToolUse', tool_name: 'Agent', tool_input: {} }), encod - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 282
const purge = spawnSync('bash', ['-c', purgeBlock], { encoding: 'utf8', env: { ...stateEnv, ROOT: project, RUNBOOK }, timeout: 30000 }); - brewtools/skills/agent-router-setup/tests/suite-install.mjs, line 298
.map(marker => spawnSync('bash', ['-c', fencedBlockAfter(readFileSync(RUNBOOK, 'utf8'), marker)], { encoding: 'utf8', env: cvEnv, timeout: 30000 }).status);
and 15 more places
Changes files outside its own folder
This is disclosed by the author in the skill's SKILL.md or README.
Found in 1 place.
Connects to the internet
The author does not mention this. It runs automatically when the plugin is installed.
Found in 3 places.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'agent-router-setup' ] || [ -L ~/.agents/skills/'agent-router-setup' ]; then echo 'A skill folder named agent-router-setup already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/kochetkov-ma/claude-brewcode' "$d" && git -C "$d" checkout --quiet '5da825f1d535d9658f0de0893529c6ce06a613a5' -- 'brewtools/skills/agent-router-setup' && mkdir -p ~/.agents/skills && cp -R "$d"/'brewtools/skills/agent-router-setup' ~/.agents/skills/'agent-router-setup' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'agent-router-setup' ~/.claude/skills/'agent-router-setup' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for kochetkov-ma/claude-brewcode shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/kochetkov-ma/claude-brewcode/)
Score history
| Date | Version | Score |
|---|
| 2026-11-13 | 5da825f | 87 |
| 2026-11-07 | 9ddf5c0 | 87 |