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.
Break through stagnation with lateral thinking personas — single or multi-persona debate
$ npx skills add Q00/ouroboros --skill unstuck -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Q00/ouroboros unstuck --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/unstuck .claude/skills/unstuck && 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 "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .claude/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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/unstuckType 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 unstuck -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Q00/ouroboros unstuck --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/unstuck .agents/skills/unstuck && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .agents/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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 unstuck -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Q00/ouroboros unstuck --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/unstuck .cursor/skills/unstuck && 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 "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .cursor/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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/unstuck--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 unstuck -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Q00/ouroboros unstuck --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/unstuck .gemini/skills/unstuck && 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 "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .gemini/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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 unstuckInstalls 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 unstuck -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/unstuck .github/skills/unstuck && 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 "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .github/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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 unstuck -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 unstuck --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/unstuck .opencode/skills/unstuck && 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 "unstuck" agent skill from https://github.com/Q00/ouroboros/tree/main/skills/unstuck into .opencode/skills/unstuck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unstuck", 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.
unstuckBreak through stagnation with lateral thinking personas — single or multi-persona debate
Unstuck is an agent skill from Q00/ouroboros. Break through stagnation with lateral thinking personas — single or multi-persona debate
Its SKILL.md is about 4.9k 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. 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.
4 steps, taken from the step headings 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Unstuck loads about 4.9k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 2,112 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). 2,112 words, ~4,916 tokens.
.claude/skills/unstuck/SKILL.md (or your agent's skills folder).Break through stagnation with lateral thinking personas. Two modes:
ooo lateral # debate (default) — all 5 lateral personas
ooo lateral <persona> # solo — single persona
ooo lateral debate <p1> <p2> ... # debate with explicit members
ooo lateral @<preset> # debate with preset (Phase 1: only @all = 5 personas)Trigger keywords: "I'm stuck", "think sideways", "ooo lateral", "/ouroboros:unstuck".
The lateral pool is stateless mindset personas only — five reframing lenses. Stateful roles (evaluator, qa-judge, ontologist, socratic-interviewer, etc.) are NOT mixed into this pool; they have their own SKILLs.
| Persona | Style | When to Use |
|---|---|---|
| hacker | "Make it work first, elegance later" | When overthinking blocks progress |
| researcher | "What information are we missing?" | When the problem is unclear |
| simplifier | "Cut scope, return to MVP" | When complexity is overwhelming |
| architect | "Restructure the approach entirely" | When the current design is wrong |
| contrarian | "What if we're solving the wrong problem?" | When assumptions need challenging |
Direct user invocation — ooo lateral … from the prompt.
Autonomous chain from another SKILL — when you (the main session) are operating in another SKILL's persona (e.g., socratic-interviewer during ooo interview, or any agent role) and judge that the current question requires multi-perspective deliberation, you MAY invoke this SKILL on your own. No forced trigger; this is your self-assessment. After the debate, summarize the options for the user, return to the original SKILL's flow, and let the user decide. The user will see the sub-agent fan-out as it happens — that visibility is the point.
Parse the user's argument string (or your autonomous-chain intent) into a mode (solo / debate):
| Input | Mode | Members |
|---|---|---|
| no args | debate | all 5 lateral personas |
debate (keyword alone) | debate | all 5 lateral personas |
<persona> (e.g., hacker) | solo | that one persona |
debate <p1> <p2> ... | debate | the listed personas |
@all | debate | all 5 lateral personas |
@<unknown-preset> | error | reject + list known presets |
<unknown-persona> | error | reject + list the 5 lateral personas |
<persona1> <persona2> ... (no debate keyword) | error | reject + suggest ooo lateral debate <p1> <p2> |
Validate every persona name against the lateral pool above. If invalid, emit a brief error message naming the valid personas — do NOT silently coerce. Multiple persona tokens without the explicit debate keyword are rejected to keep the syntax unambiguous.
ouroboros_lateral_think hard-fails if either problem_context or current_approach is empty (LateralThinkHandler.handle in src/ouroboros/mcp/tools/lateral_think_handler.py). A bare ooo lateral from a fresh session has neither — calling MCP directly would crash before any persona work. Resolve both fields before Step 3, in this order:
problem_context — what the user is stuck on (1–3 sentences, current state of the world).current_approach — what has been tried so far (1–3 sentences). For a brand-new attempt, this can be "none yet — first attempt".failed_attempts (optional) — short list of prior failures, when the user has volunteered them."Two things I need before lateral thinking can run: (1) what are you stuck on right now, (2) what have you already tried? A sentence each is enough." Wait for the answer. Do not invent or paraphrase past turns into these fields if you are not certain —
current_approach="not specified"is acceptable, fabricated content is not.
This pre-call branch applies to solo and debate. Skipping it makes ooo lateral (no args, fresh session) reliably error.
ouroboros_lateral_think (routing contract)Per the ooo routing contract in src/ouroboros/codex/ouroboros.md, every ooo lateral invocation MUST route through the MCP tool — solo and debate, in every runtime. This SKILL never substitutes a direct sub-agent fan-out for the MCP call.
"+ouroboros lateral" to load ouroboros_lateral_think (often prefixed, e.g., mcp__plugin_ouroboros_ouroboros__ouroboros_lateral_think). Deferred tools won't appear until runtime tool discovery runs.persona=<one>, problem_context, current_approach, failed_attempts.personas=[...], problem_context, current_approach, failed_attempts.ooo auto. Do not improvise a sub-agent fan-out as a workaround; that bypasses the contract the bot review explicitly flagged.The MCP call is cheap. The handler's inline path is a deterministic prompt builder — it constructs per-persona reframing prompts via LateralThinker.generate_alternative (LateralThinkHandler.handle in src/ouroboros/mcp/tools/lateral_think_handler.py); it does not run an LLM rollout.
The handler picks one of two response shapes based on should_dispatch_via_plugin(...) (src/ouroboros/mcp/tools/subagent.py). You do not choose; you observe and act. The envelope key further depends on the mode you called with — solo and debate are not symmetric:
| Mode | Plugin response | Inline response |
|---|---|---|
Solo (persona=...) | single _subagent envelope (one object) — build_subagent_result in subagent.py | single # Lateral Thinking: <approach> block in content |
Debate (personas=[...]) | _subagents array (N objects) — build_multi_subagent_result in subagent.py | N blocks joined by \n\n---\n\n in content, plus an appended hidden dispatch block carrying the same canonical N payloads (see "Inline dispatch block" below) |
Inline dispatch block (debate, inline response only). The handler appends a versioned, sentinel-bracketed dispatch block to the end of content as a compatibility fallback for clients and runtimes that consume only textual content. MCP SDK v2 preserves structured metadata, while the inline block lets text-only consumers recover the same canonical payloads (written by LateralThinkHandler.handle in src/ouroboros/mcp/tools/lateral_think_handler.py, read back by _inline_lateral_dispatch_payload in src/ouroboros/mcp/tools/subagent.py). Format:
<!-- ouroboros-lateral-inline-dispatch-v1 base64
<base64-encoded-JSON>
-->Two pieces matter:
<!-- ... -->, so the block doesn't pollute the human-visible output.[A-Za-z0-9+/=], which can never produce the sequence -->. So even if a user-supplied problem_context or current_approach contains --> (HTML/JS debugging is the obvious case), the encoded body cannot prematurely close the wrapper and leak the dispatch into the visible markdown.Decoded, the body is JSON. An MCP host that did not declare subagent capability receives the neutral shape:
{"dispatch_mode": "host_decides", "host_action": "dispatch_subagents_if_supported", "execution_preference": "parallel", "fallback_strategy": "sequential", "persona_count": N, "payloads": [...]}An explicitly sequential execution authority receives dispatch_mode="sequential"
with legacy_dispatch_mode="inline_fallback" for compatibility. To recover:
locate the substring between <!-- ouroboros-lateral-inline-dispatch-v1 base64\n
and \n--> at the end of content, base64-decode it, then JSON.parse.
dispatch_mode = "plugin" (OpenCode plugin mode only)The plugin runtime spawns Task panes automatically from whichever envelope the handler emitted. You only need to read the right key and await the result(s):
The response carries a single _subagent object (singular) — {tool_name, title, prompt, agent, model, context} — produced by build_subagent_result (src/ouroboros/mcp/tools/subagent.py). The plugin spawns one Task pane. Await its single result, then present the persona's reframing.
The response carries a _subagents array (plural) — [{tool_name, title, prompt, agent, model, context}, ...] — produced by build_multi_subagent_result (src/ouroboros/mcp/tools/subagent.py). The plugin spawns N Task panes in parallel. Await all N results, then synthesize per the Synthesize block below.
If you expected plugin mode but the response is inline text (neither _subagent nor _subagents), you are not actually in plugin mode — fall through to Shape B; do not wait for an envelope that will not arrive.
The handler ran the prompt builder internally and returned ready-to-use markdown:
# Lateral Thinking: <approach> block followed by the reframing prompt.\n\n---\n\n separators. The dispatch block distinguishes declared host_driven, capability-neutral host_decides, and explicit sequential execution.Present the persona's approach summary, reframing prompt, questions to consider, and a ◆ Current state → next: suggestion routing back to the workflow.
This is the default debate UX for Claude Code and Codex. The MCP call has already happened (Step 3), so the routing contract is satisfied; this step only changes how the already-built canonical prompts are rendered to the user.
Recover the structured dispatch from the inline dispatch block appended to content (see the "Inline dispatch block" note above the table). Each entry under payloads[] is a {tool_name, title, prompt, agent, model, context} dict; prompt is self-contained — it carries the same canonical reframing plus the "Task for you (subagent)" wrapper that plugin mode dispatches via _subagents (asking for a concrete plan, the biggest assumption challenged, and a one-line verdict). Same builder, byte-identical prompts across runtimes.
Driving fan-out from this dispatch block — instead of from the joined human-display text — avoids two pitfalls the bot review surfaced:
\n\n---\n\n can legitimately appear inside a user-supplied problem_context or current_approach, so splitting the joined text would over-fragment and corrupt prompts. The dispatch block uses a unique versioned sentinel that user content cannot collide with._subagents carries, so debate results don't diverge by environment.content text. Base64-decode the captured body, then JSON.parse to get {dispatch_mode, host_action, persona_count, payloads}. If the block is missing, fall through to the constrained-runtime path below — do not split the joined text.host_action="dispatch_subagents_if_supported", use the host's native parallel mechanism when available and otherwise process the same payloads sequentially. If host_action="spawn_subagents", spawn N persona subagents in parallel. Each child receives the payload's prompt verbatim plus its context, with strict isolation per child.Task calls (general-purpose subagent) in a single message so they run concurrently when the Task surface is available.multi_agent_v1.spawn_agent tool.If the response is stamped with dispatch_mode="sequential", or with
dispatch_mode="host_decides" and the host has no native parallel primitive,
process each payload in order. Correlate every result by
result_correlation_key (normally context.persona), then synthesize after the
last payload. Treat legacy_dispatch_mode="inline_fallback" as compatibility
metadata only.
Present the concatenated markdown the handler returned, as-is — no parsing required, the user reads the whole text. There is no per-persona visualization and no Round 2 cross-attack — both require a sub-agent surface. Synthesize directly from the inline text.
Do not auto-emit a verdict. Present:
## Debate result — N personas
### Options
- **Option A** (from <persona>): <one-liner>
- **Option B** (from <persona>): <one-liner>
- …
### Disagreements
- <persona X> vs <persona Y>: <what they disagree about>
### Recommended (with reasoning)
<your single best read of the debate, clearly labeled as your
recommendation, not a verdict>
◆ Current state → next: pick an option, or `ooo lateral debate <subset>` to drill into a disagreementThe verdict is the user's. Never auto-progress to the next workflow step on the user's behalf — wait for their choice.
You only need this if a parent SKILL or the user explicitly requests one persona but doesn't name one. In debate mode, no selection needed (use all 5).
The contract is "fail loud, don't substitute": if ouroboros_lateral_think is not callable at all — neither already exposed nor loadable via discovery — stop and report that the MCP dispatch surface is broken. Do not improvise either solo or debate by reading persona files directly when MCP-driven invocation was requested — that re-introduces the contract bypass the bot review flagged.
The one exception, retained for documented offline use: a parent SKILL operating in degraded-offline mode that has already announced it cannot reach MCP MAY read src/ouroboros/agents/<persona>.md and adopt that persona inline for solo reframing. This is not a fallback for ooo lateral; it's a degraded helper for a parent SKILL that has already given up on MCP. Debate has no offline equivalent — report the broken surface and stop.
User: I'm stuck on the database schema design.
> ooo lateral simplifier
# Lateral Thinking: Reduce to Minimum Viable Schema
Start with exactly 2 tables. If you can't build the core feature
with 2 tables, you haven't found the core feature yet.
◆ Current state → next: try this, then `ooo run` — or `ooo interview` to re-examine.> ooo lateral
[Step 2: Confirm problem_context + current_approach are present;
ask the user one short combined question if not]
[runtime tool discovery loads ouroboros_lateral_think]
[Call ouroboros_lateral_think(personas=[hacker,researcher,simplifier,architect,contrarian], ...)]
[Handler returns: content = N persona blocks joined by ---,
followed by hidden <!-- ouroboros-lateral-inline-dispatch-v1 base64
<base64 body> --> sentinel block]
[Extract via the sentinel; base64-decode then JSON.parse → payloads[]]
[Spawn 5 parallel persona subagents — one per payloads[] entry — via the
host's native mechanism (Claude: Task calls; Codex: explicit NL delegation);
each child receives payload.prompt + payload.context verbatim;
the visible markdown is shown to the user as the lateral scaffold]
[User sees "Running 5 agents…"]
[Round 1 returns]
## Debate result — 5 personas
### Options
- A (hacker): ship the 50-line version, defer correctness
- B (architect): the data model is wrong, redesign before coding
- C (simplifier): cut feature X, the rest fits in one file
- D (researcher): we don't have user data; instrument first
- E (contrarian): are users actually asking for this?
### Disagreements
- hacker vs architect: ship-first vs redesign-first
- contrarian vs all: whether the problem is real
### Recommended
Lean toward C+E: validate the need (E) before scoping (C); A and B
both assume the feature is wanted.
◆ Current state → next: pick an option, or `ooo lateral debate hacker contrarian` to drill in.[ooo interview mid-flow; main session is wearing the socratic-interviewer persona]
[Main session judges that the next question is too tangled — multiple
reframings could be valid and asking the user to disambiguate would itself
be confusing. It chains to this SKILL on its own.]
(autonomous) ooo lateral
[5-agent debate runs in parallel sub-agents; the user sees "Running 5 agents…"]
[Main session presents options + disagreements + a recommendation]
[User picks an option — or asks for a follow-up debate]
[Main session resumes the interview with the chosen framing]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/unstuck of Q00/ouroboros.
Open the folder on GitHubat commit f587795
Unstuck 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 |
|---|---|---|---|---|---|---|
| Unstuck this skillQ00/ouroboros | 6.2k | — | ~4.9k | Automated safety check: Pass | MIT | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 10 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Using Superpowersfarm-fe/farm | 5.6k | 35 repos | ~1.4k | Automated safety check: Pass | MIT | |
| Executing Plans Inlineobra/superpowers | 297k | 2 repos | ~5.1k | Automated safety check: Pass | MIT | |
| Skill CreatorAzure/azqr | 795 | 89 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
farm-fe/farm
A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions
obra/superpowers
Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.
Azure/azqr
Create new skills, modify and improve existing skills, and measure skill performance.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
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
Runs a guided product-manager interview that classifies each question automatically and produces a Product Requirements Document.
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.
Categories
Break through stagnation with lateral thinking personas — single or multi-persona debate. Unstuck is an agent skill from Q00/ouroboros.
Unstuck fits situations like: agent Workflows work in your project.
Run `npx skills add Q00/ouroboros --skill unstuck -a claude-code`. Or copy the skill folder (skills/unstuck in Q00/ouroboros) into .claude/skills/unstuck in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Q00/ouroboros --skill unstuck -a codex`. Or copy the skill folder (skills/unstuck in Q00/ouroboros) into .agents/skills/unstuck 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 unstuck -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unstuck, .gemini/skills/unstuck, .github/skills/unstuck and .opencode/skills/unstuck in your project.
SKILL.md names no scripts, command-line tools or credentials: Unstuck is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Unstuck is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k 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 Unstuck: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k 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.