From agent-workflows
Spawns agents to invert one constraint each from a design doc or description, exploring alternatives and synthesizing a map of load-bearing vs assumed constraints.
npx claudepluginhub sjarmak/agent-workflowsThis skill uses the workspace's default tool permissions.
Constraint Inversion — What-If Removal. Takes a design with stated constraints and spawns N agents, each removing or inverting ONE constraint to explore what becomes possible without it, then synthesizes findings into a constraint dependency map that reveals which constraints are truly load-bearing vs merely assumed.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Constraint Inversion — What-If Removal. Takes a design with stated constraints and spawns N agents, each removing or inverting ONE constraint to explore what becomes possible without it, then synthesizes findings into a constraint dependency map that reveals which constraints are truly load-bearing vs merely assumed.
$ARGUMENTS — format: [N] [path/to/design.md or inline description] where N is optional constraint-removal agent count (default: 5, min 3, max 7)
Extract:
If the input is missing or unclear, ask the user to clarify before proceeding.
If a file path is given: read it and extract every stated or implied constraint — technical, organizational, temporal, financial, compatibility, and operational.
If inline: parse the description for the same.
Prepare a design brief that includes:
Then prepare a constraint inventory — a numbered list of every constraint found. For each constraint:
Present the design brief and constraint inventory to the user. Ask:
Adjust based on user feedback. Select exactly N constraints for inversion — one per agent. Prefer constraints that appear to have the largest design impact or that the user flagged as interesting.
Launch all N agents in parallel using the Agent tool. Each agent gets the same design brief and the full constraint inventory, but is assigned ONE specific constraint to remove. The agent explores the design space that opens up without that constraint.
Each agent MUST:
subagent_type: "general-purpose" (they may need web search for alternative architectures, prior art, etc.)Agent prompt template (customize the constraint per agent):
You are a design analyst performing a constraint inversion exercise.
## Design Brief
{design_brief}
## Full Constraint Inventory
{numbered_constraint_inventory}
## Your Assignment: Remove Constraint #{n} — {constraint_name}
{constraint_description}
## Instructions
Imagine this constraint no longer exists. It has been fully removed — not relaxed, not reduced, but gone. Explore what becomes possible.
Work through these questions systematically:
1. **What changes immediately?** Which design decisions were directly forced by this constraint? What alternatives open up?
2. **What simplifies?** Which complexity in the current design existed solely to satisfy this constraint? What components, abstractions, or workarounds become unnecessary?
3. **What new capabilities emerge?** Are there features, architectures, or approaches that were off the table but are now viable?
4. **What breaks?** Does removing this constraint destabilize other parts of the design? Do other constraints become unsatisfiable?
5. **Constraint dependencies**: Which other constraints in the inventory depend on this one? Which ones become irrelevant if this one is removed?
6. **Load-bearing assessment**: Is this constraint load-bearing (its removal fundamentally reshapes the system) or assumed (the design barely changes without it)?
7. **Removal cost vs. removal value**: If the team could negotiate away this constraint, would it be worth it? What would they gain vs. what would they risk?
Be SPECIFIC. Reference actual components, decisions, and constraints from the design brief. Do not write generic observations — write about THIS design.
## Output Format
### Constraint Removed: #{n} — {constraint_name}
#### What Becomes Possible
[2-3 paragraphs describing the design space that opens up. Be concrete — name specific alternative architectures, components, or approaches.]
#### What Simplifies
- [Specific complexity that disappears]
- [Components or abstractions that become unnecessary]
- ...
#### New Capabilities Unlocked
- [Features or approaches now viable]
- ...
#### What Breaks
- [Other parts of the design that depend on this constraint]
- [Constraints that become unsatisfiable]
- ...
#### Constraint Dependencies
- Depends on this constraint: [list constraint numbers/names that rely on this one]
- This constraint depends on: [list constraint numbers/names this one relies on]
- Becomes irrelevant without this: [constraints that lose their purpose if this one is gone]
#### Load-Bearing Assessment
- **Classification:** [Load-bearing / Assumed / Partially load-bearing]
- **Confidence:** [High / Medium / Low]
- **Rationale:** [1-2 sentences explaining the classification]
#### Surprise Findings
- [Anything unexpected — a constraint that turned out not to matter, a hidden coupling revealed, or an unexpectedly powerful simplification]
After ALL agents return, produce a unified analysis with five sections:
A structured map showing relationships between constraints. For each constraint that was removed:
| Constraint Removed | Depends On | Depended On By | Becomes Irrelevant | Load-Bearing? |
|---|
Then render the dependency relationships as an ASCII directed graph showing which constraints support which others. Identify:
Group all analyzed constraints into three tiers:
Load-Bearing (removal fundamentally reshapes the design):
Partially Load-Bearing (removal changes significant parts but the core holds):
Assumed (removal changes little — the constraint was not as binding as believed):
For each removed constraint, a one-paragraph summary of the most significant design opportunity that opens up. Rank these by potential impact (highest first). Flag any where multiple agents' findings suggest the same opportunity from different angles.
Collect all unexpected discoveries across agents:
Based on the full analysis, recommend:
For each recommendation, note which agent's findings support it and why.
Save the full output to the working directory as constraint_inversion_{slugified_topic}.md.
Present the constraint dependency map, classification, and recommendations to the user. Ask:
/premortem on a redesign that removes one or more assumed constraints?/diverge or /diverge-prototype to explore the design space opened by removing a specific constraint?Sits early in the design process, before or alongside /premortem, as a constraint validation step:
/diverge (research) -> /converge (decide) -> /constraint-inversion (validate constraints) -> /premortem (risk check) -> /diverge-prototype (build)
Use /constraint-inversion when:
/converge, to stress-test the constraints baked into the chosen approach before committing/premortem, to ensure the constraints being designed around are the right ones