Skip to content

🦥 Sloth Semantics

Sloth Semantics est une bibliothèque TypeScript/Deno qui analyse la structure d’un projet logiciel pour en extraire une sémantique forte à partir de son arborescence.

📚 Objectif

Fournir une vue sémantique d’un projet à partir de :

  • la structure de ses fichiers (apps/, lib/, ext/, etc.)
  • ses métadonnées (deno.json, package.json, README.md)
  • ses dépendances (import, npm:, https:...)
  • ses tests (tests/, __tests__, fichiers .test.ts)
  • ses exports (exports dans package.json ou deno.json)
  • ses fichiers non-classés (orphelins)

Le tout exposé sous forme d’objet Project unifié, typé, navigable, enrichi.

✅ Fonctionnalités actuelles

ComposantStatutDescription
Project loaderChargement complet via $Project.load()
Documentation (README.md)Accessible via .documentation.readme
ConfigurationsDétecte .gitignore, deno.json, .vscode/ etc.
Scripts (deno, npm)Regroupe les scripts déclarés
DépendancesCollecte les imports externes (npm, url...)
Exports (exports)Depuis deno.json ou package.json
Layers (apps, apis, libs, ext)Détection automatique dans ou hors src/
TestsCollecte des fichiers de test
Fichiers orphelinsListe des fichiers non intégrés dans un layer
GitBranch, remote, état de staging (si repo Git)

🚀 Utilisation

ts
import { $Project } from "mod.ts";

const project = await $Project.load("./mon-projet");

// Accès à la structure
console.log("Nom du projet :", project.name);
console.log("Environnements :", project.runtimes);
console.log("Exports :", project.exports);

🔍 Exécution des tests

bash
deno test --allow-all

Les tests sont organisés comme suit :

  • xxx.test.ts : tests unitaires, proches du fichier testé
  • mod-base.test.ts : test fonctionnel général de $Project.load
  • tests/e2e/ : à venir pour des tests d’intégration sur projet réel

🧠 Sémantique de projet

Bienvenue dans la documentation dédiée au modèle sémantique utilisé par project-tree.

Ce module permet d’enrichir l’arborescence d’un projet logiciel avec des rôles et tags sémantiques, facilitant ainsi :

  • l’analyse du code,
  • la documentation automatique,
  • la navigation intelligente,
  • l’assistance par IA.

📂 Table des matières

SectionDescription
📊 DiagrammesLes diagrammes de classes du projet
📖 GlossaireDéfinitions des concepts clés utilisés dans la sémantique
🧠 Modèle sémantiqueStructure du modèle SemanticNode, rôles, tags
🎭 Rôles sémantiquesListe et description des rôles métiers reconnus
🧩 Règles d’inférenceHeuristiques utilisées pour déduire les rôles automatiquement
🏷️ Tags sémantiquesAttributs secondaires pour enrichir la compréhension des fichiers
🔧 ExtensibilitéAjouter vos propres rôles, règles ou tags
📚 Cas d’usageCe que permet l’analyse sémantique dans un projet réel
⚠️ LimitesCe que le système ne sait pas (encore) faire

✨ Exemples d’usage

  • Regrouper automatiquement les fichiers utils.ts dans un tableau de fonctions réutilisables.
  • Afficher les points d’entrée (main.ts, index.ts) dans un sommaire visuel.
  • Distinguer la logique métier (Service, Controller) de l’infrastructure (ToolBox, Config).

INFO

Ce système est conçu pour être simple, extensible et interopérable avec des outils comme VitePress, Comet, ou des assistants IA.

📜 Licence

Publié sous la licence MIT. Copyright © 2025 Socle Commun — Conçu avec soin pour un monde accessible.

Publié sous licence MIT