generative-thinking/SKILL.md
Break out of a locked problem frame by picking one disciplined move — reframe, provocation (Po), random stimulus, SCAMPER, inversion, perspective shift, constraint play, or family traversal — and committing to it before evaluating. Use when stuck, when options feel narrow or obvious, when iterations produce variations of the same idea, or when the user says "widen this", "break out of", "think differently", "I'm stuck", "feels too obvious", "stress-test the framing", "what am I missing", or holds two related examples and asks what lies between or beyond them. Complements challenging (which evaluates) and convening-experts (which synthesizes viewpoints); this skill generates distance, not judgment.
npx skillsauth add oaustegard/claude-skills generative-thinkingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fixation is the default state. When a generator (human or LLM) has been working on a problem, attention concentrates on the current framing and subsequent ideas tend to be local variations on it. This skill is the interrupt: spend one move stepping sideways, then resume.
The discipline matters more than the move. Pick ONE technique per invocation, run it without second-guessing, and produce explicit reframings or candidate entry points — not a brainstorm list in the same frame.
Claude activates this skill when:
Do NOT activate this skill as a default before every consequential task — fixation is the trigger, not stakes. If the current frame is working, let it work.
Three rules that apply across every move below. Violations make the output ideation-flavored but structurally identical to what came before.
Stop condition. Stop when the move has produced 3+ non-trivial framings, or a single framing that reorganizes the problem (one sharp surprise beats five adjacent). Do not keep generating because the list looks short — volume is not the product.
The fire test. After every move, ask: could this output have been produced without the move? If yes, the move did not fire. Either commit harder (push the provocation further, make the reframe more aggressive, re-roll the random word, invert on a different axis) or the move was mismatched to the stuck-pattern — re-diagnose and pick the better-matched move. Re-diagnosis after a miss is not menu-rotation; menu-rotation is cycling through techniques without commitment. One move at a time, each one fully, and if it misses, diagnose why before the next.
Match the stuck-pattern to the move. When unsure, default to Reframe.
| If the stuck-pattern is… | Reach for… | |---|---| | Framing feels forced ("must be X or Y") | Reframe — change the verb, subject, scope, or level | | Generator keeps returning near-duplicates | Random stimulus — force an unrelated concept into the frame | | Obvious answer is wrong but you can't see past it | Provocation (Po) — state something impossible, extract movement | | Iterating on an existing artifact | SCAMPER — seven structured transforms | | Stuck on "how do we make X succeed?" | Inversion — ask "how do we guarantee X fails?" then negate | | Problem is defined entirely in one domain's vocabulary | Perspective shift — how would [distant domain] solve this? | | Every solution is blocked by a constraint | Constraint play — remove it ("assume magic"), or add an absurd one ("must fit in a tweet") | | Two known examples, no theory of the space between/beyond them | Family traversal — name the shared family, walk it to its limits |
The problem-as-stated is rarely the problem-to-solve. Mutate the sentence:
Produce 3 reframings. Fired if: at least one makes the original statement sound naive, or shifts who owns the problem.
Edward de Bono's method. Prefix a deliberately wrong, impossible, or absurd statement with Po: to signal it is not a proposal — it is a stimulus. Then extract movement: what principle, consequence, or adjacent idea does this surface?
Four recipes (de Bono's formal provocations):
The canonical example: a factory pollutes a river. Po: the factory is downstream of itself. Impossible, but it generates: move intake downstream of discharge. Internal incentive to not pollute. Closed-loop water. The provocation is discarded; the movement stays.
Fired if: the provocation is genuinely impossible or absurd (not merely edgy), AND extracting movement yields a principle that survives translation back to the real constraints. If the "provocation" is a thing you could actually do, it's a proposal, not a Po — push it further.
Pick a word, object, or domain with no connection to the problem. Force a connection. The forced-feel is the point — it routes around the habituated pathway.
Template: "How is [problem] like [random]?" then "What does that suggest?"
Sourcing for humans: a random Wikipedia article, a nearby physical object, an Oblique Strategies card, a concept from an unrelated field on the current desk. Commit to the first thing you land on; re-rolling defeats the method.
Sourcing for an LLM agent: an LLM picking its own "random" word is not random — the same fixated attention that locked onto the frame will pick a word adjacent to it. Use an external source:
Fired if: the connection is genuinely forced (the first 10 seconds feel wrong), and working through the force produces an angle that was not in your prior search space. If the random word feels "relevant" immediately, you re-rolled or picked from attention — get a new one.
For iterating on an existing artifact. Walk the seven prompts once; do not pick favorites in advance.
Fired if: at least one prompt produced a candidate you would not have reached by asking "what's a better version of this?". If all seven outputs are adjacent polish, the artifact is not the unit of analysis — zoom out and try Reframe.
Solve the inverse problem, then negate the solution. Works because failure modes are often more concrete than success paths.
Fired if: inverting surfaced a concrete risk, mechanism, or incentive the forward framing was hiding. If negating the inverted answer gives you the same thing you already had, the inversion was too symmetric — invert on a different axis (goals → incentives, success → unobservable, user → operator).
Move the problem into a different domain's vocabulary and see what gets easier.
Fired if: the borrowed vocabulary made at least one previously-invisible option visible, or renamed a core object in a way that changes what you'd do next. If the new domain's terms map one-to-one onto the old, pick a more distant domain.
Constraints define the solution space. Move them deliberately.
Fired if: a relaxed-constraint solution reveals what you actually value (not just what you'll accept), or an added-constraint solution is sharper than the unconstrained one. If both feel like the same answer with a different budget, the binding constraint is elsewhere — find it.
For when you hold two (or more) related instances and generation keeps orbiting them. The pair is not the object — the parametrized family containing both is. Sub-moves in descending observed yield:
Then sharpen and verify: the traversal's real product is questions precise enough to have derivable answers; the discovery happens in the derivation and a cheap measurement, not in the geometry. (A frontier framing of an addressing scheme implied a capacity law, j² ≤ 2^(significand bits); sixty seconds of numpy confirmed a cliff at exactly N = 4096, closing a four-month-old empirical mystery.) Without this step the move outputs taxonomy, not generation.
Fired if: a limit point or constraint-swap landed outside the prior search space, AND at least one output is a checkable claim. If the output is only a tidy classification of the anchors, the move stalled — push further along the edge or swap the constraint.
Caution: do not equate the interior of the space with novelty. In high dimensions essentially all operation is already extrapolation outside the training hull (Balestriero & LeCun 2021), and mixtures of known points are averages. The generative directions are the limits and the constraint-swaps; the chord is a probe, not a doctrine.
LLM agents exhibit a context-bound analog of functional fixedness: attention concentrates on current framing and generates variations of it. Signals this is happening:
When detected, the fix is the same: pick one move from the diagnostic table, execute it on the agent's own current framing, and explicitly write out the new framing(s) before resuming work. The write-out is load-bearing — a framing that stays implicit in attention gets re-absorbed into the previous frame.
Load these only when the user wants depth on a specific technique.
DIAGNOSE: What kind of stuck?
→ framing forced : REFRAME
→ near-duplicates : RANDOM STIMULUS
→ can't see past obvious: PROVOCATION (Po)
→ iterating an artifact : SCAMPER
→ chasing success : INVERSION
→ one domain vocabulary : PERSPECTIVE SHIFT
→ blocked by constraint : CONSTRAINT PLAY
→ two examples, no theory: FAMILY TRAVERSAL
DISCIPLINE:
1. Generation before evaluation
2. One move, committed
3. Output framings, not ideas
STOP when: 3+ non-trivial framings produced, or one surprising framing that reorganizes the problem.
development
Write effective instructions for Claude: project instructions, standalone prompts, and skill content. Use when users need help writing prompts, setting up project instructions, choosing between instruction formats, or improving how they communicate with Claude. Covers writing principles, model-aware calibration, and format selection. For building and testing complete skills, use skill-creator instead.
data-ai
Discover and load skills on demand from /mnt/skills/user/. Use when you need a capability but don't know which skill provides it, when the boot-emitted skill list is names-only and you need a full description, or when you want to list the catalog. Verbs are list (names only), search (rank by name/description match against a query), and show (emit the full SKILL.md for a named skill).
documentation
Reads the visual content of slides, pages, and images the way a human would, not just their embedded text. Use when a PPTX or PDF has image slides, screenshots, charts, scanned figures, or flattened-to-image layouts that the built-in pptx/pdf skills read as empty; when asked to transcribe, describe, OCR, or extract what is shown in an image, slide deck, or document page; or when embedded-text extraction returned little or nothing from a visually rich file. Triggers on 'read this deck', 'what's on these slides', 'transcribe', 'OCR', 'extract text from image', 'describe this chart/diagram', .pptx/.pdf/.png/.jpg with visual content.
development
Portrait Mode for SVGs — foveated vectorization with 4-zone selective detail. Combines vision annotations, MediaPipe segmentation/landmarks, and optional saliency. Like phone portrait mode, but vectorized. Use when vectorizing a portrait or photo where subject detail should outrank background detail.