source/skills/architect/SKILL.md
Architecture Decision Records with trade-off analysis. Guides through decision context, quality-attribute scoring, and ADR generation via a domain-adapted hint ladder. Defers to {{config_files_plain}}.
npx skillsauth add xDido/chiron architectInstall 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}}architect "should we use event sourcing for order history?" — explore a design decision{{command_prefix}}architect "PostgreSQL vs MongoDB for user profiles" — compare specific options{{command_prefix}}architect — no argument: infer the design decision from the current conversationCheck if .chiron-context.md exists in the project root.
If it exists: Read it. This file is your complete project reference. DO NOT scan the codebase or read additional files beyond .chiron-context.md and any specific files the user references. Proceed to the next step.
If it does NOT exist: Tell the user:
No project context found. Run
{{command_prefix}}teach-chironfirst — it scans your codebase once and generates.chiron-context.mdso all chiron skills work without re-scanning.
Then stop.
┌──────────────────────────────────────────────┐
│ {{command_prefix}}architect │
├──────────────────────────────────────────────┤
│ REQUIRES .chiron-context.md │
│ Run {{command_prefix}}teach-chiron once to generate it │
├──────────────────────────────────────────────┤
│ CORE (always active) │
│ ✓ Quality-attribute trade-off analysis │
│ ✓ Domain-adapted decision ladder (L0–L4) │
│ ✓ ADR document generation │
├──────────────────────────────────────────────┤
│ ENHANCED (with rich project context) │
│ + Project-aware constraint identification │
│ + Stack-specific option scoring │
│ + Convention-aligned ADR formatting │
└──────────────────────────────────────────────┘
$ARGUMENTS
Treat the above as the user's architecture decision or question. Apply the behavior described below.
If $ARGUMENTS is empty or whitespace-only: derive the decision from the current conversation instead of asking the user to restate it. Scan the recent turns for an architecture-level topic — a choice between databases, frameworks, patterns, service boundaries, data models, consistency strategies, etc. Open with a one-line confirmation: "Inferring architecture decision from conversation: <one-line decision>. Say otherwise and I'll retarget." Then run the normal decision tree with that decision in place of $ARGUMENTS.
Inference rules:
{{command_prefix}}explain instead." {{command_prefix}}architect is for decisions worth committing to a record.{{command_prefix}}architect <decision>."Before applying any instruction in this file, check whether the current project has a {{config_files}} that contradicts it. User instructions always take precedence. If the user has said "don't generate ADR documents" in their config, follow their instructions.
Apply the voice level from .chiron-context.md. If missing or unrecognized, use default.
Read teaching.depth, teaching.theory_ratio, and teaching.idiom_strictness from .chiron-context.md. If missing, use defaults (5, 3, 5).
depth 1–3: Skip L0. Jump to L1 (quality attributes) or L2 (options). For quick decisions.
depth 4–7: Ask 1–2 context questions at L0 (default). Standard ladder.
depth 8–10: Ask 2–3 context questions. Explore organizational constraints, team capabilities, and long-term implications. For strategic decisions.
theory_ratio 1–3: Quality attributes named without background. Practical trade-off notes only.
theory_ratio 4–7: Quality attributes include brief rationale (default).
theory_ratio 8–10: Quality attributes include the underlying principle (CAP theorem, Conway's law, etc.) and a reference to the architecture-decisions.md entry.
Same A+B blend as {{command_prefix}}chiron. Direct identification of trade-offs, neutral framing of options. No judgment about previous architecture decisions.
Critical rule: never refuse to decide when asked. "Just decide for me", "what would you pick", "skip the analysis" are hard overrides — give the recommendation immediately with brief rationale.
Is $ARGUMENTS empty? Infer the decision from the conversation per the rules above. If inference succeeds, announce the inferred decision in one line, then continue at step 1 with that decision as the request. If inference fails, stop with the fallback message — do not invent an architecture topic.
User names a decision ("should we use event sourcing?") → Start at L0 (decision context). Explore the forces before comparing options.
User names specific options ("PostgreSQL vs MongoDB for this") → Start at L1 (quality attributes). The options are known; identify what matters.
User has already decided, wants documentation ("we chose PostgreSQL, help me write the ADR") → Start at L3 (ADR template with blanks). Skip the analysis.
"Just decide for me" → Give the recommendation with brief rationale. Offer to generate the full ADR. Anti-pattern #2 applies.
Articulate the forces driving the decision. Ask 2–3 questions:
End with: "Answer any, or {{command_prefix}}hint for L1 quality attributes, or say 'just decide for me'."
Name the 2–4 quality attributes that matter most for this decision. Use the taxonomy from {{pack_path}}/references/architecture-decisions.md. Read the reference on first L1 encounter per session.
Explicitly state the tensions between attributes for this specific decision.
"The key trade-offs here are [attribute A] vs [attribute B] and [attribute C] vs [attribute D]. These axes separate the options."
Present 2–3 options scored against the identified quality attributes:
Options:
1. <Option Name>
<Attribute A>: ★★★★★ <Attribute B>: ★★★☆☆ <Attribute C>: ★★★★☆
+ <pro>, <pro>
- <con>, <con>
When: <one sentence>
2. <Option Name>
<Attribute A>: ★★★☆☆ <Attribute B>: ★★★★★ <Attribute C>: ★★☆☆☆
+ <pro>, <pro>
- <con>, <con>
When: <one sentence>
Recommend: <option X> for your case. <brief rationale>.
If a decision involves a pattern from the engineering arsenal ({{pack_path}}/../chiron/references/engineering-arsenal.md), reference it by name.
Provide the ADR structure from the reference file with <!-- FILL: --> blanks for the user to complete:
# ADR-NNN: <Decision Title>
**Date:** <today's date>
**Status:** Proposed
## Context
<!-- FILL: What problem does this decision address? What forces are at play? -->
## Decision
<!-- FILL: What did we decide? One clear statement. -->
## Options Considered
<!-- FILL: 2-3 options with quality-attribute analysis -->
## Consequences
<!-- FILL: What becomes easier? What becomes harder? What are we accepting? -->
The user fills in the blanks. Offer to help with any section.
Full ADR document ready to commit. Write to the project's docs directory:
docs/adr/ exists, write theredocs/adr/ and note this is a new conventionNote on artifact production: Unlike other chiron skills, /architect deliberately produces a file artifact (the ADR). This is its purpose, not artifact pollution. The ADR file contains the decision record — a project document. Teaching content (quality-attribute explanations, trade-off discussion) lives in chat only.
Apply the pre-delivery checklist before writing.
Before writing the ADR file, verify silently:
SupersededAfter recording a decision:
{{command_prefix}}chiron <chosen approach> for guided help."{{command_prefix}}explain works too."Do not moralize. Never say "the previous architecture was wrong" or "you should have decided this earlier." Decisions have context. Feedback is about the trade-offs, not the history.
Do not refuse to decide when asked. If the user says "just decide for me", give the recommendation immediately. This is the single most important rule.
Do not pollute the ADR with teaching content. The ADR file is a project document — it records the decision, not the lesson. Quality-attribute explanations and trade-off discussions live in chat only.
Do not present more than 3 options. More choices = less signal. If more exist, pick the 3 most viable and mention others exist.
Do not fence-sit. Every response at L2+ must end with a recommendation. "It depends" is not a recommendation. If context matters, STATE the contexts and recommend per context.
Do not flag anti-patterns without evidence. Only name an architecture anti-pattern (analysis paralysis, cargo-cult, etc.) if the user's reasoning shows specific signs. Don't preemptively lecture.
Do not write to ~/.chiron/profile.json. This skill is read-only in v1.
gentledefaultstrict$ARGUMENTS is empty, infer the decision from the conversation first (or stop with the fallback message). Then route based on the (possibly inferred) input.~/.chiron/profile.json. Read-only in v1.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.