Overview
The quality scale consists of four tiers, each building upon the previous one:- Bronze: Essential functionality and basic best practices
- Silver: Enhanced reliability and maintainability
- Gold: Production-ready with excellent user experience
- Platinum: Exceptional quality with advanced features
manifest.json:
Quality Scale Tiers
Bronze Tier
The bronze tier establishes fundamental requirements for all integrations:Key Requirements
- Config Flow: User-friendly configuration through the UI
- Unique Config Entry: Prevent duplicate configurations
- Entity Unique ID: All entities must have stable unique IDs
- Runtime Data: Use modern
entry.runtime_datapattern - Test Before Setup: Validate connectivity before completing setup
- Has Entity Name: Entities must have proper names
- Documentation: High-level description, installation, and removal instructions
Example: Runtime Data Pattern
Silver Tier
Silver tier adds reliability and proper error handling:Key Requirements
- Config Entry Unloading: Clean shutdown and resource cleanup
- Reauthentication Flow: Handle expired credentials gracefully
- Entity Unavailable: Mark entities unavailable when device is offline
- Parallel Updates: Protect against concurrent state updates
- Test Coverage: Minimum 90% code coverage
- Integration Owner: Designated code owner for maintenance
Example: Config Entry Unloading
Example: Parallel Updates Protection
Gold Tier
Gold tier represents production-ready integrations with excellent UX:Key Requirements
- Devices: Proper device registry integration
- Diagnostics: Debug information download
- Discovery: Automatic device discovery support
- Entity Translations: Translated entity states
- Exception Translations: User-friendly error messages
- Reconfiguration Flow: Allow changing settings without removing integration
- Repair Issues: Proactive issue detection and resolution
- Comprehensive Documentation: Examples, use cases, troubleshooting
Example: Diagnostics
Platinum Tier
Platinum tier represents the highest quality standards:Key Requirements
- Async Dependency: Library must be fully asynchronous
- Inject Websession: Reuse Home Assistant’s aiohttp session
- Strict Typing: Complete type hints with mypy validation
Example: Injecting Web Session
Quality Scale Files
Integrations track their progress usingquality_scale.yaml files:
Special Scales
Internal Scale
Integrations marked asinternal are core Home Assistant components:
Legacy Scale
Integrations marked aslegacy are maintained but don’t meet modern standards:
Validation
The quality scale is enforced by thehassfest tool:
- Declared quality scale matches implemented rules
- All required rules for the tier are completed
- Documentation matches requirements
- Test coverage meets minimums
Best Practices
Start with Bronze
New integrations should target bronze tier first:- Implement config flow
- Add unique IDs to entities
- Use runtime_data pattern
- Write basic documentation
- Add test-before-setup validation
Progress Gradually
Move up tiers systematically:- Complete all rules in current tier
- Update
quality_scale.yaml - Run validation:
python3 -m script.hassfest - Update manifest.json when tier is complete
Exemptions
Some rules can be exempted with justification:Resources
Common Pitfalls
Not Using Runtime Data
❌ Wrong: Storing data inhass.data
entry.runtime_data