4.5 KiB
Quality Standards - Language Dispatch
This file provides an overview of quality standards and directs you to language-specific quality gates.
When to Load This File
- User asks: "What are the quality standards?"
- Need overview of validation approach
- Choosing which language file to load
Quality Philosophy
All implementations must pass these gates:
- ✅ Linting (0 errors, warnings with justification)
- ✅ Formatting (consistent code style)
- ✅ Tests (all passing, appropriate coverage)
- ✅ Type checking (if language supports it)
- ✅ Documentation (comprehensive and current)
Language-Specific Standards
Load the appropriate file based on detected project language:
Python Projects
When to load: pyproject.toml, requirements.txt, or *.py files detected
Load: @languages/PYTHON.md
Quick commands:
ruff check . && ruff format . && mypy . && pytest
Rust Projects
When to load: Cargo.toml or *.rs files detected
Load: @languages/RUST.md
Quick commands:
cargo clippy -- -D warnings && cargo fmt --check && cargo test
JavaScript/TypeScript Projects
When to load: package.json, tsconfig.json, or *.js/*.ts files detected
Load: @languages/JAVASCRIPT.md
Quick commands:
# TypeScript
npx eslint . && npx prettier --check . && npx tsc --noEmit && npm test
# JavaScript
npx eslint . && npx prettier --check . && npm test
Go Projects
When to load: go.mod or *.go files detected
Load: @languages/GO.md
Quick commands:
gofmt -w . && golangci-lint run && go test ./...
Other Languages
When to load: No specific language detected, or unsupported language (PHP, Ruby, C++, C#, Java, etc.)
Load: @languages/GENERIC.md
Provides: General quality principles applicable across languages
Progressive Loading Pattern
Don't load all language files! Only load the relevant one:
- Detect project language (from file extensions, config files)
- Load specific standards for that language only
- Apply language-specific validation commands
- Fallback to generic if language not covered
Continuous Validation
Every 3 Edits:
Checkpoint:
1. Run relevant tests
2. Check linting
3. Verify type checking (if applicable)
4. If any fail:
- Fix immediately
- Re-validate
5. Continue implementation
Pre-Completion Validation
Before marking work complete:
Full Quality Suite:
1. Run full test suite
2. Run full linter
3. Run type checker
4. Check documentation
5. Review specification compliance
6. Verify all acceptance criteria met
If ANY fail:
- Fix issues
- Re-run full suite
- Only complete when all pass
Quality Enforcement Strategy
Detect Language:
- Check for language-specific files (pyproject.toml, Cargo.toml, etc.)
- Identify from file extensions
- User can override if auto-detection fails
Load Standards:
- Load @languages/PYTHON.md for Python
- Load @languages/RUST.md for Rust
- Load @languages/JAVASCRIPT.md for JS/TS
- Load @languages/GO.md for Go
- Load @languages/GENERIC.md for others
Apply Validation:
- Run language-specific commands
- Check against language-specific standards
- Enforce coverage requirements
- Validate documentation completeness
Report Results:
- Clear pass/fail for each gate
- Specific error messages
- Actionable fix suggestions
When Standards Apply
During Implementation:
- After every 3 edits (checkpoint validation)
- Before declaring task complete (full validation)
- When explicitly requested by user
Quality Gates Must Pass:
- To move from implementation → review phase
- To mark specification acceptance criteria complete
- Before creating pull request
Cross-Language Principles
These apply regardless of language:
SOLID Principles:
- Single Responsibility
- Open/Closed
- Liskov Substitution
- Interface Segregation
- Dependency Inversion
Code Quality:
- No duplication
- Clear naming
- Reasonable function size (<= 50 lines guideline)
- Low nesting depth (<= 3 levels)
- Proper error handling
Testing:
- Unit tests for business logic
- Integration tests for workflows
- Edge case coverage
- Error path coverage
- Reasonable coverage targets
Documentation:
- README for setup
- API documentation
- Complex logic explained
- Usage examples
Load language-specific files for detailed standards - avoid loading all language contexts unnecessarily