Skill5.8k estrellas del repoactualizado 4d ago
pm
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.
Instalar en Claude Code
Copiargit clone --depth 1 https://github.com/Q00/ouroboros /tmp/pm && cp -r /tmp/pm/skills/pm ~/.claude/skills/pmDespués abre una sesión nueva de Claude Code; el skill carga automáticamente.
Definición
SKILL.md
# /ouroboros:pm
PM-focused Socratic interview that produces a Product Requirements Document.
## Instructions
### Step 0: Version Check (runs before the PM interview)
Before starting the PM interview, check if a newer version is available:
```bash
# Fetch latest release tag from GitHub (timeout 3s to avoid blocking)
curl -s --max-time 3 https://api.github.com/repos/Q00/ouroboros/releases/latest | grep -o '"tag_name": "[^"]*"' | head -1
```
Compare the result with the current version in the active runtime's local plugin metadata (for Claude installs this is `.claude-plugin/plugin.json`).
- If a newer version exists, ask the user through the active runtime's `ask_user` capability:
```json
{
"questions": [{
"question": "Ouroboros <latest> is available (current: <local>). Update before starting?",
"header": "Update",
"options": [
{"label": "Update now", "description": "Update plugin to latest version (restart required to apply)"},
{"label": "Skip, start PM interview", "description": "Continue with current version"}
],
"multiSelect": false
}]
}
```
- If "Update now":
- On Claude-plugin installs only:
1. Run `claude plugin marketplace update ouroboros` via the active runtime's `run_shell` capability (refresh marketplace index). If this fails, tell the user "⚠️ Marketplace refresh failed, continuing…" and proceed.
2. Run `claude plugin update ouroboros@ouroboros` via the active runtime's `run_shell` capability (update plugin/skills). If this fails, inform the user and stop — do NOT proceed to the package-manager step.
- On non-Claude runtimes, skip Claude plugin commands and proceed directly to the package-manager step for `ouroboros-ai`; do not require Claude-only commands or tools.
3. Detect the user's Python package manager and upgrade the MCP server:
- Check which tool installed `ouroboros-ai` by running these in order:
- `uv tool list 2>/dev/null | grep "^ouroboros-ai "` → if found, use `uv tool upgrade ouroboros-ai`
- `pipx list 2>/dev/null | grep "^ ouroboros-ai "` → if found, use `pipx upgrade ouroboros-ai`
- Otherwise, print: "Also upgrade the MCP server: `pip install --upgrade ouroboros-ai`" (do NOT run pip automatically)
4. Tell the user: "Updated! Restart your session to apply, then run `ooo pm` again."
- If "Skip": proceed immediately.
- If versions match, the check fails (network error, timeout, rate limit 403/429), or parsing fails/returns empty: **silently skip** and proceed.
### Step 1: Load MCP Tool
```
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 → fail closed without inspecting or mutating
`~/.claude/mcp.json`. Standalone Claude SDK setup requires MCP 1.x and cannot
activate the Ouroboros MCP 2 server with its configured backend. Explain:
```
The PM interview MCP tool is unavailable in this runtime.
Configure a supported CLI-backed host with:
ouroboros setup --runtime <codex|opencode|kiro|copilot|hermes>
Then restart that host and retry ooo pm. Claude SDK profiles ([claude] and
[claude-sdk]) stay on MCP 1.x; the separate [mcp] server uses [claude-cli]. Do
not combine both MCP majors or add a direct Python fallback.
```
Stop.
### Step 2: Start Interview
```
Tool: ouroboros_pm_interview
Arguments:
initial_context: <user's topic or idea>
cwd: <current working directory>
```
**This response carries the first question, so Step 3 applies to it** — including
the fan-out in 3-A2. The first question is the one most likely to be answered
from memory, so it is the last one to skip evidence on.
### Step 3: Loop
Apply this to **every** MCP response that carries a question, including the one
Step 2 returned and any question a resume plans anew.
**Batched turns (RFC #2222).** A response may carry one to three questions at
once: `meta.question_batch` lists them and `meta.question_advisories` carries
one advisory envelope per question, each with its own
`question_advisory_subagents` and `question_advisory_fanout_id`. Treat every
question of the turn exactly as a single question is treated below, with these
batch mechanics:
- **Dispatch all envelopes' payloads in one wave** — one subagent per payload
across all questions, in a single parallel batch. Never leave a question's
lanes undispatched: every question shown keeps its evidence.
- **Submit results per envelope** — each question's lanes correlate by its own
envelope's `question_advisory_fanout_id` and
`question_advisory_result_correlation_key`; one
`ouroboros_submit_fanout_results` call per envelope.
- **Relay the turn's answers together** in one call:
`answers: [{question, answer}, ...]`, one entry per question the turn asked,
each naming its own exact question text. One call records the turn, so
collect every answer first — and never auto-answer, auto-defer, or
decide-later one on the user's behalf to complete the set. The server does
not check that you sent them all: whatever you leave out is **abandoned**,
not remembered.
- The server keeps nothing between calls. A call that arrives without the
turn's answers plans a **new** turn from the traDel mismo repositorio
autoSkill
Automatically converge from goal to A-grade Seed and execute it
brownfieldSkill
Scan and manage brownfield repository/worktree defaults for interviews
cancelSkill
Cancel stuck or orphaned executions
ouroboros-configSkill
Open or drive the Ouroboros settings GUI (browser, TUI, or conversational fallback)
evaluateSkill
Evaluate execution with three-stage verification pipeline
evolveSkill
Start or monitor an evolutionary development loop
ouroboros-helpSkill
Full reference guide for Ouroboros commands and agents
interviewSkill
Socratic interview to crystallize vague requirements