Install
$ agentstack add skill-ghostlygawd-recursive-harness-brainstorm ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Brainstorm — many distinct solutions, then pick
The failure mode this kills: the first plausible answer anchors the user, and N agents asked the same question converge into false consensus — three pitches that are one idea in three fonts. The job here is genuine divergence, then a clean pick. The description is the always-loaded when; this body is the how.
This skill is mode-based. Add modes here as the skill grows — never fork a sibling skill (kernel directive 6).
- Mode 1 · Solution Arena — breadth. Survey the known solution space: N
independent agents spread across orthogonal stances, then a clean side-by-side pick. The default for "what are my options / compare approaches / name this."
- Mode 2 · Invention Forge — depth. For when the known options all
disappoint and you want something that doesn't exist yet ("invent", "novel", "breakthrough", "first principles"). Heavyweight (multi-agent + web); not the default. Frames the problem to its invariants, then forces the model past its four default failure modes (below) toward a prior-art-grounded breakthrough.
Mode 1 · Solution Arena
0. Scope the problem
- Restate it in one sentence. If it's vague — no success criterion, no real
constraints — ask 1–2 clarifying questions FIRST. Diverse solutions to the wrong problem just waste the fan-out.
- Default N = 3 candidates. Honour an explicit count ("give me 5"); cap the
arena at 4 (see §4) — beyond that, generate more but shortlist before the pick.
1. Pick the diversity engine — ask the user
Call AskUserQuestion (single-select) offering these three engines. Recommend Fixed lenses as the default; if the user says "you pick," use it.
- Fixed lenses — each agent gets a distinct stance: Pragmatist (simplest
thing that ships) · Contrarian (invert the obvious approach) · Visionary (ideal world, ignore current limits). Add a 4th stance only if N>3.
- Per-problem dynamic angles — YOU read the problem and invent N
maximally-different angles tailored to it (e.g. for churn: pricing-lever / onboarding-lever / community-lever). No fixed personas.
- Distinct ideation methods — one technique per agent: first-principles
(rebuild from base truths) · analogy (how does another field / nature solve this?) · constraint-removal (what if money / time / compute were free?).
Whatever the engine, the assignments must be orthogonal: if two briefs would push toward the same mechanism, change one BEFORE spawning.
2. Generate — independent and parallel
- Spawn N subagents in one message (parallel
Agentcalls,general-purpose
type). Each gets: the scoped problem, ONLY its own lens/angle/method, and the charge: "You are one of N independent attempts. Do NOT hedge toward a safe middle — commit hard to YOUR angle. Your output is data for a picker, not prose for a human."
- Agents must not see each other — independence is the entire value. The only
deliberate exception is the divergence-guard respawn (§3).
- Require a structured pitch back from each: title (≤6 words) · core idea
(2–4 sentences) · why it's distinct · key risk / tradeoff · first concrete step. (If you'd rather scale past N≥5 or vet each candidate adversarially, run generate+guard as a Workflow returning these pitches as a schema — then do §4 in the main loop, since a workflow's agents have no channel to prompt the user.)
3. Divergence guard — enforce "truly unique"
- Read the N pitches. A collision is two pitches sharing the same **core
mechanism**, not merely similar wording.
- On collision: keep the stronger one; respawn the other with the colliding
pitches quoted and the brief "produce a solution that differs in MECHANISM, not just framing, from the following: ." Repeat at most once.
- Tell the user when you broke a collision ("agents 2 & 3 both landed on X —
regenerated 3"). Silent regeneration hides that divergence nearly failed.
4. Arena — side-by-side pick
- Present with
AskUserQuestion, single-select, one option per candidate.
Put each candidate's full pitch in that option's preview so the UI renders them side-by-side — that side-by-side layout is the arena. Option label = the candidate title; description = a one-line hook.
- Plain OUTCOME language, not the mechanism's jargon (user taste — memory/
user-model.md, evidence 4). label/description/preview must name what each candidate does for the user and the one thing it found/changes — never the algorithm behind it. "What sets off what · almost nothing runs on its own", NOT "Reachability / transitive closure"; "Top-to-bottom layers", NOT "Tarjan SCC + longest-path layering". If you can't state an option in one sentence a non-engineer decodes, the pitch isn't finished — an undecodable arena earns "idk what these mean" and the pick stalls (happened 2026-06-19).
- Fallback: if previews don't render side-by-side (older client, or >4
candidates after shortlisting), present the pitches as a numbered list and ask which wins. The pick is what matters; the side-by-side layout is a nicety.
- Do not pre-rank or signal a favourite in the option text. The point is an
uncontaminated pick. If the user wants your read, give it AFTER they choose.
5. After the pick — offer follow-ups
Call AskUserQuestion (multiSelect) offering all three:
- Synthesize — graft the strongest ideas from the runners-up onto the winner
into one merged solution.
- Expand — turn the winner into a concrete plan / implementation steps.
- Re-brainstorm — run a fresh round with new lenses (loop to §1) if none
landed.
Return the result: the winner, or the merged / expanded artifact.
Mode 2 · Invention Forge
Use when the known solutions all disappoint and the user wants something that does not exist yet. The lever is not telling the model to "think harder" — weights are frozen (kernel). The lever is a process that routes around the model's four default failure modes:
- Mean-regression — left alone it drifts to the safe middle → forced
orthogonal divergence (§1).
- Self-unfalsification — it won't try to kill its own ideas → adversarial
gates (§3).
- No prior-art grounding — it cannot certify "this doesn't exist" from
confidence → a real web search (§3).
- Single-pass — it stops at first-order ideas → recombine + loop (§2, §4).
Read references/invention-forge.md for the per-vector agent briefs, the pitch schema, the three gate prompts, and the scorecard format before spawning.
0. Frame to invariants — the highest-leverage, most fallible step
- State the job-to-be-done as an OUTCOME, not the shape of today's solution.
- List the invariants: what ANY solution must satisfy (real constraints,
physics, the success criterion). This is what a candidate is judged against.
- List the inherited assumptions: conventions current solutions copy that are
NOT actually required. This list is the novelty surface — invention is dropping one. If you can't name any, the problem isn't framed yet.
- Pin the baseline: the boring, obvious, best-known solution. It is the
control every candidate must beat — a novel idea that loses to the baseline is theater, not a breakthrough.
- If invariants or the success criterion are vague, ask 1–2 questions FIRST (as in
Mode 1 §0). A breakthrough against the wrong criterion is wasted.
1. Diverge on invention vectors — parallel, independent
Spawn one general-purpose agent per vector in one message (reuse Mode 1's independence rule + its §3 divergence guard — Mode 2's own §3 is the funnel). Each gets the frame and ONLY its vector. Default the four below; swap one if a vector is dead for this problem.
- Assumption-drop — take the most load-bearing inherited assumption; design as
if it were false.
- Cross-domain transfer — find a structurally-isomorphic problem in a distant
field (nature, another industry, another scale/era) and transplant its mechanism. Invention is mostly recombination.
- First-principles rebuild — derive only from the invariants; ignore how it's
normally done.
- Constraint-to-extreme — push one constraint to 0 or ∞ (free compute, zero
latency, one user, infinite scale) and harvest what unlocks.
2. Recombine — cross-pollinate (deliberately breaks Mode 1's rule)
Read all vector pitches and graft their strongest fragments into 2–4 hybrid candidates. Mode 1 forbids candidates seeing each other; here the cross- pollination IS the point — that's why this is a separate mode. Carry the best pure vector pitches forward too; hybrids don't always win.
3. Adversarial filtration funnel — each candidate must clear ALL three gates
Run the gates per candidate (a Workflow pipeline scales this; see references).
- Feasibility kill-test — a FRESH skeptic agent tries to prove it can't work
or violates an invariant. Default-refute; the candidate survives only if the refutation fails.
- Prior-art gate — a fresh subagent runs
WebSearch/WebFetch: does it already
exist? If yes it is not a breakthrough — drop it, or keep only the genuine delta vs prior art. Be honest in output: this proves "not found", never "doesn't exist".
- Dominance gate — does it actually beat the baseline (§0) on the success
criterion? If not, cut it. Tell the user the funnel arithmetic ("8 candidates → 3 survived: 2 killed on feasibility, 2 already exist, 1 lost to baseline").
4. Loop if thin
If <2 strong survivors, mutate the survivors and drop the NEXT inherited assumption, then re-run §1–§3 (loop-until-dry, max ~2 extra rounds). Log when you stop and why — silent capping reads as "explored everything" when it didn't.
5. Arena the survivors
Present survivors via Mode 1 §4 (AskUserQuestion, side-by-side, plain OUTCOME language — not mechanism jargon). Each carries an honest scorecard: novelty (vs the prior art actually found), feasibility risk, and margin over baseline. The user picks; then offer the Mode 1 §5 follow-ups (Synthesize / Expand / Re-brainstorm). Never pre-rank.
Rules
Both modes:
- The user picks — you don't pick for them. No "option 2 is clearly best" in
the arena. This is a generator, not a decision skill; the chosen solution is the user's, not a recommendation you then defend.
- If you can't make N orthogonal, propose fewer — distinct mechanisms beat
variations on one idea.
Mode 1:
- Independence is the value. Never let candidates converge by sharing context,
except the deliberate §3 respawn.
Mode 2:
- Generation stays independent; synthesis is deliberate. Vectors (§1) never see
each other — only the recombine step (§2) merges them, on purpose.
- Novelty is earned, never asserted. A candidate is "novel" only after the
prior-art gate (§3) fails to find it — and even then say "not found", not "new".
- The baseline is the control. Always carry the boring best-known solution
through to the scorecard; a candidate that doesn't beat it is not a breakthrough.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: GhostlyGawd
- Source: GhostlyGawd/recursive-harness
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.