Synthèse automatique
Analyse la structure d'un dépôt (manifestes de paquets, répertoires, points d'entrée, imports) pour proposer des « systèmes » et générer le fichier .rivet/systems.yaml qui servira de carte d'architecture au plugin Rivet.
Points forts
- Enchaîne une procédure de scan explicite : manifestes, arborescence, points d'entrée, puis relations d'import optionnelles
- Donne des critères clairs pour distinguer un vrai système d'un simple fichier ou utilitaire
- Gère le cas d'un systems.yaml déjà présent en proposant mise à jour, réinitialisation ou abandon du scan
- Produit directement un YAML structuré avec nom de projet, description et chemins par système
Limites
- Les commandes d'exemple s'appuient sur fd et des motifs grep propres à TypeScript/Python ; les projets Java, Go ou Rust ne sont couverts que partiellement
- La qualité des systèmes proposés dépend fortement de la convention de dossiers du projet et reste à valider manuellement
- Le skill s'initialise via un hook SessionStart et l'outil AskUserQuestion, ce qui le lie à Claude Code
À utiliser lors de l'installation de Rivet sur un dépôt, ou pour régénérer la définition des systèmes après une réorganisation importante du code.
À éviter sur un petit projet mono-fichier ou lorsque l'architecture est déjà décrite à la main dans .rivet/systems.yaml et doit être conservée telle quelle.
Analyse de sécurité
SûrThe skill is a read-oriented codebase discovery routine: ls, fd/grep for manifests, directory listings, and a single Write to a project-local .rivet/systems.yaml. There is no network egress, no secret/token handling, no curl|sh, no rm -rf, no obfuscated payloads, and no disabling of safety controls. Bash usage is limited to benign inspection commands, and destructive/overwrite risk on the one written file is mitigated by the explicit user prompt in Step 5. Overall risk from listing is minimal.
- •Write scope includes creating/overwriting .rivet/systems.yaml; Step 5 addresses the existing-file case with an AskUserQuestion prompt, but an atomic/skip-on-error safeguard for a partially written config is not described.
- •Bash commands depend on `fd`, which may be absent on many systems; not a security issue but relevant to execution behavior (falls back to shell errors).
Exemples
Install rivet and scan my codebase to set up the systems.No .rivet/systems.yaml was found — run the rivet scan and propose the systems for this repo.We moved src/services into src/domains, refresh the rivet system definitions to match the new structure.name: rivet-scan description: Initialize Rivet by scanning codebase structure. Use when SessionStart hook reports no .rivet/systems.yaml, when user says "install rivet" or "set up rivet", or to refresh system definitions after major codebase changes. user-invocable: true allowed-tools: Bash, Read, Glob, Grep, Write, AskUserQuestion
Rivet Scan - Codebase Auto-Discovery
Analyze the codebase structure and propose systems for .rivet/systems.yaml.
Purpose
This skill runs during plugin installation to bootstrap .rivet/systems.yaml. It gathers structural data from the codebase and uses that to propose systems that form the project's architecture.
What Makes a Good System
A system is a cohesive bundle of code that forms a single mental model:
- Has clear boundaries (you can point to where it starts and ends)
- Forms a coherent abstraction (the pieces "fit together" conceptually)
- Substantial size (~5% of codebase, or significant enough to cause confusion)
- Has a name worth tracking (you'd mention it when explaining architecture)
A system is something you'd draw as a box in an architecture diagram. NOT individual functions, utility helpers, or single implementation files.
Scan Process
Step 1: Gather Package Boundaries
Look for package manifest files that indicate module boundaries:
# Find all package manifests
fd -t f -e json -e toml -e mod -e yaml '(package|Cargo|go|pyproject|pom)' .
Check for:
package.json(Node.js)Cargo.toml(Rust)go.mod(Go)pyproject.toml/setup.py(Python)pom.xml/build.gradle(Java)
Step 2: Analyze Directory Structure
# Get top-level directories with clear purpose
ls -la
# Look for common patterns: src/, lib/, pkg/, cmd/, internal/, etc.
Identify directories that represent distinct systems:
src/commands/- Command implementationssrc/services/- Service layersrc/api/- API endpointslib/- Shared librariespkg/- Public packages
Step 3: Find Major Entry Points
# Find main entry points
fd -t f '(main|index|app|server)\.(ts|js|py|go|rs)$'
# Find exports/public interfaces
grep -r "export" --include="*.ts" --include="*.js" | head -50
Step 4: Map Import Relationships (Optional)
For dependency hints between systems:
# TypeScript/JavaScript imports
grep -rh "^import.*from" --include="*.ts" --include="*.js" | sort | uniq -c | sort -rn
# Python imports
grep -rh "^from.*import\|^import" --include="*.py" | sort | uniq -c | sort -rn
Step 5: Check for Existing .rivet/systems.yaml
ls .rivet/systems.yaml 2>/dev/null
If .rivet/systems.yaml exists, prompt the user:
- "We detected these systems in your codebase: [list]. Your .rivet/systems.yaml has: [list]. What would you like to do?"
- Options: Update existing / Start fresh / Skip scan
Step 6: Propose Systems
Based on gathered data, create .rivet/systems.yaml with:
project:
name: <from package.json or directory name>
purpose: <inferred or left blank>
systems:
<SystemName>:
description: <what this system does>
paths:
- <directory paths>
Output Format
Create the .rivet/ folder and write systems.yaml with proposed systems. Each system should have:
- A clear, concise name (PascalCase)
- A one-line description of what it does
- Associated paths in the codebase
- Optional: depends_on hints from import analysis
Example Output
project:
name: my-app
purpose: ""
systems:
API:
description: HTTP endpoints and request handlers
paths:
- src/api/
- src/routes/
Database:
description: Data persistence and query layer
paths:
- src/db/
- src/models/
CLI:
description: Command-line interface and argument parsing
paths:
- bin/
- src/commands/
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/rivet-scan-codebase-auto-discovery-mmh8qqy0/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/rivet-scan-codebase-auto-discovery-mmh8qqy0' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/rivet-scan-codebase-auto-discovery-mmh8qqy0/download' --output '.skill-downloads/rivet-scan-codebase-auto-discovery-mmh8qqy0/SKILL.md.part' && mv '.skill-downloads/rivet-scan-codebase-auto-discovery-mmh8qqy0/SKILL.md.part' '.skill-downloads/rivet-scan-codebase-auto-discovery-mmh8qqy0/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.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Bash, Read, Glob, Grep, Write, AskUserQuestion
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/rivet-scan-codebase-auto-discovery-mmh8qqy0/SKILL.md' && test -s '.skill-downloads/rivet-scan-codebase-auto-discovery-mmh8qqy0/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/rivet-scan' && cp -R '.skill-downloads/rivet-scan-codebase-auto-discovery-mmh8qqy0' '.claude/skills/rivet-scan'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/rivet-scan-codebase-auto-discovery-mmh8qqy0'openskills read 'rivet-scan-codebase-auto-discovery-mmh8qqy0'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/rivet-scan-codebase-auto-discovery-mmh8qqy0/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.