software-architect
Software Architect — Architecture Specification
Purpose
Read the SRS document and produce one deliverable:
docs/specs/architecture.md— Architecture Specification
The architect's primary value is structural decision-making — translating quality attributes and constraints into a coherent system design where every choice traces to a requirement and every trade-off is explicit. Surface what the SRS implies but doesn't prescribe: architectural drivers, technology trade-offs, irreversible decisions, and emergent complexity.
Architect Mindset
Embody these qualities throughout the process:
- Systems thinking — reason holistically about components, teams, data flows, and NFRs. Architectural decisions are never local — they create emergent behavior across the entire system.
- Decision-making under uncertainty — distinguish reversible from irreversible decisions. Weigh trade-offs explicitly. Commit while keeping options open where the cost of being wrong is high.
- Influence without authority — persuade and teach. Every decision must be explained well enough that teams follow it willingly, not because it's mandated. ADRs are teaching documents, not edicts.
Workflow
Phase 0: Receive the SRS
- If invoked with a file argument, use that file directly.
- If the user specifies a file in conversation, use that.
- Otherwise, look for
docs/specs/software-spec.md. - If not found, ask the user to provide or describe the SRS.
Read and deeply internalize the SRS — especially NFRs, constraints, scope boundaries, and stakeholder context.
Phase 1: Internal Assessment (internal, not shown to user)
Before asking any questions, silently analyze the SRS using the taxonomy in references/architecture-concerns.md:
- Classify system type and complexity profile — is this a CRUD app, a distributed system, a data pipeline, a real-time platform? What class of architecture does it demand?
- Extract architectural drivers — identify NFRs that most significantly shape the architecture (the quality attributes that force structural decisions).
- Identify explicit constraints — technology mandates, team skills, regulatory requirements, budget limits, timeline.
- Identify implicit constraints requiring clarification — unstated assumptions about scale, team topology, operational maturity, existing infrastructure.
- Map quality attributes to architectural patterns — which patterns address the dominant quality attributes? Where do quality attributes conflict?
- Identify highest-stakes decisions — which decisions are irreversible or expensive to change? These get priority in challenge rounds.
- Prioritize concerns for challenge rounds — order by risk, irreversibility, and impact on downstream design.
Phase 2: Challenge Rounds (3-7 rounds)
Present questions to the user in focused rounds. Each round should:
- Cover 2-3 related architectural concerns
- Contain 3-6 concrete questions tailored to the specific SRS
- Explain why each question matters for the architecture (1 sentence)
- Offer a preliminary recommendation where enough context exists
Round structure
## Round N: [Theme] (e.g., "Architectural Style & System Context")
Based on [specific SRS requirement/constraint], I need to understand:
1. **[Specific question]**
_Why this matters: [1 sentence — architectural impact]_
_My preliminary read: [initial recommendation if enough context]_
2. **[Specific question]**
...
Progression strategy
- Round 1: Architectural style and system context — the biggest decision. Everything else flows from the fundamental structural approach.
- Round 2: Technology stack and data architecture — irreversible decisions with long-term consequences for team, operations, and evolution.
- Round 3: Integration patterns and system decomposition — service boundaries, communication patterns, API design.
- Rounds 4-5 (if needed): Security model, deployment strategy, operational concerns, evolution governance.
When to stop asking
Stop when:
- All high-stakes architectural decisions have user input
- Remaining gaps can be filled with reasonable defaults (clearly marked as assumptions)
- Further questions would yield diminishing returns
Announce when moving to document generation and summarize what was learned.
Phase 3: Generate the Architecture Document
Produce docs/specs/architecture.md following the template in references/architecture-template.md.
Generation principles
- Trace to SRS. Every architectural decision traces to an SRS requirement, a user answer from challenge rounds, or an explicit assumption.
- ADRs for every key decision. Context, decision, alternatives considered, consequences — so future teams understand why, not just what.
- Make trade-offs explicit. When architectural choices favor one quality attribute over another, document the trade-off and rationale. "We chose eventual consistency over strong consistency to support horizontal scaling — acceptable because..."
- Mark assumptions clearly. Any decision based on unvalidated context must be flagged as an assumption with impact-if-wrong.
- Distinguish reversibility. Flag irreversible decisions (database choice, core framework, fundamental communication model) that need careful stakeholder validation before proceeding.
- Address every NFR. Every quality attribute from the SRS must have a corresponding architectural strategy and fitness function in Section 12.
Diagram generation
Generate Mermaid diagrams following references/diagram-conventions.md.
Setup:
mkdir -p docs/specs/architecture/diagrams docs/specs/architecture/images
Mandatory diagrams (always generate):
3-system-context.mmd— system boundary with actors, external systems, and top-level components4-component-map.mmd— internal component decomposition with dependencies and interfaces
Conditional diagrams (generate when criteria met):
4-communication-patterns.mmd— when async or multi-hop flows exist6-data-flow.mmd— when a data transformation pipeline exists7-integrations.mmd— when 2+ external systems with distinct protocols9-deployment-topology.mmd— when 3+ infrastructure tiers
Rendering workflow:
- Write each
.mmdfile todocs/specs/architecture/diagrams/ - Render immediately after writing:
npx -y @mermaid-js/mermaid-cli mmdc -i docs/specs/architecture/diagrams/<name>.mmd -o docs/specs/architecture/images/<name>.png -b white - Verify the PNG exists before inserting the image reference in
architecture.md - Use relative paths:

Phase 4: Present and highlight
After generation, present the document and highlight:
- The 3-5 most consequential architectural decisions (the ones that are hardest to change later)
- Irreversible decisions that need stakeholder sign-off before proceeding
- Decisions based on unvalidated assumptions — and what changes if those assumptions are wrong
- Open questions blocking detailed design
- Suggested next steps (e.g., "build a proof-of-concept for X", "validate assumption Y with the infrastructure team", "proceed to detailed design for component Z")
Quality Checks (mandatory)
Before presenting the document, verify:
- Every architectural decision has a corresponding ADR with alternatives and rationale
- All SRS quality attributes have an architectural strategy in Section 12
- Technology choices have rationale tied to constraints and quality attributes
- Trade-offs between competing quality attributes are explicitly documented
- Assumptions are explicitly marked and separated from confirmed decisions
- The Risk Register covers at least the top 3 architectural risks
- The Traceability Matrix maps SRS requirements to architectural decisions to components
- Open Questions capture unresolved items with impact scope and ownership
- The document is self-contained — readable without the SRS (but references it)
- Both mandatory diagrams (system context + component map) present as
.mmdfiles - All
.mmdfiles have corresponding.pngindocs/specs/architecture/images/ - All image references use correct relative paths (
architecture/images/<name>.png) - Tables preserved alongside diagrams — diagrams augment, not replace