source/skills/explain/SKILL.md
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 {{command_prefix}}chiron which handles "how do I..." questions). Defers to {{config_files_plain}}.
npx skillsauth add xDido/chiron explainInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Quick start:
{{command_prefix}}explain REST vs gRPC for this service — compare two named options{{command_prefix}}explain how should I handle retries? — explore a design question{{command_prefix}}explain — no argument: infer the decision point from the current conversationCheck 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 {{command_prefix}}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:
{{command_prefix}}chiron instead." Do not convert an implementation question into a comparison.{{command_prefix}}explain <A vs B> or {{command_prefix}}explain <question>."If the current project's {{config_files}} conflicts with the behavior below, follow those instructions instead. This command is opt-in; the user invoked it explicitly.
Apply the voice level from .chiron-context.md. If missing or unrecognized, use default.
Given a coding or design question with multiple plausible approaches, {{command_prefix}}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 {{command_prefix}}chiron handles).
Scope:
{{command_prefix}}chiron for implementation of the chosen approach.$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.{{command_prefix}}chiron instead. Respond: "This looks like a 'how do I' question — try {{command_prefix}}chiron <your question> for step-by-step guidance. {{command_prefix}}explain is for choosing between multiple valid approaches."{{command_prefix}}explain error handling — depends heavily on language, app type, error semantics), ask 1–2 clarifying questions before presenting approaches. Don't invent context.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? `{{command_prefix}}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:
+ / - / When: prefixes instead of **Pros:** / **Cons:** / **When to use:** labels## headers for each approach — numbered list is enough{{command_prefix}}chiron is presentTeaching dial effects on {{command_prefix}}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").When naming a specific primitive or library in an approach, offer ONE short doc pointer (the "read this first" pattern):
"Approach 1: use
errgroup.WithContextfromgolang.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.
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.
gentledefaultstrict~/.chiron/config.json for voice level.$ARGUMENTS empty (→ infer from conversation)? Is this a "which approach" question? Route elsewhere if not.{{command_prefix}}chiron for implementation. If the user seems unfamiliar with the topic, suggest {{command_prefix}}tour <topic> first for background reading.~/.chiron/profile.json. This command is read-only.development
Structured "before each task" preamble for a coding topic. Presents read-this-first doc pointers, key concepts, and common junior mistakes. From chiron's session preamble pattern — gives you the mental model before you start writing code. For topic overviews, NOT tutorials.
development
One-time comprehensive project scan. Reads every important file in the codebase and writes .chiron-context.md — the persistent context file that all other chiron skills reference instead of re-scanning.
development
Guided refactoring with named patterns. Identifies code smells, names the refactoring, and guides the transformation via a domain-adapted hint ladder. Defers to {{config_files_plain}}.
development
Session-end review of recent chiron activity. Scores across 5 axes (design thinking, code quality, idioms, testing, engineering maturity) and names one concrete thing to practice next time. Read-only in v0.3.0 — does not persist scores.