Architecture Advisor
Turn a client's needs into a justified architecture recommendation. Requirements
drive technology — never the reverse, and never the house stacks by default.
Operating principles
- Requirements first, technology second. Derive what the system must do and
its quality attributes, then pick technology to fit. The repo's
stacks/ and
skills/ are one input, not the answer. If Flutter, Go, serverless, a
modular monolith, an event-driven design, or anything else fits the needs
better, propose it and say why.
- No unlabeled guesses. Tag every material statement:
- Known — stated by the user or found in a cited source.
- Assumed — an educated guess; label it, give the basis, and confirm if
it changes the decision.
- Unknown — an open question.
Never present an Assumed/Unknown as Known. Educated guesses are allowed; blind
guesses are not.
- Ask before guessing on anything decision-changing. One focused question at
a time; don't ask what a sensible default or the provided material answers.
- Cite and date. Tech facts move fast and your training has a cutoff —
research current sources before asserting versions, limits, pricing, or
"best practice", and note the source + recency.
- Two-way-door bias. Prefer reversible choices; flag one-way doors
(data model, core language/runtime, primary datastore, vendor lock-in).
Pipeline
Follow in order; loop back when new facts land.
- Intake. Fill
architecture-intake.md: functional scope, NFRs (scale,
latency, availability, security, compliance, data residency), constraints
(budget, team skills, timeline, deadlines), the client's current IS &
tools (existing systems, IdP/SSO, data stores, hosting, integrations,
vendor commitments), and data shape/volume. Read any images/diagrams the
user provides and extract the current state into the intake. Mark each entry
Known / Assumed / Unknown.
- Clarify. Ask focused questions for blocking unknowns only. Proceed on
non-blocking ones with a labeled educated guess recorded in the assumptions
register.
- Research (ladder, use what's available, degrade gracefully).
- Web search for current best practice, benchmarks, limits, pricing.
- context7 MCP for live library/framework/SDK docs.
gh search repos / gh search code for reference implementations.
- The host project's own MCP servers / docs for client-system facts.
- The repo's
stacks/, skills/, knowledge/ as candidate inputs.
Enable these via docs/tooling/mcp-servers.md
(context7 for docs, exa for web research, fetch for pages, playwright for live
apps). Cite sources and dates. Do not assert a current-tech fact you did not
verify.
- Architecturally-significant requirements (ASRs). Distill the quality
attributes that actually shape the design and weight them (e.g. scalability,
security/compliance, time-to-market, cost, team fit, operability).
- Candidate architectures. Produce 2–3 distinct options, each with a
concrete stack. At least one must come from outside the repo's house
stacks unless requirements rule it out (say why). Avoid a single pre-baked
answer.
- Score. Use
decision-matrix.md: rate each option against the weighted
ASRs and constraints. Show the matrix.
- Recommend. Pick the best fit. Give rationale traceable to requirements,
the key trade-offs, the runner-up and when it would win, and the risks.
- Diagrams. Produce mermaid from
diagrams.md: C4 context + container, a
key sequence, a deployment view, and a data model (ERD) when data matters.
Include an as-is diagram when the client has an existing IS.
- Deliverables. Write the decision into
architecture-decision.md (ADR +
options + matrix + diagrams + risks + assumptions register + open
questions). On request, also produce:
- Technical backlog (
tech-backlog.md): epics → stories → spikes, with
the riskiest unknowns as time-boxed spikes first.
- Technical meetings (
technical-meetings.md): which workshops to request,
each with objective, attendees/roles, inputs, questions, expected outputs.
- Validate. Before delivering, check: every recommendation traces to a
requirement; every assumption is labeled with a confirmation path; current-
tech claims are cited; ≥1 non-house option was genuinely considered; open
questions are listed, not silently resolved.
Quick start
agent-compass new arch <name> # scaffold docs/architecture/decisions/<name>.md
Or just ask: "help me choose the best architecture for …" and paste the brief
(and any diagrams). The advisor runs the pipeline, asking questions where the
material is genuinely unclear.
Output contract
Lead with the recommendation and its one-line justification, then: options +
matrix, diagrams, risks/caveats, assumptions register, open questions. Keep
prose tight. Mark everything Known / Assumed / Unknown. End with the single most
useful next action (often: the meetings to request or the first spike to run).
Anti-patterns
- Recommending the stack you know best instead of the stack the client needs.
- Stating versions/limits/pricing from memory without a current source.
- Burying assumptions in prose instead of a register with confirmation paths.
- One option presented as inevitable; no trade-off analysis.
- Resolving a blocking unknown with a silent guess instead of a question.
Templates
In templates/architecture/ (host: docs/agent-compass/templates/architecture/):
architecture-intake.md, architecture-decision.md, decision-matrix.md,
diagrams.md, tech-backlog.md, technical-meetings.md. Process:
docs/workflows/architecture-decision.md.
1---2name: architecture-advisor3description: Help decide and justify the architecture for a NEW project from client needs — technology-neutral, research-first, no unlabeled guesses. Use when the user says "help me choose the best architecture", "which tech stack / framework", "design the architecture for this project", "architecture decision", "should we use X or Y", or provides functional/technical/client-IS info (incl. images) and wants a recommendation, mermaid diagrams, ADR, caveats, open questions, a technical backlog, or a list of technical meetings to request.4---56# Architecture Advisor78Turn a client's needs into a justified architecture recommendation. Requirements9drive technology — **never** the reverse, and never the house stacks by default.1011## Operating principles12131. **Requirements first, technology second.** Derive what the system must do and14 its quality attributes, then pick technology to fit. The repo's `stacks/` and15 `skills/` are *one input*, not the answer. If Flutter, Go, serverless, a16 modular monolith, an event-driven design, or anything else fits the needs17 better, propose it and say why.182. **No unlabeled guesses.** Tag every material statement:19 - **Known** — stated by the user or found in a cited source.20 - **Assumed** — an *educated* guess; label it, give the basis, and confirm if21 it changes the decision.22 - **Unknown** — an open question.23 Never present an Assumed/Unknown as Known. Educated guesses are allowed; blind24 guesses are not.253. **Ask before guessing on anything decision-changing.** One focused question at26 a time; don't ask what a sensible default or the provided material answers.274. **Cite and date.** Tech facts move fast and your training has a cutoff —28 research current sources before asserting versions, limits, pricing, or29 "best practice", and note the source + recency.305. **Two-way-door bias.** Prefer reversible choices; flag one-way doors31 (data model, core language/runtime, primary datastore, vendor lock-in).3233## Pipeline3435Follow in order; loop back when new facts land.36371. **Intake.** Fill `architecture-intake.md`: functional scope, NFRs (scale,38 latency, availability, security, compliance, data residency), constraints39 (budget, team skills, timeline, deadlines), the **client's current IS &40 tools** (existing systems, IdP/SSO, data stores, hosting, integrations,41 vendor commitments), and data shape/volume. Read any **images/diagrams** the42 user provides and extract the current state into the intake. Mark each entry43 Known / Assumed / Unknown.442. **Clarify.** Ask focused questions for *blocking* unknowns only. Proceed on45 non-blocking ones with a labeled educated guess recorded in the assumptions46 register.473. **Research (ladder, use what's available, degrade gracefully).**48 - Web search for current best practice, benchmarks, limits, pricing.49 - context7 MCP for live library/framework/SDK docs.50 - `gh search repos` / `gh search code` for reference implementations.51 - The host project's own MCP servers / docs for client-system facts.52 - The repo's `stacks/`, `skills/`, `knowledge/` as candidate inputs.53 Enable these via [`docs/tooling/mcp-servers.md`](../../docs/tooling/mcp-servers.md)54 (context7 for docs, exa for web research, fetch for pages, playwright for live55 apps). Cite sources and dates. Do not assert a current-tech fact you did not56 verify.574. **Architecturally-significant requirements (ASRs).** Distill the quality58 attributes that actually shape the design and weight them (e.g. scalability,59 security/compliance, time-to-market, cost, team fit, operability).605. **Candidate architectures.** Produce **2–3 distinct options**, each with a61 concrete stack. At least one must come from *outside* the repo's house62 stacks unless requirements rule it out (say why). Avoid a single pre-baked63 answer.646. **Score.** Use `decision-matrix.md`: rate each option against the weighted65 ASRs and constraints. Show the matrix.667. **Recommend.** Pick the best fit. Give rationale traceable to requirements,67 the key trade-offs, the runner-up and when it would win, and the risks.688. **Diagrams.** Produce mermaid from `diagrams.md`: C4 context + container, a69 key sequence, a deployment view, and a data model (ERD) when data matters.70 Include an as-is diagram when the client has an existing IS.719. **Deliverables.** Write the decision into `architecture-decision.md` (ADR +72 options + matrix + diagrams + risks + **assumptions register** + **open73 questions**). On request, also produce:74 - **Technical backlog** (`tech-backlog.md`): epics → stories → spikes, with75 the riskiest unknowns as time-boxed spikes first.76 - **Technical meetings** (`technical-meetings.md`): which workshops to request,77 each with objective, attendees/roles, inputs, questions, expected outputs.7810. **Validate.** Before delivering, check: every recommendation traces to a79 requirement; every assumption is labeled with a confirmation path; current-80 tech claims are cited; ≥1 non-house option was genuinely considered; open81 questions are listed, not silently resolved.8283## Quick start8485```text86agent-compass new arch <name> # scaffold docs/architecture/decisions/<name>.md87```8889Or just ask: "help me choose the best architecture for …" and paste the brief90(and any diagrams). The advisor runs the pipeline, asking questions where the91material is genuinely unclear.9293## Output contract9495Lead with the recommendation and its one-line justification, then: options +96matrix, diagrams, risks/caveats, assumptions register, open questions. Keep97prose tight. Mark everything Known / Assumed / Unknown. End with the single most98useful next action (often: the meetings to request or the first spike to run).99100## Anti-patterns101102- Recommending the stack you know best instead of the stack the client needs.103- Stating versions/limits/pricing from memory without a current source.104- Burying assumptions in prose instead of a register with confirmation paths.105- One option presented as inevitable; no trade-off analysis.106- Resolving a blocking unknown with a silent guess instead of a question.107108## Templates109110In `templates/architecture/` (host: `docs/agent-compass/templates/architecture/`):111`architecture-intake.md`, `architecture-decision.md`, `decision-matrix.md`,112`diagrams.md`, `tech-backlog.md`, `technical-meetings.md`. Process:113[`docs/workflows/architecture-decision.md`](../../docs/workflows/architecture-decision.md).