# Sage Tiers

> Sizing a task before doing it. Use when the user asks which tier a task is, how big or small a change is, whether something needs a spec or a plan, whether to just do it or slow down, or when deciding how much process a piece of work deserves.

- Skill: `xoai/sage-tiers` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xoai/sage-tiers`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xoai/sage-tiers/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: xoai (https://skillmd.com/u/xoai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xoai/sage-tiers

---


# Tiers

Tier is the answer to one question: **how much process does this deserve?**

Too much process on a trivial change is bureaucracy, and users learn to route
around it. Too little on a consequential one is how a "quick fix" becomes an
outage. Tier is where that judgment is made explicit instead of being made
silently, differently, every time.

## The three tiers

| Tier | Response | What it looks like |
|---|---|---|
| **Tier 1** | Just do it. | Single file, no design decisions, a quick answer. No manifest, no spec, no confirmation. |
| **Tier 2** | Announce and proceed. | Multiple steps, creates artifacts. Say what you are doing, then do it. |
| **Tier 3** | Card and choose. | Major effort, genuine ambiguity. Present options and let the user pick. |

## The bias

**Bias toward Standard scope.** When a task sits on a boundary, take the
higher tier.

Any of these puts a task at **Tier 2 minimum**, regardless of how small the
diff looks:

- a behavior change
- an API change
- a decision the team would want to see

The asymmetry is deliberate. The cost of over-tiering is a few minutes of
ceremony. The cost of under-tiering is a change nobody reviewed, in a place
nobody expected, discovered later by someone who did not know it happened.

## Tier 1 is a real escape hatch, not a trap

Tier 1 exists so the process does not tax trivial work, and it is genuinely
free: no manifest is created, so the spec-gate hook has nothing to block on
(the hook reads `gate_state` from a manifest; no manifest means no active
cycle means edits are unrestricted).

That is the escape hatch working as designed. It is not a loophole — "I will
call it Tier 1 so I do not have to write a spec" is a rationalization, and the
list above is what it collides with.

## Rationalizations that do not survive contact

| The thought | Why it is wrong |
|---|---|
| "It is literally one line" | One line that changes behavior is a behavior change. The diff size is not the blast radius. |
| "The design is obvious" | Obvious to you, now, with your context. Write it down and find out. |
| "I will note it in the commit message" | A commit message is not a decision record and nobody reads it before the fact. |
| "The user just wants it done" | The user wants it *right*. They will not thank you for speed on the change that broke checkout. |

