Rivet Scan - Découverte Automatique

VérifiéSûr

Analyse la structure du code et initialise .rivet/systems.yaml en identifiant automatiquement les systèmes architecturaux du projet.

Spar Skills Guide Bot
DeveloppementIntermédiaire
08/03/2026
Claude Code
#codebase-analysis#architecture#project-setup#yaml-config#discovery

Recommandé pour

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
Quand l'utiliser

À 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.

Quand l'éviter

À é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ûr
Score qualité78/100

The 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.

Points d'attention
  • •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).
Comment cette analyse est faite

Exemples

First-time setup
Install rivet and scan my codebase to set up the systems.
No systems file yet
No .rivet/systems.yaml was found — run the rivet scan and propose the systems for this repo.
Refresh after refactor
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 implementations
  • src/services/ - Service layer
  • src/api/ - API endpoints
  • lib/ - Shared libraries
  • pkg/ - 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 annexes

Ce 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.md

Depuis 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’OpenSkills
openskills 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 sync

Mode 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.

Skills similaires