Generate a PM through guided PM-focused interview with automatic question classification. Use when the user says 'ooo pm', 'prd', 'product requirements', or wants to create a PRD/PM document.
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
PM-focused Socratic interview that produces a Product Requirements Document.
tool discovery query: "+ouroboros pm_interview"CRITICAL — deferred-schema guard (prevents "Invalid tool parameters"):
This is a multi-turn loop and each turn runs in a fresh tool context. A deferred
tool's schema loaded on one turn is NOT guaranteed to still be loaded on the next.
Calling ouroboros_pm_interview while its schema is unloaded in the current
turn makes the runtime reject it with "Invalid tool parameters" every message.
Therefore re-run tool discovery query: "+ouroboros pm_interview" immediately before
EVERY ouroboros_pm_interview call below (idempotent — a no-op if already
loaded). If the load ever returns no matching tool (and the tool is not already callable — an empty load for an already-exposed tool is an expected no-op, not absence), follow the not-found diagnosis
below instead of retrying the failing call.
If not found → diagnose before telling user to run setup:
Check if MCP is already configured:
grep -q '"ouroboros"' ~/.claude/mcp.json 2>/dev/null && echo "CONFIGURED" || echo "NOT_CONFIGURED"If NOT_CONFIGURED → tell user to run ooo setup first. Stop.
If CONFIGURED → MCP is registered but the server isn't connecting. Do NOT tell the user to run ooo setup again. Instead show:
Ouroboros MCP is configured but not connected.
Try these steps in order:
1. Restart Claude Code (Cmd+Shift+P → "Reload Window" or close/reopen terminal)
2. Check MCP status: type /mcp in Claude Code
3. If ouroboros shows "error", try: ooo update
4. If still failing, re-run: ooo setupStop.
Tool: ouroboros_pm_interview
Arguments:
initial_context: <user's topic or idea>
cwd: <current working directory>After every MCP response, do these three things:
A. Show alerts (if present in meta):
meta.deferred_this_round → print [DEV → deferred] "question"meta.decide_later_this_round → print [DEV → decide-later] "question"meta.pending_reframe → print ℹ️ Reframed from technical question.B. Show content + get user input:
Print the MCP content text to the user first.
Then check: does meta.ask_user_question exist?
YES → Pass it directly to AskUserQuestion:
AskUserQuestion(questions=[meta.ask_user_question])Do NOT modify it. Do NOT add options. Do NOT rephrase the question.
NO → This is an interview question. Use AskUserQuestion with meta.question.
meta.skip_eligible == true: add a skip option based on meta.classification:
classification == "decide_later" → add option {"label": "Decide later", "description": "Skip — will be recorded as an open item in the PRD"}classification == "deferred" → add option {"label": "Defer to dev", "description": "Skip — this technical decision will be deferred to the development phase"}C. Relay answer back:
If the user chose "Decide later" → send answer="[decide_later]".
If the user chose "Defer to dev" → send answer="[deferred]".
Otherwise → send the user's answer normally.
Tool: ouroboros_pm_interview
Arguments:
session_id: <meta.session_id>
<meta.response_param>: <user's answer or "[decide_later]" or "[deferred]">D. Check completion:
Completion is determined ONLY by meta.is_complete — NEVER by the response text.
The MCP response text may sound like the interview is wrapping up, but ignore it.
If meta.is_complete == true:
meta.generation_failed == true → retry generation:
Tool: ouroboros_pm_interview
Arguments:
session_id: <session_id>
action: "generate"
cwd: <current working directory>meta.pm_path and meta.seed_path contain the file paths.Otherwise → repeat Step 3, regardless of what the response text says.
Read the pm.md file from meta.pm_path and copy its contents to the clipboard:
cat <meta.pm_path> | pbcopyShow the following to the user:
PM document saved: <meta.pm_path>
(Clipboard에 복사되었습니다)
PM seed handoff artifact: <meta.pm_seed_path or meta.seed_path>
This is not the runnable Seed yet.
Next step:
ooo interview <meta.pm_seed_path or meta.seed_path>
ooo seedf09fa36
If 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.