/unstuck
Break through stagnation with lateral thinking personas — single or multi-persona debate
$ npx -y skills add Q00/ouroboros --skill unstuck --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/unstuck
Context preview
The summary Claude sees to decide when to auto-load this skill.
Break through stagnation with lateral thinking personas — single or multi-persona debate
SKILL.md
unstuck.SKILL.mdname: unstuck
description: "Break through stagnation with lateral thinking personas — single or multi-persona debate"
aliases: [stuck, lateral]
/ouroboros:unstuck
Break through stagnation with lateral thinking personas. Two modes:
- **Solo** — one persona reframes the problem (fast, cheap).
- **Debate** — multiple personas run in parallel as sub-agents and the user picks the verdict (visual, thorough).
Usage
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".
Personas (Lateral Pool)
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 |
When to Call
**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.
Instructions
Step 1 — Parse args → mode
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.
Step 2 — Gather required context **before** the MCP call
`ouroboros_lateral_think` hard-fails if either `problem_context` or `current_approach` is empty (`evaluation_handlers.py:1324, 1333`). 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:
1. **Reuse session state.** If a parent SKILL is invoking this one (autonomous chain) or the current Claude Code / Codex session has clearly recent stuck-point context, extract it. Build:
- `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.
2. **If either field is unrecoverable**, ask the user *one* short combined question before going further (this applies to both solo and debate — the handler requires both fields either way): > "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. 3. Only when both fields are populated, proceed to Step 3.
This pre-call branch applies to solo *and* debate. Skipping it makes `ooo lateral` (no args, fresh session) reliably error.
Step 3 — Always call `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.
1. Use the active runtime's tool-discovery capability with query `"+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. 2. Invoke the tool with the parsed mode and the context from Step 2:
- **Solo**: `persona=<one>`, `problem_context`, `current_approach`, `failed_attempts`.
- **Debate**: `personas=[...]`, `problem_context`, `current_approach`, `failed_attempts`.
3. If the tool is not callable even after discovery — neither already exposed nor loadable (an empty discovery result for an already-exposed tool is expected, not a failure) — **stop and report that the MCP dispatch surface is broken** — same rule the contract applies to `ooo auto`. Do not improvise a sub-agent fan-out as a workaround; that bypasses the contract the bot
Read more
name: unstuck description: "Break through stagnation with lateral thinking personas — single or multi-persona debate" aliases: [stuck, lateral]
/ouroboros:unstuck
Break through stagnation with lateral thinking personas. Two modes:
- **Solo** — one persona reframes the problem (fast, cheap).
- **Debate** — multiple personas run in parallel as sub-agents and the user picks the verdict (visual, thorough).
Usage
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".
Personas (Lateral Pool)
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 |
When to Call
**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.
Instructions
Step 1 — Parse args → mode
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.
Step 2 — Gather required context **before** the MCP call
`ouroboros_lateral_think` hard-fails if either `problem_context` or `current_approach` is empty (`evaluation_handlers.py:1324, 1333`). 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:
1. **Reuse session state.** If a parent SKILL is invoking this one (autonomous chain) or the current Claude Code / Codex session has clearly recent stuck-point context, extract it. Build:
- `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.
2. **If either field is unrecoverable**, ask the user *one* short combined question before going further (this applies to both solo and debate — the handler requires both fields either way): > "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. 3. Only when both fields are populated, proceed to Step 3.
This pre-call branch applies to solo *and* debate. Skipping it makes `ooo lateral` (no args, fresh session) reliably error.
Step 3 — Always call `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.
1. Use the active runtime's tool-discovery capability with query `"+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. 2. Invoke the tool with the parsed mode and the context from Step 2:
- **Solo**: `persona=<one>`, `problem_context`, `current_approach`, `failed_attempts`.
- **Debate**: `personas=[...]`, `problem_context`, `current_approach`, `failed_attempts`.
3. If the tool is not callable even after discovery — neither already exposed nor loadable (an empty discovery result for an already-exposed tool is expected, not a failure) — **stop and report that the MCP dispatch surface is broken** — same rule the contract applies to `ooo auto`. Do not improvise a sub-agent fan-out as a workaround; that bypasses the contract the bot
Other skills on ouroboros.
- /auto
Automatically converge from goal to A-grade Seed and execute it
Open skill - /brownfield
Scan and manage brownfield repository/worktree defaults for interviews
Open skill - /cancel
Cancel stuck or orphaned executions
Open skill - /config
Open or drive the Ouroboros settings GUI (browser, TUI, or conversational fallback)
Open skill - /evaluate
Evaluate execution with three-stage verification pipeline
Open skill - /evolve
Start or monitor an evolutionary development loop
Open skill

