novahiz-gatelisted
Install: claude install-skill novahiz/novahiz
# novahiz-gate
Le gate pose une seule question : les skills exigées par le contexte sont-elles chargées ? Tant que la réponse est non, l'édition est refusée.
## Deux sources d'exigence
**Les règles** (`catalog/rules.json`) se déclenchent sur le chemin, la classe de fichier, la catégorie active ou le contenu :
| Règle | Se déclenche sur | Exige |
|---|---|---|
| R13-design-craft | tâche design frontend (catégorie design-ui, fichiers style css/scss/html/…) | `novahiz-humanizer`, `ui-slop-remover`, `ui-craft-rules` |
| R14-impeccable | mêmes sélecteurs que R13 (design-ui ou fichiers style) | `impeccable` |
| R3-supabase | chemin `**/supabase/**` ou `**/migrations/**`, catégorie `database-supabase` | `supabase`, `supabase-postgres-best-practices` |
Hors design frontend, `novahiz-humanizer` et `ui-slop-remover` ne sont plus exigés par le gate. `impeccable` suit la même logique via R14.
**Les étapes de roadmap** (`catalog/categories.json`) : seules celles marquées `kind: "skill"` sans `optional` bloquent. Les étapes `edit`, `verify` et `advisory` apparaissent dans `requiredSkills` mais ne refusent rien.
## Sémantique de l'index (gate.ts, lignes 229 à 236)
```
index disponible ET skill absente de l'index -> unmatchedRequired
sinon -> effective
```
Trois conséquences à connaître :
1. Skill absente de l'index (`build/installed-skills.json`, écrit au dernier `sync`) : elle cesse d'être exigée en silence, sans message.
2. Skill prése