Appearance
🦥 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 (
exportsdanspackage.jsonoudeno.json) - ses fichiers non-classés (orphelins)
Le tout exposé sous forme d’objet Project unifié, typé, navigable, enrichi.
✅ Fonctionnalités actuelles
| Composant | Statut | Description |
|---|---|---|
Project loader | ✅ | Chargement complet via $Project.load() |
Documentation (README.md) | ✅ | Accessible via .documentation.readme |
| Configurations | ✅ | Détecte .gitignore, deno.json, .vscode/ etc. |
Scripts (deno, npm) | ✅ | Regroupe les scripts déclarés |
| Dépendances | ✅ | Collecte 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/ |
| Tests | ✅ | Collecte des fichiers de test |
| Fichiers orphelins | ✅ | Liste des fichiers non intégrés dans un layer |
| Git | ✅ | Branch, 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-allLes 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.loadtests/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
| Section | Description |
|---|---|
| 📊 Diagrammes | Les diagrammes de classes du projet |
| 📖 Glossaire | Définitions des concepts clés utilisés dans la sémantique |
| 🧠 Modèle sémantique | Structure du modèle SemanticNode, rôles, tags |
| 🎭 Rôles sémantiques | Liste et description des rôles métiers reconnus |
| 🧩 Règles d’inférence | Heuristiques utilisées pour déduire les rôles automatiquement |
| 🏷️ Tags sémantiques | Attributs secondaires pour enrichir la compréhension des fichiers |
| 🔧 Extensibilité | Ajouter vos propres rôles, règles ou tags |
| 📚 Cas d’usage | Ce que permet l’analyse sémantique dans un projet réel |
| ⚠️ Limites | Ce que le système ne sait pas (encore) faire |
✨ Exemples d’usage
- Regrouper automatiquement les fichiers
utils.tsdans 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.