code-quality
Code Quality
Unified skill for Rust code quality and clean code development. Use scripts as primary interface.
Quick Commands
# Format check
./scripts/code-quality.sh fmt
# Lint with clippy
./scripts/code-quality.sh clippy --workspace
# Security audit
./scripts/code-quality.sh audit
# Run all quality gates
./scripts/code-quality.sh check
# Full quality gates (coverage threshold 90%)
./scripts/quality-gates.sh
Quality Gates
| Check | Command | Target |
|---|---|---|
| Format | ./scripts/code-quality.sh fmt |
100% compliant |
| Lint | ./scripts/code-quality.sh clippy --workspace |
Zero warnings |
| Audit | cargo audit |
No known vulnerabilities |
| Coverage | cargo llvm-cov --html |
>=90% |
| Docs | cargo doc --no-deps |
All public APIs |
Rust Quality Dimensions
| Dimension | Focus | Target |
|---|---|---|
| Structure | Files <500 LOC, clear modules | <500 LOC per file |
| Error Handling | Custom Error, Result, no unwrap | ? operator, thiserror |
| Async Patterns | spawn_blocking for CPU work | No blocking in async |
| Testing | >=90% coverage, AAA pattern | cargo nextest + doctests |
| Documentation | Public APIs documented | cargo doc passes |
| Security | Parameterized SQL, env vars | No hardcoded secrets |
Clean Code Principles
SOLID
- Single Responsibility: One reason to change per module
- Open-Closed: Extend via traits, not modification
- Liskov Substitution: Subtypes substitutable for base types
- Interface Segregation: Small, focused interfaces
- Dependency Inversion: Depend on abstractions, inject deps
DRY/KISS/YAGNI
- DRY: Extract common code, single source of truth
- KISS: Simple solutions, avoid over-engineering
- YAGNI: Build what's needed now, defer complexity
Anti-Patterns
Rust-Specific
- Excessive clone -> Use borrowing or Arc
- Unnecessary unwrap -> Use
?operator - Deep nesting -> Extract methods
- Large functions -> Split (<50 LOC)
- Deadlocks -> Release locks before
.await
General Code Smells
- Long methods -> Break into smaller
- Duplicate code -> Extract reusable functions
- God class -> Reduce responsibilities
- Feature envy -> Move methods to appropriate classes
Best Practices Checklist
DO
- Files <500 LOC, clear module hierarchy
- Custom Error enum with Result
- No unwrap() in production (tests only)
- async fn for IO, spawn_blocking for CPU
-
=90% test coverage
- Public APIs documented
- SOLID principles applied
- No code duplication (DRY)
DON'T
- Violate SOLID principles
- Duplicate code "for now"
- Functions >50 lines without justification
- Skip static analysis warnings
- Over-engineer simple problems
- Create tight coupling
Code Review Output Format
# Code Quality Report
## Summary
- Score: X/100
- Critical Issues: N
- Warnings: M
## By Dimension
- Structure: [Status]
- Error Handling: [Status]
- Async Patterns: [Status]
- Testing: [Status]
- Documentation: [Status]
## Critical Issues
1. [Issue] - File:line - Fix: [Recommendation]
## Action Items
- [ ] High: Fix critical issues
- [ ] Medium: Address warnings
Dependency Monitoring
# Count duplicate dependencies (target: <100)
cargo tree -d | grep -cE "^[a-z]"
# Find unused dependencies
cargo machete && cargo shear
References
- Detailed dimensions:
quality-dimensions.md(in this directory) - ADR-036: Dependency Deduplication
- ADR-032: Disk Space Optimization
More from d-o-hub/rust-self-learning-memory
loop-agent
Execute workflow agents iteratively for refinement and progressive improvement until quality criteria are met. Use when tasks require repetitive refinement, multi-iteration improvements, progressive optimization, or feedback loops until convergence.
51web-search-researcher
Research topics using web search and content fetching to find accurate, current information. Use when you need modern information, official documentation, best practices, technical solutions, or comparisons beyond your training data.
46perplexity-researcher-reasoning-pro
Highest level of research and reasoning capabilities for complex decision-making with significant consequences, strategic planning, technical architecture decisions, multi-stakeholder problems, or high-complexity troubleshooting requiring expert-level judgment and sophisticated reasoning chains. Prioritizes actively maintained repositories and validates website sources for 2025 relevance.
44context-retrieval
Retrieve relevant episodic context from memory for informed decision-making. Use when you need past episodes, patterns, or solutions to similar tasks.
44rust-code-quality
Perform comprehensive Rust code quality reviews against best practices for async Rust, error handling, testing, and project structure
43codebase-analyzer
Analyze implementation details, trace data flow, explain technical workings, locate files, and consolidate codebases. Use when you need to understand HOW code works, find file locations, or assess technical debt.
40