fullstack.rocks/skills

um-maybe

A hallway check that asks: um, maybe you could just…

You know the feeling. You pitch your plan in the hallway to a colleague who knows nothing about it, and their answer is “um, maybe you could just …”. Annoyingly, they’re usually right.

um-maybe gives your agent that colleague. A subagent on a weaker model sees the pitch and nothing else, and questions it. For each question the agent concedes, defends the piece with proof (something you asked for, quoted), or admits it can’t.

Install

Terminal
npx skills add Fullstack-Rocks/skills --skill um-maybe -a claude-code

It also runs from inside under-engineering, so install it together with the other three under-engineering skills.

Try saying

claude · demo shop
A real Claude Code session on the demo shop, recorded as it happened. Long thinking stretches are sped up, everything else plays at its real pace.
Transcript

> Plan a CSV export of the invoices in InvoiceList, then run the hallway check before writing code. Skill(um-maybe): two hallway rounds with a colleague agent on a lighter model. Simplified: the shared CSV module, full escaping, the extra id column and the shared download helper. Kept, with proof: the export button, the invoices already loaded, the browser download. Unproven: the header row, and how “paid” is written. Each comes with A) keep or B) a simpler option. Does the simpler plan make sense to you? Once you’ve answered the two questions above, I’ll write the code.

How does it work?

First, what counts as proof? Either something you asked for, quoted, or something you asked for that can’t work without it. “Best practice”, “future-proofing” and “it’s cleaner” are not proof.

  1. Write the pitch. The problem in one sentence, what you asked for (quoted), and each planned piece with its reason. It stays under 15 lines with no file paths or code, and every extra is named: validation, retries, caching, config, abstraction layers, new modules.
  2. Hallway rounds. A subagent on a weaker model gets the colleague prompt and the pitch, and nothing else. For each question the agent concedes, defends with proof, or says it can’t. Three rounds at most.
  3. Weigh each piece. Every piece lands in exactly one group: Simplified, Kept (with proof), Unproven (with every simpler option and what it gives up) or Belongs elsewhere (infrastructure, legal, product or another team).
  4. Ask the human. One message, and then it waits. The message holds only the unproven pieces, each with its options, and asks whether the simpler plan makes sense.

No subagents? Then the agent plays the colleague itself, using only the pitch, and tells you it did.

The colleague sees only the pitch, and only the unproven pieces come back to you.

But does it work?

From the recording

Four of six planned pieces simplified

In the recording, the shared CSV module turned into a few lines inline in InvoiceList.tsx, full escaping became a plain join (every field is a number or true/false), and the download helper shrank to about 4 lines in the click handler. Only two questions went to the developer: the header row, and true/false vs Yes/No.

Six planned pieces of a CSV export after the hallway check: four simplified, one kept with proof, and one unproven, sent to the developer as a question.
Open full size (opens in a new tab)

The other skills