Expand seeds and escape convergent ideation. Use when you have the start of an idea and want to grow it, when brainstorming produces the same ideas every time, or when you need to explore possibility space.
You help people expand ideas and escape convergent thinking across any domain—software, business, creative projects, or personal decisions.
Ideas need room to grow and things to collide with. Sometimes you're stuck and need to escape a rut. Sometimes you have a seed and need to expand it. Both are ideation problems with different entry points.
Two modes, one goal: explore possibility space rather than settling for the first available option.
Before diving in, identify where you're starting:
| Starting Point | Signals | Mode |
|---|---|---|
| Stuck | Same ideas keep surfacing. All options feel like variations. "We've tried everything." Evaluation before exploration. | → Escape Velocity Protocol |
| Seed |
| Have the start of something. Want to see what it could become. Looking for adjacent moves or missing pieces. |
| → Seed Expansion Protocol |
| Unclear | Not sure if stuck or just early. Have something but not sure if it's good. | → Start with Seed Expansion; switch to Escape Velocity if you hit convergence |
Key question: Are you trying to get OUT of something (stuck) or grow INTO something (seed)?
Ideas cluster because they match expected patterns on multiple dimensions. When your solution uses the obvious WHO doing the obvious WHAT at the obvious SCALE via the obvious METHOD—that's why it feels predictable.
The key test: Could three different people brainstorming independently produce the same list? If yes, you haven't diverged yet.
Symptoms:
Key Questions:
Interventions: Run Default Enumeration (Phase 1). Name the cluster before trying to escape it. You cannot escape defaults you haven't made visible.
Symptoms:
Key Questions:
Interventions: Run Function Extraction (Phase 2). Separate WHAT from HOW. Generate 5 alternatives per function, not per solution.
Symptoms:
Key Questions:
Interventions: Run Axis Mapping (Phase 3). Map the default solution on four axes. Rotate at least one axis to break the pattern.
Symptoms:
Key Questions:
Interventions: Run Domain Import (Phase 4). Generate ideas by applying logic from 3+ unrelated fields. Use constraint-entropy.ts with domains category.
Symptoms:
Key Questions:
Interventions: Move to evaluation framework. Cluster by approach, pick representative from each cluster to prototype/test.
A structured process for breaking out of convergent brainstorming. Use all five phases for stuck sessions; skip to relevant phase when the problem is clear.
Before generating "real" ideas, explicitly list the defaults:
Output: A list of 5-10 obvious ideas, explicitly labeled as defaults.
Purpose: Make attractors visible. You cannot escape what you haven't named.
For each requirement, separate WHAT from HOW:
Reframe: "We need [FORM]" becomes "We need to [FUNCTION] and [FORM] is one way"
Output: A list of 3-5 core functions the solution must accomplish, independent of form.
Example:
Map the default solution on four axes:
| Axis | Question | Default | Alternatives |
|---|---|---|---|
| Who | Who does/uses/owns this? | [obvious actor] | 3 unlikely actors |
| When | What timeframe/frequency? | [obvious timing] | Different cadence/timing |
| Scale | What size/scope? | [obvious scale] | 10x bigger? 10x smaller? |
| Method | What approach/mechanism? | [obvious approach] | Completely different approach |
The key insight: Ideas feel predictable when they match "likely" on all four axes. Change ANY axis and the idea becomes less obvious.
Output: Completed axis map with at least 2 alternatives per axis.
Introduce random constraints to force exploration:
Types of entropy:
Tool: Use constraint-entropy.ts to generate random constraints:
deno run --allow-read constraint-entropy.ts --combo
deno run --allow-read constraint-entropy.ts domains --count 3
deno run --allow-read constraint-entropy.ts inversions
Output: 3-5 ideas generated under unusual constraints.
Purpose: Force exploration of non-adjacent possibility space. Accept the constraints even if uncomfortable.
For promising ideas, check:
The test: An idea is orthogonal when it has its own logic that collides with the problem rather than serving it in the expected way.
Output: Ideas flagged as genuinely divergent vs. cosmetically different.
A structured process for growing ideas from initial seeds. Based on Steven Johnson's research on where good ideas come from. Use when you have something to expand rather than something to escape.
These aren't inspirational—they're diagnostic. Each describes a mechanism for how ideas actually develop:
| Principle | Mechanism | Diagnostic Question |
|---|---|---|
| Adjacent Possible | Most "new" ideas are the next reachable step from what exists. Stairs, not teleportation. | What's one step away from this seed? What becomes possible once this exists? |
| Liquid Networks | Ideas form when partial thoughts collide—people, artifacts, past work, unrelated domains. | What should this seed collide with? What's in the environment that could connect? |
| Slow Hunch | Many good ideas start half-baked. They need time to meet their missing piece. | What's incomplete about this seed? What would finish it? |
| Serendipity | Luck plus recognition. You notice the useful anomaly when it appears. | What unexpected thing have you encountered recently that might connect? |
| Error | Failure is information. Feedback turns wandering into convergence. | What's the dumbest version of this? Where does this break? |
| Exaptation | Repurpose something built for one job into a different job. Reuse as invention. | Could this seed solve a completely different problem? What was built for something else that could work here? |
| Platforms | Stable primitives let people build faster and safer. | What stable thing could this build on? What would make this a platform for other ideas? |
Before expanding, understand what kind of seed you have:
Signals:
Key Questions:
Expansion: Map the adjacent possible. List 3-5 things that become reachable from this seed. Pick the most interesting and repeat.
Signals:
Key Questions:
Expansion: Force collisions. Throw domains, constraints, and artifacts at the seed. Use entropy injection from Escape Velocity Protocol if needed.
Signals:
Key Questions:
Expansion: Don't force completion. Articulate what you have. Name the gap. Keep the hunch alive by writing it down, then look for collisions that might fill the gap over time.
Signals:
Key Questions:
Expansion: Mine the failure. Errors contain information about the shape of the solution. List what you learned, then look for adjacent seeds that avoid the failure modes.
Signals:
Key Questions:
Expansion: Transplant deliberately. List 5 completely different contexts. Try the seed in each. Note what changes, what survives.
Unlike Escape Velocity (which is sequential), use these phases as needed based on seed state:
Before expanding, capture what you have:
Output: A clear statement of the seed and what kind of seed it is.
Map what's reachable from this seed:
Output: 3-5 adjacent possibilities with one marked as "most interesting."
Force the seed to collide with other material:
Tool: Use constraint-entropy.ts domains --count 5 to generate random domains for collision.
Output: 3-5 collision results, noting which produced something interesting.
For incomplete seeds, name what's missing:
Output: A clear statement of the gap. This is what you're looking for in future collisions.
For seeds that might work elsewhere:
Output: Transplant results with notes on what each revealed.
Find where the seed breaks:
Output: Failure modes and what they reveal about the seed's actual structure.
You may start in one mode and need to switch:
Seed → Stuck: If seed expansion produces clustering (all expansions are variations of the same thing), switch to Escape Velocity. You've hit convergence.
Stuck → Seed: If Escape Velocity produces a promising divergent idea, switch to Seed Expansion to develop it. You've found a seed worth growing.
The handoff: Escape Velocity generates candidates. Seed Expansion develops winners. They're different phases of the same ideation process.
Problem: Generating 50 ideas that are all variations of the same 3 approaches.
Symptom: High count, low spread. Ideas cluster visually when mapped. Easy to group into few buckets.
Fix: Stop counting. Start mapping on axes. Require at least one idea per quadrant before adding more. Measure spread, not volume.
Problem: "What if we did the opposite?" is lazy divergence. Opposites share the same axis—they're still convergent.
Symptom: "Instead of fast, make it slow." "Instead of automated, make it manual." "Instead of expensive, make it free."
Fix: Inversion changes magnitude, not dimension. Find a truly orthogonal axis, not the negative of the same axis. "What if speed wasn't the relevant dimension at all?"
Problem: Evaluating ideas while generating them. "That won't work because..." kills divergence.
Symptom: Ideas die mid-sentence. Group corrects toward "realistic" ideas. Discomfort with impractical suggestions.
Fix: Strict phase separation. Generation is not evaluation. All ideas written down before ANY filtering. Impractical ideas may contain seeds of practical ones.
Problem: Domain expert's first idea dominates because of authority, not quality.
Symptom: First speaker's idea becomes the reference point. All subsequent ideas are variants or reactions. Deference to experience.
Fix: Anonymous idea generation first. Or: expert speaks last. Or: explicitly enumerate expert's default in Phase 1, then exclude it from further consideration.
Problem: Divergence for its own sake. Pursuing weird ideas that don't serve the actual function.
Symptom: Ideas are surprising but useless. Clever without being functional. "That's creative but doesn't solve the problem."
Fix: Return to Phase 2 (Function Extraction). Does the weird idea actually accomplish the required function? If not, it's not divergent—it's irrelevant. Orthogonality must serve function.
Problem: Brainstorming from scratch when prior art exists. Reinventing existing solutions.
Symptom: "I wonder if anyone has tried..." (they have). Ideas are novel to the group but exist elsewhere.
Fix: Research before ideation. Find 5+ existing approaches, enumerate them as defaults in Phase 1, THEN diverge. Standing on shoulders, not reinventing wheels.
Generates random constraints to force divergent exploration.
# Generate random constraints
deno run --allow-read constraint-entropy.ts --count 3
# Get domain-import prompts
deno run --allow-read constraint-entropy.ts domains --count 5
# Generate constraint combo (one from each category)
deno run --allow-read constraint-entropy.ts --combo
# Specific categories
deno run --allow-read constraint-entropy.ts actors
deno run --allow-read constraint-entropy.ts resources
deno run --allow-read constraint-entropy.ts inversions
deno run --allow-read constraint-entropy.ts combinations
# JSON output
deno run --allow-read constraint-entropy.ts --combo --json
Categories:
actors - Who constraints ("A 10-year-old must use it", "Someone hostile to it")resources - Resource constraints ("1/10th budget", "Can't use obvious technology")combinations - Forced combinations ("Must also solve X", "Must NOT do expected thing")inversions - Perspective flips ("What if failure is the goal?", "What if the constraint is the feature?")domains - Domain import prompts ("How would military logistics solve this?")Why a script: True randomness forces exploration that humans and LLMs would otherwise avoid. Curated constraints that actually produce useful divergence.
User: "We need ideas for improving team communication. We keep generating the same ideas—Slack channels, more meetings, documentation."
Diagnostic approach:
Identify state: B1 (Convergence Blindness) + B4 (Domain Imprisonment). Ideas cluster around communication tools and meeting structures—the obvious defaults for this problem space.
Phase 1 - Default Enumeration: Let's name the defaults explicitly:
These are the genre defaults. Valid but predictable.
Phase 2 - Function Extraction: What must team communication accomplish?
Phase 3 - Axis Mapping (for "daily standup"):
| Axis | Default | Alternatives |
|---|---|---|
| Who | Whole team | Rotating pairs? Cross-team? Include customers? |
| When | Daily morning | Weekly? On-demand trigger? After blockers? |
| Scale | 15 minutes | 2-minute hard limit? 2-hour deep dive monthly? |
| Method | Verbal sync | Async text? Video recordings? Walk-and-talk? |
Phase 4 - Entropy Injection:
Running constraint-entropy.ts --combo:
This forces: What if people who hate meetings still get the information? What if we designed for LESS communication that's more effective?
Divergent ideas generated:
These ideas are orthogonal—different axes, not variations of "meeting tools."
This skill writes primary output to files so work persists across sessions.
Before doing any other work:
context/output-config.md in the projectexplorations/brainstorming/ or a sensible location for this projectcontext/output-config.md if context network exists.brainstorming-output.md at project root otherwiseFor this skill, persist:
| Goes to File | Stays in Conversation |
|---|---|
| Enumerated defaults | Discussion of which defaults feel sticky |
| Axis map with rotations | Iteration on constraint choices |
| Generated divergent ideas | Real-time feedback on ideas |
| Orthogonality assessments | Clarifying questions |
| Promising combinations | Discarded options |
Pattern: {topic}-{date}.md
Example: product-naming-2025-01-15.md