--- name: architect-analyze description: Use when validating generated or refined architecture artifacts, before feature development, during architecture review, or periodically to detect ADR↔AD drift, completeness gaps, and quality issues. disable-model-invocation: true --- # architect-analyze ## What this skill does Performs a **read-only** architecture consistency analysis between ADRs (Architecture Decision Records) and AD (Architecture Description). It identifies discrepancies, quality issues, and gaps without modifying any files. Key analysis dimensions: 1. **ADR Quality** — Completeness, clarity, and standards compliance 2. **ADR to AD Consistency** — Bidirectional drift detection 3. **Internal Consistency** — Cross-artifact coherence 4. **Staleness Detection** — Outdated references and placeholders This skill validates architecture artifacts for consistency, completeness, and quality. ## When to use - After `/architect-implement` — Validate generated AD.md - After `/architect-clarify` — Verify ADR refinements - Before feature development — Ensure architecture is solid - During architecture review — Quality gate for architecture docs - Periodically — Detect drift as the codebase evolves Do **not** use when no architecture artifacts exist; use `/architect-init` or `/architect-specify` first. Do **not** use to create architecture — this is analysis-only. ## Process ### User Input Consider the user input before proceeding (if not empty): ```text $ARGUMENTS ``` Examples: - `"system"` — Focus on root-level AD.md and adr/ directory only - `"feature auth"` — Focus on specific feature architecture - `"adrs"` — Focus on ADR quality and inter-ADR consistency - `"views"` — Focus on AD.md view completeness and internal consistency - Empty input — Full analysis of all architecture artifacts ### Goal Perform read-only architecture consistency analysis. Identify discrepancies, quality issues, and gaps without modifying any files. ### Operating Constraints **STRICTLY READ-ONLY**: Do not modify any files. Output a structured analysis report. Offer remediation suggestions (user must explicitly approve before any follow-up editing commands would be invoked manually). **Constitution Authority**: The project constitution (`memory/constitution.md`) is **non-negotiable** within this analysis scope. Constitution conflicts are automatically CRITICAL. ### Role & Context Act as an **Architecture Analyst** validating architecture documentation quality: - Validate ADR completeness against MADR standards - Detect drift between ADRs and AD.md - Identify internal inconsistencies across artifacts - Flag staleness and quality issues Architecture document hierarchy: | Document | Location | Purpose | |----------|----------|---------| | `AD.md` | Project root | Full Architecture Description (Rozanski & Woods) | | `adr/` | `{REPO_ROOT}/docs/adlc/memory/` (legacy `.adlc/memory/` fallback) | System-level ADRs (individual files) | | `constitution.md` | `{REPO_ROOT}/docs/adlc/memory/` (legacy `.adlc/memory/` fallback) | Governance principles and constraints | ### Outline 1. **Initialize Analysis Context** — Load architecture artifacts 2. **Determine Analysis Scope** — System, feature, or full 3. **Execute Detection Passes** — A through G 4. **Assign Severities** — CRITICAL/HIGH/MEDIUM/LOW 5. **Generate Report** — Structured markdown analysis 6. **Provide Next Actions** — Remediation suggestions ### Phase 1: Initialize Analysis Context **Objective**: Load all architecture artifacts for analysis 1. **Run Setup Script**: - Execute `{REPO_ROOT}/.agents/skills/architect-clarify/scripts/bash/setup-architect.sh` (Requires the `architect-clarify` skill: `adlc-cli skills add tikalk/adlc-team-skills --skill architect-clarify`). from repo root - Parse JSON for file paths and existence status 2. **Load System-Level Artifacts**: - Read `AD.md` (project root) if exists - Read ADRs from all locations (priority order): 1. `{REPO_ROOT}/docs/adlc/memory/adr/adr.md` (canonical — Accepted ADRs; legacy `{REPO_ROOT}/.adlc/memory/adr/adr.md` fallback per ADR-401 dual-read) 2. `{REPO_ROOT}/.adlc/drafts/adr/` (working copy — Proposed/Discovered, individual file format) - Read `{REPO_ROOT}/docs/adlc/memory/constitution.md` (legacy `{REPO_ROOT}/.adlc/memory/constitution.md` fallback) if either exists 3. **Load Feature-Level Artifacts** (if analyzing features): - Scan `specs/*/AD.md` for feature architectures - Scan `specs/*/adr/ADR-*.md` for feature ADRs 4. **Build Artifact Inventory**: | Artifact | Path | Status | |----------|------|--------| | System AD | `AD.md` | Found/Missing | | System ADRs (canonical) | `{REPO_ROOT}/docs/adlc/memory/adr/adr.md` (legacy `.adlc/memory/adr/adr.md` fallback) | Found/Missing | | System ADRs (drafts) | `{REPO_ROOT}/.adlc/drafts/adr/` | Found/Missing | | Constitution | `{REPO_ROOT}/docs/adlc/memory/constitution.md` (legacy `.adlc/memory/constitution.md` fallback) | Found/Missing | | Feature ADs | `specs/*/AD.md` | Count: N | | Feature ADRs | `specs/*/adr/` | Count: N | ### Phase 2: Determine Analysis Scope **Objective**: Focus analysis based on user input | User Input | Scope | Artifacts Analyzed | |------------|-------|-------------------| | (empty) | Full | All system artifacts | | `"system"` | System only | AD.md, system ADR locations | | `"adrs"` | ADR quality | All ADR files | | `"views"` | AD completeness | AD.md | ### Phase 3: Execute Detection Passes Focus on high-signal findings. Limit to **50 findings total**; aggregate remainder in overflow summary. #### Pass A: ADR Quality Analysis **Objective**: Validate each ADR against MADR standards **Quality Dimensions**: | Dimension | Check | Severity if Missing | |-----------|-------|---------------------| | Context | Problem clearly stated, forces documented | MEDIUM | | Decision | Actionable, testable decision statement | HIGH | | Positive Consequences | Benefits documented | MEDIUM | | Negative Consequences | Trade-offs acknowledged | HIGH | | Risks | Identified with mitigations | MEDIUM | | Alternatives | At least 2 options with neutral trade-offs | HIGH | | Status | Valid status (Proposed/Accepted/Deprecated/Superseded/Discovered) | LOW | | Constitution Alignment | MUST principles complied with | CRITICAL | **ADR Quality Checklist**: For each ADR, verify: - [ ] Clear context explaining the problem/opportunity - [ ] Explicit, actionable decision statement - [ ] Positive AND negative consequences documented - [ ] **Common Alternatives** with neutral trade-offs (not "Rejected because") - [ ] Risks identified with mitigation strategies - [ ] Valid status value - [ ] No conflicts with constitution MUST principles #### Pass B: Inter-ADR Consistency **Objective**: Detect conflicts and inconsistencies between ADRs **Checks**: 1. **Conflicting Decisions**: - ADRs that contradict each other (e.g., one chooses PostgreSQL, another assumes MongoDB) - Technology stack incoherence 2. **Missing Dependencies**: - ADRs that should reference each other but don't - Implicit assumptions about other decisions 3. **Terminology Drift**: - Same concept named differently across ADRs - Inconsistent component naming 4. **Technology Stack Coherence**: - Frontend/backend/infrastructure choices align - No conflicting framework decisions #### Pass C: ADR to AD Drift (Forward Sync) **Objective**: Detect ADR decisions not reflected in AD.md **Checks**: | ADR Element | Expected in AD.md | View/Section | |-------------|-------------------|--------------| | System architecture style | Context View | 3.1 | | Database choice | Information View | 3.3 | | API style | Functional View | 3.2 | | Authentication approach | Security Perspective | 4.1 | | Deployment platform | Deployment View | 3.6 | | CI/CD approach | Development View | 3.5 | | Scaling strategy | Performance Perspective | 4.2 | | Caching strategy | Information View | 3.3 | **Detection Logic**: For each ADR: 1. Identify the ADR's primary view impact (use mapping table above) 2. Search AD.md for reflection of that decision 3. Flag if decision is absent or contradicted #### Pass D: AD to ADR Drift (Backward Sync) **Objective**: Detect AD.md elements without supporting ADRs **Checks**: 1. **Components Without ADRs**: - Major components shown in Functional View without decision rationale - External dependencies in Context View without ADR justification 2. **Patterns Without Rationale**: - Architectural patterns described but not explained via ADR - Technology choices embedded in views without supporting decision 3. **Infrastructure Decisions**: - Deployment topology without infrastructure ADR - Scaling approach without performance ADR #### Pass E: AD Internal Consistency **Objective**: Validate AD.md coherence across views **Checks**: 1. **Cross-View Consistency**: - Same components named identically across all views - Data entities in Information View match Functional View references - Deployment nodes consistent with Functional components 2. **Diagram-Text Alignment**: - Mermaid diagrams match prose descriptions - No components in diagrams missing from text - No components in text missing from diagrams 3. **View Completeness**: - Required sections present (Introduction, Stakeholders, Views, Perspectives) - Core views included (Context, Functional, Information, Development, Deployment) - Perspectives addressed (Security, Performance) 4. **Diagram Syntax Validation**: - Mermaid syntax valid (no broken diagrams) - Consistent styling across diagrams 5. **View File Consistency** (DAG State Validation): - Check if `.adlc/architect/state.json` exists and reports views as "completed" - Check if `docs/adlc/architect/views/` (legacy `.adlc/architect/views/` fallback) directory exists - Verify that for each "completed" view in state.json, a corresponding file exists on disk - **Flag as HIGH severity if**: - state.json reports views "completed" but views/ directory is empty - View files exist but are under 20 lines (placeholder/skeleton content) - View files cannot be read (corrupted/missing permissions) - **Report format**: ``` DAG State Inconsistency Detected: - State reports: [N] views completed - Files on disk: [M] view files found - Missing files: [list of missing views] - Recommendation: Regenerate views or reset state.json ``` 6. **Technology Neutrality** (Functional View): - Scan Functional View (§3.2) for product/vendor names in element descriptions and Mermaid diagrams - **Architectural roles** (acceptable): Database, Object Storage, Cache, Message Queue, AI Gateway, Workflow Runtime, App Shell, API Gateway, Authentication Service, etc. - **Product names** (flag as MEDIUM): PostgreSQL, Neon, Vercel, Next.js, Redis, MongoDB, AWS, Azure, S3, etc. - **Severity**: MEDIUM — Not blocking but indicates abstraction violation - **Note**: ADR Traceability sections may reference products (that's acceptable); only flag element descriptions and diagram labels 7. **Functional-Development Mapping**: - Verify Development View (§3.5) contains a Technology Stack Mapping table (§3.5.2) - Check that every element in Functional View's element table (§3.2.1) has at least one corresponding entry in the mapping table - N:1 mappings (multiple functional elements → one technology) are acceptable - **Severity**: MEDIUM if elements are missing; LOW if mapping table is absent - **Cross-check**: Technology Architecture diagram (§3.5.3) should mirror Functional View diagram (§3.2.2) structure #### Pass F: Staleness Detection **Objective**: Identify outdated references and placeholders **Checks**: 1. **Deprecated ADRs Still Referenced**: - AD.md references ADRs with status "Deprecated" - Superseded decisions still implemented 2. **Placeholder Detection**: - `[TODO]`, `[TBD]`, `[PLACEHOLDER]` markers - `[SYSTEM_NAME]`, `[STAKEHOLDER_*]` unfilled - `???`, `...`, `` patterns 3. **Date Inconsistencies**: - ADR dates significantly older than AD last-updated - Feature architecture out of sync with system architecture 4. **Orphaned References**: - ADR IDs mentioned but ADR doesn't exist - Component names referenced but not defined #### Pass G: Feature-System Alignment (if feature architecture exists) **Objective**: Validate feature architecture fits within system boundaries **Checks**: 1. **Feature ADR Alignment**: - Feature ADRs marked "Aligns with ADR-XXX" reference valid system ADRs - No VIOLATION flags without documented justification - Feature decisions consistent with system constraints 2. **Boundary Compliance**: - Feature components fit within system Functional View structure - Feature data entities align with system Information View - Feature doesn't exceed system scope (Context View) 3. **Integration Points**: - Feature-to-system interfaces documented - Data flow across feature boundary consistent ### Phase 4: Severity Assignment **Severity Criteria**: | Severity | Criteria | Examples | |----------|----------|----------| | **CRITICAL** | Constitution violation, security/data integrity gap, missing core ADR | ADR violates MUST principle, major component undocumented | | **HIGH** | ADR to AD drift affecting implementation, conflicting ADRs, missing alternatives | Database choice in ADR but wrong DB in AD, two ADRs conflict | | **MEDIUM** | Incomplete consequences, staleness, terminology drift, missing optional views | ADR lacks negative consequences, TODO placeholders | | **LOW** | Style improvements, minor documentation gaps, optional details | Inconsistent formatting, minor wording issues | ### Phase 5: Generate Analysis Report **Output Format**: ```markdown ## Architecture Analysis Report ### Analysis Summary | Attribute | Value | |-----------|-------| | **Mode** | [Full/System/Feature/ADRs/Views] | | **Scope** | [Description of what was analyzed] | | **Files Analyzed** | [List of files] | | **Analysis Date** | [Current date] | ### Findings | ID | Pass | Severity | Location | Summary | Recommendation | |----|------|----------|----------|---------|----------------| | A1 | ADR Quality | MEDIUM | ADR-003 | Missing negative consequences | Add trade-offs section | | B1 | Inter-ADR | HIGH | ADR-002, ADR-005 | Conflicting database choices | Resolve PostgreSQL vs MongoDB conflict | | C1 | ADR->AD Drift | HIGH | ADR-005 | Caching decision not in Information View | Update AD.md 3.3 | | D1 | AD->ADR Drift | HIGH | AD.md:3.2 | Redis component has no ADR | Create ADR for cache choice | | E1 | AD Consistency | MEDIUM | AD.md:3.2/3.6 | Component naming mismatch | Standardize "AuthService" naming | | F1 | Staleness | LOW | AD.md:3.1 | [SYSTEM_NAME] placeholder | Fill in system name | | G1 | Feature Align | HIGH | specs/auth/adr.md | VIOLATION flag unresolved | Document override justification | ### Coverage Metrics | Metric | System | Feature: auth | Feature: payments | |--------|--------|---------------|-------------------| | ADR Count | 13 | 3 | 2 | | AD Views Complete | 5/7 | 3/5 | 3/5 | | ADR->AD Coverage | 85% | 100% | 67% | | AD->ADR Coverage | 92% | 100% | 100% | | Quality Score | 78% | 85% | 72% | ### Constitution Alignment | Status | Count | Details | |--------|-------|---------| | Compliant | [N] | ADRs following MUST principles | | Violations | [N] | ADRs violating MUST principles (CRITICAL) | | Deviations | [N] | Justified SHOULD principle deviations | ### Issue Distribution | Severity | Count | |----------|-------| | CRITICAL | [N] | | HIGH | [N] | | MEDIUM | [N] | | LOW | [N] | ### Next Actions Based on findings, recommended actions: **If CRITICAL issues exist:** - **Immediate**: Resolve constitution violations before proceeding - Command: `/architect-clarify` to address ADR compliance **If HIGH ADR quality issues:** - **Refine**: Address missing alternatives and consequences - Command: `/architect-clarify` to improve ADR quality **If ADR->AD drift detected:** - **Sync AD**: Update AD.md to reflect ADR decisions - Command: `/architect-implement` to regenerate views **If AD->ADR drift detected:** - **Document**: Create missing ADRs for undocumented decisions - Command: `/architect-specify` or `/architect-init` to add ADRs **If feature alignment issues:** - **Align**: Resolve feature-system boundary violations - Command: Run `/architect-specify` or `/architect-init` to create missing ADRs ``` ### Phase 6: Offer Remediation After presenting the report, ask: > "Would you like me to suggest specific remediation steps for the top [N] issues? I can provide detailed guidance for each finding, though I will not make any changes automatically." ### Key Rules #### Analysis Integrity - **NEVER modify files** — this is read-only analysis - **NEVER hallucinate missing content** — report absences accurately - **Prioritize constitution violations** — these are always CRITICAL - **Use evidence-based findings** — cite specific locations and content #### Consistency Standards - **Cross-reference everything** — validate bidirectionally (ADR to AD) - **Check all levels** — system and feature architecture must align - **Validate terminology** — same concepts must use same names - **Verify diagrams** — Mermaid syntax must be valid #### Reporting Standards - **Limit to 50 findings** — aggregate overflow in summary - **Include location** — always cite file:line or section - **Provide actionable recommendations** — each finding gets a fix suggestion - **Calculate coverage metrics** — quantify completeness ## Next Steps If issues are found: - Run `/architect-clarify` to refine ADRs (quality issues, missing consequences/alternatives, constitution violations). - Run `/architect-implement` to regenerate AD.md when ADR-to-AD drift is detected. For missing ADRs or feature boundary issues, use `/architect-specify` or `/architect-init` as appropriate. ## Verification Concrete outputs of this skill: - **Architecture Analysis Report** in structured markdown, including: - Analysis Summary (mode, scope, files analyzed, analysis date) - Findings table with ID, pass, severity, location, summary, and recommendation - Coverage Metrics (ADR count, AD views complete, ADR→AD coverage, AD→ADR coverage, quality score) - Constitution Alignment summary (compliant, violations, deviations) - Issue Distribution by severity (CRITICAL, HIGH, MEDIUM, LOW) - Next Actions tailored to finding types - **No files modified** — analysis is strictly read-only. - **User-approved remediation guidance** offered after the report.