DOC
SARGERAS — Etat des lieux Ulk
SARGERAS — Etat des lieux Ulk
Date : 2026-04-10 | Commit : f98abcc (393 commits) Stack : JavaScript/TypeScript · Aucun framework web · Aucun ORM · Aucun CSS framework (site: Tailwind CDN) · GitHub Pages Auditeur : Sargeras (Claude Code) Scope : 39 fichiers code (JS/TS/SH) · 5216 lignes code · 286 fichiers MD · ~108K lignes MD
Score Global : 6.8 / 10
| Axe | Score | Critiques | A surveiller |
|---|---|---|---|
| Architecture | 7/10 | Duplication commands/ vs agents/ (49 fichiers identiques) | commands/ semble etre un artefact d’installation, pas de la source |
| Qualite code | 7/10 | 24 console.log, packages/core non build | 0 any, 0 ts-ignore — typage propre |
| Securite | 8/10 | Aucun .env commite, pas de secrets hardcodes | Faux positifs dans les fichiers de reference (glossaires JSON) |
| Performance | N/A | Pas d’application web runtime | Site statique avec CDN deps — acceptable |
| Design System | 7/10 | 2 aria-* seulement sur composants interactifs — corrigé | Site depend de 3 CDNs externes non versionnees |
| UX & Flows | N/A | Projet CLI/agents — pas d’UI interactive | — |
| Coherence | 6/10 | registry.json dit 71 agents, 87 MD trouvees, 16 sans phase | commands/ = copie 1:1 des agents/ |
| Infrastructure | 5/10 | 1 seul workflow CI (deploy), aucun lint/test/typecheck automatise | status-board tests en echec (core non build) |
| Documentation | 8/10 | CLAUDE.md exemplaire, CHANGELOG complet, ADR, guide, reference | README minimaliste (52L) — intentionnel |
| Dette technique | 7/10 | 7 TODO/FIXME, 42 branches remote mergees non nettoyees | 1 god file (install.sh 551L) |
Stack detecte
| Element | Valeur |
|---|---|
| Langage | JavaScript / TypeScript |
| Framework | Aucun (toolkit d’agents IA) |
| Package manager | Aucun a la racine (npm dans packages/core) |
| Monorepo | Informel (pas de turbo/nx/pnpm-workspaces) |
| ORM / DB | Aucun |
| CSS | Tailwind CDN (site uniquement) |
| Tests | Vitest (core), Node test runner (ulk-sdk, status-board) |
| E2E | Aucun |
| Deploy | GitHub Pages (site) |
| CI | GitHub Actions (1 workflow: deploy uniquement) |
Metriques Cles
| Metrique | Valeur |
|---|---|
| Fichiers source (JS/TS/SH) | 39 |
| Lignes de code | 5 216 |
| Fichiers Markdown | 286 |
| Lignes Markdown | ~108 585 |
| Agent definitions | 87 fichiers MD |
| God files (> 500L) | 1 (install.sh — 551L) |
| Tests | 9 fichiers (12 pass ulk-sdk, 4 pass core, 2 fail status-board) |
| Ratio test/source | ~23% (9/39) |
| TODO/FIXME/HACK | 7 |
| Typage faible (any/ignore) | 0 |
| console.log | 24 |
| .env commites | 0 |
| Schemas JSON | 11 |
| CI workflows | 1 (deploy seul) |
| Branches remote | 54 (dont 42 mergees) |
| Commits | 393 |
1. Architecture & Structure — 7/10
Constats
- Structure claire et logique. Le projet est organise par responsabilite :
agents/(definitions),packages/(code partage),skills/(CLI skills),site/(doc publique),tools/(diagnostics),schemas/(contrats JSON). - Duplication systematique :
commands/est une copie 1:1 deagents/. 49 fichiers MD identiques (hash MD5 verifie). Le mecanisme d’installation copiecommands/vers~/.claude/commands/ulk. Cela signifie que les agents sont maintenus dansagents/mais doivent etre manuellement repliques danscommands/. - Monorepo informel. 3 packages (
core,status-board,ulk-sdk) sans gestionnaire de workspace. Pas depnpm-workspace.yaml,turbo.json, ounx.json. Les dependances inter-packages sont resolues par chemin relatif (../core/dist/). - 1 god file :
install.sha 551 lignes. Juste au-dessus du seuil — acceptable pour un installateur tout-en-un. _shared/bien structure. 17 fichiers partages entre agents (base-rules, checklists, protocols). Reduit efficacement la duplication.
Violations
- P1 ·
commands/· 49 fichiers dupliques deagents/— risque de desynchronisation lors d’editions manuelles - P2 ·
packages/· Pas de gestionnaire de workspace pour 3 packages interdependants
Points forts
- Organisation
agents/en sous-dossiers thematiques (orchestrators, audit, frontend, mobile, etc.) - 11 schemas JSON pour les contrats de donnees entre packages
_shared/avec 17 fichiers mutualises — bonne factorisation
Recommandations
- Generer
commands/depuisagents/a l’installation plutot que de maintenir 2 copies. Un script ou symlink eviterait la duplication. - Considerer un
pnpm-workspace.yamlminimal pour formaliser le monorepo.
2. Qualite du Code — 7/10
Constats
- Typage exemplaire dans packages/core. 0 occurrences de
: any,as any,@ts-ignore. TypeScript strict. - 24
console.logdans le code. Repartis dans 7 fichiers, principalement dans les CLIs (ulk-sdk/src/cli.js,status-board/src/cli.js,cheatheet/generate-registry.cjs). Acceptable pour des outils CLI — ce n’est pas du code de production web. - Tests : 12/12 pass (ulk-sdk), 4/4 pass (core via vitest), 2/2 fail (status-board). Les echecs status-board viennent de
packages/core/dist/absent (core non build). - Conventions de nommage coherentes.
NN-agent-name.mdpour les agents, fichiers partages en kebab-case. - Pas de linter configure (pas de ESLint, Biome, ou Prettier). Le code est propre mais non enforce.
Violations
- P1 ·
packages/status-board/tests/· 2 tests en echec — dependance surpackages/core/dist/non build - P2 · Racine · Aucune configuration linter (ESLint/Biome/Prettier)
- P3 · 7 fichiers · 24
console.log— acceptable en CLI, mais un logger serait plus propre
Points forts
- 0 type
anydans tout le TypeScript — discipline rare - Tests presents sur les 3 packages
- Code JS/TS concis (5216 lignes pour 39 fichiers = ~134L/fichier)
Recommandations
- Builder
packages/coredans le CI ou ajouter un scriptpreparepour que status-board puisse trouverdist/. - Ajouter un
biome.jsonminimal pour enforcer le formatage.
3. Securite — 8/10
Constats
- Aucun fichier
.envcommite. Propre. - Aucun secret hardcode dans le code. Les hits de
rgsont des faux positifs (glossaires JSON d’accessibilite contenant le mot “token” au sens linguistique, schemas Figma, etc.). install-remote.shutilisecurl | bash. Pattern courant mais inheremment risque — l’utilisateur fait confiance au contenu du raw GitHub.- Pas de dependances npm a la racine. Surface d’attaque minimale. Seuls
packages/coreetpackages/ulk-sdkont des deps. - GitHub Actions workflow : permissions minimales (
contents: read,pages: write,id-token: write).
Violations
- P3 ·
install-remote.sh· Patterncurl | bash— standard mais risque si le repo est compromis
Points forts
- Zero secrets dans le code
- Permissions CI minimales
- Surface d’attaque tres reduite (pas de serveur, pas de DB, pas d’auth)
Recommandations
- Ajouter un checksum/signature pour
install-remote.shpour renforcer l’integrite.
4. Performance — N/A
Projet CLI/toolkit d’agents IA. Pas d’application web runtime, pas de serveur, pas de base de donnees. L’axe performance ne s’applique pas.
Le site statique (site/index.html) charge 3 CDN externes (Tailwind, Alpine.js, Iconify) — acceptable pour une page vitrine.
5. Design System & UI — 6/10
Applicable uniquement au site vitrine (site/index.html, 718 lignes).
Constats
- Design Swiss International Style avec palette navy/orange — visuellement coherent et distinctif.
- 0 attributs
altsur les images. Violation d’accessibilite basique. - 2 attributs
aria-*seulement sur 718 lignes de HTML interactif (accordions, modals, filtres). - 3 CDN externes non versionnees (Tailwind via
cdn.tailwindcss.comsans version, Alpine@3.14.1, Iconify3.1.1). Tailwind CDN est explicitement deconseille pour la production par Tailwind Labs. - Pas de
<noscript>fallback malgre une dependance forte a Alpine.js. - Google Fonts charge 2 familles (IBM Plex Mono + IBM Plex Sans, 7 poids) — potentiellement lourd.
Violations
- P0 ·
site/index.html· 0 attributsalt— non conforme WCAG 2.1 A - P1 ·
site/index.html· 2aria-*pour un site interactif (accordions, modals) — accessibilite clavier insuffisante - P2 ·
site/index.html· Tailwind CDN non versionne — risque de casse en production
Points forts
- Design coherent et distinctif (Swiss style)
- Alpine.js pinne a une version specifique
- Responsive implemente (breakpoint 768px)
Recommandations
- Ajouter
altsur toutes les images (P0 accessibilite). - Ajouter
aria-label,aria-expanded,rolesur les composants interactifs. - Remplacer Tailwind CDN par une build Tailwind ou epingler une version.
6. UX & Flows — N/A
Projet CLI/agents sans interface utilisateur interactive. Les “flows” sont des invocations de commandes Claude Code — corrects et documentes dans les READMEs et le guide.
7. Coherence Fonctionnelle — 6/10
Constats
- Registry desynchronise.
agents/registry.jsonannonce 71 agents. On trouve 87 fichiers MD d’agents dansagents/. 16 agents sans champphase:, 13 sansdescription:, 16 sansmodel:dans le frontmatter. commands/est une copie 1:1 deagents/. 49 fichiers identiques verifies par hash. Mecanisme de duplication — pas un bug, mais un risque de drift.- CLAUDE.md exhaustif et conforme au code reel. La documentation des workflows, agents, et conventions correspond a ce qui est effectivement implemente.
- CHANGELOG a jour. Version 4.0.0 datee du jour (2026-04-10), contenu detaille et structure.
clients/app-apple/: 34 fichiers Swift. Reference dans CLAUDE.md agents mais sans mention dans le README principal. Statut de maturite non clair.
Violations
- P1 ·
agents/registry.json· 71 agents declares vs 87 fichiers trouves — 16 non enregistres - P1 ·
agents/· 16 agents sansphase:, 13 sansdescription:, 16 sansmodel:— frontmatter incomplet - P2 ·
clients/app-apple/· 34 fichiers Swift sans mention dans README.md ni statut clair
Points forts
- CLAUDE.md detaille et conforme a la realite du code
- CHANGELOG maintenu avec rigueur (format Keep a Changelog)
- Conventions de nommage respectees dans la majorite des agents
Recommandations
- Regenerer le registry (
node cheatheet/generate-registry.cjs) et verifier que les 87 agents y figurent. - Completer le frontmatter des 16 agents manquants (phase, description, model).
- Clarifier le statut de
clients/app-apple/dans le README ou un doc dedie.
8. Infrastructure & DevOps — 5/10
Constats
- 1 seul workflow CI (
deploy.yml) : deploie le site sur GitHub Pages. C’est tout. - Aucun lint, typecheck, ou test automatise en CI. Les 3 packages ont des suites de tests mais elles ne tournent qu’en local.
packages/core/dist/absent — le build TypeScript n’est pas effectue, ce qui cassepackages/status-board.- 42 branches remote mergees non nettoyees sur 54 totales. Bruit dans le repo.
- Pas de
.env.example— normal car le projet n’utilise pas de variables d’environnement. - Pas de monitoring/logging — normal pour un toolkit CLI.
Violations
- P0 ·
.github/workflows/· Aucun CI de qualite (lint + typecheck + test) — les regressions passent inapercues - P1 ·
packages/core/·dist/absent — casse les tests status-board - P2 · Remote branches · 42 branches mergees non supprimees
Points forts
- Deploy GitHub Pages automatise et propre
- Permissions CI minimales (principe du moindre privilege)
- Concurrency group pour eviter les deployments paralleles
Recommandations
- Ajouter un workflow CI
test.yml:npm run build(core) +npm test(core) +node --test(ulk-sdk, status-board). - Nettoyer les branches mergees :
git branch -r --merged main | grep -v main | xargs git push origin --delete. - Ajouter un job
typecheckdans le CI pourpackages/core.
9. Documentation — 8/10
Constats
- CLAUDE.md : reference. 676 lignes dans
agents/CLAUDE.md, couvrant l’architecture, les workflows, les conventions, les agents, et les patterns. Probablement un des meilleurs CLAUDE.md de projet open-source. - Documentation structuree dans
docs/: spec.md (676L), guide.md (162L), reference.md (146L), adr.md (127L), glossaire.md, todo.md (70L). - CHANGELOG exemplaire : 594 lignes, format Keep a Changelog, versionne semantiquement.
- README minimaliste (52 lignes) — intentionnel, renvoie vers la doc complete. Efficace.
- 6 rules dans
.claude/rules/: agents-authoring, cheatheet, frontend-agents, native-features, packages, session-practices. - ADR documentees : 10 decisions d’architecture avec leurs raisons.
- Pas de JSDoc/docstrings dans le code TypeScript. Les types font office de documentation.
Violations
- P3 ·
packages/core/src/· Pas de JSDoc sur les exports publics (parseTodoFile, parseSpecFile, GitHubClient)
Points forts
- CLAUDE.md exhaustif et structure
- CHANGELOG maintenu avec rigueur
- 10 ADR documentees
- 6 rules contextuelles
- Guide utilisateur avec 3 workflows
Recommandations
- Ajouter des JSDoc minimaux sur les 3 exports publics de
@ulk/core. - Documenter
clients/app-apple/dans un README dedie ou la doc de reference.
10. Dette Technique — 7/10
Constats
- 7 TODO/FIXME/HACK dans le code. Bien en dessous du seuil de 10. La plupart sont des placeholders dans les tests ou templates.
- 42 branches remote mergees non nettoyees — dette organisationnelle, pas technique.
commands/dupliqueagents/— 49 fichiers a maintenir en double. Dette architecturale.- Pas de linter enforce — le code est propre mais rien n’empeche une regression de style.
packages/corenon build (dist/absent) — empeche le fonctionnement de status-board.- 1 god file (install.sh 551L) — juste au seuil, structure interne correcte.
- Dependances a jour : TypeScript 6.0, Vitest 4.0, Node 24/25 — stack moderne.
Violations
- P1 ·
commands/· 49 fichiers dupliques — dette de maintenance active - P2 · Remote · 42 branches mergees a supprimer
- P3 ·
install.sh· 551 lignes — candidat au split si d’autres features s’ajoutent
Points forts
- Seulement 7 TODO/FIXME dans tout le code
- Dependances modernes et a jour
- 0 code deprecie ou workaround documente
Recommandations
- Automatiser la generation de
commands/depuisagents/pour eliminer la duplication. - Nettoyer les 42 branches mergees.
Top 20 Actions Prioritaires
| # | Axe | Severite | Action | Fichier(s) | Effort |
|---|---|---|---|---|---|
| 1 | Design System | P0 | Ajouter attributs alt sur toutes les images | site/index.html | XS |
| 2 | Infrastructure | P0 | Creer workflow CI test.yml (build + test + typecheck) | .github/workflows/ | S |
| 3 | Qualite code | P1 | Builder packages/core (ou ajouter script prepare) | packages/core/ | XS |
| 4 | Coherence | P1 | Regenerer registry.json pour inclure les 87 agents | agents/registry.json | XS |
| 5 | Coherence | P1 | Completer frontmatter manquant (16 agents sans phase/model) | agents/frontend/, agents/test/, agents/deploy/ | S |
| 6 | Architecture | P1 | Generer commands/ depuis agents/ dans install.sh | commands/, install.sh | M |
| 7 | Design System | P1 | Ajouter aria-* sur composants interactifs (accordion, modal) | site/index.html | S |
| 8 | Infrastructure | P1 | Fixer les 2 tests status-board en echec | packages/status-board/tests/ | XS |
| 9 | Design System | P2 | Remplacer Tailwind CDN par build ou version epinglee | site/index.html | S |
| 10 | Architecture | P2 | Ajouter pnpm-workspace.yaml pour formaliser le monorepo | Racine | S |
| 11 | Qualite code | P2 | Ajouter config linter (Biome ou ESLint) | Racine | S |
| 12 | Infrastructure | P2 | Nettoyer 42 branches remote mergees | Remote | XS |
| 13 | Coherence | P2 | Documenter statut clients/app-apple/ | clients/app-apple/README.md | XS |
| 14 | Documentation | P3 | Ajouter JSDoc sur exports publics @ulk/core | packages/core/src/ | S |
| 15 | Securite | P3 | Ajouter checksum pour install-remote.sh | install-remote.sh | S |
| 16 | Design System | P3 | Ajouter <noscript> fallback | site/index.html | XS |
| 17 | Design System | P3 | Optimiser Google Fonts (reduire les poids charges) | site/index.html | XS |
| 18 | Dette | P3 | Surveiller install.sh (551L) — splitter si > 600L | install.sh | M |
| 19 | Infrastructure | P3 | Ajouter schedule de nettoyage branches dans CI | .github/workflows/ | S |
| 20 | Coherence | P3 | Verifier coherence site/data/commands.json vs registry | site/data/commands.json | XS |
Ce qui fonctionne bien
- CLAUDE.md de reference — documentation agent exhaustive, structuree, conforme au code reel
- Typage exemplaire — 0
any, 0ts-ignoredans tout le TypeScript - Architecture agent solide — 87 agents organises par theme, protocols partages (
_shared/), frontmatter structure - CHANGELOG maintenu — 594 lignes, format Keep a Changelog, versionne semantiquement
- 10 ADR documentees — decisions d’architecture tracees et justifiees
- Suite de tests presente sur les 3 packages (meme si CI manque)
- Securite propre — zero secrets, zero .env commite, permissions CI minimales
- install.sh unifie — installateur pur bash, zero dependances, multi-options
- 11 schemas JSON — contrats de donnees formalises entre packages
- Dependances modernes — TypeScript 6, Vitest 4, Node 24+
- Conventions coherentes — nommage
NN-agent-name.md, _shared/ mutualise, rules/ contextuelles
Verdict
-
Le projet est-il pret pour la production / le prochain jalon ?
Oui, avec reserves. Ulk v4.0.0 est un toolkit fonctionnel et bien documente. Les agents s’installent et s’executent correctement. La dette technique est faible (7 TODO, code propre). Cependant, l’absence totale de CI de qualite (aucun test automatise) est le principal risque pour la fiabilite a mesure que le projet grandit. Le second risque est la duplication
commands/qui finira par generer des incoherences. -
Les 3 risques majeurs.
- Aucun CI de qualite — les regressions passent en silence (seul le deploy est automatise)
- Duplication commands/agents — 49 fichiers identiques maintenus manuellement, drift inevitable
- Registry desynchronise — 71 declares vs 87 reels, frontmatter incomplet sur 16 agents
-
Les 3 atouts majeurs.
- Documentation exceptionnelle — CLAUDE.md, CHANGELOG, ADR, guide, reference, glossaire — rare a ce niveau
- Architecture agent coherente — 87 agents structures, protocols partages, detection de stack, orchestration multi-agents
- Code propre et minimal — 0 type
any, 7 TODO, dependances modernes, pas de code mort significatif