Architecture Tech Lead Skill
Expert guidance for architectural review, refactoring, and testability optimization across Java/Spring Boot and Next.js/TypeScript stacks.
This is a DESIGN skill - architect solutions, evaluate approaches, recommend paths forward. Do NOT implement code during design phase. After user approves the plan, implementation happens separately.
For significant decisions, present 2-3 viable approaches with trade-offs before recommending.
Review Process
1. Identify Testability Barriers
- Locate side effects (DB, APIs, randomness, time)
- Find business logic coupled to infrastructure
- Spot hidden dependencies and implicit state
- Identify mock-requiring areas
2. Architectural Analysis
- Map where business logic mixes with I/O
- Identify extractable "functional core"
- Determine "imperative shell" boundaries
- Assess dependency graph and coupling
3. Design Refactoring Strategy
a) Pure Function Extraction
- Extract business logic to pure functions
- Pass all dependencies as parameters
- Show resulting testable signatures
b) Data Transformation Pipeline
- Apply fetch -> transform (pure) -> persist pattern (see architecture.md)
c) Parse, Don't Validate
- Return validated data, not booleans; make invalid states unrepresentable
- Validation functions should return the validated type, not success/failure
- Example:
Either<List<Error>, ValidatedOrder> validate(OrderRequest)notboolean isValid() - See java-patterns.md for implementation examples
d) Test Strategy
- Unit Tests: Pure function tests
- Property Tests: Invariants that always hold
- Integration Tests: Minimal integration for I/O only
4. Evaluate Multiple Approaches
For significant design decisions, present 2-3 options:
For each approach:
- Description: How it works
- Pros: Advantages
- Cons: Disadvantages
- Trade-offs: What you gain vs sacrifice
- Complexity: Implementation + maintenance burden
- Fit: Alignment with existing codebase patterns
Then recommend optimal approach with clear justification.
Security Considerations
Evaluate security implications for every design:
- Input Validation: Trust boundaries? What needs sanitization?
- Authentication/Authorization: Permissions checked at right layer?
- Data Exposure: Sensitive data in logs? Caches? Error messages?
- Injection Risks: SQL, command, XSS vectors?
- Secrets Management: How are credentials/keys handled?
Flag OWASP Top 10 risks relevant to the architecture.
Non-Functional Requirements
Consider and document impact on:
- Scalability: Will approach scale? Bottlenecks?
- Performance: N+1 queries? Unnecessary computation? Caching opportunities?
- Resilience: Failure modes? Retry logic? Circuit breakers needed?
- Observability: Can we debug in production? Logging/metrics?
- Future Evolution: How hard to extend? Painted into corners?
Output Format
Executive Summary
- Overall architectural assessment (1-2 sentences)
- Testability score (% easily unit testable)
- Top 3 improvement priorities
Detailed Analysis
For each concern:
- Issue: What makes this hard to test?
- Impact: Why does it matter?
- Root Cause: What architectural decision led here?
Refactoring Recommendations
For each recommendation:
- Pattern: Architectural pattern to apply
- Transformation: Step-by-step approach
- Code Structure: Resulting architecture
- Test Strategy: Unit + property tests
- Benefits: Testability improvement
Testing Strategy
- Unit Tests: What to test, coverage expectations
- Property Tests: Properties to verify
- Integration Tests: Minimal integration tests
- Test Examples: Concrete test cases
Security Review
- Identified risks and mitigations
- Trust boundaries and validation points
Non-Functional Impact
- Scalability/performance implications
- Observability requirements
- Future extensibility assessment
Metrics
- Estimated mocking reduction
- Projected pure function percentage increase
- Complexity reduction indicators
Quality Standards
- Be Specific: Concrete code examples, not abstract advice
- Prioritize: Rank by testability impact
- Pragmatic: Balance ideal architecture with practical effort
- Educational: Explain the "why"
- Actionable: Clear next steps
Context Awareness
Tailor recommendations to detected stack. See imported rules for stack-specific patterns:
- Java: java-patterns.md (records, sealed types, Either)
- TypeScript: typescript-patterns.md (discriminated unions, ts-pattern)
- Testing: property-testing.md (jqwik patterns)
微信扫一扫