Architecture
Structure interne du projet et organisation des fichiers.
Stack technique
maconfai est construit avec :
• TypeScript — 98.8% du code source, modules ESM
• Node.js 18+ — Runtime minimum requis
• pnpm — Gestionnaire de paquets
• Vitest — Framework de tests (73% de couverture)
• oxlint — Linter
• Prettier — Formateur de code
• obuild — Outil de build
Structure du projet
Le projet suit une structure claire et modulaire :
maconfai/ ├── src/ │ ├── cli.ts # Point d'entrée CLI, parsing d'arguments │ ├── install.ts # Logique d'install/uninstall interactive │ ├── installer.ts # Copie, symlinks, opérations bas niveau │ ├── skills.ts # Découverte SKILL.md, mcp.json, hooks.json │ ├── agents.ts # Définition et détection des agents │ ├── types.ts # Types partagés (AgentType, Skill, etc.) │ ├── git.ts # Helpers Git (clone, fetch, token) │ ├── source-parser.ts # Parse les sources (GitHub, local) │ ├── lock.ts # Gestion du lock file (ai-lock.json) │ ├── check.ts # Détection des mises à jour (tree hash) │ ├── mcp.ts # Install/uninstall serveurs MCP (configs dans mcps/) │ └── hooks.ts # Install/uninstall hooks ├── tests/ # Tests organisés par feature ├── bin/cli.mjs # Exécutable CLI ├── build.config.mjs # Config obuild ├── tsconfig.json ├── vitest.config.ts └── package.json
Stockage des skills
L'architecture de stockage repose sur un répertoire canonique avec des symlinks :
1. Le répertoire .agents/skills/ contient les fichiers réels de chaque skill installée.
2. Chaque agent reçoit un symlink dans son répertoire skills/ pointant vers le fichier canonique.
3. Cela garantit qu'une seule copie existe et que tous les agents utilisent la même version.
projet/
├── .agents/
│ └── skills/
│ ├── skill-a/
│ │ └── SKILL.md # ← fichier réel
│ └── skill-b/
│ └── SKILL.md # ← fichier réel
├── .claude/skills/
│ ├── skill-a/ → ../../.agents/skills/skill-a/ # symlink
│ └── skill-b/ → ../../.agents/skills/skill-b/ # symlink
├── .cursor/skills/
│ ├── skill-a/ → ../../.agents/skills/skill-a/ # symlink
│ └── skill-b/ → ../../.agents/skills/skill-b/ # symlink
└── .codex/skills/
└── skill-a/ → ../../.agents/skills/skill-a/ # symlinkApproche de tests
Les tests suivent des conventions strictes :
• Un test focalisé par fichier (30-100 lignes)
• Utilisation d'inline snapshots plutôt que d'assertions manuelles
• La suite de tests reflète la structure des fonctionnalités
• Chaque test reçoit un répertoire temporaire isolé
• Le CLI est exécuté comme sous-processus pour les tests d'intégration
Build et distribution
Le projet est distribué via npm :
• Taille du build : 91.4 kB (minifié + gzip)
• Couverture de tests : 73%
• CI : GitHub Actions (lint, tests, typecheck)
• Publication : npm publish workflow avec trusted publishing
• Format : ESM (ECMAScript Modules)
• Point d'entrée : bin/cli.mjs
• Licence : MIT