teefayb/claude-code-setup-demo

Modifier la forme des données stockées (ajouter, renommer ou supprimer un champ sur Link) en toute sécurité, y compris une mise à niveau versionnée des fichiers de données existants. À utiliser lorsqu’une tâche nécessite un champ stocké nouveau ou modifié.

Qu'est-ce que claude-code-setup-demo ?

Cette compétence permet de modifier le modèle de données d’une application basée sur des fichiers JSON, en gérant à la fois les ajouts non cassants et les modifications cassantes (renommage, suppression, nouveau champ obligatoire ou changement de type). Elle s’appuie sur la validation Zod pour définir des schémas versionnés et offre une fonction de mise à niveau explicite (par exemple `upgradeV1toV2`) dans le store. Les fichiers existants ne sont jamais réécrits à la lecture, seule la prochaine sauvegarde utilise le nouveau format. Elle met à jour automatiquement `data/seed.json` et produit des tests qui vérifient le round-trip des nouveaux champs ainsi que, pour les changements cassants, la lecture d’un fichier ancienne version et la sauvegarde du nouveau format. La compétence convient aux agents qui travaillent avec des dépôts TypeScript utilisant Zod, un store JSON simple et une UI optionnelle, comme dans un projet de démonstration Claude Code.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/teefayb/claude-code-setup-demo/tree/HEAD/.claude/skills/change-data-model

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Modifier le modèle de données : $ARGUMENTS

Les données stockées résident dans des fichiers JSON qui existent déjà sur les machines des coéquipiers et sur le serveur, chaque modification doit donc lire les anciens fichiers sans les casser.

Étapes

  1. Lire src/lib/links/schema.ts, src/lib/links/store.ts et data/seed.json.
  2. Décider si la modification est additive (nouveau champ optionnel avec une valeur par défaut) ou cassante (renommage, suppression, nouveau champ obligatoire, changement de type).
    • Additive : ajouter le champ avec .optional() ou .default(...) à linkSchema, et à linkInputSchema si les utilisateurs peuvent le définir. Pas d’incrémentation de version.
    • Cassante : incrémenter le littéral version du fichier de données (ex. 1 → 2). Conserver l’ancien schéma sous dataFileV1Schema, et ajouter une fonction upgradeV1toV2(data) dans store.ts que load() applique lorsqu’il lit un fichier v1. Ne jamais réécrire les fichiers à la lecture ; la prochaine save() écrit en v2.
  3. Mettre à jour data/seed.json vers la nouvelle forme.
  4. Mettre à jour l’interface utilisateur uniquement si la tâche le demande.
  5. Tests dans src/lib/links/store.test.ts :
    • Le nouveau champ fait un aller-retour via createLink et listLinks.
    • Pour les changements cassants : écrire un fichier v1 dans le chemin de données temporaire et vérifier que listLinks() renvoie des liens mis à niveau, et qu’un createLink suivant sauvegarde un fichier v2.
  6. Exécuter npm run check et npm run build.
  7. Dans votre résumé, indiquer si la modification était additive ou cassante, et ce qui se passe pour les fichiers de données existants.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills associés