self-consistency
Generate N independent reasoning paths and vote on the answer. Use for architectural trade-offs, ambiguous design decisions, or when single-path reasoning risks locking onto the first plausible answer. Paper: Wang et al. 2022.
Best use case
self-consistency is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate N independent reasoning paths and vote on the answer. Use for architectural trade-offs, ambiguous design decisions, or when single-path reasoning risks locking onto the first plausible answer. Paper: Wang et al. 2022.
Teams using self-consistency should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/self-consistency/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How self-consistency Compares
| Feature / Agent | self-consistency | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate N independent reasoning paths and vote on the answer. Use for architectural trade-offs, ambiguous design decisions, or when single-path reasoning risks locking onto the first plausible answer. Paper: Wang et al. 2022.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
> **AI-consumed reference.** Optimized for Claude to read during execution. > Human-readable explanation: see [docs/architecture/HIERARCHICAL_PLANNING.md](../../../docs/architecture/HIERARCHICAL_PLANNING.md) > or [docs/getting-started/](../../../docs/getting-started/) depending on topic. # Self-Consistency For ambiguous design decisions with multiple plausible answers. Generate multiple independent paths, take the majority. **Governed by:** `rules/workflow/self-consistency.md` (when / why) --- ## When NOT to Use - Single-answer tasks (file rename, typo) - Quick/Standard complexity — cost doesn't pay back - User said `must do:` / `just do:` / `no discussion` - Budget already >85% of session limit --- ## The Protocol ### Step 1 — Frame the decision Write the decision as a question with ≥2 possible answers: > "Should the API use REST or GraphQL?" > "Monolith, modular monolith, or microservices?" > "Redis for cache vs in-memory LRU?" If the question has only one sensible answer, skip SC. ### Step 2 — Generate N = 3 paths For each path, reason from scratch in an isolated context: ``` Path 1: - Consider user scale (est. 10K DAU for this product) - Consider team size (2 backend devs) - Consider infra (already on Fly.io, no k8s expertise) → Answer: Modular monolith Path 2: - Consider dev velocity (team ships weekly) - Consider deploy complexity (monorepo, single deploy) - Consider failure domains (single point of failure OK at this scale) → Answer: Modular monolith Path 3: - Consider future scale (could hit 100K DAU in 12mo) - Consider hiring plan (doubling team in 6mo) - Consider isolation needs (auth service is security-critical) → Answer: Microservices (start with auth as separate service) ``` Each path should use **different starting considerations** — don't copy-paste one reasoning with cosmetic changes. ### Step 3 — Extract answers, count votes ``` Answers: [modular monolith, modular monolith, microservices] Votes: modular monolith: 2 | microservices: 1 Winner: modular monolith (2/3 majority) ``` ### Step 4 — Report If clear majority (2/3 or 3/3): > **Decision: Modular monolith (2/3 paths agreed)** > > Both winning paths cited scale (10K DAU), team size (2 devs), and existing Fly.io infra. The dissenting path optimized for 12-month scale which is speculative. > > Flagging dissent: if hiring doubles and we hit 100K DAU fast, consider extracting auth service as a Phase 2 refactor. If no majority (1/1/1 with 3 different answers): > **Paths disagreed — pausing to ask.** > > Path 1 → REST (simplicity) > Path 2 → GraphQL (client flexibility) > Path 3 → tRPC (end-to-end types) > > Which constraint matters most to you: simplicity, client flexibility, or type safety across client/server? Per `rules/core/no-assumption.md` — when paths disagree, ask rather than pick. --- ## Anti-Patterns - **Cosmetic paths** — same reasoning with word swaps. Don't. Each path must start from different considerations. - **Forcing consensus** — if paths disagree, don't pick silently. Ask. - **N > 3** — diminishing returns. 3 catches most issues; 5+ is expensive and rarely changes the answer. - **Using SC for non-trade-offs** — if the answer is obvious, skip this. SC costs 3× tokens. --- ## Output Format ```markdown ## Decision: [Answer] **Votes:** [X/N paths] **Majority reasoning:** [1-2 sentence summary of why the winning paths agreed] **Dissent:** [if any — what the losing path(s) prioritized] **Flag for Phase 5:** [any follow-up action implied by dissent] ``` --- ## Tie-Ins - `rules/workflow/self-consistency.md` — policy - `rules/workflow/tree-of-thoughts.md` — for branching exploration (different technique) - `rules/core/no-assumption.md` — when to escalate to user - `skills/chain-of-verification/SKILL.md` — verify the SC winner's facts
Related Skills
self-improve
Apply learned improvements to the Aura Frog plugin. Updates rules, adjusts agent routing, modifies workflow configurations, and generates knowledge base entries.
self-healing-orchestrator
Proposes patches for F2 (local-logic) and F3 (local-design) failures. NEVER applies without user approval. Confidence ≥0.7 to propose; below that, escalates raw findings. Counts toward replan_budget. Per-task: max 1; per-session: max 5.
vue-expert
Vue 3 gotchas and decision criteria. Covers reactivity traps, Composition API pitfalls, and Pinia patterns.
typescript-expert
TypeScript gotchas and decision criteria covering nullish coalescing pitfalls (|| vs ??), strict tsconfig settings (noUncheckedIndexedAccess, exactOptionalPropertyTypes), type guard patterns, discriminated unions, and as const vs enum. Use when writing TypeScript, configuring tsconfig, implementing type guards, or debugging null/undefined errors.
tree-of-thoughts
Branch, evaluate, prune, expand — structured search over solution space. Use for architecture with multi-step decisions, refactor planning, or complex debug hypothesis trees. Paper: Yao et al. 2023.
test-writer
Write tests with TDD following structured patterns. Ensures consistent AAA structure, proper coverage targets, and framework-specific conventions. Without this skill, tests lack consistent naming, miss coverage targets, and skip anti-pattern checks.
stitch-design
Generate UI designs using Google Stitch AI with optimized prompts
session-continuation
Manage workflow state across sessions with handoff and resume. TOON-based state persistence.
sequential-thinking
Structured thinking process for complex analysis. Supports revision, branching, and dynamic adjustment.
scalable-thinking
Design for scale while keeping implementation simple (KISS).
run-orchestrator
Execute 5-phase TDD workflow for complex features. Use when the user invokes /run, asks to build/create/implement a feature, requests a complex multi-file change, or types 'fasttrack:'. Enforces phase gates, sprint contracts, and builder!=reviewer discipline.
response-analyzer
MCP Response Analyzer pattern - Write large responses to temp files, load summaries into context