ScrappyLabs · Skill Outline

Two thinking tools

Outlines of the two skills we run before writing any code. /office-hours decides whether a thing should exist. /diverge finds the non-obvious way to build it. They're deliberately separate, and the order matters.

/office-hours

Should this exist?

YC-style interrogation. Six forcing questions, one at a time, pushing until the answer is specific and uncomfortable. Kills bad ideas early and cheaply.

Output: a design doc. Never code.

/diverge

How, non-obviously?

Parallel isolated agents each thinking under a distorted frame, then one critic scores, clusters, and flags traps. Fights premature convergence.

Output: a scored shortlist + a real opinion.

The distinction is load-bearing

If you merge them you get the worst of both — an idea validated against options you never generated, or twenty clever approaches to something nobody wants. Run office-hours first. Only run diverge on something that already earned the right to exist.

/office-hours

YC-style idea stress test

The premise: make sure the problem is understood before any solution is proposed. The skill is an adversarial partner, not a cheerleader. Its single hardest rule is that it must take a position on every answer and say what evidence would change it.

Phase 1 — pick the mode

One question routes everything: what's this for?

GoalModePosture
Startup / company · Client workStartup mode Adversarial. Six forcing questions. Assume it's wrong until evidence says otherwise.
Hackathon · Side project · Open sourceBuilder mode Enthusiastic collaborator. Find the coolest version, not the most optimized one.

Getting this wrong is the most common failure. Running startup rigor on a weekend project kills the fun; running builder enthusiasm on a real business ships something nobody pays for.

Phase 2A — the six forcing questions

Asked one at a time. It stops and waits after each. Push until the answer is specific, evidence-based, and uncomfortable — comfort means you didn't push hard enough. The first answer is always the polished version; the real one comes after the second push.

Q1
Demand Reality

"Strongest evidence someone actually wants this — not 'interested,' not 'signed up,' but would be genuinely upset if it disappeared tomorrow?"

Red flags: "people say it's interesting", "500 waitlist signups", "VCs are excited." Interest is not demand. Money counts. Panic when it breaks counts.

Q2
Status Quo

"What are your users doing right now to solve this — even badly? What does the workaround cost them?"

Red flag: "Nothing, that's why the opportunity is big." Usually means the problem isn't painful enough. The spreadsheet-and-Slack workaround is your real competitor.

Q3
Desperate Specificity

"Name the actual human. Title. What gets them promoted. What gets them fired. What keeps them up at night."

Red flag: category answers — "healthcare enterprises", "SMBs", "marketing teams." Those are filters, not people. You can't email a category.

Q4
Narrowest Wedge

"Smallest possible version someone would pay for THIS WEEK — not after you build the platform?"

Red flag: "We need the full platform first." That's attachment to architecture over value. Bonus push: what if the user had to do nothing at all? No login, no setup.

Q5
Observation & Surprise

"Have you sat down and watched someone use it without helping? What did they do that surprised you?"

Red flags: "We sent a survey" (surveys lie), "did some demo calls" (demos are theater), "nothing surprising" (you filtered). The gold: users doing something the product wasn't designed for — that's often the real product emerging.

Q6
Future-Fit

"If the world looks meaningfully different in 3 years — and it will — does your product become MORE essential, or less? Why?"

Red flag: "AI keeps getting better so we keep getting better." That's a rising-tide argument every competitor can make. Needs to be YOUR thesis.

Not all six, every time. Routing by stage: pre-product → Q1, Q2, Q3 · has users → Q2, Q4, Q5 · has paying customers → Q4, Q5, Q6 · pure infra/dev tool → Q2, Q4. And there's an escape hatch: push back once and it asks only the two most critical; push back twice and it moves on. Respecting that is a rule, not a courtesy.

The anti-sycophancy list (the part most worth stealing)

These phrases are banned during the diagnostic, because each one is a way of avoiding a position:

  • "That's an interesting approach" → take a position instead
  • "There are many ways to think about this" → pick one, say what would change your mind
  • "You might want to consider…" → "This works because…" or "This is wrong because…"
  • "That could work" → say whether it WILL work and what evidence is missing

Phase 3 — premise challenge

Before any solution, the premises get named and numbered so you have to agree or disagree in writing: is this even the right problem? What happens if we do nothing — real pain or hypothetical? What already exists that partly solves it? If it's a new artifact, how does anyone actually get it?

Phase 4 — alternatives (mandatory)

Two to three distinct approaches, never fewer. One must be minimal viable (smallest diff, ships fastest), one must be ideal architecture (best long-term shape), one may be lateral (a different framing of the problem). Each gets effort, risk, pros, cons, and what it reuses. Then it recommends one — and still waits for you to pick before writing anything up.

Phase 5 — the design doc

One markdown file, filed by project, with structured frontmatter. Two sections carry disproportionate weight:

"The assignment" — ONE concrete real-world action to take next. Explicitly not "go build it." Usually it's talking to a person.

"What I noticed" — 2-4 bullets quoting your own words back at you. Observational, not characterizing. This is where the uncomfortable insight usually lives.

Hard boundary

The output is a document. The skill is forbidden from scaffolding a project, writing code, or invoking build tooling mid-session. Without that rule the model gets excited and starts building the thing it was supposed to be questioning — and once code exists, the idea stops getting challenged.

/diverge

Divergent ideation under cognitive frames

The first three answers a model gives are the answers a senior engineer gives in thirty seconds: correct, and forgettable. The interesting answers live past number three.

This skill walks past number three — using genuinely isolated parallel agents, not one context pretending to brainstorm. Each branch gets a fresh context and a distorted vantage point on the same problem, and branches never see each other. That isolation is the entire method: the moment branch two can read branch one, everything anchors and you get variations instead of alternatives.

The two phases

Diverge · N agents, N frames, in parallel, blind to each other Focus · one critic scores, clusters, flags traps, deepens survivors

The frames

Each agent is told to attack the problem from one vantage point — for example, "transplant a mechanism from biology (immune systems, neural plasticity, cell signaling, evolution) and force-fit it onto this engineering problem." Selection is automatic: several code/design frames plus one deliberately wild one.

biologylogisticsgame design marketsinversionspeedrunner ant colony3am on-call remove the load-bearing assumptionhardware engineer regulator10-year-old competitor trying to break it $0 budget, 1 hourinfinite budget, 10 years

The critic

A separate agent — not one of the generators — receives the whole pool and does four things:

  1. Scores every idea 0-10 on novelty (distance from the obvious default), viability (could it actually ship), and fit (does it address the problem). Weighted 0.35 / 0.40 / 0.25 — viability edges out novelty on purpose.
  2. Flags traps — ideas that are seductive but broken: hidden cost, false economy, won't scale, premature abstraction. Instructed to be aggressive here. Naming traps is the highest-value output of the whole run, and traps are excluded from the shortlist entirely.
  3. Clusters the pool by underlying angle, so you see the shape of the space rather than a list.
  4. Shortlists 2-4 worth pursuing, explicitly marking the best non-obvious but viable pick — plus one wildcard provocation that survives even if nothing else does.

Survivors then get deepened: sketch, load-bearing risk, first step, child ideas.

The gate — when NOT to run it

It costs ~9 agent calls, so it's gated behind a pre-flight. It runs only when all hold: the answer space is genuinely open-ended (no canonical answer), the cost of the obvious answer being wrong is high (architecture, public API, schema, naming a real product, positioning, a fuzzy bug with no known root cause), and the ask wasn't phrased narrowly ("quick", "standard", "just", "what's the syntax"). Otherwise it answers directly and simply offers the wider run as an option. Cheap tools get used carelessly; expensive tools need a gate.

Anti-patterns it actively watches for

How they chain

raw idea /office-hours
should this exist?
design doc + one chosen approach /diverge
what's the non-obvious how?
build

Most ideas die at step two, which is the point — that's the cheapest possible place for them to die. The ones that survive arrive at the build stage with a named user, a narrowest wedge, a written premise list, and a set of approaches somebody actually argued against.

If you're rebuilding these for your own agents

The specific prompts matter far less than five invariants. These are what make the difference:

  1. One question at a time, then stop and wait. A batch of six questions gets six shallow answers. The pushing only works serially.
  2. Ban the hedge phrases explicitly. Write the banned list into the prompt. Models default to agreeable, and agreeable is useless here.
  3. Alternatives are mandatory, and one must be minimal. A single recommended approach is a decision you didn't get to make.
  4. The generator and the critic must be different contexts. Nothing scores its own output honestly — this is the same reason the divergence branches stay blind to each other.
  5. Gate the expensive one. If it always runs it stops being special and starts being noise.