Back to the catalog

low-battery

Write every answer for a reader with a nearly-empty attention budget: header block first, decision at the bottom, tables over prose, every t

Open source Open in the app JSON README (API)

About

Write every answer for a reader with a nearly-empty attention budget: header block first, decision at the bottom, tables over prose, every term glossed, certainty as a traffic light, ten hard templates picked one per turn.

Details

Kind
Plugins
Topic
No topic detected
Publisher
h0x91b
Origin
gemini
Category
ferramentas
Version
1.0.0
Stars
4
Last push
2026-09-01T16:55:25Z
Repository state
ativo
Language
JavaScript
License
Apache-2.0
Added
2026-08-30 14:13:39
Updated
2026-08-30 14:13:39
Origin id
h0x91b/toolbelt-for-agents

README

# low-battery

**Make your coding agent answer like a person who respects your time.**

Newer models have a habit: they pad. Every answer opens with a warm-up, buries the finding in a wall of
prose, hedges instead of committing, and ends with "let me know if you'd like me to elaborate!" Ask for
something shorter and they do the worse thing — they delete the caveats and keep the filler.

`low-battery` is a rule set that fixes that. It installs into your agent and reshapes every answer:
what this is, where we stand, the substance in tables, and the decision at the bottom. It works with
Claude Code, Codex, Cursor, Gemini CLI, Zed, Copilot and anything else that reads `AGENTS.md`.

```bash
claude plugin marketplace add h0x91b/toolbelt-for-agents
claude plugin install low-battery@toolbelt-for-agents
```

Installing puts the style in your list; it does not take over your answers. Switch it on once:

1. Run `/config` in Claude Code.
2. Type `output style` to filter, then Enter on that row.
3. Press Space, pick **`low-battery:Low Battery`**, Enter to confirm, Enter again to save.

It is a normal setting from then on — pick `Default` again whenever you want out. Every other harness is
one command: **[INSTALL.md](INSTALL.md)**.

---

## Codex, and everywhere else: the install is not finished without this line

Claude Code is the only harness with output styles. Codex, Cursor, Zed, Copilot and the rest install the rules
as a **skill** — and a skill is loaded on demand, so on its own it does nothing until you name it every time.
That is almost certainly not what you want, so treat the next step as part of the install rather than an extra.

In Codex, that means two things: install the plugin, then add one line.

```bash
codex plugin marketplace add h0x91b/toolbelt-for-agents --ref main
codex plugin add low-battery@toolbelt-for-agents
```

Check it actually loaded — from outside a clone of this repo, because a clone loads the skill on its own:
`cd ~ && codex debug prompt-input | grep low-battery`. Nothing there means your Codex is too old to follow the
plugin's subdirectory; copy the folder instead:

```bash
git clone https://github.com/h0x91b/toolbelt-for-agents
mkdir -p ~/.agents/skills
cp -R toolbelt-for-agents/plugins/low-battery/skills/low-battery ~/.agents/skills/
```

Then put this at the very **top** of `~/.codex/AGENTS.md`:

```md
Before writing your final answer, load the `low-battery` skill and follow it. Every turn, not only when asked.
```

Same line works anywhere an agent reads instructions from a file:

| File | Scope |
|---|---|
| `~/.codex/AGENTS.md` | Every Codex session, every project |
| `AGENTS.md` in a repo | That project only, for any harness that reads `AGENTS.md` |
| `~/.claude/CLAUDE.md` | Claude Code subagents, which never see an output style |

⚠️ If `~/.codex/AGENTS.override.md` exists, it **fully replaces** `~/.codex/AGENTS.md` and your line never
reaches the model. Put it in the override instead, and check with
`codex debug prompt-input | grep 'Before writing your final answer'`.

One line beats pasting the whole rule set in: the rules stay in one place and update with the plugin. If you
would rather have them injected wholesale at session start, [INSTALL.md](INSTALL.md) has the hook route and the
paste-it-in route.

---

## What it looks like

You ask: *"Should we cache this endpoint in Redis?"*

<table>
<tr><th width="50%">Without it</th><th width="50%">With it</th></tr>
<tr valign="top">
<td>

> Great question! Let me break this down for you.
>
> There are several factors worth considering when
> evaluating a caching strategy. Redis is a popular
> choice for many teams because it offers excellent
> performance characteristics and a mature ecosystem,
> though it does introduce operational overhead that
> you'll want to weigh carefully against the benefits.
> An in-process cache could also work depending on
> your deployment topology…
>
> Ultimately, the right choice depends on your
> specific requirements. Let me know if you'd like me
> to elaborate on any of these points!

</td>
<td>

> **Template:** `T4 · Decision`
> **Task:** Pick a cache for `GET /invoices`.
> **Where we stand:** 90% of load is repeat reads.
> **Last time:** You asked if Redis fits.
> **Now:** Two options and a recommendation.
>
> | | Option | Upside | Cost |
> |---|---|---|---|
> | ⭐ | Redis | Removes 90% of load | Half a day |
> | | In-process | Zero infra | Breaks past 1 instance |
>
> **Decision:** Redis, unless you're staying
> single-instance for the next year. Your call.

</td>
</tr>
</table>

Same facts. One of them you can act on in fifteen seconds.

---

## Who it's for

Someone who runs a lot of long-lived work in parallel, comes back to a task after two days with **zero**
memory of it, and has about half a minute of attention before deciding whether to engage.

It does **not** dumb anything down. That is the whole point — the reader is an expert who is simply out
of context. The substance stays; the wording gets fixed.

---

## What it actually enforces

| Rule | What changes in practice |
|---|---|
| **Header block first** | Every answer opens by re-establishing what this even is — task, current state, what you asked last time, what's in this message |
| **Decision at the bottom** | You came to decide. No answer ends on a recap or "hope this helps" |
| **Never delete a fact to be shorter** | Long answers get *repacked* into tables, not truncated. The caveats you actually need survive |
| **Tables over prose** | Anything with 4+ numbers becomes a table, so you can skip what's boring |
| **Every term explained** | Plain words in the sentence, the jargon in parentheses: "the smallest shift this can detect (MDE)". You learn the vocabulary instead of being shielded from it |
| **Numbers that mean something** | `−31% rel.` never appears without `−17 265 turns` next to it. Computed numbers are marked `(derived)` |
| **Certainty as a traffic light** | 🟢 we checked · 🟡 we can't tell at this volume · 🔴 nobody looked. "We measured zero" and "we didn't look" stop looking identical — that's the most expensive misread available |
| **No technobabble** | If a sentence needs a second read, it's a bug. Rewritten, not annotated |
| **Size matches the ask** | A yes/no question gets two lines. Small answers don't get bureaucratised into fake reports |

### Eleven answer shapes, one picked per turn

The model names the shape it chose on the first line, so you can see at a glance whether it understood
what kind of answer you wanted.

| | For | | For |
|---|---|---|---|
| `T1` | A fact, a number, yes/no | `T7` | Anything resting on measurements |
| `T2` | Something got changed | `T8` | It's broken right now, or diagnosing why |
| `T3` | Reviewing a PR, SQL, a doc | `T9` | You didn't get the last answer, again but properly |
| `T4` | Choosing between options | `T10` | You state a belief and ask if it's right |
| `T5` | Work that hasn't started yet | `T11` | Nothing got done — the state, and what's waiting on you |
| `T6` | Explaining code or docs that already exist | | |

> ⚠️ **The `Template:` line is temporary — treat it as beta.** It exists so I can see which shape the
> model picked while I'm still tuning the rules, and go edit that exact template. It will probably be
> dropped once the shapes settle; it may also stay, because knowing which template to edit is genuinely
> handy. Either way, don't build anything that depends on that line being there.

Before sending, the model walks a 23-item checklist in its own thinking — did it pick the right shape,
is every fact still there, is anything left unglossed. Most of the enforcement lives there.

In the **skill**, the eleven templates and the number-formatting rules are separate files it reads only when
they apply, so a turn carries one shape and not eleven. In the **output style** everything is inlined,
because a system prompt has nothing to read from. Same rules either way — [AGENTS.md](AGENTS.md) explains
why the two are shaped differently.

---

## Turning it off

Say **"stop low-battery"** or **"normal mode"** and it's off for that conversation.

To turn it off for good, put the setting back: `/config` → **Output style** → `Default`. The style stays
installed, it just isn't applied. To remove it from the list entirely:

```bash
claude plugin disable low-battery
```

---

## Two copies, on purpose

| | Covers | Notes |
|---|---|---|
| **Output style** | Your main conversation | Claude Code only. Pick it once in `/config`, then nothing to invoke |
| **Skill** | Subagents, and any harness without output styles | Gives you an explicit `/low-battery` handle |

Subagents run their own system prompt and never see an output style, which is why the skill ships too.
They're the same rules — never load both into one context.

**Honest limit:** these are instructions, not enforcement. A model can ignore them, and occasionally
does. There's no harness where prompt rules are binding.

---

## The rest of the repo

This is a marketplace that happens to hold one plugin today. Everything the agents read is generated
from `src/low-battery/` — the always-on rules, the eleven templates, and the conditional blocks — so no copy
can drift from another.

Want to change the rules, or add a plugin of your own? **[AGENTS.md](AGENTS.md)** is the working guide, and
`CLAUDE.md` is a symlink to it so every harness finds it. The one thing to know up front: never edit a
generated file, edit `src/` and run `node scripts/build.mjs`.

Full behaviour spec, if you want to read the rules themselves before installing:
[`src/low-battery/RULES.md`](src/low-battery/RULES.md).

## License

[Apache-2.0](LICENSE).

More