Explains and compares multiple design options for coding decisions.

Install

mkdir -p .claude/skills/explain && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10722" && unzip -o skill.zip -d .claude/skills/explain && rm skill.zip

Installs to .claude/skills/explain

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Compare 2-3 approaches to a coding or design decision with trade-offs and a recommendation. Teach-first framing — surfaces decision complexity rather than picking for you. For "which way should I..." questions (complements /chiron which handles "how do I..." questions). Defers to .github/copilot-instructions.md.
313 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Compare architectural approaches
  • Analyze trade-offs
  • Provide qualified recommendations
  • Defer to project instructions

How it works

It surfaces 2-3 distinct approaches to a design problem, evaluates them, and provides a context-aware recommendation.

Inputs & outputs

You give it
Design decision question
You get back
Comparative analysis

When to use explain

  • Choosing between architectural patterns
  • Comparing technology stacks
  • Evaluating design options
  • Understanding trade-offs in implementation

About this skill

/explain — compare approaches with trade-offs

Quick start:

  • /explain REST vs gRPC for this service — compare two named options
  • /explain how should I handle retries? — explore a design question
  • /explain — no argument: infer the decision point from the current conversation

Step 0 — Load project context

Check if .chiron-context.md exists in the project root. If it exists: read it. DO NOT scan the codebase or read additional files unless the user's question references a specific file. If not: tell the user: "No project context found. Run /teach-chiron first." Then stop.

The user's question or decision:

$ARGUMENTS

If $ARGUMENTS is empty or whitespace-only: derive the decision point from the current conversation instead of asking the user to restate it. Scan the recent turns for a visible choice — "should we use A or B", "I'm torn between X and Y", "not sure which pattern fits", "wondering whether to …" — or any discussion where two or more approaches are being weighed. Open with a one-line confirmation: "Inferring decision from conversation: <one-line question>. Say otherwise and I'll retarget." Then run the normal decision tree with that question in place of $ARGUMENTS.

Inference rules:

  • Prefer an explicit comparison ("A vs B") over an implicit one. If both are present, use the most recent.
  • If the user named the options themselves, preserve those exact option names in the inferred question.
  • If the conversation is about implementing a specific approach (not choosing between several), redirect: "That reads like a how-to — try /chiron instead." Do not convert an implementation question into a comparison.
  • If no decision point is visible, stop with: "No decision point visible in conversation — try /explain <A vs B> or /explain <question>."
  • Never fabricate a decision or invent options that weren't discussed. Ambiguity → ask, don't guess.

CRITICAL — user instructions always win

If the current project's .github/copilot-instructions.md conflicts with the behavior below, follow those instructions instead. This command is opt-in; the user invoked it explicitly.


Current level

Apply the voice level from .chiron-context.md. If missing or unrecognized, use default.


What this command does

Given a coding or design question with multiple plausible approaches, /explain surfaces 2–3 named approaches with trade-offs, then gives a recommendation qualified to the user's specific situation. It's the answer to "which way should I..." questions rather than "how do I..." questions (which /chiron handles).

Scope:

  • 2–3 approaches — never more. More choices means less signal. Pick the 3 most representative.
  • Each approach has: one-sentence description, 2–3 pros, 2–3 cons, one-sentence "when to use".
  • Recommendation is qualified"for the case you described" — not absolute.
  • Closing handoff to /chiron for implementation of the chosen approach.

Decision tree

  1. Is $ARGUMENTS empty? Infer the decision point from the conversation per the rules above. If inference succeeds, announce the inferred decision in one line, then continue at step 1 with that question. If inference fails (no decision point visible, or the conversation is about implementation), stop with the fallback message — do not invent a comparison.
  2. Is this actually a "which approach" question? If the user asked "how do I implement X" (single well-defined task), route to /chiron instead. Respond: "This looks like a 'how do I' question — try /chiron <your question> for step-by-step guidance. /explain is for choosing between multiple valid approaches."
  3. Are there actually 2+ valid approaches? If only one approach is valid for the stated case, skip the comparison format. Give a direct one-approach recommendation with a brief explanation of why the alternatives don't fit.
  4. Is the question under-specified? If you can't identify 2 approaches without more context (e.g., /explain error handling — depends heavily on language, app type, error semantics), ask 1–2 clarifying questions before presenting approaches. Don't invent context.

Response format — keep it terse

Compact output format. Three approaches on ~5 lines each instead of decorative headers and bold labels:

Approaches:

1. <Approach name> — <one-line description>
   + <pro>, <pro>, <pro (optional)>
   - <con>, <con>, <con (optional)>
   When: <one sentence>

2. <Approach name> — <one-line description>
   + <pro>, <pro>
   - <con>, <con>
   When: <one sentence>

3. <Approach name> — <one-line description>  [optional, only include if genuinely distinct]
   + <pro>, <pro>
   - <con>, <con>
   When: <one sentence>

Recommend: <approach X> by default. <approach Y> when <condition>. <approach Z> when <condition>.

Implementation? `/chiron <request>`

Example (shape reference, not content to copy):

Approaches:

1. errgroup.WithContext — stdlib-adjacent, cancel-on-first-error built in
   + familiar API, automatic context cancellation, composable with existing middleware
   - no built-in concurrency limit, requires external semaphore for bounded parallelism
   When: most Go fan-out tasks where you want cancel-on-error semantics

2. Manual goroutines + sync.WaitGroup — full control, no dependencies
   + zero dependencies, explicit lifecycle, easy to add custom recovery logic
   - manual error collection, no cancel propagation, easy to leak goroutines
   When: simple fire-and-forget tasks where errors are logged, not propagated

3. Worker pool with buffered channel — bounded concurrency by design
   + natural backpressure, fixed memory footprint, predictable resource usage
   - more boilerplate, harder to wire cancel-on-error, channel sizing requires thought
   When: high-volume input where unbounded goroutines would exhaust resources

Recommend: errgroup by default. Worker pool when input volume is unbounded. Manual WaitGroup only for fire-and-forget logging.

Implementation? `/chiron implement fan-out with errgroup`

Style rules:

  • One line per pros/cons bullet, comma-separated items, not multi-line markdown lists
  • + / - / When: prefixes instead of **Pros:** / **Cons:** / **When to use:** labels
  • No decorative ## headers for each approach — numbered list is enough
  • No padded framings like "Three main approaches, each with clear trade-offs:" — just "Approaches:"
  • Closing handoff is one line, no extra explanation

Pre-delivery checklist (verify silently)

  1. Exactly 2–3 approaches — not 1 (use /chiron instead), not 4+ (too many choices)
  2. Each approach has pros AND cons — no approach is presented as all-upside
  3. Recommendation is qualified by context, not absolute
  4. Handoff line to /chiron is present
  5. No fence-sitting — a clear recommendation exists for the stated case

Teaching dial effects on /explain: Read teaching.depth and teaching.theory_ratio from .chiron-context.md. If missing, use defaults (5, 3).

  • depth 8–10: expand each approach from ~5 lines to ~8 lines; include a "deeper context" note about when each approach historically emerged.
  • theory_ratio 8–10: add a brief "theory note" after the recommendation naming the underlying design principle (e.g., "This is the Single Responsibility Principle applied to data flow").
  • At default values (5, 3), no expansion — standard compact format.

Idiom callouts

When naming a specific primitive or library in an approach, offer ONE short doc pointer (the "read this first" pattern):

"Approach 1: use errgroup.WithContext from golang.org/x/sync/errgroup. Background: pkg.go.dev/golang.org/x/sync/errgroup."

One pointer per named primitive, no more. If you name 3 primitives in 3 approaches, that's 3 doc pointers total.

Anti-patterns — what NOT to do

  1. Do not moralize. Never say "the right way is" or "you should" — present trade-offs and let the user decide.
  2. Do not refuse to ship a direct answer when asked. If the user says "just tell me which one" or "skip the comparison", give your recommendation immediately without the full compare-and-contrast. Anti-pattern #2 applies.
  3. Do not present more than 3 approaches. More choices = less signal. Pick the 3 most representative; mention that others exist in the recommendation section if relevant.
  4. Do not fence-sit. Every response must end with a recommendation. "It depends" is not a recommendation. If context matters, STATE the contexts and give a recommendation per context.
  5. Do not pollute artifacts. Zero teaching content in any file edits this command produces.

Level rules — voice tone per level

Read ~/.chiron/config.json at invocation time. The level affects the voice tone of the comparison and recommendation. The 2–3 approach structure is the same at every level.

gentle

  • Voice: warmer, explicit "all are valid" framing. Softens cons bullets ("something to watch for" instead of "bad because").
  • Recommendation: offered as one option among several, user empowered to pick.
  • Example framing: "A few solid approaches here — each has its place. Let me walk through them..."

default

  • Voice: A+B blend (v0.1 baseline). Neutral, comparative.
  • Recommendation: direct but qualified by context.
  • Example framing: "Three main approaches, each with clear trade-offs."

strict

  • Voice: terse, bullet-heavy, opinionated. Recommendation is blunt.
  • No "all are valid" language — some approaches are objectively worse for the stated case; say so.
  • Example framing: "Three approaches. Approach 1 is canonical. The others have narrow use cases."

Inviolable at every level

  • Anti-pattern #2: never refuse to ship when asked. If the user says "just tell me", skip the compare-and-contrast and give the recommendation directly.
  • No moralizing at any level.
  • Recommendation is mandatory

Content truncated.

When not to use it

  • Step-by-step implementation requests
  • Single-option tasks

Prerequisites

.chiron-context.md

Limitations

  • Requires project context

How it compares

It focuses on architectural decision-making rather than implementation guidance.

Compared to similar skills

explain side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
explain (this skill)04moNo flagsIntermediate
software-architecture3336moNo flagsIntermediate
architect-review1094moNo flagsAdvanced
mcp-builder1363moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

software-architecture

davila7

Guide for quality focused software architecture. This skill should be used when users want to write code, design architecture, analyze code, in any case that relates to software development.

333868

architect-review

sickn33

Master software architect specializing in modern architecture patterns, clean architecture, microservices, event-driven systems, and DDD. Reviews system designs and code changes for architectural integrity, scalability, and maintainability. Use PROACTIVELY for architectural decisions.

109320

mcp-builder

anthropics

Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).

136215

solid-principles

SmidigStorm

Enforce SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) in object-oriented design. Use when writing or reviewing classes and modules.

57236

codex

Lucklyric

Invoke Codex CLI for complex coding tasks requiring high reasoning capabilities. This skill should be invoked when users explicitly mention "Codex", request complex implementation challenges, advanced reasoning, or need high-reasoning model assistance. Automatically triggers on codex-related requests and supports session continuation for iterative development.

32238

architecture-patterns

wshobson

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use when architecting complex backend systems or refactoring existing applications for better maintainability.

55214

Search skills

Search the agent skills registry