Skip to content
Agentmart
Submit a tool

adaptive-routing

Reading the three scored dimensions for the CLI.

Skill by ayeo-io

IndexedApache-2.0★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/ayeo-io-adaptive-routing

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Reading the three scored dimensions for the CLI. Load at the assess stage.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/adaptive-routing

What's inside

Skill name
adaptive-routing
Description
Reading the three scored dimensions for the CLI. Load at the assess stage.
License
Apache-2.0
Instructions
144 lines in SKILL.md · view on GitHub

Files (2)

  • SKILL.md
  • composition.md

SKILL.md (first lines)

# Adaptive Routing

This skill is the craft behind `approaches/rubric.md`. `approaches/rubric.md`
holds the rules; this skill says how to apply them.

## The mental model

You are not picking a process. You are computing one. The assessment has
three scored dimensions (`risk`, `familiarity`, `size`), two switches (`goal`,
`urgency`) and any domain labels. The three scored dimensions are three
independent questions, and the delivery approach is their composition -
heavier where they read high, lighter where they read low. A switch leans the
approach towards a reference shape. A domain label raises the floor. The composition is **biased** by
the routing strategies and **bounded** by the routing guardrails, both in
`${CLAUDE_PLUGIN_ROOT}/governance/routing-policy.md` (an unmigrated 5.x project
runs on its own copied `governance/`). The five reference shapes
(quick fix/regular/full/hotfix/spike) are shapes the composition tends to
land near, not boxes to sort into.

## The shipped defaults are enough - you work with them

`/compass:init` is optional. The shipped default preset carries active
default guardrails, default strategies, and a default routing policy, and the
plugin holds their prose in `${CLAUDE_PLUGIN_ROOT}/governance/`. A project's own
changes are entries in its `compass.yml`; `compass policy show` prints what is
in force, except that an unmigrated 5.x project runs on its own copied
`governance/` until `compass policy migrate`. If a project has no `compass.yml` and no project-specific additions,
that is a valid, complete governance state - you route against the shipped defaults <!-- vocabulary-scan: allow - route is a verb here -->
exactly as you would route against an extended set. <!-- vocabulary-scan: allow - route is a verb here -->
"assess and go on day one"
is honest precisely because the defaults are real, in-force content. Never
treat a project without a `compass.yml` as missing a prerequisite.

## Scoring the dimensions - heuristics

**risk** - *consequence, never effort.*
- The sign of `critical`: can this lose data, lose money, breach auth/privacy,
  or resist a clean rollback? If yes, it is critical even if it is one line.
- Critical risk alone does not bring the human sign-off of guardrail 5
  (`G5`); the labels do. When the change is one of them, apply `auth`,
  `payments`, `personal-data` or `migrations` as well as the risk. A
  migration that can lose data is labeled `migrations`, whatever its risk.
- The sign of `trivial`: is the worst case cosmetic, instantly obvious, and
  instantly reversible - with no data, money, auth, or other team touched?
- The common mistake: scoring risk by how hard the change is. A hard
  change can be contained; a trivial-looking change can be critical. Score the
  failure, not the work.

**Familiarity** - *new code, or old code, and is the old code mapped?*
- `brownfield-unmapped` is not a judgment of code quality - it means the
  behavior is not written down as scenarios. At medium size or more, with
  cross-cutting or critical risk, or with a domain label, it triggers a
  routing guardrail floor: `behavior-mapping` must run. Do not skip it. On
  an atomic or small change with trivial or contained risk and no domain
  label, the skill is advice (`RP-ADV-002`).
- "Trivially readable" greenfield or brownfield can be treated as mapped, but
  be honest - "I could figure it out" is not "it is written down."

**Size** - *the dimension humans get wrong most.*
- People under-estimate size far more than they over-estimate it. When
  genuinely torn between two values, take the higher one. Collapsing a stage
  that turned out easy is cheap; discovering during implementation that the
  delivery approach was too light is expensive and demoralizing.
- Anchor on concrete tests: `atomic` is one file and no design decision;
  `medium` has one or two design decisions; `large` has real architecture and
  is plausibly parallelisable.

**The switches** - *`goal` and `urgency` are read, not scored.* Either can
be left out. `goal: exploration` leans towards spike; `urgency: live-defect`
on an atomic or small change leans towards hotfix. Each one you set still
needs a `--justify`. Domain labels need none.

**Goal** - *the actual outcome, not the literal request.*
- Read `intent.md` if it exists. "Add a CSV export" under an `intent.md` that says "let
  finance self-serve" may need filters, scheduling, and permissions - the
  literal request under-describes the intent.
- Role is not scored. An `intent.md` or `positioning.md` on disk adds artifacts
  and gates through the artifact rules. That is the framework working, not overhead.
- One goal value is **exploration** - "I cannot frame this well
  enough to deliver it yet." Exploration composes towards the **spike** delivery approach the
  way live-defect urgency composes towards hotfix. Still score all three
  dimensions; the switch is what selects the shape. See "Composing a spike"
  in `composition.md`.

If you cannot justify a value in one honest line, **ask the human.** An
unjustified guess is worse than a question, every time.

## Composing and constraining

The CLI does both. You score the three dimensions, read the two switches and
the domain labels, and run
`compass approach evaluate --write --justify DIM="<why>"`, with one
`--justify` for each new or changed dimension or switch; it composes the first approach and
applies the floors, caps, immovable gates and artifact rules. That split is the
determinism boundary and it is the point of the whole design: judgment
produces the assessment, mechanism produces the approach.

The detail - including how a spike is composed - is in
`skills/adaptive-routing/composition.md`, for when a result needs
explaining. `--verbose` names every rule that fired.

## The de-scope ledger - the discipline that makes this auditable

Every phase or check the delivery approach collapses or
skips earns a row in the de-scope ledger, and each row needs an explicit
"safe to skip because…" line.

- **A skip with no justification is not allowed. If you cannot justify it, the
  phase runs.** This is non-negotiable - it is what separates "adaptive" from
  "arbitrary."
- Do not copy a reference shape's standing justification without checking it.
  Confirm it actually holds for *this* issue. quick-fix's "requirements review collapsed - the one
  scenario is unambiguous" is only valid if the scenario really is unambiguous.
- Cap-driven reductions are **not** de-scopes. If the `critical` risk
  cap pins the full approach to one worktree, record that as cap-driven in the
  orchestration section, not in the de-scope ledger. The ledger is for things the
  delivery approach chose to skip, not things a guardrail removed.
- The full approach's ledger is empty by definition. If you are writing de-scope
  rows on the full approach, you have mis-composed.

From ayeo-io/compass, Apache-2.0.

More from ayeo-io/compass

Signals

Stars
1
Forks
0
Open issues
23
Last commit (this folder)
Oct 20, 2026 (9 days ago)
Last release
Oct 20, 2026 (9 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ayeo-io

Cite this page

adaptive-routing skill. Agent Mart. https://agentmart.dev/skills/ayeo-io-adaptive-routing (last updated 2026-10-24)