

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
123456<!-- Automatically generated by gen_copilot_instructions.py, do not edit -->789## File Locations10- **Integration code**: `./homeassistant/components/<integration_domain>/`11- **Integration tests**: `./tests/components/<integration_domain>/`1213## General guidelines1415- When looking for examples, prefer integrations with the platinum or gold quality scale level first.16- Polling intervals are NOT user-configurable. Never add scan_interval, update_interval, or polling frequency options to config flows or config entries.17- Do NOT allow users to set config entry names in config flows. Names are automatically generated or can be customized later in UI. Exception: helper integrations may allow custom names.18- For entity actions and entity services, avoid requesting redundant defensive checks for fields already enforced by Home Assistant validation schemas and entity filters; only request extra guards when values bypass validation or are transformed unsafely.19- When validation guarantees a key is present, prefer direct dictionary indexing (`data["key"]`) over `.get("key")` so invalid assumptions fail fast.20- Integrations should be thin wrappers. Protocol parsing, device state machines, or other domain logic belong in a separate PyPI library, not in the integration itself. If unsure, ask before inlining.21- Integrations should not implement fixes or workarounds for limitations in libraries. Instead, the library should be updated to fix the issue.2223The following platforms have extra guidelines:24- **Diagnostics**: [`platform-diagnostics.md`](platform-diagnostics.md) for diagnostic data collection25- **Repairs**: [`platform-repairs.md`](platform-repairs.md) for user-actionable repair issues2627## Entity platforms2829- Ensure `async_added_to_hass()` and `async_will_remove_from_hass()` have symmetrical behavior. For example, if a subscription is created in `async_added_to_hass()`, it should be unsubscribed in `async_will_remove_from_hass()`. Also, if something is torn down in `async_will_remove_from_hass()`, it should be set up in `async_added_to_hass()`.30- Entity base class (e.g. `SensorEntity`, `TrackerEntity`) provide a stable API for child classes to inherit from. Do not suggest redeclaring or duplicating attributes, properties, or methods the base class already provides, and do not add guards against the parent's behavior changing — rely on the base class instead.3132## Integration Quality Scale3334- When validating the quality scale rules, check them at https://developers.home-assistant.io/docs/core/integration-quality-scale/rules35- When implementing or reviewing an integration, always consider the quality scale rules, since they promote best practices.3637Template scale file: `./script/scaffold/templates/integration/integration/quality_scale.yaml`3839### How Rules Apply401. **Check `manifest.json`**: Look for `"quality_scale"` key to determine integration level412. **Bronze Rules**: Always required for any integration with quality scale423. **Higher Tier Rules**: Only apply if integration targets that tier or higher434. **Rule Status**: Check `quality_scale.yaml` in integration folder for:44 - `done`: Rule implemented45 - `exempt`: Rule doesn't apply (with reason in comment)46 - `todo`: Rule needs implementation474849## Testing Requirements5051- Tests should avoid interacting or mocking internal integration details. For more info, see https://developers.home-assistant.io/docs/development_testing/#writing-tests-for-integrations52
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| home-assistant/core.github/copilot-instructions.md · 90k | Copilot instructions | testlint-formatstyletypes+2 | 78/100 | 11 days ago | |
| home-assistant/coreAGENTS.md · 90k | AGENTS.md | teststyletypesgit+1 | 71/100 | 11 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| louislam/uptime-kuma.github/copilot-instructions.md · 90k | Copilot instructions | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| pytorch/pytorch.github/copilot-instructions.md · 102k | Copilot instructions | setupbuildteststyle+5 | 100/100 | 14 days ago | |
| bagisto/bagisto.github/copilot-instructions.md · 28k | Copilot instructions | setupbuildteststyle+5 | 97/100 | 14 days ago | |
| hiyouga/LlamaFactory.github/copilot-instructions.md · 74k | Copilot instructions | setupbuildtestlint-format+5 | 97/100 | 13 days ago | |
| JCodesMore/ai-website-cloner-template.github/copilot-instructions.md · 32k | Copilot instructions | buildlint-formatstylearch+3 | 97/100 | 7 days ago | |
| darkmatter/nixmac.github/copilot-instructions.md · 25 | Copilot instructions | setupbuildtestlint-format+8 | 96/100 | 14 days ago | |
| doubts-suplab/eeik-bootstrap.github/instructions/cdk-terraform.instructions.md · 1 | Copilot instructions | teststylearchtypes+2 | 96/100 | today | |
| doubts-suplab/eeik-bootstrap.github/instructions/java-quality.instructions.md · 1 | Copilot instructions | testlint-formatstyletesting-strategy+3 | 93/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/home-assistant-core-github-instructions-integrations-instructions)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.