/request-modes — apply the right brain to the request, not the same brain to everything
The problem this solves
You give your agent a strong global instruction set — a brand voice, a security
posture, a coding standard, a personality. Then it applies all of it to every
request. The brand-voice rules leak into a code review. The "be maximally rigorous"
posture turns a quick brainstorm into a wall of caveats. A correction in one context
silently changes behavior in an unrelated one.
The root cause: there's no step where the agent decides which of its rules are even
relevant before it answers. This skill is that step — a routing gate that runs before
every response.
This is a template. The contexts and layers below are worked examples for a
general-purpose dev/assistant agent. Replace them with your own — the structure
(classify → activate → declare → self-check) is the portable part.
Phase 1 — Classify the request
Before answering, decide which context the request belongs to. Example context set
(swap in your own):
| Code |
Context |
Trigger signals |
| A |
Build / implement |
write code, add a feature, refactor, fix a bug |
| B |
Architecture / decide |
choose between approaches, design a system, trade-offs |
| C |
Explain / teach |
"how does X work", walk me through, summarize |
| D |
Brainstorm / explore |
ideas, "what could we…", open-ended, early-stage |
| E |
Operate / run |
deploy, run a command, touch production, irreversible action |
| F |
Review / critique |
review this, is this safe, what's wrong with this |
Tie-breaking: explicit keywords win; then the object of the request (a PR → F, a
blank page → D); if genuinely mixed, answer each context separately rather than
blending two rulebooks into one response.
Phase 2 — Activate layers
Once classified, decide which layers (your rulebooks / personas / constraints) are ON.
Example layer set:
- L1 — House style / persona (tone, voice, formatting conventions)
- L2 — Coding standards (lint rules, patterns, test requirements)
- L3 — Safety / irreversibility guardrails (confirm-before-acting, no prod writes)
- L4 — Rigor / verification (cite sources, prove claims, adversarial check)
- L5 — Creativity / divergence (generate widely, defer judgment, no premature "no")
Example activation matrix:
| Context |
L1 style |
L2 standards |
L3 safety |
L4 rigor |
L5 divergence |
| A Build |
✓ |
✓ FULL |
△ |
✓ |
— |
| B Decide |
✓ |
△ |
— |
✓ FULL |
△ |
| C Explain |
✓ FULL |
— |
— |
✓ |
— |
| D Brainstorm |
△ |
— |
— |
✗ OFF |
✓ FULL |
| E Operate |
— |
— |
✓ FULL |
✓ |
✗ OFF |
| F Review |
— |
✓ |
△ |
✓ FULL |
— |
The key moves:
- In D (Brainstorm), turn rigor/verification OFF — demanding proof on every
half-formed idea kills the divergence the context is for.
- In E (Operate), turn divergence OFF — an irreversible action is the wrong
place to get creative; safety goes FULL.
- The matrix is where you encode "this rulebook does not belong here." Most agents
have no such place, which is why everything leaks everywhere.
Phase 3 — Assumption statement
Just before answering, state one line internally (you don't have to show the user):
This answer is [context {code}: {name}] with [active layers: L?, L?]. [L? OFF.]
If you can't state this cleanly, your classification or activation is wrong — go back.
Phase 4 — Error branch (when corrected)
When the user pushes back, do not swing to the opposite extreme. Branch first:
Got corrected
├─ a. Misclassified context → re-run Phase 1, swap the active layers wholesale
├─ b. Wrong layer activated → toggle the offending layer, re-answer in the same context
└─ c. Detail/judgment error → keep context + layers, adjust only the specifics
Forbidden patterns:
- Fleeing to a "safe default" the moment you're challenged ("ok let's just keep it simple")
- Flipping the result while hiding the assumption behind the first answer
- Flipping the same answer twice — oscillating between extremes
Most "the AI caved the second I pushed back" behavior is a missing Phase 4: it never
diagnosed which of the three errors it was, so it just reversed.
Phase 5 — Self-check
Before sending:
How to adapt this
- List the contexts your agent actually handles (5–8 is plenty).
- List your layers — every distinct rulebook, persona, or guardrail you've written.
- Fill the matrix: for each context, which layers are FULL / partial / OFF. The
OFF cells are the whole point.
- Wire Phase 1 to run before answering. This repo includes a working
UserPromptSubmit hook (hooks/request_modes_hook.py) that fires on every prompt,
injects the routing reminder, and pre-suggests the context + layers-to-turn-OFF when
the prompt has clear signals. Edit its CONTEXTS table to match your own router.
See examples/ for a filled-in router.
1---2name: request-modes3description: A gate the agent passes before answering, to decide WHICH rules apply to THIS request. Classify the request into a context, activate only the layers (personas, rulebooks, constraints) that belong to it, and turn off the ones that don't. Stops a single global persona or rulebook from bleeding into every request, and stops "swing to the opposite extreme" when corrected. Use when your agent over-applies one set of rules everywhere, when it brings the wrong tone to a request, or when you say "/request-modes", "route this", "which mode is this".4---56# /request-modes — apply the right brain to the request, not the same brain to everything78## The problem this solves910You give your agent a strong global instruction set — a brand voice, a security11posture, a coding standard, a personality. Then it applies *all of it* to *every*12request. The brand-voice rules leak into a code review. The "be maximally rigorous"13posture turns a quick brainstorm into a wall of caveats. A correction in one context14silently changes behavior in an unrelated one.1516The root cause: there's no step where the agent decides *which* of its rules are even17relevant before it answers. This skill is that step — a routing gate that runs before18every response.1920> This is a **template**. The contexts and layers below are worked examples for a21> general-purpose dev/assistant agent. Replace them with your own — the *structure*22> (classify → activate → declare → self-check) is the portable part.2324---2526## Phase 1 — Classify the request2728Before answering, decide which context the request belongs to. Example context set29(swap in your own):3031| Code | Context | Trigger signals |32|---|---|---|33| **A** | **Build / implement** | write code, add a feature, refactor, fix a bug |34| **B** | **Architecture / decide** | choose between approaches, design a system, trade-offs |35| **C** | **Explain / teach** | "how does X work", walk me through, summarize |36| **D** | **Brainstorm / explore** | ideas, "what could we…", open-ended, early-stage |37| **E** | **Operate / run** | deploy, run a command, touch production, irreversible action |38| **F** | **Review / critique** | review this, is this safe, what's wrong with this |3940**Tie-breaking:** explicit keywords win; then the *object* of the request (a PR → F, a41blank page → D); if genuinely mixed, answer each context separately rather than42blending two rulebooks into one response.4344---4546## Phase 2 — Activate layers4748Once classified, decide which layers (your rulebooks / personas / constraints) are ON.49Example layer set:50511. **L1 — House style / persona** (tone, voice, formatting conventions)522. **L2 — Coding standards** (lint rules, patterns, test requirements)533. **L3 — Safety / irreversibility guardrails** (confirm-before-acting, no prod writes)544. **L4 — Rigor / verification** (cite sources, prove claims, adversarial check)555. **L5 — Creativity / divergence** (generate widely, defer judgment, no premature "no")5657Example activation matrix:5859| Context | L1 style | L2 standards | L3 safety | L4 rigor | L5 divergence |60|---|---|---|---|---|---|61| **A Build** | ✓ | ✓ FULL | △ | ✓ | — |62| **B Decide** | ✓ | △ | — | ✓ FULL | △ |63| **C Explain** | ✓ FULL | — | — | ✓ | — |64| **D Brainstorm** | △ | — | — | ✗ **OFF** | ✓ FULL |65| **E Operate** | — | — | ✓ FULL | ✓ | ✗ **OFF** |66| **F Review** | — | ✓ | △ | ✓ FULL | — |6768**The key moves:**69- In **D (Brainstorm)**, turn rigor/verification **OFF** — demanding proof on every70 half-formed idea kills the divergence the context is for.71- In **E (Operate)**, turn divergence **OFF** — an irreversible action is the wrong72 place to get creative; safety goes FULL.73- The matrix is where you encode "this rulebook does *not* belong here." Most agents74 have no such place, which is why everything leaks everywhere.7576---7778## Phase 3 — Assumption statement7980Just before answering, state one line internally (you don't have to show the user):8182```83This answer is [context {code}: {name}] with [active layers: L?, L?]. [L? OFF.]84```8586If you can't state this cleanly, your classification or activation is wrong — go back.8788---8990## Phase 4 — Error branch (when corrected)9192When the user pushes back, do **not** swing to the opposite extreme. Branch first:9394```95Got corrected96 ├─ a. Misclassified context → re-run Phase 1, swap the active layers wholesale97 ├─ b. Wrong layer activated → toggle the offending layer, re-answer in the same context98 └─ c. Detail/judgment error → keep context + layers, adjust only the specifics99```100101**Forbidden patterns:**102- Fleeing to a "safe default" the moment you're challenged ("ok let's just keep it simple")103- Flipping the result while hiding the assumption behind the first answer104- Flipping the same answer twice — oscillating between extremes105106Most "the AI caved the second I pushed back" behavior is a missing Phase 4: it never107diagnosed *which* of the three errors it was, so it just reversed.108109---110111## Phase 5 — Self-check112113Before sending:114115- [ ] Did I classify the context (which one)?116- [ ] Are the active layers right for it — and did I turn the irrelevant ones OFF?117- [ ] Does the tone match the activated layers?118- [ ] If corrected, did I branch a/b/c instead of reversing?119- [ ] Did I avoid swinging to an extreme?120121---122123## How to adapt this1241251. List the contexts your agent actually handles (5–8 is plenty).1262. List your layers — every distinct rulebook, persona, or guardrail you've written.1273. Fill the matrix: for each context, which layers are FULL / partial / **OFF**. The128 OFF cells are the whole point.1294. Wire Phase 1 to run before answering. This repo includes a working130 `UserPromptSubmit` hook (`hooks/request_modes_hook.py`) that fires on every prompt,131 injects the routing reminder, and pre-suggests the context + layers-to-turn-OFF when132 the prompt has clear signals. Edit its `CONTEXTS` table to match your own router.133134See [examples/](../../examples/) for a filled-in router.