plugins/multimodel/skills/task-external-models/SKILL.md
Quick-reference for using external AI models in orchestration workflows. External models are invoked via claudish MCP tools (team, create_session). Use when confused about how to run external models, "external model in /team", "how to specify external model", or "claudish MCP tools".
npx skillsauth add madappgang/magus task-external-modelsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Models are learned per context and reused automatically:
cat .claude/multimodel-team.json 2>/dev/null
Flow:
contextPreferences[context] has models → USE THEM (no asking)Override triggers: "use different models", "change models", "update preferences"
External AI models are invoked via claudish MCP tools. No Bash invocation needed.
In /team orchestration:
Task(subagent_type: "{RESOLVED_AGENT}") — agent auto-detected from task typeclaudish team(mode="run", models=[...], input=PROMPT, timeout=180)claude_flags comes from claudeFlags in .claude/multimodel-team.jsonFor single-model delegation (/delegate):
create_session(model, prompt, timeout_seconds, claude_flags) → returns session_idcompleted event → get_output(session_id)input_required → forward to user via AskUserQuestion → send_input(session_id, answer)| Tool | Purpose |
|------|---------|
| team | Run prompt across multiple external models in parallel |
| create_session | Start a single async external model session |
| get_output | Retrieve output from a completed or running session |
| send_input | Answer a question from an interactive session |
| list_sessions | List active and completed sessions |
| cancel_session | Stop a running session |
| list_models | List available external models (supplemental — prefer shared/model-aliases.json) |
| search_models | Search for models by capability (supplemental — prefer shared/model-aliases.json) |
| compare_models | Compare model capabilities |
| run_prompt | One-shot prompt to a single model (no session lifecycle) |
| report_error | Report failures to claudish developers |
The /team command uses the team MCP tool for all external models in a single call:
claudish team(mode="run", path=SESSION_DIR, models=[...externals...],
input=VOTE_PROMPT, timeout=180, claude_flags=claudeFlags)
Internal models (Claude) run via Task in the same message for true parallelism:
// Internal model via Task (agent resolved from task keywords)
Task({
subagent_type: "{RESOLVED_AGENT}",
description: "Internal Claude vote",
run_in_background: true,
prompt: "{VOTE_PROMPT}\n\nWrite to: {SESSION_DIR}/internal-result.md"
})
// External models — single MCP tool call handles all
// The team tool runs all models in parallel internally
claudish team(mode="run", path=SESSION_DIR,
models=["grok", "gemini"],
input=VOTE_PROMPT, timeout=180, claude_flags=claudeFlags)
The /delegate command uses channel-based sessions:
// Start session
create_session(model="grok", prompt=TASK_PROMPT,
timeout_seconds=300, claude_flags=claudeFlags)
→ returns session_id
// React to channel events
session_started → Log: "Delegating to {MODEL}..."
tool_executing → Log: "{MODEL}: executing {content}"
input_required → AskUserQuestion → send_input(session_id, answer)
completed → get_output(session_id, tail_lines=200)
failed → get_output(session_id) → report error → stop
| Mistake | Why It Fails | Fix |
|---------|--------------|-----|
| Using Bash(claudish --model ...) | Bypasses MCP; loses structured I/O and error handling | Use team or create_session MCP tools |
| Adding provider prefixes to model IDs | claudish handles routing internally | Pass bare model names exactly as provided |
| Running claudish in main context | Pollutes context with full conversation output | Use MCP tools (sessions run externally) |
Note: Model IDs change frequently. Read
shared/model-aliases.jsonfor the current authoritative list (synced from Firebase via/update-models). Thelist_modelsMCP tool andclaudish --modelsare available as supplemental sources butshared/model-aliases.jsonis the primary reference.
IMPORTANT: Pass model names EXACTLY as the user provides them. Do NOT add provider prefixes (like
minimax/,openai/,google/). The claudish MCP server handles routing and provider detection internally.
After collecting results from external models, always verify:
For team tool results: The tool returns structured per-model results including status, output, and errors. Check each model's status field.
For create_session results: The channel completed event confirms success. Call get_output(session_id) for full output. The failed event with content details the error.
Verification checklist:
For each external model result:
☐ Model status is "completed" (not "failed" or "timeout")
☐ Output contains substantive analysis (not just acknowledgment)
☐ No error content in the result
When a model fails, follow this protocol:
❌ WRONG (silent substitution):
Gemini failed (rate limited) → silently launch GPT-5 instead
claudish crashed → silently fall back to embedded Claude
✅ CORRECT (report and ask):
Gemini failed (rate limited) → STOP → report exact error → present options → wait for user decision
For team tool failures: extract the error from the per-model result object.
For create_session failures: the failed channel event content contains the error.
"{Model} failed.
What happened:
1. Tool: {team or create_session}
Error: {error content from result or channel event}
Options:
(1) Retry the same model
(2) Use a different model
(3) Skip this model, continue with others
(4) Cancel
(5) Report this error to claudish developers
Which do you prefer?"
When the user chooses to report an error, call the claudish report_error MCP tool:
report_error(
error_type: "{provider_failure|adapter_error|stream_error|team_failure}",
model: "{MODEL_ID}",
stderr_snippet: "{error content from result}",
session_path: "{SESSION_DIR}",
additional_context: "Invoked via multimodel plugin"
)
Consent required. All data is sanitized before sending.
See also: multimodel:error-recovery skill for retry patterns.
testing
A test skill for validation testing. Use when testing skill parsing and validation logic.
tools
--- name: bad-skill description: This skill has invalid YAML in frontmatter allowed-tools: [invalid, array, syntax prerequisites: not-an-array --- # Bad Skill This skill has malformed frontmatter that should fail parsing. The YAML has: - Unclosed array bracket - Wrong type for prerequisites (should be array, not string)
development
Sync model aliases from the curated Firebase database. Fetches default model assignments, short aliases, team compositions, and known model metadata from the claudish API. Run this to get fresh model recommendations.
tools
Release one or more Magus plugins to the distribution repos (magus, magus-alpha, magus-marketing). Handles version inference from git history, marketplace.json updates, tagging, and force-push to lean dist repos. Use whenever the user says "release kanban", "release the dev plugin", "cut a new version of gtd", "bump kanban to 1.7", or hands you a batch like "release kanban and gtd". Also use for multi-plugin releases and for checking what a release would contain before committing.