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 (
exports
danspackage.json
oudeno.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-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
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.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.