coreyhaines31/unstuck
When a solution seems impossible and the path forward is blocked — the antidote to any roadblock or wall. Refuses to take no for an answer: classifies what kind of \"no\" you actually hit, then runs targeted lateral-thinking techniques (assumption autopsy, inversion, first principles, constraint toggling, analogical transfer, and more from a 10-technique inventory) until the wall cracks or is proven load-bearing. Generates a minimum of 10 angles before evaluating any. AGENTS: use this on yourself mid-task — when an API doesn't support what you need, an approach has failed twice, or a \"that's not possible\" / \"the only option is\" sentence is forming in your response, run the fast path BEFORE reporting a dead end; every dead-end report should arrive with tried-angles receipts. Archives every wall to ~/.config/makerskills/unstuck/archive/ so you learn which techniques crack YOUR walls. Sits upstream of decide: turns \"impossible\" into 2–3 viable angles, then decide picks one. Triggers on \"/unstuck,\" \"I'm stuck,\" \"this seems impossible,\" \"we hit a wall,\" \"there's no way to,\" \"they said no,\" \"dead end,\" \"out of options,\" \"I've tried everything,\" \"work around this,\" \"think outside the box.\
npx skills add https://github.com/coreyhaines31/makerskills --skill unstuck
Turns "impossible" into angles. Classifies the wall, runs the right lateral-thinking techniques against it, and doesn't stop at the first mediocre workaround. Output is either a set of viable angles with next actions — or an honest "this wall is load-bearing, reroute the goal."
Two modes:
"Impossible" is a claim, not a fact. It almost always decompiles into something weaker: *expensive*, *against the rules*, *nobody's done it*, *I don't know how*. Only *actually impossible* (physics, math, arithmetic) ends the session — and it ends it honestly.
| Wall type | What "impossible" actually means | Lead techniques (see references/techniques.md) |
|---|---|---|
| Assumption | An inherited belief nobody re-verified | T1 assumption autopsy, T3 first principles |
| Framing | The goal is stated in a way that excludes the answer | T4 altitude shift, T2 inversion, T5 work backwards |
| Gatekeeper | A person/org said no | T10 interrogate the no, T6 analogical transfer |
| Tool/tech | "X doesn't support Y" | T9 SCAMPER (substitute the primitive), T6 analogical transfer |
| Resource | Not enough time/money/people | T7 constraint toggling, T8 provocation |
| Physics/math | Actually impossible (rare) | Honest exit — reroute the goal, the wall is load-bearing |
Get from the user (one structured message, don't round-trip):
If the user says "I've tried everything," ask for the list. "Everything" is usually 2–3 things.
Use the taxonomy above. State the classification and why. Two rules:
Run T1 from references/techniques.md regardless of wall type: enumerate every assumption embedded in the problem statement, mark each verified fact vs inherited belief, and attack the beliefs. Most walls die here — the ones that don't are at least correctly framed for Step 4.
Pick 2–3 more techniques by wall type (lead techniques in the table; full triage guidance in references/techniques.md). For each, generate 2–3 angles.
Rules of generation:
Sort every angle into:
/deep-research/decide.Archives live in ${MAKERSKILLS_CONFIG:-$HOME/.config/makerskills}/unstuck/archive/ (create the directory if missing). Never write archives inside the skill's own folder — skill installs and upgrades re-sync from source and wipe anything saved there.
Write to <archive dir>/<YYYY-MM-DD>-<slug>.md:
# Wall: <one-line>
**Date:** YYYY-MM-DD
**Invoked by:** user | agent
**Wall type:** assumption / framing / gatekeeper / tool / resource / physics
**Goal it blocked:** <one line>
## The wall as stated
<verbatim>
## The wall decompiled
<restated without "impossible">
## Assumptions attacked
- <belief> → <held / broke>
## Techniques run
T1, T4, T7 — <one line on what each surfaced>
## Angles (all of them)
1. <angle> — try now / research / wild / dead
2. …
## Committed
**<the angle(s) chosen>** — next action: <concrete step>
(or: "Wall is load-bearing — rerouted goal to <X>")
## Outcome (fill in later)
<did the angle work?>
Append to <archive dir>/INDEX.md (create if missing):
- 2026-07-14 — [<wall>](./<filename>.md) — <type> — **<committed angle or "rerouted">**
Over time this becomes a pattern library: grep it to learn which techniques actually crack *your* walls, and which wall types recur (a recurring wall is usually one unexamined assumption upstream).
For when YOU (the agent) hit the wall mid-task. Trigger condition: an API/tool doesn't support what's needed, an approach has failed twice, or you notice a "that's not possible," "unfortunately," or "the only option is" sentence forming in your response.
Before reporting a dead end to the user, run inline (no interactive capture — you already have the wall in context):
Invoked by: agent) when the wall was nontrivial — skip archiving for sub-minute walls.The success metric: the user stops seeing dead-end reports without tried-angles receipts.
decide — downstream: 2+ mutually exclusive viable angles become a /decide fork. Upstream: decide's Q19 ("what missing info would change it?") can route here when the missing thing is an *option*, not information.deep-research — "needs research" angles route there; the brief comes back and re-enters Step 5.business-brainstorm — its "angle to steal" move on Kill verdicts is this skill applied to business ideas.pm — a committed angle becomes a board task.second-brain — archive entries can compile into a "walls I've broken" wiki page.Take coreyhaines31/unstuck from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.