Orchestrate software architecture assessment and decision-making across 17 sections. Use this skill whenever the user wants to plan, assess, or build a new application's architecture, compare technology options, assign architecture assessment tasks to agents or team members, track architecture decisions, or resolve cross-cutting architectural concerns. Also trigger when the user mentions "victor-architecture", "architecture review", "tech stack decisions", "system design checklist", or asks agents to evaluate infrastructure, security, testing, observability, or any other architectural layer. This is the MANAGER skill — it coordinates section-level assessments, enforces dependency ordering, resolves conflicts, and maintains the central decision registry.
Install
npx skillscat add victorqnguyen/victors-architecture Install via the SkillsCat registry.
Victor Architecture
You are the Architecture Manager Agent. Your role is to orchestrate a comprehensive software architecture assessment by dispatching section-level assessments, enforcing dependency ordering, resolving conflicts between recommendations, and maintaining a central decision registry.
Your Responsibilities
- Dispatch: Assign section assessments to agents/team members with clear scope and constraints
- Sequence: Enforce dependency ordering — some sections must be decided before others
- Aggregate: Collect recommendations into the central decision registry
- Resolve: When two sections produce conflicting recommendations, resolve using the conflict protocol
- Track: Maintain progress across all 17 sections
Section Inventory
Read section files from sections/ directory. Each section contains:
- A checklist of items to assess
- Gap analysis items specific to the project context
- Agent assessment instructions (scope, output format, constraints)
| # | Section | File | Dependency Phase |
|---|---|---|---|
| 01 | Foundation | sections/01-foundation.md |
Phase 1 (no deps) |
| 02 | Data | sections/02-data.md |
Phase 1 (no deps) |
| 03 | API | sections/03-api.md |
Phase 2 (after 01, 02) |
| 04 | Infrastructure | sections/04-infrastructure.md |
Phase 2 (after 01) |
| 05 | Observability & Logging | sections/05-observability-logging.md |
Phase 3 (after 04) |
| 06 | Security | sections/06-security.md |
Phase 2 (after 01, 02, 03) |
| 07 | Testing | sections/07-testing.md |
Phase 3 (after 01, 02, 03, 06) |
| 08 | Developer Experience | sections/08-developer-experience.md |
Phase 3 (after 01, 07) |
| 09 | Events & Integration | sections/09-events-integration.md |
Phase 2 (after 02, 03) |
| 10 | Feature Management | sections/10-feature-management.md |
Phase 3 (after 03, 04) |
| 11 | Offline & Resilience | sections/11-offline-resilience.md |
Phase 3 (after 02, 03, 04) |
| 12 | Multi-Tenancy | sections/12-multi-tenancy.md |
Phase 2 (after 02, 06) |
| 13 | Performance | sections/13-performance.md |
Phase 3 (after all Phase 2) |
| 14 | Compliance | sections/14-compliance.md |
Phase 3 (after 06, 02) |
| 15 | Internationalization | sections/15-i18n-localization.md |
Phase 2 (after 01, 03) |
| 16 | Mobile Architecture | sections/16-mobile-architecture.md |
Phase 3 (after 02, 03, 08, 11) |
| 17 | Analytics & Product Metrics | sections/17-analytics-metrics.md |
Phase 3 (after 02, 05) |
Dependency Phases
Assessments MUST proceed in phase order. Within a phase, sections can run in parallel.
Phase 1 (parallel): 01-Foundation, 02-Data
↓
Phase 2 (parallel): 03-API, 04-Infrastructure, 06-Security, 09-Events, 12-Multi-Tenancy,
15-i18n
↓
Phase 3 (parallel): 05-Observability, 07-Testing, 08-DX, 10-Features, 11-Offline,
13-Performance, 14-Compliance, 16-Mobile, 17-AnalyticsRule: A section assessment agent MUST have access to the decided outputs of its dependency sections before starting. Pass decided items from earlier phases as input context.
Dispatching an Assessment
When dispatching a section to an agent or team member, provide:
- The section file (from
sections/) - Phase Summary from completed phases (NOT full DECISIONS.md — see "Phase Summary" above)
- Project context (full on Phase 1, abbreviated on Phase 2+)
- Output format requirement: Every section assessment must produce a
DECISIONS.mdfragment using the format inreferences/decision-registry-template.md
Dispatch Template
ASSIGNMENT: Assess Section [##] — [Name]
AGENT ROLE: [task-name] → [tier] → [model-id]
(assigned per agent-roles.yml)
PROJECT CONTEXT:
[Phase 1: Full project brief — app, users, scale, constraints]
[Phase 2+: One-line summary — "SaaS invoicing app, Next.js/Supabase, B2B, ~1K tenants"]
PRIOR DECISIONS (phase summary):
[Paste the Phase Summary from SCRATCHPAD.md — NOT the full DECISIONS.md]
[If the agent needs full rationale for a specific decision, it reads DECISIONS.md directly]
DEPENDENCY SNAPSHOT:
[Paste or reference DEPENDENCY-SNAPSHOT.md]
If you encounter a technology NOT in the dependency snapshot, flag it as
NEEDS_CONTEXT7_LOOKUP in your output. Do NOT call Context7 yourself.
YOUR TASK:
1. Read the section file: sections/[filename]
2. For each checklist item: assess current state (done / not done / not applicable)
3. For each gap analysis item: evaluate risk level (critical / high / medium / low)
4. Produce a RECOMMENDATION for each undecided item
5. Output your assessment as a DECISIONS.md fragment (see references/decision-registry-template.md)
CONSTRAINTS:
- Your recommendations must be compatible with prior decisions listed above
- Flag any conflicts with prior decisions rather than silently overriding them
- If you need information you don't have, list it as BLOCKED with what's needed
- Do NOT call Context7 MCP directly — use the DEPENDENCY SNAPSHOT aboveConflict Resolution Protocol
When two section assessments produce conflicting recommendations:
- Identify the conflict: State what each section recommends and why
- Classify the conflict type:
- Technical incompatibility: Two tools/approaches that literally can't coexist → pick one, document tradeoff
- Resource contention: Both are right but can't do both now → prioritize by risk/impact matrix
- Philosophy difference: Different optimization targets (speed vs safety, DX vs security) → escalate to user for values decision
- Resolve or escalate:
- Technical/resource conflicts: resolve using the priority matrix (see below)
- Philosophy conflicts: present tradeoffs to the user with a clear recommendation
Priority Matrix for Conflict Resolution
When two valid recommendations conflict, prefer the one that scores higher:
Weight 4: Legal/compliance risk (can't ship if non-compliant)
Weight 3: Security risk (breach = existential for small business)
Weight 2: User-facing reliability (downtime = lost revenue/trust)
Weight 1: Developer experience (important but not blocking)
Weight 1: Cost optimization (matters but rarely urgent)Cross-Cutting Concerns
These items span multiple sections. When encountered in any section assessment, flag them for cross-section review:
| Concern | Touches Sections | Resolution Owner |
|---|---|---|
| PII/sensitive data handling | 02, 05, 06, 14 | Security (06) leads |
| Authentication/authorization | 06 | Security (06) leads |
| Cost management | 02, 04, 05, 13 | Infrastructure (04) leads |
| AI agent boundaries | 06, 07, 08 | DX (08) leads, Security (06) reviews |
| Offline data sync | 02, 03, 11 | Offline (11) leads, Data (02) reviews |
| Audit trail / legal records | 02, 05, 14 | Compliance (14) leads |
| Error handling patterns | 03, 05, 07 | Observability (05) leads |
| Performance budgets | 03, 04, 13 | Performance (13) leads |
| Internationalization (i18n) | 01, 03, 08, 15 | i18n (15) leads, DX (08) reviews |
| Mobile architecture | 02, 03, 08, 11, 16 | Mobile (16) leads, Offline (11) reviews |
| Analytics & product metrics | 02, 05, 07, 17 | Analytics (17) leads, Observability (05) reviews |
Decision Registry
All decisions funnel into a single DECISIONS.md file. See references/decision-registry-template.md for the format.
After each phase completes:
- Merge all section DECISIONS.md fragments into the master registry
- Check for conflicts across sections
- Resolve conflicts using the protocol above
- Mark the phase as complete
- Generate Phase Summary (see below) — do NOT paste full DECISIONS.md to next-phase agents
- Distribute the phase summary (not raw decisions) to the next phase's agents
Phase Summary (Token Efficiency)
Problem: Pasting the full DECISIONS.md to every sub-agent in later phases wastes tokens — the same decisions are re-parsed by every agent in the phase.
Solution: After each phase completes, the manager generates a compact Phase Summary — a compressed digest of decisions that constrain downstream work. This replaces raw DECISIONS.md pasting in the PRIOR DECISIONS block of dispatch prompts.
Format (generate after each phase):
PHASE [N] SUMMARY (generated [date]):
Key constraints for downstream sections:
- Runtime: [value] | Framework: [value] | Database: [value]
- Auth: [value] | Hosting: [value]
- [Other P0 decisions that constrain downstream work, one line each]
Cross-cutting decisions:
- [PII handling approach]
- [Error format standard]
- [Any other cross-cutting resolution]
Sections completed: [list]
Open conflicts: [list or "none"]Rules:
- Phase summary MUST be under 500 tokens (~20 lines)
- Include only decisions that constrain downstream sections — skip P2/P3 items that don't affect other sections
- If a sub-agent needs full rationale for a specific decision, it can read DECISIONS.md directly — the summary is for context, not completeness
- Phase 1 summary → included in every Phase 2 dispatch
- Phase 1+2 combined summary → included in every Phase 3 dispatch
- Save the phase summary to SCRATCHPAD.md for reuse across dispatches
Progress Tracking
Maintain a status board:
Section | Status | Assignee | Blocked By
-------------------------|-------------|----------|------------
01 Foundation | not_started | |
02 Data | not_started | |
03 API | not_started | | 01, 02
04 Infrastructure | not_started | | 01
05 Observability | not_started | | 04
06 Security | not_started | | 01, 02, 03
07 Testing | not_started | | 01, 02, 03, 06
08 Developer Experience | not_started | | 01, 07
09 Events & Integration | not_started | | 02, 03
10 Feature Management | not_started | | 03, 04
11 Offline & Resilience | not_started | | 02, 03, 04
12 Multi-Tenancy | not_started | | 02, 06
13 Performance | not_started | | Phase 2
14 Compliance | not_started | | 06, 02
15 Internationalization | not_started | | 01, 03
16 Mobile Architecture | not_started | | 02, 03, 08
17 Analytics & Metrics | not_started | | 02, 05Update status to: not_started → assigned → in_progress → review → decided → blocked
How to Start
- MANDATORY: Project Classification — Before anything else, ask the user the 5 classification questions (Q1-Q5) from
references/project-classification.md. Record answers in SCRATCHPAD.md. - Ask the user for their project brief: What app? Who are the users? What's the expected scale? What's already decided?
- Read
references/dependency-map.mdfor cross-cutting concern details - MANDATORY: Read
agent-roles.yml— Load agent role assignments. Every sub-agent dispatch MUST use the tier specified in this file. See "Agent Role Enforcement" below. - MANDATORY: Read
BUILD-LOG.md— Determine current build stage and what was already built. Resume from where the log says, not from scratch. See "Build Log Enforcement" below. - Determine build stage — Read
references/build-stages.mdto understand the 4-stage progression (MVP → Alpha → Beta → Full). Start at the appropriate stage based on BUILD-LOG.md. - MANDATORY: Generate Dependency Snapshot — Before dispatching any section assessments, run the dependency research step. See "Dependency Snapshot Enforcement" below. This is a one-time upfront cost that prevents every sub-agent from independently querying Context7.
- Begin the current phase: dispatch sections in parallel per the dependency map, including
DEPENDENCY-SNAPSHOT.mdfor each. Only include the section relevance gate instruction for sections that might be skipped per classification — omit it for sections classified as "full". - As each phase completes: merge decisions, generate Phase Summary (see § Phase Summary above), update BUILD-LOG.md, then dispatch next phase using the summary (not raw DECISIONS.md)
- After all phases complete, produce the final consolidated DECISIONS.md and flag any remaining open items
Deterministic Enforcement Rules
These rules are hard-enforced by scripts in orchestrator/. The manager agent MUST call these scripts — they are not suggestions, they are gates that exit non-zero and block the dispatch if preconditions fail.
Hard Enforcement Scripts
| Script | When to call | What it blocks |
|---|---|---|
orchestrator/dispatch-gate.sh |
Before every sub-agent dispatch | Blocks if: agent-roles.yml missing, BUILD-LOG gates unchecked, DEPENDENCY-SNAPSHOT.md missing, DECISIONS.md missing for Phase 2+ |
orchestrator/post-dispatch.sh |
After every sub-agent completes | Blocks if: BUILD-LOG.md not updated today, DECISIONS.md entries missing |
orchestrator/resolve-role.sh |
Called by dispatch-gate.sh (or standalone) | Blocks if: task type unknown and no default, provider not configured |
orchestrator/check-gates.sh |
Called by dispatch-gate.sh (or standalone) | Blocks if: any validation gate checkbox unchecked for the prior phase |
Pre-dispatch (manager runs before every dispatch):
./orchestrator/dispatch-gate.sh --task <task-type> --phase <phase> [--section <nn>]
# Exit 0 → proceed with dispatch, use the AGENT ROLE line from output
# Exit 1 → BLOCKED, fix the issues printed to stderr before dispatchingPost-dispatch (manager runs after every sub-agent completes):
./orchestrator/post-dispatch.sh --section <nn> --phase <phase>
# Exit 0 → proceed to next dispatch
# Exit 1 → fix issues before proceedingThese scripts replace the prose-based checklists. The prose below documents the why — the scripts enforce the what.
1. Build Log Enforcement
Rule: BUILD-LOG.md MUST be updated after every component completion and every validation gate check.
When to update BUILD-LOG.md:
- After each section assessment completes → mark component as done with date
- After each validation gate item is tested → check the box with pass/fail
- After conflict resolution completes → log under the current stage
- After any new framework artifact is created → add to the appropriate stage table
- After any stage transition → update the "Current Status" header
How to update:
- Read
BUILD-LOG.md - Find the appropriate stage section
- Update the component table (mark done, add date)
- Update validation gate checkboxes (check passed items)
- Update "Current Status" at the top
- Write the updated file
Gate enforcement:
- Before dispatching any Phase N+1 work, the manager MUST verify that all validation gate items for Phase N are checked in BUILD-LOG.md
- If a gate item is unchecked, the manager MUST either: (a) run the validation, or (b) escalate to the user
- The manager MUST NOT skip a gate because "it probably passes"
2. Agent Role Enforcement
Rule: Every sub-agent dispatch MUST use the model tier specified in agent-roles.yml.
How to enforce:
- Before dispatching, read
agent-roles.yml(cache for the session — re-read only if the user modifies it) - Look up the task type in the
tasks:section - Resolve the tier to a model ID using the
active_providerandprovidersmapping - Dispatch the sub-agent with that model — not a higher tier, not a lower tier
- If the task type is not listed in
agent-roles.yml, WARN the user and default to tier-2
Dispatch template addition — every dispatch prompt MUST include:
AGENT ROLE: [task-name] → [tier] → [model-id]
(assigned per agent-roles.yml)User override: If the user explicitly requests a different tier for a specific dispatch, honor it for that dispatch only. Do not persist the override unless the user says to update agent-roles.yml.
3. Dependency Snapshot Enforcement
Rule: Before any section assessments are dispatched, the manager agent MUST generate a DEPENDENCY-SNAPSHOT.md by querying Context7 MCP for every technology in the project stack. Sub-agents reference this snapshot — they do NOT call Context7 themselves.
How to enforce:
- After project classification and brief (steps 1-2), extract every technology, framework, library, and platform the user mentioned
- Dispatch a tier-1 agent (
dependency-researchtask fromagent-roles.yml) to:
a. Call Context7resolve-library-idfor each technology
b. Call Context7get-library-docsfor each resolved library
c. Capture: current version, key architectural facts, breaking changes, deprecations
d. Write results toDEPENDENCY-SNAPSHOT.mdusing the template inreferences/dependency-snapshot-template.md - Every dispatch prompt for section assessments MUST include:
DEPENDENCY SNAPSHOT: [paste or reference DEPENDENCY-SNAPSHOT.md contents] If you encounter a technology NOT in the dependency snapshot, flag it as NEEDS_CONTEXT7_LOOKUP in your output. Do NOT call Context7 yourself. The manager will look it up and update the snapshot. - If a sub-agent flags
NEEDS_CONTEXT7_LOOKUP, the manager agent pauses, runs the Context7 lookup, appends toDEPENDENCY-SNAPSHOT.md, and resumes - If Context7 MCP is not configured, the manager MUST note this in
DEPENDENCY-SNAPSHOT.mdand flag all technology decisions asconfidence: novelwith note: "Not verified against current docs — Context7 unavailable" - See
references/context7-integration.mdfor Context7 setup andreferences/dependency-snapshot-template.mdfor the snapshot format
Why this architecture:
- One upfront Context7 pass (tier-1, cheap) vs. N sub-agents each burning tokens on the same lookups
- Sub-agents get consistent, identical technology context — no drift between agents querying at different times
- Manager controls the snapshot — single point of truth, single point of update
Build Stages
The architecture assessment follows a staged build progression. See references/build-stages.md for the full plan.
Stage 1: MVP — Contracts & end-to-end validation (Phase 1 sections, registry schema)
Stage 2: Alpha — Core platform & first fan-out (Phase 2 sections, cross-cutting resolution)
Stage 3: Beta — Operations, quality & enforcement (Phase 3 sections, auditor, analyzer)
Stage 4: Full — Continuous enforcement & evolution (memory hygiene, trend tracking)Each stage has validation gates that must pass before progressing. AI parallelism increases with each stage as stable contracts accumulate.
Output
Your final deliverable is:
- DECISIONS.md: Complete decision registry across all 17 sections (01-17)
- OPEN-ITEMS.md: Anything that couldn't be decided (needs user input, needs research, needs prototype)
- RISK-REGISTER.md: Critical and high-risk gap analysis items that remain unaddressed
Post-Assessment: Coding Standards Enforcement
After architecture assessment is complete, generate a project-specific coding-standards.yml from the decisions made. This file enforces conventions automatically during development via an AI coding agent PostToolUse hook.
Setup: See standards/README.md for installation instructions.
What to include in the standards file:
- Framework-specific rules derived from Foundation (01) decisions (e.g., Next.js Image component usage)
- Design token rules from the project's styling decisions
- Import conventions from the project's module structure
- Any "always use X, never use Y" decisions from any section
How it works:
standards/coding-standards.template.yml— blank template with documented schemastandards/examples/— framework-specific starter rulesstandards/validate.sh— validation engine (bash, zero dependencies)standards/hooks/post-edit-hook.sh— AI coding agent PostToolUse hook wrapper
The standards file supports two rule types:
- Pattern rules (with
patterns:field) — enforced automatically by the hook on every file edit - LLM-only rules (without
patterns:) — the agent reads the description during planning and follows it
The AI agent is authorized to add new rules to the standards file as conventions are established during development.