---
name: brainstorming-anti-solution
description: "Facilitate an Anti-Solution session that generates ways to make the problem worse or to guarantee failure, then inverts those findings to reveal overlooked solution paths. Invoke when the team is stuck on a single solution frame or when a pre-mortem or risk exercise needs creative expansion of the failure-mode list."
---

> Adapted from bmad-method:bmad-brainstorming (MIT, © 2025 BMad Code, LLC). See THIRD_PARTY_NOTICES.md.

## When to use

Use this skill when direct solution-finding has stalled and the team needs a perspective shift to break through. Typical triggers include:

- A planning session where every proposed approach gets rejected but no alternative emerges
- A risk exercise that keeps producing the same short list of obvious risks
- A pre-mortem where the team struggles to imagine how the project could fail
- A retrospective action-item that the team cannot translate into a concrete change

Do not invoke when a specific root cause is already known and a direct corrective action is warranted; use Five Whys instead. Do not invoke as a first-pass ideation tool; this skill is most productive after at least one direct brainstorming pass has been attempted.

## Summon the SME

Before facilitating, load the canonical inversion-thinking reference to ground the session in established creative-reasoning practice.

**Reading the config.** Check `.pm-kit.config.json` for the `sourcesMode` field:

- If `sourcesMode` is `"online"` (opt-in): fetch the URL stored at the key `sources.antiSolution` in `vendor/pm-kit/sources-index.json` using your available web-fetch capability. Do not name a specific tool — use whatever your runtime provides. Ground the facilitation in what you read. Do not fabricate quotations or page numbers.
- If `sourcesMode` is `"offline"` or the field is absent (the default): rely on your general knowledge of inversion thinking as popularized by Charlie Munger and attributed to the Jacobi maxim "invert, always invert" — the practice of identifying failure conditions first, then reasoning backward to success conditions. Cite the canonical URL from `vendor/pm-kit/sources-index.json` at key `sources.antiSolution` in the output. Do not fabricate quotations or page numbers.

In both cases, the URL to cite is `https://fs.blog/inversion/`.

## Facilitation script

Walk the user through these steps in sequence. Do not skip steps or combine them.

**Step 1 — State the goal.** Ask the user to state the goal they are trying to achieve in one sentence. Confirm it is a real, current project objective.

**Step 2 — Invert the goal.** Restate the goal as its opposite: "How would we guarantee this project fails? How would we make this problem as bad as possible?" Confirm the user is comfortable working in the inverted frame.

**Step 3 — Generate anti-solutions.** Ask the user to brainstorm freely: "What would we do to ensure failure? What actions, decisions, or inactions would make the problem worse?" Prompt across categories:
- **Communication** — what communication practices would guarantee misalignment?
- **Planning** — what planning choices would ensure the schedule or budget fails?
- **Stakeholder management** — what would alienate sponsors, users, or the team?
- **Quality** — what shortcuts would create the worst defects?
- **Process** — what process choices would maximize waste and rework?

Collect at least ten anti-solutions without evaluation.

**Step 4 — Invert back.** For each anti-solution, derive its positive inverse: "If doing X guarantees failure, then not doing X — or doing its opposite — is a candidate success factor." Record each positive inverse alongside its anti-solution.

**Step 5 — Filter for novelty.** Identify the positive inverses that are NOT already in the team's current plan. These are the overlooked actions — the real output of the session.

**Step 6 — Prioritize and assign.** Rank the novel findings by potential impact. For each high-impact item, define: who owns it, when it must be addressed, and how the team will know it has been resolved.

**Step 7 — Output.** Produce the completed analysis using the structure in `TEMPLATE.md` (sibling file). Fill every section. Leave no placeholder unfilled.

**Step 8 — Save the artifact.** Save the filled artifact to `docs/pm-kit/outputs/brainstorming-anti-solution/<short-slug>.md`. `<short-slug>` is a kebab-case ASCII slug (max 40 characters) derived from the goal statement. Confirm the final path with the user before writing. If the target file already exists, ask the user whether to overwrite, append a date suffix (e.g., `-2026-04-20`), or choose a different slug. The artifact must begin with the three-line provenance header below (preserved as HTML comments so they do not render):

```
<!-- Generated by agentic-pm-kit:brainstorming-anti-solution on YYYY-MM-DD -->
<!-- Languages: communication=<value>, output=<value> -->
<!-- Source mode: offline | online -->
```

## Languages

The kit separates the language used for live agent–user dialogue from the language used in the saved artifact. Both values live in `.pm-kit.config.json` and are free-form strings — read each value verbatim, never infer a language from the conversation, and never select from a hardcoded list.

**Facilitation dialogue.** Speak to the user during facilitation in the language at `language.communication`. Use the string verbatim.

**Filled artifact (saved TEMPLATE.md output).** Produce the written artifact in the language at `language.output`. If `language.output` is absent or empty, fall back to `language.communication`.

Example values either field might contain: `"en-US"`, `"es-MX"`, `"Português brasileiro"`, `"Mandarin Chinese"`. Accept any string as given. This bifurcation is the normative pattern for every skill in the kit.

## Acceptance gate

When the analysis is complete, point the user to `CHECKLIST.md` (sibling file) and ask them to verify each item. Remind them that the output must be marked **PASS** or **FAIL**. On **FAIL**, invite the user to return with specific notes so the facilitation can be resumed or corrected.
