Stenographer Mode for GitHub Copilot, Claude Code, Kiro, Cursor & More. Structured shorthand that cuts ~40% of AI response tokens while keeping every code literal, command, and path exactly intact.
▶ Watch the demo · Open interactive benchmark · GitHub repo
Steno Mode is a prompt-driven response style for AI coding assistants. It compresses answers through consistent shorthand rules, not random truncation.
| Technique | Example |
|---|---|
| Stable abbreviations | cfg, auth, deps, req, resp, impl, ctx |
| Symbolic chains | A -> B -> C instead of prose transitions |
| Filler removal | Drops pleasantries and repeated framing |
| Literal protection | Code, paths, commands, errors stay verbatim |
If you want the shortest path:
- Install it in your repo.
- Use
/steno briefin Copilot Chat, Agent mode, or any custom agent. - Keep
brieffor normal use, switch tolitewhen you want more prose.
Best default: install project-wide so Steno applies across Ask, Edit, Agent, chat agent mode, and custom agents in that workspace.
Real numbers from 50+ samples across 7 categories (debugging, code-review, architecture, docs, onboarding, ambiguous, stakeholder):
| Baseline | Caveman | Steno | |
|---|---|---|---|
| Tokens (retry loop Q) | 52 | 27 | 20 |
| Avg reduction vs baseline | — | ~48% | ~40% |
| Readability win rate | — | — | 86% over caveman |
| Literal accuracy | 100% | 100% | 100% |
Failure cases are included in the corpus. Steno is not universal — see Honest Scope.
Prompt: Why does this API retry loop never stop?
Baseline The retry loop never stops because the retry counter is stored inside
the request handler, so it resets to zero on every new attempt.
Move the counter to state that survives across attempts. [52 tok]
Caveman Retry counter inside request handler. Resets each retry. Terminal
condition never hit. Move counter outside. [27 tok]
Steno Retry ctr lives inside req handler -> resets each attempt ->
no terminal hit. Persist ctr across attempts. [20 tok]
Prompt: Review this caching change.
Baseline This change improves cache hit rate, but it also introduces a stale
data risk because invalidation only occurs on create and not on
update or delete.
Steno Hit rate up, but cache invalidation only covers create ->
stale reads on update/delete paths.
Use this if you want Steno available in the current repo:
# Current repo only (.github/prompts command set + .github/agents + .github/copilot-instructions.md)
npx --yes github:AkashAi7/stenographer-mode install --scope projectUse this if you want the user profile setup instead:
# VS Code user profile (prompt command set + skill + agent)
npx --yes github:AkashAi7/stenographer-mode install --scope user
# Global CLI
npm install -g github:AkashAi7/stenographer-modeIf you already cloned the repo:
npm install
npm run install:user # or install:projectinstall:project also writes .github/copilot-instructions.md, which is what makes Steno apply across Ask, Edit, Agent, chat agent mode, and custom agents in that workspace.
Remove it:
npm run uninstall:user/steno Why does this test fail intermittently?
Common choices:
/steno brief-> default, easiest to read/steno lite-> more prose/steno court-> denser shorthand/steno machine-> maximum compression
Switch compression levels inline:
| Command | Style |
|---|---|
/steno lite |
Tight professional prose |
/steno brief |
Default shorthand (recommended) |
/steno court |
Dense expert shorthand |
/steno machine |
Maximum compression |
Persistent mode: say Steno Mode once, or install the project instructions file. The skill keeps it active across Ask, Edit, Agent, chat agent mode, and all custom agents until you say stop steno.
Compress a context file:
/steno-compress temporary # returns shorthand in chat only
/steno-compress permanent # rewrites the target file in-place
Bulk convert existing .github files:
/steno-convert-github preview
/steno-convert-github apply
Deterministic CLI backend used by this command:
node ./scripts/steno-mode.mjs convert-github --mode preview --project-dir .
node ./scripts/steno-mode.mjs convert-github --mode apply --project-dir .NPM shortcuts:
npm run convert:github:preview
npm run convert:github:applyExamples for .github files:
/steno-compress temporary .github/copilot-instructions.md
/steno-compress temporary .github/skills/steno/SKILL.md
/steno-compress permanent .github/agents/steno.agent.md
Use temporary to preview compression first, then run permanent on the same file when the output looks good.
Pick the Steno agent from the agent picker, then ask normally:
Review this diff for regressions.
Use court for terse progress updates.
You can also use Steno as a mode on top of any other agent.
How to use it with any agent:
- Install the project scope so
.github/copilot-instructions.mdis present. - Switch to any agent you want to use.
- Say
Steno Modeonce, then continue with your normal task. - To stop, say
stop stenoornormal mode.
Example flow with another agent:
Switch to your preferred agent.
Steno Mode
Review this diff for regressions.
Keep updates brief.
What this does:
- the selected agent keeps its own expertise and tools
- Steno changes the response style to shorthand-first compression
- this works across Ask, Edit, Agent mode, and custom agents in the workspace when project instructions are installed
project install-> Steno rules are written into the repo and apply across every Copilot mode, agent mode, and custom agent in that workspace.user install-> Steno is available from your VS Code profile.Stenoagent -> direct shortcut when you want the behavior on demand.Steno Mode+ any other agent -> keep that agent's specialization, but make its visible responses follow Steno style.
| Platform | How to activate |
|---|---|
| VS Code Copilot | npx install → /steno |
| Claude Code | Paste packs/claude/system.txt into system prompt |
| Kiro | Paste packs/cursor/rules.txt into agent instructions |
| ChatGPT | Paste packs/chatgpt/custom-instructions.txt |
| Cursor | Paste packs/cursor/rules.txt into rules |
| Windsurf | Paste packs/cursor/rules.txt into rules |
| Aider | --system-prompt flag or .aider.conf.yml |
| Sourcegraph Cody | Paste into Cody custom instructions |
Steno works well in some contexts and poorly in others.
Works well:
- Code review comments
- Bug explanations and debugging Q&A
- Architecture summaries
- API and config documentation
Does not work well:
- Onboarding and tutorials (beginners need prose)
- Stakeholder communication (executives expect full sentences)
- Empathetic responses
- Teaching new concepts where analogies need space
| Level | Description |
|---|---|
lite |
Tight professional prose. Full sentences mostly intact. |
brief |
Default. Shorthand + symbols + compact phrasing. |
court |
Dense expert shorthand. Fragments allowed. |
machine |
Maximum compression. Expert use only. |
npm install
npm run benchmarkOutputs benchmarks/latest.json and demo/benchmark-data.js using exact token counts via gpt-tokenizer.
.github/
agents/steno.agent.md VS Code custom agent
skills/steno/SKILL.md Copilot persistent skill
skills/caveman/SKILL.md Caveman comparison skill
bundles/vscode/
steno.prompt.md VS Code prompt bundle
steno-compress.prompt.md Context compression command
steno-convert-github.prompt.md Bulk .github conversion command
.github/copilot-instructions.md Project-wide Steno instructions
packs/
claude/system.txt Claude / Claude Code pack
chatgpt/custom-instructions.txt
cursor/rules.txt Cursor / Kiro / Windsurf pack
benchmarks/latest.json Benchmark results
scripts/steno-mode.mjs Cross-platform installer CLI
- Site: https://akashai7.github.io/stenographer-mode/
- GitHub: https://github.com/AkashAi7/stenographer-mode
- Primary command:
/steno - Agent name:
Steno