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

$curl -o ~/.claude/skills/self-consistency/SKILL.md --create-dirs "https://raw.githubusercontent.com/nguyenthienthanh/aura-frog/main/aura-frog/skills/self-consistency/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/self-consistency/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How self-consistency Compares

Feature / Agentself-consistencyStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

14
from nguyenthienthanh/aura-frog

Apply learned improvements to the Aura Frog plugin. Updates rules, adjusts agent routing, modifies workflow configurations, and generates knowledge base entries.

self-healing-orchestrator

14
from nguyenthienthanh/aura-frog

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

14
from nguyenthienthanh/aura-frog

Vue 3 gotchas and decision criteria. Covers reactivity traps, Composition API pitfalls, and Pinia patterns.

typescript-expert

14
from nguyenthienthanh/aura-frog

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

14
from nguyenthienthanh/aura-frog

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

14
from nguyenthienthanh/aura-frog

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

14
from nguyenthienthanh/aura-frog

Generate UI designs using Google Stitch AI with optimized prompts

session-continuation

14
from nguyenthienthanh/aura-frog

Manage workflow state across sessions with handoff and resume. TOON-based state persistence.

sequential-thinking

14
from nguyenthienthanh/aura-frog

Structured thinking process for complex analysis. Supports revision, branching, and dynamic adjustment.

scalable-thinking

14
from nguyenthienthanh/aura-frog

Design for scale while keeping implementation simple (KISS).

run-orchestrator

14
from nguyenthienthanh/aura-frog

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

14
from nguyenthienthanh/aura-frog

MCP Response Analyzer pattern - Write large responses to temp files, load summaries into context