/auto
Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only
$ npx -y skills add yonatangross/orchestkit --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/auto
Context preview
What this command does when you run it.
Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only
Command definition
auto.mddescription: "Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only when already executing inside another skill (no recursion). Triggers on: auto, do this, figure out, just make, I want, help me, fix, build, improve, any goal description."
argument-hint: "[plain-english goal]"
model: sonnet
context: inherit
user-invocable: true
name: auto
allowed-tools: [AskUserQuestion, Read, Grep, Glob, Skill, Task]
Auto-generated from skills/auto/SKILL.md
Source: https://github.com/yonatangross/orchestkit
/ork:auto — Intent Router
The front door to OrchestKit. **You describe a goal in plain English; the router classifies it and hands off to the right specialist.** One entry point, many execution paths.
> **Why this exists:** OrchestKit has 105 skills, but usage telemetry shows users fire only the handful they can name by memory (10 distinct skills across thousands of sessions). The dominant cause of "dead" skills is **no front door** — not low quality. This router turns "you must know the exact `/ork:<name>`" into "describe what you want."
**Core principle:** routing is a *deterministic workflow*, not an autonomous agent (Anthropic, *Building Effective Agents*). Classify → confirm → hand off. The router never does the work itself — it picks who does.
When to use
**By default, for any goal-shaped request.** An unambiguous goal is a 1-step route: auto classifies, confirms in one line, and hands off — no extra hops, so there is no "too obvious for auto".
| Use `/ork:auto` for… | Skip only when… | |---|---| | Any goal description ("fix X", "get Y to Z") | Already executing inside another skill (no recursion) | | The right skill isn't obvious | Chaining a known multi-skill workflow you're mid-way through | | You think you know the skill — auto confirms & short-circuits | |
> **Design note (2026-07-12):** this table previously said "Go direct when you > already know the skill / the request maps unambiguously to one". That inverted > instruction made the front door structurally unreachable — a competent model > always believes it knows the target, so the router recorded near-zero > invocations across thousands of sessions (the exact dead-skill problem the > "Why this exists" note above describes). Routers must be framed as the > default path, not an escape hatch for confusion.
Intent categories → OrchestKit skill
| intent | signal words | routes to | |---|---|---| | **fix** | fix, debug, broken, failing, error, crash, regression | `/ork:fix-issue` | | **diagnose** | why, why isn't, why does, why can't, investigate | `/ork:fix-issue` (investigation-first) | | **optimize** | faster, reduce, latency, bundle, minimize, below N ms | a **`/goal` optimization loop** (see Gaps) | | **cover** | coverage, untested, get to N% | `/ork:cover --target N` | | **design** | design, architect, how should we, explore, idea | `/ork:brainstorm` | | **build** | build, implement, create, add feature, from ticket | `/ork:implement` | | **review** | review, PR, MR, pull request, #N | `/ork:review-pr` | | **verify** | verify, check, make sure, passes, green | `/ork:verify` | | **improve-skill** | improve the skill, optimize the prompt, SKILL.md | the **holdout-promotion gate** (see Gaps) | | **(fallback)** | no confident category | clarify with ONE question |
Full per-category parameter extraction + edge cases: `references/routing-rules.md`.
Model weight (orthogonal second dimension)
Intent picks **who** does the work. Weight picks **how expensive that worker should be**. A route is `{intent} @ {weight}`. Weight never changes the intent and never replaces it. The taxonomy above and the 7 disambiguation rules are untouched by it.
Tiers are the ones already declared in `src/agents/*.md` frontmatter (`haiku` 7 · `sonnet` 10 · `opus` 6 · `inherit` 13). No parallel taxonomy.
| weight | tier | the task is… | |---|---|---| | **Light** | `haiku` | mechanical or IO-bound, single file, deterministic output, trivially revertible | | **Standard** | `sonnet` | the default: bounded judgment, known pattern | | **Heavy** | `opus` | adversarial, security, safety, architecture, cross-cutting, or ambiguous |
**Resolution is asymmetric:** ANY heavy signal ⇒ Heavy; Light requires ALL light signals; everything else is Standard. Under-powering a security review yields a confident wrong answer nobody catches; over-powering a rename only wastes money.
Weight is **per leg, not per route**. A PR review can be a Heavy security leg plus a Light lint leg. Full signal table, per-intent defaults, and the honest limits of this lever: `references/routing-rules.md`.
> **This is the selector, not the cap.** `src/hooks/src/pretool/task/team-size-gate.ts` is an ex-post, per-session counter keyed on `ORK_TEAM_OPUS_MAX` (default 8). Its default posture is advisory (`outputWarning`); with `ORK_TEAM_SIZE_HARD=1` it escalates to `outputDeny` and refuses the spawn outright. Either way it reads the model read-only: it can refuse a premium spawn, but it cannot *choose* a cheaper one for you. Routing is what chooses. The two compose, cap as backstop and routing as selector; never duplicate the cap's counting here.
The flow
CLASSIFY -> CONFIRM -> HAND OFF
| | |
intent show the invoke the
+ weight route target skill;
out loud + nod follow ITS phases1. Classify (reason out loud first)
State your reasoning **before** committing to a route — this triggers chain-of-thought and is the single biggest accuracy lever (Anthropic, *Writing Effective Tools for Agents*). Example: *"'get latency under 200ms' names a metric + a direction → optimize, not fix."*
Apply the disambiguation rules (most specific wins; explicit verb beats inferred in
Read more
description: "Intent-classified router, the front door to OrchestKit and the DEFAULT entry point for any goal-shaped request. Classifies a plain-English goal and routes it to the right specialist skill. Routing is never overhead, so use it even when the target skill seems obvious; skip only when already executing inside another skill (no recursion). Triggers on: auto, do this, figure out, just make, I want, help me, fix, build, improve, any goal description." argument-hint: "[plain-english goal]" model: sonnet context: inherit user-invocable: true name: auto allowed-tools: [AskUserQuestion, Read, Grep, Glob, Skill, Task]
Auto-generated from skills/auto/SKILL.md
Source: https://github.com/yonatangross/orchestkit
/ork:auto — Intent Router
The front door to OrchestKit. **You describe a goal in plain English; the router classifies it and hands off to the right specialist.** One entry point, many execution paths.
> **Why this exists:** OrchestKit has 105 skills, but usage telemetry shows users fire only the handful they can name by memory (10 distinct skills across thousands of sessions). The dominant cause of "dead" skills is **no front door** — not low quality. This router turns "you must know the exact `/ork:<name>`" into "describe what you want."
**Core principle:** routing is a *deterministic workflow*, not an autonomous agent (Anthropic, *Building Effective Agents*). Classify → confirm → hand off. The router never does the work itself — it picks who does.
When to use
**By default, for any goal-shaped request.** An unambiguous goal is a 1-step route: auto classifies, confirms in one line, and hands off — no extra hops, so there is no "too obvious for auto".
| Use `/ork:auto` for… | Skip only when… | |---|---| | Any goal description ("fix X", "get Y to Z") | Already executing inside another skill (no recursion) | | The right skill isn't obvious | Chaining a known multi-skill workflow you're mid-way through | | You think you know the skill — auto confirms & short-circuits | |
> **Design note (2026-07-12):** this table previously said "Go direct when you > already know the skill / the request maps unambiguously to one". That inverted > instruction made the front door structurally unreachable — a competent model > always believes it knows the target, so the router recorded near-zero > invocations across thousands of sessions (the exact dead-skill problem the > "Why this exists" note above describes). Routers must be framed as the > default path, not an escape hatch for confusion.
Intent categories → OrchestKit skill
| intent | signal words | routes to | |---|---|---| | **fix** | fix, debug, broken, failing, error, crash, regression | `/ork:fix-issue` | | **diagnose** | why, why isn't, why does, why can't, investigate | `/ork:fix-issue` (investigation-first) | | **optimize** | faster, reduce, latency, bundle, minimize, below N ms | a **`/goal` optimization loop** (see Gaps) | | **cover** | coverage, untested, get to N% | `/ork:cover --target N` | | **design** | design, architect, how should we, explore, idea | `/ork:brainstorm` | | **build** | build, implement, create, add feature, from ticket | `/ork:implement` | | **review** | review, PR, MR, pull request, #N | `/ork:review-pr` | | **verify** | verify, check, make sure, passes, green | `/ork:verify` | | **improve-skill** | improve the skill, optimize the prompt, SKILL.md | the **holdout-promotion gate** (see Gaps) | | **(fallback)** | no confident category | clarify with ONE question |
Full per-category parameter extraction + edge cases: `references/routing-rules.md`.
Model weight (orthogonal second dimension)
Intent picks **who** does the work. Weight picks **how expensive that worker should be**. A route is `{intent} @ {weight}`. Weight never changes the intent and never replaces it. The taxonomy above and the 7 disambiguation rules are untouched by it.
Tiers are the ones already declared in `src/agents/*.md` frontmatter (`haiku` 7 · `sonnet` 10 · `opus` 6 · `inherit` 13). No parallel taxonomy.
| weight | tier | the task is… | |---|---|---| | **Light** | `haiku` | mechanical or IO-bound, single file, deterministic output, trivially revertible | | **Standard** | `sonnet` | the default: bounded judgment, known pattern | | **Heavy** | `opus` | adversarial, security, safety, architecture, cross-cutting, or ambiguous |
**Resolution is asymmetric:** ANY heavy signal ⇒ Heavy; Light requires ALL light signals; everything else is Standard. Under-powering a security review yields a confident wrong answer nobody catches; over-powering a rename only wastes money.
Weight is **per leg, not per route**. A PR review can be a Heavy security leg plus a Light lint leg. Full signal table, per-intent defaults, and the honest limits of this lever: `references/routing-rules.md`.
> **This is the selector, not the cap.** `src/hooks/src/pretool/task/team-size-gate.ts` is an ex-post, per-session counter keyed on `ORK_TEAM_OPUS_MAX` (default 8). Its default posture is advisory (`outputWarning`); with `ORK_TEAM_SIZE_HARD=1` it escalates to `outputDeny` and refuses the spawn outright. Either way it reads the model read-only: it can refuse a premium spawn, but it cannot *choose* a cheaper one for you. Routing is what chooses. The two compose, cap as backstop and routing as selector; never duplicate the cap's counting here.
The flow
CLASSIFY -> CONFIRM -> HAND OFF
| | |
intent show the invoke the
+ weight route target skill;
out loud + nod follow ITS phases1. Classify (reason out loud first)
State your reasoning **before** committing to a route — this triggers chain-of-thought and is the single biggest accuracy lever (Anthropic, *Writing Effective Tools for Agents*). Example: *"'get latency under 200ms' names a metric + a direction → optimize, not fix."*
Apply the disambiguation rules (most specific wins; explicit verb beats inferred in
The Complete AI Development Toolkit for Claude Code — 114 skills, 37 agents, 212 hooks. Production-ready patterns for full-stack development.
Repo: yonatangross/orchestkit
Other commands on orchestkit.
- /assess
Assesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with
Open command - /audit-activation
Audits OrchestKit sub-agent activation from real spawn telemetry — computes the generic-vs-specialist spawn split, flags dormant agents (never fired), and classifies each as fires/mis-triggered/niche. The agent-side analogue of audit-skills. Use when specialized agents feel
Open command - /brainstorm
Design exploration using parallel agents through a 7-phase process: topic analysis, memory context, divergent ideation (10+ ideas), feasibility filtering, evaluation with devil's advocate scoring (0-10 across 7 dimensions), synthesis of top approaches, and trade-off comparison.
Open command - /ci-debug
Diagnose a failing CI run against an 11-pattern playbook. Classifies the failure, cites the relevant memory entry, proposes the exact fix command — but NEVER applies without explicit user approval. Use when a specific PR check or GitHub Actions run failed and you want a
Open command - /ci-sentinel
Daily autonomous classifier for failing PRs across your repos. Runs /ci-debug headless against every open PR with red required checks, posts the verdict as a collapsed PR comment, and appends to a per-repo .sentinel/ledger.jsonl. v1 is propose-don't-apply — NEVER auto-pushes a
Open command - /commit
Creates commits with Conventional Commits format (feat/fix/docs/refactor/test/chore), automatic scope detection, co-author attribution, and pre-commit hook compliance. Validates staged changes, generates descriptive messages focusing on the 'why', and prevents secrets or
Open command

