mode-router

Administer the per-prompt caveman/ponytail mode router via a control file.

1|Updated Jul 2, 2026
One-click install
npx skills add https://github.com/filippolmt/skills --skill mode-router-filippolmt
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: mode-router
Source: https://github.com/filippolmt/skills/tree/main/plugins/mode-router/skills/mode-router
Command: npx skills add https://github.com/filippolmt/skills --skill mode-router-filippolmt

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When a session mixes terse-output and minimal-code working modes, responses drift between styles and the wrong mode gets applied to a request. This Skill lets you inspect and control a hook-based router that classifies each prompt and enforces one mode per context, so coding work gets minimal-code output and everything else gets terse prose. ## Core Features & Use Cases - Status inspection: Read the control file at $XDG_CONFIG_HOME/mode-router/state.json to report the active mode (auto, caveman, ponytail, or off) and the current routing rule. - Mode control: Write a new mode value to the control file to force terse output everywhere, force minimal-code output everywhere, return to automatic per-request routing, or disable routing entirely. - Handoff across resets: Pair with the /mode-router:carryover command to write a structured handoff note before a /clear, so a mode switch survives a context reset with its skill list intact. - Use Case: You are in a caveman (terse) context but the next request is a coding task. The router shows a switch notice; you run /mode-router:carryover, clear, and the fresh context loads ponytail for the code work. ## Quick Start Ask the assistant to show the current mode-router status and which routing mode is in force.

Frequently Asked Questions about mode-router

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I force a specific response mode for every prompt?

Write the desired value to the control file at $XDG_CONFIG_HOME/mode-router/state.json, for example { "mode": "ponytail" }. Valid values are auto, caveman, ponytail, and off, and the change takes effect on the next prompt because the hook re-reads the file every turn.

How do I check which routing mode is currently active?

Read the control file at $XDG_CONFIG_HOME/mode-router/state.json (or ~/.config/mode-router/state.json). If the file is missing or invalid, the router defaults to auto, meaning the model classifies each request and picks the mode itself.

What happens when a request classifies to the other mode?

The router treats it as a mode switch: it does not load the second mode and instead shows a notice recommending /mode-router:carryover, then /clear, then re-sending the request. You can decline by replying "proceed" to get an answer with no mode applied.

Does a forced mode override a context that already holds the other mode?

No. A forced mode against a context already holding the other mode gets the same switch notice and reset recommendation. The forced mode only takes effect after a /clear, since a loaded skill cannot be unloaded from a running context.

Why does routing silently stop working in some sessions?

Mode detection depends on the undocumented PostToolUse event firing for the built-in Skill tool with tool_input.skill carrying the skill name. If that contract breaks, every turn looks like a context reset and the router keeps asking for invocations the context already has.