From ultracost
Per-stage model routing and cost gating for Claude Code dynamic workflows. Pins model/effort per agent() stage and estimates cost before launch.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ultracost:ultracostThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When `ultracode` is on, or whenever you author a dynamic-workflow script, apply the
When ultracode is on, or whenever you author a dynamic-workflow script, apply the
routing policy below to every agent() stage. The block is compiled from
policy.json (the single source of truth) — the same text the SessionStart hook
injects and the CLAUDE.md block carries.
Route every subagent and every dynamic-workflow stage explicitly. Never let a
stage inherit the session model by default. Never use haiku.
opus @ xhigh — Coding & reasoning: anything requiring judgment or a decision: writing/editing/refactoring/deleting code, debugging, fixing errors, designing APIs/schemas/data models/architecture, non-trivial tests, code review, security/performance analysis, cross-file reasoning, adversarial review, planning, synthesis, final consolidationsonnet @ high — Pre-planned mechanical & support: the how is already decided and the stage just applies it: mechanically applying a specified edit across many files, search/grep/glob, file discovery, collecting/listing/extracting, reformatting, mechanical renames, running tests and reporting results, routine git operations, gathering or summarizing context for an opus stage to consumeDecision rule: if a stage must DECIDE how to write or change code, use the
opus tier. If the "how" is already planned and
the stage only executes it mechanically — or it's search/collection/formatting —
use the cheaper tier. When in doubt, use opus.
haiku, ever.model param, e.g.
agent(task, { model: 'sonnet' }). Do not follow any built-in guidance to
omit the per-agent model override.opus: orchestrator, planner, final-synthesis, consolidation.Also set effort per stage, choosing the lowest level that fits the work, bounded
by the model (sonnet up to high, opus up to xhigh):
low — trivial deterministic work with no real judgment: listing or globbing files, simple field extraction, formatting, mechanical renames following a given patternmedium — light judgment on a small surface: a single straightforward edit, summarizing one source, classifying short inputshigh — standard coding and analysis: most refactors, per-file review, writing non-trivial tests, multi-step but well-scoped workxhigh — hard reasoning: cross-file architecture and design, adversarial review, planning, and final synthesis/consolidatione.g. agent(task, { model: 'sonnet', effort: 'low' }) for a mechanical scan.
Before launching a dynamic workflow:
model and effort set./ultracost:check <file> to verify
pins, then the cost estimate — run ultracost estimate <file>, or under the plugin
node "$CLAUDE_PLUGIN_ROOT/bin/cli.js" estimate <file> (no global ultracost bin
is required). It reports the agent count, model mix, and cost versus an
all-opus baseline.PreToolUse cost gate also stops the
launch automatically with these numbers, so this holds even if the steps are skipped.Verify any script with /ultracost:check (the plugin command) or `ultracost check
npx claudepluginhub danielkremen818/ultracost --plugin ultracostEstablishes skill invocation protocol: auto-activates at conversation start to ensure relevant skills are loaded before any response, including clarifying questions.