Synthèse automatique
Cette skill classe les éléments d'un système en quatre couches (Identifiants, API, Données, Architecture) selon le coût de leur changement et repère les inversions où une couche bon marché fuit dans une couche coûteuse.
Points forts
- Fournit une grille de décision simple et mémorisable, fondée sur le nombre de parties externes à faire évoluer, pas sur le nombre de lignes.
- Identifie des pièges concrets et fréquents : clé de stockage ou segment de version caché dans un identifiant, forme de table exposée dans une API.
- Donne des règles opérationnelles directement applicables : identifiants opaques, changements additifs, priorité à la couche supérieure en cas de conflit.
- Utile en amont d'une revue de design ou avant de figer un schéma publié.
Limites
- Doctrine purement conceptuelle : aucun outil, script ou checklist automatisée n'est fourni.
- Le classement d'un champ (identifiant vs API) reste un jugement humain que la skill demande d'expliciter, sans critère mécanique.
- Ne traite pas les mécanismes concrets de migration, de versionnement ni de dépréciation au-delà du principe.
- Reformulation personnelle d'une doctrine mémorisée, donc volontairement tranchée et non sourcée.
À utiliser avant de figer des identifiants, une API REST ou de package, un schéma ou un modèle de données, ou pour arbitrer entre deux options de design.
À éviter pour implémenter une migration, refactoriser du code existant ou obtenir une validation automatique de conformité.
Analyse de sécurité
SûrThe skill is purely advisory documentation describing a design doctrine. It declares no allowed tools and contains no executable commands, network calls, file operations, or instructions that could cause harm. There is no destructive, exfiltrating, or obfuscated content.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
We're about to mint a public record id of the form `eu-west-1/orders/2024/12345`. Apply the IADA ranking and tell me whether this is safe to publish, what to change, and what it would cost to fix later./iada — here is our REST endpoint spec. Check for inversions where the persisted table shape or storage choice has leaked into the published API, and suggest the minimal additive fix.Our enum values for order status are consumed by three partner systems and stored in their databases. Is renaming `pending_review` to `awaiting_review` a safe change? Walk me through which IADA layer it sits in and what path it needs.name: iada description: Rank the parts of a system by how many parties must change when each part changes (Identifiers, then API, then Data, then Architecture) and catch inversions where a cheap-to-change layer has leaked into an expensive one. Use when designing or reviewing identifiers, REST or package APIs, schemas, storage, or a data model; when someone says "/iada" or asks whether a change is safe or a name is stable; or when a design question turns on "what would this cost to change later".
IADA: what is hard to change comes first
A doctrine I worked under for years, restated from memory and in my own words. Four layers, ordered by the cost of changing them. The cost is measured in parties, not lines: how many people or systems outside this repo would have to act if this changed.
| layer | what it holds | who must change if it changes | |---|---|---| | Identifiers | names others store: ids, URIs, paths, enum values, relation names | nobody can; they are permanent | | API | contracts others call: endpoints, package exports, schemas as published, CLI flags | every consumer, but they can be told | | Data | the shape you persist: tables, documents, fixture files, internal schemas | this repo and its migrations | | Architecture | how the work gets done: engine, services, libraries, storage choice | this repo only |
The doctrine is the ordering and one rule that follows from it:
Nothing from a lower layer may appear in a higher one.
A storage key or region inside an identifier, a table shape inside an API, a version segment inside a name, a modelling choice you are still revising inside an id: each is an inversion. Inversions are how systems become brittle. The lower layer can no longer change without dragging the higher one, and the higher one was the part that was never supposed to move.
The consequences
- Effort tracks the ranking. Identifiers get the most care and the slowest review; architecture gets the least. Spend design time at the top, and change freely at the bottom.
- A minted identifier cannot change, ever. It outlives the system that minted it, the API that operated on it, and the team that knew what it meant. It ends up in spreadsheets, emails, printed documents, other people's databases, places nobody imagined. You never get to delete the old ones. At best you keep a table mapping old to new, and you keep it forever. Design every identifier as if it will be dug up as archaeology.
- Identifiers are opaque strings. Consumers compare them for equality and store them; they never parse, split, sort, or infer from them. A prefix or namespace saying who minted it is allowed and useful, since it lets ids from different owners share one space without colliding. Anything about the content is not. The canonical trap is a location in the id read as "where the record lives": the home moves, the record gets replicated or migrated, and one day the authoritative copy sits somewhere the id says it doesn't. The moment anyone interprets an id, every fact it happens to encode becomes a contract that rule 2 then makes permanent. Bend this knowingly and write down that you did.
- Decide what counts as an identifier, on purpose. Whether a field name, a query key, or an enum value is an identifier or part of the API is a labelling choice, and the label sets the change cost. Make it explicitly, in the identifiers doc, before anyone stores the value.
- Additive changes are cheap at every layer. Renames and removals in the top two layers need a version, an adapter, or a deprecation path. Never silently.
- When two layers pull in different directions, the higher wins. A worse table for a stable id is the right trade every time.
- "It was reviewed" is a reason to protect the top two layers, not the bottom two. Caution spent on preserving a data-layer choice is caution in the wrong place.
How to apply it
When invoked on a design question, do this and nothing more:
- List the elements under discussion and assign each a layer. Say which parties would have to act if it changed. Where the layer is arguable, say why and pick one.
- Name any inversion: a lower-layer fact living in a higher layer. Quote the offending element.
- State what the change actually costs, by layer. Most questions resolve here: either the change is in a lower layer and is cheap, or it touches an identifier or contract and needs a path for existing holders.
- Give one recommendation. Do not produce a menu.
Do not turn this into a style guide. UUIDs, contract-first, JSON Schema: all sometimes right, none a consequence of the ordering. Opacity is the exception: it is the doctrine's own rule for the top layer, not a style. Below that, the doctrine says nothing about how to build a layer, only about which layers must not leak into which.
Where it does not apply
Firmware with no external consumer, dotfiles, formal specifications, and one-off scripts have no top two layers worth the ceremony. Do not invoke it there. Projects that publish something others store (a data package, a plugin's paths, a service's URLs) are where it earns its keep; those projects may point at this skill with one line in their CLAUDE.md.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/iada-change-cost-ordering-for-system-parts-mu99jnbe/download' --output '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md.part' && mv '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md.part' '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && test -s '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/iada' && cp -R '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe' '.claude/skills/iada'Cursor
test -f '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && test -s '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/iada' && cp -R '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe' '.cursor/skills/iada'Codex
test -f '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && test -s '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/iada' && cp -R '.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe' '.agents/skills/iada'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe'openskills read 'iada-change-cost-ordering-for-system-parts-mu99jnbe'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/iada-change-cost-ordering-for-system-parts-mu99jnbe/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.