Help us improve
Share bugs, ideas, or general feedback.
From skills-for-humanity
Inverts the main constraint on a problem to generate novel solutions, then maps them back to real-world constraints. Useful for creative brainstorming and overcoming design deadlocks.
npx claudepluginhub human-avatar/skills-for-humanityHow this skill is triggered — by the user, by Claude, or both
Slash command
/skills-for-humanity:s4h-play-constraint-inversionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Most constraints are treated as fixed when they are actually assumed. The ones that
Reframes limitations as design requirements, turning obstacles into generative forces for creative solutions.
Turns limitations into creative fuel by strategically imposing constraints to force novel thinking and break habitual patterns. Use when brainstorming feels stuck, working with limited resources, or user mentions "think outside the box" or "tight constraints".
Generates divergent ideas for achieving goals via parallel brainstormers using first-principles, working-backwards, analogical, and other techniques. Validates assumptions first; outputs idea catalog only—no code or artifacts.
Share bugs, ideas, or general feedback.
Most constraints are treated as fixed when they are actually assumed. The ones that are genuinely fixed are fewer than people believe — and the ones that are assumed become invisible over time because they've been treated as given for so long. Inverting a constraint — imagining its complete opposite — reveals what underlying goal it has been blocking and often generates solutions that work within the real constraint once the goal becomes visible.
Step 1: Name the Main Constraint What is the primary constraint on the current problem or design? Be specific — not "we don't have enough resources" but "we have 6 weeks and two engineers available after existing commitments." Not "the budget is limited" but "the approved budget is $40k with no variance mechanism." Specificity matters because vague constraints produce vague inversions.
Framing check: Confirm the specific constraint and the goal it is blocking before continuing. State what you've identified — the actual constraint and what it is preventing — in one sentence, then use AskUserQuestion:
Step 2: Invert Completely State the opposite world. Don't soften or partially invert — flip it completely. "6 weeks and two engineers" becomes "18 months and a team of twelve." "Budget of $40k" becomes "unlimited funding with board approval." The inversion should feel unrealistic. That is the design — if it feels achievable, it isn't inverted enough.
Step 3: Generate Freely in the Inverted World What would you do if the constraint were fully removed? Generate without filtering. No "but we can't" or "in reality though" — those are prohibited at this stage. Generate the full set of unconstrained approaches you can identify.
Before narrowing: Show the complete generated set to the user first. Use AskUserQuestion:
Then narrow to 3–5 substantially different approaches based on the user's input.
Step 4: Find the Underlying Goal of Each For each unconstrained solution: strip away the specifics and name the underlying goal it's pursuing. What is it actually trying to accomplish? This step converts "hire a team of specialists" into "access deep expertise quickly." The goal is more transferable than the method.
Step 5: Reintroduce Real Constraints For each identified goal: is there a way to pursue this goal within the real constraints? Sometimes yes — the unconstrained version was solving the right problem in an impossible way, and a constrained version exists. Sometimes no — the goal is genuinely blocked by the constraint. Both are real findings.
Step 6: Map Real vs Assumed Constraints The gap between constrained and unconstrained versions shows where each constraint is doing real work versus assumed work. A constraint does real work when it genuinely prevents a goal. It does assumed work when the goal is achievable within it — just not obviously. Assumed constraints are the most valuable finding.
Before proceeding, use the AskUserQuestion tool. State your interpretation of the situation in 1–2 sentences — what is being analyzed and what the core question is — then ask:
Proceed based on their selection. If the user reframes, incorporate the correction before running any analysis.
Constraint: [the specific, concrete real constraint]
Inverted World: [the fully opposite assumption — stated without softening]
Unconstrained Solutions
| Solution | Underlying Goal |
|---|---|
| [what you'd do with no constraint] | [what it's actually trying to achieve] |
Constrained Versions: For each goal — does a within-constraint version exist? If yes, describe it.
Real vs Assumed Constraints
The most productive output is usually not the unconstrained solutions themselves but the underlying goals they expose — goals that were invisible while the constraint was accepted as fixed. Those goals are the real design brief. Once visible, they often turn out to be achievable within the actual constraints through routes that the constrained framing had ruled out prematurely.
After delivering this output, use AskUserQuestion to offer the next move:
/s4h-creativity-lateral-thinking — Use the inverted constraints as lateral move springboards/s4h-decision-option-mapping — Map options that become available in the inverted world/s4h-constraint-hardness-testing — Test which inverted constraints are actually achievable