From pm
You MUST use this skill before /pm when work is ambiguous, scope is unclear, or multiple approaches exist. Explores problem space, proposes 2-3 approaches with trade-offs, and produces an approved spec document that feeds into both issue creation (/pm) and implementation planning (/cdt). Triggers: brainstorm, explore idea, think through, design approach, what should we build, explore options, weigh approaches, compare solutions, needs help deciding between alternatives.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pm:brainstorm [topic or problem description][topic or problem description]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Explore the problem space, clarify requirements, and converge on a design direction **before** creating
Explore the problem space, clarify requirements, and converge on a design direction before creating
issues. This skill produces a spec document — capturing intent, trade-offs, the chosen approach, and
enough detail for both issue creation (/pm) and implementation planning (/cdt).
Use this skill when:
Do NOT use for:
/pm)This applies to EVERY brainstorming session regardless of perceived simplicity. A spec can be short (5-10 lines for a simple feature), but it must exist and be approved.
No. Every brainstorming session produces a spec. The spec scales with complexity:
The cost of a 30-second review of a short spec is negligible. The cost of a poorly scoped issue that an agent executes in the wrong direction is significant.
If the user provides arguments (e.g., /pm:brainstorm caching layer for API), treat the entire
argument string as the initial topic. Use it to focus Step 1 context gathering and to skip
obvious clarifications in Step 2. If no arguments are provided, start with an open-ended discovery
in Step 2.
1. Context → 2. Clarify → 3. Propose → 4. Converge → 5. Write Spec → 6. Self-Review → 7. User Review → 8. Transition
Before asking any questions, gather context silently:
git log --oneline -20 to see recent direction. If not, skip this step silently.Glob and Grep to survey itgh is available and authenticated, then run gh issue list --limit 10 --state open to check for related work. If gh is not available or not authenticated, skip this step silently — it's informational, not blocking.visual-explainer:generate-web-diagram skill is available, invoke it to show the user an interactive workflow diagram — the 8 steps as a flowchart with the current step highlighted and the review loop (Step 7 → Step 5) shown as a feedback edge. This gives the user a visual map of the process they're about to go through. Skip this if visual-explainer is not installed.Cross-project topics. If the user's topic is about a different project than the current working
directory (e.g., they ask about their Express API while you're in a skills marketplace repo),
acknowledge this in Step 2. You can still brainstorm effectively — use WebSearch to research
the domain, ask the user for relevant file paths or architecture details, and note in the spec's
"Files Affected" section that paths are assumed and should be verified. Do not fabricate file
paths you cannot confirm.
Do NOT dump this research back at the user. Use it to ask smarter questions in Step 2.
Ask clarifying questions to understand what the user actually wants. Follow these rules strictly:
One question per message. Never ask more than one question at a time. Wait for the answer before asking the next question. This forces depth — users give better answers to focused questions than to a wall of 5 questions at once.
Prefer multiple choice over open-ended. When possible, offer 2-4 concrete options rather than asking "what do you want?" Open-ended questions get vague answers; structured choices get decisions.
Use your context research. Frame questions using what you learned in Step 1. Instead of "what part
of the codebase?" ask "I see the auth module uses JWT tokens in src/auth/ — is this about the token
refresh flow or the login flow?"
Stop when you have enough. You need to understand:
Three to five questions is typical. Do not over-interrogate — if the user gives a rich initial description, you may only need one or two clarifications.
Present 2-3 distinct approaches. For each approach, include:
End with a recommendation — state which approach you'd pick and why. Do not be neutral. Take a position. The user can override, but fence-sitting wastes everyone's time.
Apply YAGNI ruthlessly. If an approach adds flexibility "in case we need it later," flag that as speculative complexity. Propose the simplest approach that solves the stated problem. If the user wants extensibility, they'll ask.
Visual comparison (optional, requires visual-explainer plugin). If the approaches involve
architectural differences (data flow, component structure, system boundaries) and the
visual-explainer:generate-web-diagram skill is available, invoke it to render a side-by-side
comparison diagram. This is especially valuable for:
Do NOT generate visuals for trivial choices or when the text description is sufficient. Ask the user first: "Would a visual comparison of these approaches help?"
Use AskUserQuestion to let the user pick:
Question: "Which approach do you prefer?"
Options:
- Approach A: [name] — [one-line summary]
- Approach B: [name] — [one-line summary]
- Approach C: [name] — [one-line summary]
- None of these — let me describe what I want
With the chosen approach, flesh out the design. Present it in sections scaled to complexity:
For simple features (1 issue):
For medium features (2-3 issues):
For complex initiatives (epic-level):
Codebase exploration. Before presenting the design, explore the codebase for the chosen approach:
Glob and Grep to find files that will need modificationRead to understand existing patterns, interfaces, and conventions in the affected areasDo NOT present the design without grounding it in the actual codebase. An ungrounded design produces an ungrounded spec, which produces vague issues, which agents execute poorly.
If the topic is about a different project (see Step 1 cross-project note), ask the user for
relevant file paths or architecture details instead of exploring. Mark all paths in the spec as
[unverified — user-provided] so downstream consumers know to check them.
Visual architecture diagram (requires visual-explainer plugin). For medium and complex work, if
visual-explainer:generate-web-diagram is available, generate an architecture diagram showing
component boundaries, data flow, and the decomposition into work units. Present the diagram
alongside the architecture overview section. Skip if visual-explainer is not installed.
For medium and complex work, present each section and wait for the user to confirm before moving to the next. For simple features, present the full design at once.
Save the approved design to a file:
# Ensure the directory exists
mkdir -p .dev/pm/specs
File path: .dev/pm/specs/$(date +%Y-%m-%d)-<topic-slug>.md
Use the date command to resolve the date — do not hardcode or guess the current date.
Before writing, determine the complexity tier. This controls which sections to include:
| Tier | Criteria | Sections to include |
|---|---|---|
| Simple (1 issue) | Single component, no structural changes | Problem, Chosen Approach (no Alternatives table), Key Decisions, Scope, Technical Design (2-3 sentences), Files Affected, Open Questions |
| Medium (2-3 issues) | Multiple components or interfaces | All sections, each concise |
| Complex (epic) | 3+ work units, cross-cutting concerns | All sections fully fleshed out, architecture diagram referenced |
Omit sections that don't apply to the tier. A simple spec with an Alternatives Considered table and Work Breakdown is over-engineered — it signals the tier was misclassified or the template was filled in mechanically without thinking about what the reader needs.
Spec template (include only the sections appropriate for the tier):
# Spec: <Topic>
**Date:** YYYY-MM-DD
**Status:** Draft
## Problem
<What problem are we solving and why — include the user/stakeholder perspective>
## Chosen Approach
**<Approach name>**
<2-3 paragraph description of the approach, how it works, and why it was chosen over alternatives>
### Alternatives Considered
<!-- MEDIUM and COMPLEX only — omit for SIMPLE -->
| Approach | Pros | Cons | Why not |
|----------|------|------|---------|
| <Alt 1> | <pros> | <cons> | <reason rejected> |
| <Alt 2> | <pros> | <cons> | <reason rejected> |
### Key Decisions
- <Decision 1>: <chosen option> — <rationale>
- <Decision 2>: <chosen option> — <rationale>
### Trade-offs Accepted
<!-- MEDIUM and COMPLEX only — omit for SIMPLE -->
- <What we're giving up and why that's acceptable>
## Scope
**In scope:**
- <item>
**Out of scope:**
- <item>
## Technical Design
<SIMPLE: 2-3 sentences on the approach>
<MEDIUM: component breakdown with interfaces>
<COMPLEX: architecture overview, data flow, key interfaces>
### Files Affected
<List real file paths found during codebase exploration, or "New files" for greenfield>
- `src/path/to/file.ts` — <what changes>
## Work Breakdown
<!-- MEDIUM and COMPLEX only — omit for SIMPLE -->
1. <Unit 1> — <what it does, rough size> [no dependencies]
2. <Unit 2> — <what it does, rough size> [depends on: 1]
## Open Questions
<Any unresolved items — or "None" if fully resolved>
Do NOT commit yet — the self-review and user review may require changes.
Before presenting the spec to the user, review it yourself. Check for:
[NEEDS CLARIFICATION: question]Grep/Read to confirmGlob.
Skip this check for cross-project paths marked [unverified — user-provided]Fix any issues found inline before proceeding.
Present the final spec to the user. Show:
Ask explicitly: "Spec looks good — approve to proceed, or want changes?"
If the user requests changes, revise the spec (go back to Step 5), run Step 6 self-review again,
and re-present. Loop until approved. Once approved, update the spec's **Status:** from Draft
to Approved.
Once approved, present the next steps. The spec at .dev/pm/specs/YYYY-MM-DD-<topic-slug>.md is
designed to feed into two downstream workflows:
Path A: Issue creation (/pm)
Create structured GitHub issues from the spec. The work breakdown maps directly to issues.
Path B: Implementation planning (/cdt:plan-task)
Skip issue creation and go straight to an implementation plan. Invoke with the spec path as context (e.g.,
/cdt:plan-task implement the spec at .dev/pm/specs/YYYY-MM-DD-topic.md). CDT's architect teammate will use the spec as input.
Path C: Both
Create issues first (
/pm), then plan implementation for the top-priority issue (/cdt).
Use AskUserQuestion to let the user choose:
Question: "Spec approved. What's next?"
Options:
- Create issues (/pm) — turn the spec into GitHub issues
- Plan implementation (/cdt:plan-task) — go straight to implementation planning
- Both — create issues first, then plan the first one
- Done for now — I'll come back to this later
If AskUserQuestion returns an empty answer, re-ask — do not assume a default. The user must
explicitly choose.
Act on the user's choice immediately. When the table tells you to invoke pm:pm
(Create issues, Both), call the Skill tool directly — do not ask the user to re-type /pm.
When the table tells you to tell the user a /cdt:plan-task command (Plan implementation, and
the Both follow-up), print the exact command with the concrete spec filepath written in Step 5
substituted for <spec-path> — never echo the placeholder verbatim.
| User choice | Action |
|---|---|
| Create issues (/pm) | Invoke pm:pm via the Skill tool with no arguments. pm will auto-detect the just-approved spec in .dev/pm/specs/ and skip its own ambiguity check. |
| Both | Invoke pm:pm via the Skill tool now. After pm returns, tell the user that the next step is /cdt:plan-task <spec-path> (substitute the concrete Step 5 filepath; never echo <spec-path> literally) for implementation planning. Do not auto-invoke cross-plugin cdt — leave that to the user. |
| Plan implementation (/cdt:plan-task) | Tell the user the exact command to run: /cdt:plan-task implement the spec at <spec-path>. (Do not auto-invoke cdt; it lives in a separate plugin and may need user-shaped framing.) |
| Done for now | Confirm the spec path is saved at <spec-path> and end the session. |
The hard gate at the top of this skill still applies: never invoke /pm, /cdt, or any
implementation tool before Step 7 approval. After approval, however, the user's chosen path
is binding and should be executed without forcing a manual re-invocation.
npx claudepluginhub rube-de/cc-skills --plugin pmGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.