MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Generate validated Seed specifications from interview results
$ npx skills add Q00/ouroboros --skill seed -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Q00/ouroboros seed --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/seed .claude/skills/seed && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .claude/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Q00/ouroboros/tree/main/skills/seedType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Q00/ouroboros --skill seed -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Q00/ouroboros seed --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/seed .agents/skills/seed && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .agents/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Q00/ouroboros --skill seed -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Q00/ouroboros seed --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/seed .cursor/skills/seed && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .cursor/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Q00/ouroboros.git --path skills/seed--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Q00/ouroboros --skill seed -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Q00/ouroboros seed --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/seed .gemini/skills/seed && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .gemini/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Q00/ouroboros seedInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Q00/ouroboros --skill seed -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/seed .github/skills/seed && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .github/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Q00/ouroboros --skill seed -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Q00/ouroboros seed --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Q00/ouroboros.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/seed .opencode/skills/seed && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "seed" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/seed into .opencode/skills/seed/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "seed", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
seedGenerate validated Seed specifications from interview results
Seed is an agent skill from Q00/ouroboros. Generate validated Seed specifications from interview results
Its SKILL.md is about 8.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol and Python. The repository describes itself as: Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI… The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f587795. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3pythonuvruffpytestghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Seed loads about 8.1k tokens when it runs. Until then it costs about 17 tokens; SKILL.md has 3,474 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Q00/ouroboros at commit f587795, republished under its MIT licence (© Q00). 3,474 words, ~8,067 tokens.
.claude/skills/seed/SKILL.md (or your agent's skills folder).Generate validated Seed specifications from interview results.
ask_user — ask human-judgment questions through the active runtime's user-question surface.inspect_code — read repo-local agent roles and recover exact context from local files before guessing.call_mcp — use available Ouroboros MCP tools directly, including runtime tool discovery when a deferred MCP surface must be loaded.run_shell — run bounded local commands for audit-trail writes and setup steps.refine_answer — confirm free-form user decisions before treating them as accepted seed revisions.maintain_ledger — keep QA scores, candidate decisions, rejected proposals, and audit trail keys visible.ooo seed [session_id]
/ouroboros:seed [session_id]Trigger keywords: "crystallize", "generate seed"
When the user invokes this skill:
Before running any shell snippet below, define this resolver in the same shell.
It accepts only Python 3.12 or newer, prefers python3 and then python, and
uses uv as the final fallback. Call ouroboros_python directly and quote every
argument passed to it; the function preserves arguments and heredoc/stdin input.
Only the probe and child interpreter discard inherited CPython path-selection
overrides; the caller shell keeps its environment unchanged.
<!-- ouroboros-python-resolver:start -->
ouroboros_python() {
if command -v python3 >/dev/null 2>&1 &&
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python3 -c 'import sys; raise SystemExit(sys.version_info < (3, 12))') >/dev/null 2>&1
then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python3 "$@")
return
fi
if command -v python >/dev/null 2>&1 &&
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python -c 'import sys; raise SystemExit(sys.version_info < (3, 12))') >/dev/null 2>&1
then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command python "$@")
return
fi
if command -v uv >/dev/null 2>&1; then
(unset PYTHONHOME PYTHONPATH PYTHONPLATLIBDIR PYTHONEXECUTABLE __PYVENV_LAUNCHER__; command uv run --no-project --quiet --python '>=3.12' python "$@")
return
fi
printf '%s\n' 'Ouroboros skills require Python >= 3.12 or uv on PATH.' >&2
return 127
}<!-- ouroboros-python-resolver:end -->
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.
call_mcp capability to find and load the seed generation MCP tool through runtime tool discovery when needed:tool discovery query: "+ouroboros seed"mcp__plugin_ouroboros_ouroboros__ouroboros_generate_seed (with a plugin prefix). After runtime tool discovery returns, the tool becomes callable through the active runtime's call_mcp capability.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.
CRITICAL — deferred-schema guard (prevents "Invalid tool parameters"):
This skill makes ouroboros_* MCP calls across multiple turns, 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. If you call any ouroboros_* MCP tool
while its schema is not loaded in the current turn, the runtime rejects the
call with "Invalid tool parameters" before it ever reaches the server.
Therefore: immediately before EVERY ouroboros_* MCP call in this skill, re-run
the tool-discovery load query for the specific MCP tool you are about to call
(idempotent — a no-op when the schema is already loaded) so the correct schema is
guaranteed present for that call. Use "+ouroboros seed" before
ouroboros_generate_seed, "+ouroboros qa" before ouroboros_qa, and
"+ouroboros lateral" before ouroboros_lateral_think. If a 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), switch to the documented fallback / Path B instead of retrying
the failing call.
If the ouroboros_generate_seed MCP tool is available (loaded via runtime tool discovery above):
Determine the interview session:
session_id provided: Use it directlyouroboros_interview session IDooo interview
just to repeat what they already told you.Interview-less path (session_context):
Tool: ouroboros_generate_seed
Arguments:
session_context:
goal: <the user's own settled wording — verbatim, never your paraphrase>
acceptance_criteria: [<verifiable checks: a command, a visible behaviour, a measurable state>]
constraints: [<optional>]
decisions: [<optional; each becomes a constraint>]
project_type: greenfield | brownfieldEvery value enters the Seed byte-for-byte, so shell chains in an AC
(ruff check && pytest) are expected and allowed.
status: "gap_questions_required", it lists the
exact 1-5 questions the Seed still needs. Ask the user those questions
only, merge the answers into session_context, and call again. That is
the whole interview: it shrinks to the gaps the session left open.Call the MCP tool through the active runtime's call_mcp capability:
Tool: ouroboros_generate_seed
Arguments:
session_id: <interview session ID>The tool extracts requirements from persisted interview state, calculates ambiguity score, and generates the Seed YAML.
Seed generation response shapes: Branch only after an actual Seed YAML artifact is available.
status: "delegated_to_subagent" and dispatch_mode: "plugin", keep the returned session_id, wait for the plugin-managed subagent result, then extract the Seed YAML from that result. Do not run the advisory QA check using the delegation envelope as the artifact.Run the single-pass Advisory QA Check below, then present the seed as final and proceed to "After Seed Generation". Do not enter any refinement iteration unless the user explicitly opts in.
Advantages of MCP mode: Automated ambiguity scoring (must be <= 0.2), structured extraction from persisted interview state, reproducible.
If the MCP tool is NOT available, fall back to agent-based generation:
src/ouroboros/agents/seed-architect.md and adopt that role.session_id was provided, first identify context for that same session: use current-thread interview Q&A only when it clearly belongs to that session_id, and use current-thread corrections only when they explicitly amend that same interview or seed request.inspect_code / run_shell capabilities to look for persisted interview artifacts under the Ouroboros data directory (for example ~/.ouroboros/data/), exported session artifacts, or other exact local records for that ID.session_id was provided, use current-thread interview Q&A only when it is complete enough to identify one coherent interview; otherwise ask which interview or requirements summary should be seeded.ooo interview. Do not generate a seed from an absent or mismatched transcript.After Path A or Path B produces a seed, run QA exactly once and surface the verdict as advisory information. The verdict never blocks. The seed is presented as final regardless of score; the user decides whether any refinement is worth their time. Do not run QA-until-PASS iterations — that loop is retired because it front-loads heavy interaction the user did not ask for.
The generation (Path A ouroboros_generate_seed or Path B agent role) runs exactly once and establishes the seed's ontology. Any later revision is a direct YAML edit by you (main session) — do not call ouroboros_generate_seed again. It does not accept revision hints, and re-running it would discard the established ontology.
Advisory bar: pass_threshold: 0.90 (stricter than default 0.80 — seeds are structural specs). The bar labels the verdict; it does not gate anything.
Check:
Establish the QA evaluator for this run:
call_mcp capability using runtime tool discovery query "+ouroboros qa" if not already loaded.src/ouroboros/agents/qa-judge.md, adopt that evaluator role, and return its exact JSON schema: lowercase verdict (pass/revise/fail), numeric score, dimensions, differences, suggestions, and reasoning. In this mode there is no MCP-owned qa_session_id; track iteration history in the audit block and local loop ledger instead.Obtain a QA verdict using the available mode:
MCP QA mode — call QA on the generated seed through the active runtime's call_mcp capability:
Tool: ouroboros_qa
Arguments:
artifact: <the seed YAML>
quality_bar: "Seed must be internally consistent, acceptance_criteria must be measurable and testable, constraints must be concrete (no vague terms), ontology_schema must cover all entities referenced in goal/criteria, and there must be no contradictions between fields. acceptance_criteria must also be parsimonious in the ontological sense: a criterion names a state of the finished work a user can see is true, while an implementation step names a means of reaching it, and only the first belongs in the list. Read each criterion beside its siblings — one intelligible only as a move toward a sibling is that sibling's means and belongs merged into the outcome it serves, and flagging that is as important as flagging a missing piece, since it commits the seed to an unverified path. How many criteria a goal has follows from that judgment, so weigh each criterion against its siblings."
artifact_type: "document"
pass_threshold: 0.90
seed_content: <the seed YAML>
qa_session_id: <reuse across passes>
iteration_history: <accumulated across passes>Fallback QA mode — skip the tool call and evaluate the current seed text under the QA Judge role from step 1, using the same quality bar and threshold. Treat the locally produced verdict exactly like the MCP verdict for the advisory presentation below.
QA response shapes: Branch only after a usable verdict is available.
status: "delegated_to_subagent" and no verdict payload, keep the returned qa_session_id, wait for the plugin-managed subagent result, then parse that result as the QA verdict. Do not treat the delegation envelope itself as PASS/REVISE/FAIL.verdict to uppercase only for the labels below (pass→PASS, revise→REVISE, fail→FAIL). Treat differences and suggestions as advisory findings; do not add non-schema fields such as loop_action.iteration_history before that next QA pass.Present the advisory verdict and the final seed — always in this order, never gated on score:
QA advisory: <PASS|REVISE|FAIL> — score X.XX (bar 0.90).yaml block.Want a refinement pass on these findings? Otherwise the seed stands as-is. For FAIL (< 0.40) additionally mention that ooo interview (revisit requirements) or ooo unstuck (challenge assumptions) may serve better than YAML edits. Then proceed to "After Seed Generation" regardless of the answer being pending — the seed is final unless the user opts in.Only if the user explicitly opts in, run one Wonder → Reflect → Refine → Restate pass (below), re-run the QA check once on the revised seed for an updated advisory line, and present the revised YAML. Each additional pass requires a fresh explicit opt-in; never chain passes autonomously.
This refinement pass mirrors the Double Diamond Define cycle: diverge via multiple perspectives first, then converge through debate, user decision, and structural application. Revisions must NEVER be auto-applied by the main session alone — "No candidate is accepted by default." (Symposium User Adoption Gate)
Four explicit phases per pass:
Phase 1 — Wonder (diverge): collect raw proposals from available sources
Source 1 — QA Judge (structural, external)
The suggestions from the QA verdict. These are gaps, contradictions, and quality issues in the YAML itself. QA cannot see the interview.
Source 2 — Socrates (dialectical, user-intent evidence)
You are Socrates — the Socratic facilitator lens from skills/interview/SKILL.md and src/ouroboros/agents/socratic-interviewer.md. Review the current seed YAML against verifiable interview evidence, in this order:
session_id exists, first use available persisted interview/session state for that session. Path A may run from ooo seed <session_id> in a fresh conversation, so persisted state can be the only reliable dialectic record.no Socrates-only proposal: dialectic context unavailable for that point. Do not invent user preferences, rejected scope, or interview nuance.From the available evidence, surface 2–4 items neither QA nor lateral personas can see:
If QA and Socrates conflict, do not resolve the conflict silently in Wonder. Carry both candidates into Reflect as a divergent signal, cite the available evidence for each side, and let the Refine user gate choose the resolution. Do not assume the Socratic lens is automatically authoritative; QA can be correct when no user-intent evidence contradicts it.
Source 3 — ouroboros_lateral_think (independent perspectives, MCP-only when available)
Attempt to load the MCP tool with the active runtime's call_mcp capability using runtime tool discovery query "+ouroboros lateral" if needed. If the tool loads, call it through the active runtime's call_mcp capability to collect 5 independent MCP personas or isolated perspectives:
Tool: ouroboros_lateral_think
Arguments:
problem_context: |
User opted into a refinement pass (QA advisory score X.XX, bar 0.90).
Current seed YAML:
<YAML>
QA suggestions:
- <suggestion 1>
- <suggestion 2>
Original user goal from interview: <recall>
current_approach: "The seed as currently drafted (above)."
persona: "all"
failed_attempts:
- <previously rejected candidate from earlier iterations>
- ...The 5 personas return distinct revision angles:
Parsing persona outputs when lateral MCP is available: Each persona returns free-form prose, not a structured list. After the parallel call returns, read each persona's text and extract its concrete proposals into discrete candidates (one revision per candidate, not bundled). If a persona's output is purely abstract advice with no actionable revision, drop it from the candidate list rather than inventing one. Aim for 1–2 candidates per persona — if a persona produced 5, pick the 2 most concrete and discard the rest.
Lateral response shapes: ouroboros_lateral_think does not have one universal synchronous shape. After calling it with all personas, branch on the returned shape before extracting candidates:
status: "delegated_to_subagent", dispatch_mode: "plugin", and an _subagents array, wait for every plugin-managed subagent result. Extract concrete revision candidates from those returned persona texts. Do not attempt to parse candidates from the envelope prompts themselves.content plus the hidden sentinel <!-- ouroboros-lateral-inline-dispatch-v1 base64 ... -->, keep the visible markdown as the lateral scaffold. If the active runtime can dispatch isolated subagents, decode the sentinel JSON (dispatch_mode, persona_count, payloads) and send each payload.prompt + payload.context through that isolated subagent surface, then extract candidates from the returned persona texts. If the runtime cannot dispatch subagents, synthesize candidates directly from the visible inline persona sections.--- if doing so would corrupt user-provided content; prefer section headers and visible persona boundaries.If runtime tool discovery cannot load ouroboros_lateral_think, do not emulate lateral personas or read persona files directly. Record no lateral proposals: MCP lateral tool unavailable as Source 3 output and proceed with QA plus Socrates/available sources. The User Adoption Gate still applies to any proposed revision.
Phase 2 — Reflect (debate): structure proposals by agreement and conflict
Do not just dedupe. Read all proposals from the available Wonder sources (Sources 1–2, plus Source 3 only when ouroboros_lateral_think loaded successfully) and surface the structure of the debate:
Balance: 4 expand / 2 sharpen / 1 remove. Both directions are legitimate; the user decides what mix to accept.Output of Reflect: a tagged candidate list with per-item metadata (sources_backing, type=expand|sharpen|remove|resolve_conflict).
Phase 3 — Refine (User Adoption Gate)
Use the active runtime's ask_user capability with executable single-choice questions only. Do not ask one multi-select question or present options that can be selected contradictorily.
Ask sequential single-choice questions in this order:
Convergent signals still appear first in summaries, conflicts second, singletons last. Conflict questions must be asked before any non-conflicting batch is applied so contradictory revisions cannot both enter the next seed.
Refinement pass — QA advisory score X.XX
Which revisions should enter the next seed?
(Nothing accepted by default. Questions are single-choice and may be sequential.)
Strong (multiple sources agree):
A. [QA + Simplifier] Criterion 3 "easy to use" — sharpen to measurable predicate
B. [QA + Socrates] Re-add "single-user only" constraint dropped from iter-0
Conflicts (mutually exclusive — pick at most one per group):
C1. [Researcher] Add User entity to ontology
C2. [Simplifier] Remove User reference from goal (single-user implied)
C3. Neither — leave ontology untouched on this point
Singletons:
D. [Contrarian] Constraint "no external DB" contradicts criterion 7
E. [Architect] Group 3 user-management criteria under one parent
F. [Hacker] Replace "user authentication" with "device-local key file"
Other:
G. None of the above (keep current seed)
H. Other — describe a different changePortable gate example:
{
"questions": [{
"question": "Conflict: how should the seed handle User in the ontology?",
"header": "Conflict C",
"options": [
{"label": "Add User", "description": "Accept C1 and reject C2/C3"},
{"label": "Remove User", "description": "Accept C2 and reject C1/C3"},
{"label": "Leave unchanged", "description": "Accept C3 and reject C1/C2"}
],
"multiSelect": false
}]
}Balance line shown above the question: Balance: 4 expand / 2 sharpen / 1 remove (informational, not a warning).
Track all rejected candidates across iterations and pass them as failed_attempts to subsequent ouroboros_lateral_think calls when the MCP lateral tool is available, so personas don't re-propose them.
Phase 4 — Restate (apply accepted only)
Edit the previous seed YAML in place. Apply ONLY user-accepted items. Do not start from scratch. Do not lose fields that were already correct. Do not call ouroboros_generate_seed again — that tool runs only at initial generation.
If the user skips all proposed revisions, the current seed stands unchanged. After applying accepted items (or after a full skip), re-run the QA check once for an updated advisory line and present the complete Seed YAML in a fenced yaml block so the standing artifact is explicit. Do not start another pass without a fresh explicit opt-in.
Common edit shapes (both expansion and convergence are legitimate when the user accepted them):
"fast" → "p95 latency < 200ms")"some kind of storage" → "SQLite, single file, no server")Audit trail
After each revision, append a brief audit block to ~/.ouroboros/seed-revisions/<revision_key>.md (create the directory if it doesn't exist) capturing: iteration N, QA score, all candidates with source tag, user's accept/reject decisions, and the resulting diff vs. previous iteration. This makes the convergence path inspectable and lets the user replay decisions later.
Choose revision_key deterministically:
session_id exists, use that exact session_id.session_id exists (common in Path B), derive a stable seed label from the seed goal or project name plus the current UTC timestamp, for example <slugified-goal>-YYYYMMDDTHHMMSSZ. Once derived, reuse the same key for every iteration in the current seed run.Format:
## Iteration N — score X.XX
### Candidates
- [A] [QA+Simplifier] sharpen criterion 3 — **accepted**
- [B] [Socrates] re-add single-user constraint — **accepted**
- [C1] [Researcher] add User entity — rejected
- [C2] [Simplifier] remove User from goal — **accepted**
- [D] [Contrarian] resolve no-DB / criterion-7 conflict — rejected
- ...
### Diff vs. iteration N-1
- criteria[2]: "easy to use" → "first-time user completes flow in < 3 clicks"
- constraints: + "single-user only"
- goal: "...for users..." → "...for the single operator..."The seed contains:
goal: Build a CLI task management tool
constraints:
- Python >= 3.12
- No external database
- SQLite for persistence
acceptance_criteria:
- Tasks can be created
- Tasks can be listed
- Tasks can be marked complete
ontology_schema:
name: TaskManager
description: Task management domain model
fields:
- name: tasks
type: array
description: List of tasks
- name: title
type: string
description: Task title
evaluation_principles:
- name: completeness
description: All requirements are implemented
weight: 1.0
- name: usability
description: CLI commands are clear and easy to use
weight: 0.7
exit_conditions:
- name: all_criteria_met
description: All acceptance criteria pass
criteria: 100% of acceptance criteria are satisfied
- name: tests_green
description: The project test suite passes
criteria: Required automated tests exit successfully
metadata:
ambiguity_score: 0.15On successful seed generation, first announce:
Your seed has been crystallized!Then check ~/.ouroboros/prefs.json for star_asked. If star_asked is not set to true, use the active runtime's ask_user capability with this single question:
{
"questions": [{
"question": "If Ouroboros helped clarify your thinking, a GitHub star supports continued development. Ready to unlock Full Mode?",
"header": "Next step",
"options": [
{
"label": "\u2b50 Star & Setup",
"description": "Star on GitHub + run ooo setup to enable run, evaluate, status"
},
{
"label": "Just Setup",
"description": "Skip star, go straight to ooo setup for Full Mode"
}
],
"multiSelect": false
}]
}gh api -X PUT /user/starred/Q00/ouroboros, merge {"star_asked": true} into ~/.ouroboros/prefs.json, then read and execute ../setup/SKILL.md{"star_asked": true} into ~/.ouroboros/prefs.json, then read and execute ../setup/SKILL.md{"star_asked": true} into ~/.ouroboros/prefs.json, skip setupCreate ~/.ouroboros/ directory if it doesn't exist. Preserve existing keys such as welcomeShown, welcomeCompleted, and welcomeVersion when updating star_asked:
ouroboros_python - <<'PY'
import json, os
path = os.path.expanduser('~/.ouroboros/prefs.json')
os.makedirs(os.path.dirname(path), exist_ok=True)
try:
with open(path, encoding='utf-8') as f:
prefs = json.load(f)
if not isinstance(prefs, dict):
prefs = {}
except Exception:
prefs = {}
prefs['star_asked'] = True
with open(path, 'w', encoding='utf-8') as f:
json.dump(prefs, f, indent=2)
f.write('\n')
PYIf star_asked is already true, skip the question and just announce:
Your seed has been crystallized!
◆ Current state → next: `ooo run` to execute this seed (requires `ooo setup` first)Your final response MUST end with exactly one breadcrumb footer line:
◆ <current state> → next: <recommended action>Derive <current state> from live session state via ouroboros_session_status when that MCP projection is available; otherwise derive it from this skill's actual outcome. Never use a linear Step N of M footer because Ouroboros is an evolutionary loop. When the next action is genuinely a choice, list 2-3 honest options in the next: clause. The breadcrumb line must be the last line of the response.
© Q00, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/seed of Q00/ouroboros.
Open the folder on GitHubat commit f587795
Seed next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Seed this skillQ00/ouroboros | 6.2k | — | ~8.1k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 64 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Fastmcp Client CLIPrefectHQ/fastmcp | 28k | 1 repos | ~823 | Automated safety check: Pass | Apache-2.0 | |
| MemPalace Setup and OperationMemPalace/mempalace | 59k | — | ~2.2k | Automated safety check: Pass | MIT | |
| FastmcpTommy-yw/RunbookHermes | 546 | 4 repos | ~2.1k | Automated safety check: Pass | MIT |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
shareAI-lab/learn-claude-code
Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.
PrefectHQ/fastmcp
Query and invoke tools on MCP servers using fastmcp list and fastmcp call.
MemPalace/mempalace
Installs and configures MemPalace as a private local palace, a shared-brain hub or a client of an existing hub, including MCP registration and version-correct initialization.
Tommy-yw/RunbookHermes
Build, test, inspect, install, and deploy MCP servers with FastMCP in Python.
archestra-ai/archestra
Migrate an existing agentic PoC/pilot (Claude Code project files, MCP configs, hooks, local tools, openclaw config, or similar hand-rolled setup artifacts) into an Archestra instance.
Q00/ouroboros
Runs a guided product-manager interview that classifies each question automatically and produces a Product Requirements Document.
Q00/ouroboros
Triages and works through GitHub issues and pull requests in the Q00/ouroboros repo as a maintainer, within a stated review boundary and clear limits on what it may change.
Q00/ouroboros
Scans a directory for existing git repositories and worktrees, then registers and manages which ones serve as default context during interviews.
Q00/ouroboros
Scores an agent's finished work with a three-stage pipeline: free mechanical checks, an advisory semantic review, and an optional multi-model consensus vote.
Q00/ouroboros
Starts, monitors or rewinds an evolutionary development loop that refines an ontology and acceptance criteria generation by generation until it converges, using the Ouroboros MCP tools.
Q00/ouroboros
Opens or drives the Ouroboros settings GUI, picking a browser, TUI or chat-based approach depending on whether the user can reach a browser window.
Works with
Categories
Generate validated Seed specifications from interview results. Seed is an agent skill from Q00/ouroboros.
Seed fits situations like: tasks that involve MCP servers.
Run `npx skills add Q00/ouroboros --skill seed -a claude-code`. Or copy the skill folder (skills/seed in Q00/ouroboros) into .claude/skills/seed in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Q00/ouroboros --skill seed -a codex`. Or copy the skill folder (skills/seed in Q00/ouroboros) into .agents/skills/seed in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Q00/ouroboros --skill seed -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/seed, .gemini/skills/seed, .github/skills/seed and .opencode/skills/seed in your project.
Going by SKILL.md and its folder, Seed needs the command-line tools its instructions call (python3, python, uv, ruff, pytest and gh). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Seed is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.1k tokens (SKILL.md is roughly 32k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Seed: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Fastmcp Client CLI (PrefectHQ/fastmcp, 28k stars) and MemPalace Setup and Operation (MemPalace/mempalace, 59k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Q00 (a GitHub user) maintains it in Q00/ouroboros, which has 6,194 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 7, 2026.
Source: Q00/ouroboros on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.