From ouroboros
Conducts Socratic interviews to crystallize vague requirements into clear specifications. Triggers on 'interview me' or 'clarify requirements'; invoke via /ouroboros:interview [topic].
npx claudepluginhub q00/ouroboros --plugin ouroborosThis skill uses the workspace's default tool permissions.
Socratic interview to crystallize vague requirements into clear specifications.
Conducts structured requirements-gathering interviews for software features/systems. Reads SPEC.md and context, asks numbered questions on purpose, technical design, UI/UX, edge cases, security, rollout. For deep requirement elicitation before specs/plans.
Engages as Socratic sparring partner to diagnose ideas, probe assumptions with questions, synthesize insights, and score ambiguity. Use for clarifying requirements before planning.
Systematically interviews users to clarify ambiguities, preferences, and constraints before implementation. Activates on /ring:interview-me or detected task ambiguity.
Share bugs, ideas, or general feedback.
Socratic interview to crystallize vague requirements into clear specifications.
ooo interview [topic]
/ouroboros:interview [topic]
Trigger keywords: "interview me", "clarify requirements"
When the user invokes this skill:
Before starting the interview, check if a newer version is available:
# 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 .claude-plugin/plugin.json.
AskUserQuestion:
{
"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 interview", "description": "Continue with current version"}
],
"multiSelect": false
}]
}
claude plugin marketplace update ouroboros via Bash (refresh marketplace index). If this fails, tell the user "⚠️ Marketplace refresh failed, continuing…" and proceed.claude plugin update ouroboros@ouroboros via Bash (update plugin/skills). If this fails, inform the user and stop — do NOT proceed to step 3.ouroboros-ai by running these in order:
uv tool list 2>/dev/null | grep "^ouroboros-ai " → if found, use uv tool upgrade ouroboros-aipipx list 2>/dev/null | grep "^ ouroboros-ai " → if found, use pipx upgrade ouroboros-aipip install --upgrade ouroboros-ai" (do NOT run pip automatically)ooo interview again."Then choose the execution path:
The Ouroboros MCP tools are often registered as deferred tools that must be explicitly loaded before use. You MUST perform this step before deciding between Path A and Path B.
Use the ToolSearch tool to find and load the interview MCP tool:
ToolSearch query: "+ouroboros interview"
This searches for tools with "ouroboros" in the name related to "interview".
The tool will typically be named mcp__plugin_ouroboros_ouroboros__ouroboros_interview (with a plugin prefix). After ToolSearch returns, the tool becomes callable.
If ToolSearch finds the tool → proceed to Path A. If ToolSearch returns no matching tools → proceed to Path B.
IMPORTANT: Do NOT skip this step. Do NOT assume MCP tools are unavailable just because they don't appear in your immediate tool list. They are almost always available as deferred tools that need to be loaded first.
If the ouroboros_interview MCP tool is available (loaded via ToolSearch above), use it for persistent, structured interviews.
Architecture: MCP is a pure question generator. You (the main session) are the answerer and router.
MCP (question generator) ←→ You (answerer + router) ←→ User (human judgment only)
Role split:
Start a new interview:
Tool: ouroboros_interview
Arguments:
initial_context: <user's topic or idea>
cwd: <current working directory>
Returns a session ID and the first question.
For each question from MCP, apply the routing paths below:
PATH 1 — Code Answer (describe current state from codebase): When the question asks about existing tech stack, frameworks, dependencies, current patterns, architecture, or file structure:
PATH 1a — Auto-confirm (high-confidence factual, no user block): When ALL of the following are true:
pyproject.toml, package.json, Dockerfile, go.mod, .env.example)Then:
[from-code][auto-confirmed] prefix"ℹ️ Auto-confirmed: Python 3.12, FastAPI framework (pyproject.toml)"Examples of auto-confirmable facts:
PATH 1b — Code Confirmation (medium/low confidence, user confirms): When the codebase has relevant information but confidence is not high enough for auto-confirm (inferred from patterns, multiple candidates, or no manifest match):
{
"questions": [{
"question": "MCP asks: What auth method does the project use?\n\nI found: JWT-based auth in src/auth/jwt.py\n\nIs this correct?",
"header": "Q<N> — Code Confirmation",
"options": [
{"label": "Yes, correct", "description": "Use this as the answer"},
{"label": "No, let me correct", "description": "I'll provide the right answer"}
],
"multiSelect": false
}]
}
[from-code] when sending to MCPPATH 2 — Human Judgment (decisions only humans can make): When the question asks about goals, vision, acceptance criteria, business logic, preferences, tradeoffs, scope, or desired behavior for NEW features:
[from-user] when sending to MCPPATH 3 — Code + Judgment (facts exist but interpretation needed): When code contains relevant facts BUT the question also requires judgment (e.g., "I see a saga pattern in orders/. Should payments use the same?"):
[from-user] (human made the decision)PATH 4 — Research Interlude (external knowledge needed): When the question asks about third-party APIs, pricing models, library capabilities, version compatibility, security advisories, or industry standards that are NOT answerable from the local codebase:
{
"questions": [{
"question": "MCP asks: What rate limits does the Stripe API have?\n\nI found: Stripe allows 100 read ops/sec and 25 write ops/sec in live mode.\n\nIs this correct?",
"header": "Q<N> — Research Confirmation",
"options": [
{"label": "Yes, correct", "description": "Use this as the answer"},
{"label": "No, let me correct", "description": "I'll provide the right answer"}
],
"multiSelect": false
}]
}
[from-research] when sending to MCPWhen in doubt, use PATH 2. It's safer to ask the user than to guess.
Send the answer back to MCP:
Tool: ouroboros_interview
Arguments:
session_id: <session ID>
answer: "[from-code][auto-confirmed] Python 3.12, FastAPI (pyproject.toml)"
or "[from-code] JWT-based auth in src/auth/jwt.py"
or "[from-user] Stripe Billing"
or "[from-research] Stripe: 100 read ops/sec live mode"
MCP records the answer, generates the next question, and returns it.
Keep a visible ambiguity ledger: Track independent ambiguity tracks (scope, constraints, outputs, verification). Do NOT let the interview collapse onto a single subtopic.
Repeat steps 2-6 until the user says "done" or MCP signals seed-ready.
Seed-ready Acceptance Guard:
When MCP signals seed-ready, do NOT relay completion blindly. Before
announcing completion or suggesting ooo seed, apply the canonical Seed
Closer criteria from src/ouroboros/agents/seed-closer.md as the single
source of truth for closure readiness. Run the check from the main session's
perspective, including any code, research, or brownfield context MCP did not
see.
If any material decision remains unresolved, do not announce seed-ready.
If the local challenge finds a material gap, explicitly override the MCP
signal: "MCP says seed-ready, but I am not accepting it yet because <gap>."
Explain the gap briefly and ask the single highest-impact follow-up question,
routed through PATH 2 or PATH 3 as appropriate.
Prefer stopping over over-interviewing:
When the Seed-ready Acceptance Guard passes, suggest ooo seed.
After completion, suggest the next step:
📍 Next: ooo seed to crystallize these requirements into a specification
Track consecutive non-user answers (PATH 1a auto-confirms, PATH 1b code confirmations, and PATH 4 research confirmations). If 3 consecutive questions were answered without direct user judgment (PATH 1a, 1b, or PATH 4), the next question MUST be routed to PATH 2 (directly to user), even if it appears code- or research-answerable.
This preserves the Socratic dialectic rhythm — the interview is with the human, not the codebase or external docs. Auto-confirmed answers especially need this guard: if the AI answers too many questions on its own, the user loses awareness of what the AI is assuming about their project.
Reset the counter whenever user answers directly (PATH 2 or PATH 3).
If MCP returns is_error=true with meta.recoverable=true:
ouroboros_interview(session_id=...) to resume (max 2 retries).
State (including any recorded answers) is persisted before the error,
so resuming will not lose progress.Advantages of MCP mode: State persists to disk, ambiguity scoring, direct ooo seed integration via session ID. Code-enriched confirmation questions reduce user burden — only human-judgment questions require user input.
If the MCP tool is NOT available, fall back to agent-based interview:
src/ouroboros/agents/socratic-interviewer.md and adopt that rolepyproject.toml, package.json, go.mod, etc.). If found, use Read/Grep to scan key files and incorporate findings into your questions as confirmation-style ("I see X. Should I assume Y?") rather than open-ended discovery ("Do you have X?")ooo seed rather than continuing to generate narrower questions.📍 Next: format:
📍 Next: ooo seed to crystallize these requirements into a specificationMCP (question generator) is ONLY a questioner:
You (main session) are a Socratic facilitator:
src/ouroboros/agents/socratic-interviewer.md to understand the interview methodologyooo seedUser: ooo interview Add payment module to existing project
MCP Q1: "Is this a greenfield or brownfield project?"
→ PATH 1a: exact match in pyproject.toml + src/ directory
→ ℹ️ Auto-confirmed: Brownfield, Python 3.12 / FastAPI (pyproject.toml)
→ [from-code][auto-confirmed] sent to MCP (counter: 1)
MCP Q2: "What payment provider will you use?"
→ PATH 2: human decision — no code can answer this
→ User: "Stripe"
→ [from-user] sent to MCP (counter reset to 0)
MCP Q3: "What authentication method does the project use?"
→ PATH 1b: found src/auth/jwt.py but inferred (not manifest)
→ "I found JWT-based auth in src/auth/jwt.py. Is this correct?"
→ User: "Yes, correct"
→ [from-code] sent to MCP (counter: 1)
MCP Q4: "How should payment failures affect order state?"
→ PATH 2: design decision
→ User: "Saga pattern for rollback"
→ [from-user] sent to MCP (counter reset to 0)
MCP Q5: "What are the acceptance criteria for this feature?"
→ PATH 2: requires human judgment
→ User: "Successful Stripe charge, webhook handling, refund support"
📍 Next: `ooo seed` to crystallize these requirements into a specification
After interview completion, use ooo seed to generate the Seed specification.