| name | architecture |
| description | System architecture and design patterns. Modular design, interface stability, dependency management, AI-code health nexus. Triggers: architecture, design, structure, modules, dependencies, coupling, system design. |
| allowed-tools | Read, Grep, Glob, Task |
Architecture is about managing change over time.
Good architecture makes easy things easy and hard things possible.
AI-generated code amplifies existing patterns—good or bad.
Understand existing codebase structure before proposing changes.
Check for established patterns. Follow them unless explicitly changing.
Skill-specific: skills/architecture/reference/architecture-research.md
<core_principles>
- FOLLOW EXISTING PATTERNS: Don't introduce new patterns without justification.
- INTERFACE STABILITY: Changing interfaces breaks everything. Stabilize them first.
- MODULAR BOUNDARIES: Clear separation. Each module has one reason to change.
- DEPENDENCY DIRECTION: Depend on abstractions, not concretions. Core doesn't know about edges.
- SMALLEST CHANGE: Prefer minimal changes that achieve the goal.
</core_principles>
<ai_code_health_nexus>
From research: 30%+ defect risk when AI applied to unhealthy code.
AI amplifies existing patterns. If code is messy, AI makes it messier.
Before adding AI to a codebase:
- Identify health score (coupling, complexity, test coverage)
- Fix critical health issues first
- Establish clear interfaces
- Then apply AI within those boundaries
</ai_code_health_nexus>
<design_heuristics>
- If you can't explain it simply, the design is too complex
- Three concrete examples before abstraction
- Composition over inheritance
- Make illegal states unrepresentable
- Parse, don't validate
</design_heuristics>
<anti_patterns>
- Premature abstraction (abstract before 3 concrete uses)
- Leaky abstractions (implementation details bleeding through)
- Circular dependencies
- God objects (one class doing everything)
- Feature envy (methods that use another class more than their own)
</anti_patterns>
<on_complete>
agentdb write-end '{"skill":"architecture","decision":"X","coupling_reduced":true,"adr":"path|none"}'
</on_complete>