Timeboxed ideation on a topic using propose-and-critique subagent pairs. Use when the user wants to brainstorm, explore ideas, discover features, generate options, or think through possibilities for a specified duration. Triggers on requests like "brainstorm X for 30 minutes", "ideate on X", "spend an hour thinking about X", "what features should we build", "explore options for X".
72
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Generate, stress-test, and rank ideas on any topic through iterative propose-and-critique cycles. Each iteration dispatches two subagents: one to propose an idea, one to tear it apart from the end-user perspective. The clock controls when you stop. The critique scores control what survives.
You are the orchestrator. You do three things:
You do NOT propose ideas yourself. You do NOT critique ideas yourself. You do NOT do any research, code reading, or analysis. All intellectual work happens inside subagents. Your context is reserved for the dispatch loop and pattern tracking.
YOU DO NOT DECIDE WHEN IDEATION IS DONE. THE CLOCK DECIDES.Keep dispatching propose-and-critique pairs until the deadline passes. You have zero authority to judge "enough ideas" or "good enough." The user gave you a duration. You use all of it.
The user provides two things:
If the duration is vague ("a while"), interpret as 1 hour. If truly ambiguous, ask once.
Optionally, the user may specify:
digraph ideate {
rankdir=TB;
node [shape=box];
start [label="Record start time\nCompute deadline" shape=doublecircle];
init [label="Create progress file\nin /tmp"];
check [label="Check current time\nagainst deadline" shape=diamond];
read_log [label="Read progress file\nfor patterns"];
propose [label="Dispatch PROPOSER\nsubagent"];
critique [label="Dispatch CRITIC\nsubagent"];
update [label="Update progress file\nwith score + patterns"];
present [label="Present top N ideas\nwith scores + critiques" shape=doublecircle];
start -> init -> check;
check -> read_log [label="time remains"];
check -> present [label="deadline passed"];
read_log -> propose;
propose -> critique;
critique -> update;
update -> check;
}Record the start time. Run date +%s. Compute the deadline by adding the duration.
Create the progress file. Write to /tmp/ideate-<topic-slug>-<timestamp>.md:
# Ideation: <topic>
- Start: <human-readable time>
- Deadline: <human-readable time>
- Duration: <duration>
- Top N: <number>
## Patterns
(Updated after each iteration with what the critic rewards and punishes)
## IterationsCheck the time. Run date +%s. If the deadline has passed, go to step 8. This happens BEFORE every dispatch.
Read the progress file. Scan for patterns — what scored well, what scored poorly, what critiques keep saying. Use this to steer the next proposer prompt away from exhausted angles.
Dispatch the PROPOSER. Give it:
Dispatch the CRITIC. Give it:
Update the progress file. Append the iteration:
### Iteration N — <time>
- **Proposal**: <name> — <one-line summary>
- **Critic verdict**: <thumbs up/down/mixed>, <score>/10
- **Strengths**: <1-2 bullets>
- **Weaknesses**: <1-3 bullets>
- **User frequency**: <how often this matters>Update the Patterns section if the critic revealed new insights about what works and what doesn't. Then go back to step 3.
Present results. Rank all proposals by critic score. Present the top N to the user:
The proposer must receive enough context to propose grounded, specific ideas — not generic suggestions. The prompt structure:
You are proposing an idea for: <topic>
Context: <domain description, codebase path, key files, constraints>
Progress file: /tmp/ideate-<slug>-<timestamp>.md
Read this file first to see what was already proposed. Do NOT repeat previous ideas.
<steering from patterns — what to avoid, what directions to explore>
Propose ONE concrete idea. Your proposal must include:
- **Name**: short label
- **What it does**: 2-3 sentences
- **Why it's valuable**: who benefits and how
- **Rough scope**: small/medium/large (if applicable)
- **Example**: concrete illustration of the idea in action
Be creative but practical. Return ONLY the structured proposal.Adapt the prompt to the topic. For codebase features, include file paths and architecture context. For product ideas, include user personas and constraints. For naming, include the brand context and existing conventions.
The critic must be honest and specific. Generic praise kills the signal. The prompt structure:
You are critiquing an idea from the end-user perspective.
Topic: <topic>
Context: <domain description — enough for the critic to evaluate independently>
A proposal has been made. Critique it honestly. Consider:
1. Would you actually use/want this? How often?
2. Is the problem real? Or invented?
3. Are there simpler alternatives?
4. What could go wrong?
5. Is this the MOST impactful option?
Here is the proposal:
<full proposal text>
Return a structured critique:
- **Verdict**: thumbs up, thumbs down, or mixed
- **Strengths**: 1-2 bullets
- **Weaknesses**: 1-3 bullets
- **Frequency**: how often this matters (daily/weekly/monthly/rarely)
- **Overall score**: 1-10
Be honest and specific. Don't be nice for the sake of it.Give the critic enough domain context to evaluate independently — it should NOT need to read the progress file or agree with prior iterations.
This is what separates good ideation from random brainstorming. After each iteration, update your mental model of what works:
After low scores (1-4): The critic is telling you something. Extract the pattern. Common rejection reasons:
After high scores (7-10): Extract what made it work:
After exhaustion: When a category of ideas is played out (e.g., "all CLI subcommand ideas score 4/10"), explicitly tell the proposer to think in a different direction. Name the exhausted category and suggest unexplored angles.
The same traps from timeboxed-iterating apply. Plus ideation-specific ones:
| Thought you're having | What you must do instead |
|---|---|
| "We have enough good ideas" | Check the clock. Time left? Keep going. |
| "The top 3 are clearly the winners" | Better ideas might emerge. The critic will sort them. |
| "All the obvious ideas have been tried" | That's when the creative ones start. Push harder. |
| "The scores are converging" | Try a radically different angle. |
| "I should present what we have" | Only after the deadline. Not before. |
| "The last few scored poorly" | Learn from the critic. Steer the proposer differently. |
If proposals keep scoring low (3 consecutive scores under 4):
If after 3 recovery attempts proposals are still trivial, log it and keep going. Do not stop.
When the deadline passes, present the top N ideas ranked by critic score:
## Top N Ideas
### 1. <Name> — <score>/10
<What it does — 2-3 sentences>
**Why it scored well:** <key strengths from critique>
**Watch out for:** <key weaknesses>
### 2. <Name> — <score>/10
...
### 3. <Name> — <score>/10
...
---
**Patterns discovered:** <2-3 sentences on what the critic consistently rewarded/punished>
**Total iterations:** N proposals evaluated over <duration>
**Full log:** <path to progress file>For ties, prefer the idea with higher frequency (daily > weekly > monthly). For ideas with the same score and frequency, prefer lower scope.
| Item | Value |
|---|---|
| Progress file | /tmp/ideate-<slug>-<timestamp>.md |
| Time check | date +%s, compare against deadline, BEFORE every dispatch |
| Iteration structure | Propose (subagent) then Critique (subagent) |
| Minimum iteration output | One scored proposal with structured critique |
| Termination | Deadline passes, present top N |
| Default top N | 3 |
| Stall threshold | 3 consecutive scores under 4 |
date +%s since the last critic returnedIf you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.