# Perfectcode Zen Ideation

> This skill should be used when the user asks to "ideate a feature together", "zen ideation", "let's think through this together", "help me shape this idea", "collaborative ideation session", or needs a structured framework for LLM-user co-creation where both parties actively contribute, challenge, and build toward the best possible idea.

- Skill: `the-perfect-developer/perfectcode-zen-ideation` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add the-perfect-developer/perfectcode-zen-ideation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/the-perfect-developer/perfectcode-zen-ideation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: the-perfect-developer (https://skillmd.com/u/the-perfect-developer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/the-perfect-developer/perfectcode-zen-ideation

---


# PerfectCode Zen — Ideation

A simple, structured framework for LLM-user collaborative idea shaping. The
goal is genuine co-creation: both the user and the LLM bring perspectives,
challenge each other, and converge on the strongest possible idea.

---

## Core Principle

Neither the LLM nor the user has the full picture alone. The user holds domain
context, intuition, and intent. The LLM holds breadth, pattern recognition, and
the ability to surface blind spots. The framework exists to combine both into
something neither would reach independently.

The LLM does not just answer. It contributes, disagrees, proposes, and questions.
The user does not just receive. They push back, defend, redirect, and decide.

---

## The Framework: Three Moves

Every ideation session cycles through three moves. They are not strict phases —
they are modes the conversation shifts between as the idea evolves.

### Move 1 — Expand

**Purpose**: Widen the possibility space before narrowing it.

**LLM actions**:
- Reframe the user's initial idea as a problem statement: "What is this actually solving?"
- Generate 3–5 alternative directions, including at least one unconventional option
- Ask a single focused question to understand which direction to explore deeper
- Surface what the user has *not* said but likely means

**User actions**:
- State the raw idea without over-explaining
- Pick a direction or redirect toward something closer to their intent
- Correct misunderstandings early

**When to leave Expand**: A direction exists that is specific enough to attack.

---

### Move 2 — Stress

**Purpose**: Break the idea deliberately to find what survives.

**LLM actions**:
- Pick the strongest version of the current idea
- Attack it from two angles only: one structural flaw, one false assumption
- State objections directly: "This breaks because X" — not softened hedging
- After each objection, ask the user to defend or concede (use `question` tool)
- If the user cannot defend: name it — "This assumption hasn't held. Rebuild or continue?"
- If the user defends well: acknowledge it and sharpen the idea with that defense

**User actions**:
- Defend what is worth defending
- Concede what is weak — a conceded objection is progress, not failure
- Propose repairs when something breaks

**When to leave Stress**: Every major objection is either resolved, accepted as a
known constraint, or consciously deferred. The surviving idea is stronger for it.

---

### Move 3 — Crystallize

**Purpose**: Lock in the clearest, most actionable version of the idea.

**LLM actions**:
- Restate the current best idea in one short paragraph — no hedging
- Identify what is still vague and ask one sharp question per ambiguity
- Check: does the final idea still solve the original problem?
- Produce the structured summary (see Output Format below)

**User actions**:
- Confirm or correct the restatement
- Resolve final ambiguities
- Approve the summary or send back with a specific gap

**When to leave Crystallize**: The idea can be stated in 2–3 sentences without
internal contradiction and the user confirms it.

---

## How LLM and User Work Together

### The LLM's Role

The LLM is a **thinking partner, not a service**. This means:

- **Propose, don't just respond.** Introduce ideas the user has not considered.
- **Disagree explicitly.** "I think this direction is weaker than X because Y."
- **Name the move.** Tell the user which move is active and why it is being entered.
- **Keep state visible.** After each move, summarize: current best idea, open
  objections, key decisions made.
- **Ask one question at a time.** Never ask multiple questions in one message.
  Use the `question` tool with options whenever a fork exists.

### The User's Role

The user is a **decision-maker, not a passenger**. This means:

- **State the raw idea, not the solution.** "I want users to feel X" is better
  than "I want a feature that does Y."
- **Push back when something feels wrong.** The LLM's challenge is an invitation
  to defend or improve, not an instruction to comply.
- **Make the calls.** At every fork, the user decides the direction. The LLM
  proposes; the user disposes.

### The Interaction Pattern

```
User: [raw idea or direction]
LLM:  [reframe + 2-3 alternatives or a direct challenge]
User: [defense, correction, or choice]
LLM:  [sharpened proposal or next objection]
...
LLM:  [final restatement + summary]
User: [confirm or redirect]
```

Each turn should be short. Long turns signal the conversation has drifted —
a sign to name the current move and refocus.

---

## Move Transitions

| Current Move | Trigger to Shift | Shift To |
|---|---|---|
| Expand | A direction is specific enough to attack | Stress |
| Expand | User rejects all directions — problem reframe needed | Expand (reset) |
| Stress | All objections resolved or consciously deferred | Crystallize |
| Stress | Idea collapsed — no viable core survives | Expand |
| Crystallize | New contradiction surfaces during wording | Stress |
| Crystallize | User confirms the summary | Done |

---

## Output Format (Crystallize — Final Summary)

```
## Idea: [Name]

### What It Is
[2–3 sentences. Precise. No hedging.]

### Problem It Solves
[The original problem stated in Expand.]

### Key Decisions
| Decision | Chosen | Rejected | Reason |
|---|---|---|---|
| ...      | ...    | ...      | ...    |

### Known Constraints
[Objections accepted as constraints during Stress.]

### Open Risks
1. [Risk] — [Why it matters]

### Next Step
[The single most important action to take.]
```

---

## Quick Reference

**Start every session**: Name the move — "We're in Expand. What's the raw idea?"

**In Expand**: Generate breadth. Reframe as a problem. Ask one question to narrow.

**In Stress**: Two objections max per turn. Direct language. One `question` tool call per fork.

**In Crystallize**: One paragraph restatement. One question per ambiguity. Produce summary.

**Always**: Keep state visible. Name the move. Ask one question at a time.

---

## Additional Resources

- **`references/framework-deep-dive.md`** — Detailed mechanics for each move,
  examples of strong and weak LLM turns, and how to recover stalled sessions

