plugins/somtech-estimator/skills/estimation-engine/SKILL.md
Ce skill doit être utilisé quand l'utilisateur demande à "estimer un projet", "calculer les coûts", "analyser un cahier des charges pour estimation", "évaluer le risque d'un projet", ou a besoin d'extraire les features d'un CDC et de produire une estimation en jours-personne. Aussi déclenché par "estimation", "forfait", "coûts", "jours-personne", "facteur de risque".
npx skillsauth add SomtechSolutionMAxime/somtech-pack estimation-engineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Moteur d'extraction et de calcul pour l'estimation de projets forfaitaires.
Avant d'extraire les blocs du CDC, identifier :
Demander si le projet utilise la stack standard Somtech. Si oui, charger ${CLAUDE_PLUGIN_ROOT}/templates/stack.json.
Impact de la stack Somtech sur l'estimation :
Bonus IA supplémentaire (s'ajoute aux facteurs de base) :
reduction_finale = reduction_base + bonus_stack (plafonné à 0.85 max)Fonctionnalités gratuites à exclure ou réduire :
supabase gen types, effort = 0Réduction infrastructure initiale :
| Nature | Indicateurs CDC | Types privilégiés | |--------|----------------|-------------------| | Développement custom | App web, API, UI, composants React, formulaires | crud, ui_complexe, logique_metier, auth_securite | | Data / BI | ETL, entrepôt, dashboards, rapports, KPI, Superset, PowerBI | etl_data, dashboard_config | | Configuration | Paramétrage outil existant, intégration API | dashboard_config, integration_api | | Migration | Remplacement système, import données, scripts | migration_donnees, etl_data | | Hybride | Mix des précédents | Par bloc selon sa nature |
Présenter la nature identifiée à l'utilisateur pour validation.
Demander : "Ce module fait-il partie d'un système existant ou est-ce le premier module ?"
${CLAUDE_PLUGIN_ROOT}/templates/defaults.json section infrastructureInitiale.Chercher dans le CDC les indicateurs de reproduction : "remplacer", "reproduire", "migrer depuis", "équivalent à", "mêmes fonctionnalités", "remplacement de [outil]".
Si détecté :
effort_ajusté = effort_base × facteur_reproductionUn fichier .docx de cahier des charges. Seul le format .docx est accepté.
word/document.xml)| Type | Indicateurs dans le CDC |
|------|------------------------|
| crud | Formulaire, saisie, liste, CRUD, gestion de [entité] |
| pages_statiques | Page d'information, contenu statique, à propos, FAQ |
| ui_complexe | Dashboard, tableau de bord, drag & drop, graphiques, filtres avancés |
| logique_metier | Calcul, workflow, règles métier, processus, validation complexe |
| integration_api | API tierce, intégration, synchronisation, webhook, import/export externe |
| auth_securite | Authentification, autorisation, rôles, permissions, SSO, 2FA |
| infrastructure | Déploiement, CI/CD, monitoring, performance, cache, CDN |
| reporting | Rapport, export PDF/Excel, statistiques, métriques, analytics |
| gestion_projet | Gestion de projet, suivi, points de contrôle, accompagnement, coordination |
| etl_data | ETL, pipeline, transformation SQL, vues matérialisées, entrepôt de données, data warehouse |
| dashboard_config | Dashboard, tableau de bord BI, Superset, PowerBI, Metabase, KPI, chart, rapport analytique |
| migration_donnees | Migration de données, import depuis [système], scripts de migration, réconciliation, conversion |
Après l'extraction des features de haut niveau, chaque feature est décomposée en tâches individuelles avant toute estimation. Cette étape est obligatoire — elle produit la granularité nécessaire pour une estimation précise.
Principe : une feature de haut niveau (ex: "Pipeline Kanban") génère plusieurs tâches atomiques, chacune avec son propre type et sa propre complexité.
Exemple de décomposition :
Feature: Pipeline Kanban (bloc "Gestion des projets")
→ Tâche 1: Modèle de données projets/colonnes [crud, simple]
→ Tâche 2: CRUD fiches projets [crud, moyen]
→ Tâche 3: Vue Kanban drag-and-drop [ui_complexe, complexe]
→ Tâche 4: Scoring automatique des projets [logique_metier, moyen]
→ Tâche 5: Historique / audit log [crud, simple]
Règles de décomposition :
Liste structurée par bloc, avec tâches sous-jacentes :
Bloc 1: [Nom du module/feature principal]
Risque: complexité=[1-5], dépendances=[1-5]
Tâche 1.1: [Nom technique]
Type: [type]
Complexité: [simple|moyen|complexe]
Tâche 1.2: [Nom technique]
Type: [type]
Complexité: [simple|moyen|complexe]
...
Bloc 2: [Nom du module/feature principal]
...
Après la sous-décomposition, analyser les types de tâches identifiés et proposer une composition d'équipe :
Présenter à l'utilisateur :
En mode formule : Les rôles marqués ❌ par l'utilisateur sont mis à 0% d'allocation pour toutes les tâches du projet. Leurs jours sont redistribués proportionnellement aux rôles restants.
En mode direct : Les rôles marqués ❌ sont mis à 0 jours dans l'overhead fixe. L'effort dev n'est pas affecté.
Après la validation de l'équipe et la connaissance des blocs extraits, déterminer le mode d'estimation approprié.
| Mode | Phase | Quand l'utiliser | |------|-------|------------------| | Formule | Phase 2A | Gros projets multi-équipes, équipe > 2 devs, 6+ blocs fonctionnels | | Direct | Phase 2B | Petits projets, équipe ≤ 2 devs, projets IA-first |
Proposer le mode direct si au moins deux des critères suivants sont vrais :
Si un seul critère est vrai, mentionner la possibilité du mode direct mais recommander le mode formule par défaut.
Mode d'estimation recommandé : [Direct / Formule]
Raison : [critère(s) déclencheur(s)]
Mode Direct — L'agent estime directement les jours dev par tâche (trad + IA).
L'overhead (PM, QA, Designer, Architecte) est estimé en bloc fixe pour le projet.
Adapté aux petits projets et équipes réduites.
Mode Formule — Calcul automatique via fourchettes de référence et allocation par rôle.
Adapté aux gros projets avec équipe complète.
Quel mode veux-tu utiliser ?
L'utilisateur peut toujours choisir l'autre mode, quelle que soit la recommandation.
Deux modes de calcul sont disponibles. Le mode est sélectionné en Phase 0d.
Charger les données de référence depuis ${CLAUDE_PLUGIN_ROOT}/templates/defaults.json.
Consulter ${CLAUDE_PLUGIN_ROOT}/skills/estimation-engine/references/defaults.md pour les tableaux lisibles.
effortBaseJours[type][complexité]allocationRoles[type] :
jours_role = effort_total × allocation_rolecout_role = jours_role × tauxJournaliers[role]Le risque est calculé au niveau du bloc (feature de haut niveau), pas par tâche individuelle. Évaluer deux scores (1-5) par bloc :
Calcul du facteur par bloc :
score_moyen = (complexité + dépendances) / 2grilleRisque.facteurParScoreMoyenFacteur de risque global :
risque_global = somme(cout_bloc × facteur_bloc) / somme(cout_bloc)Pour chaque tâche et chaque rôle, appliquer le facteur IA spécifique au rôle :
dev_senior : jours_ia = jours_trad × (1 - reductionIA[type])dev_junior : jours_ia = jours_trad × (1 - reductionIA[type])designer : jours_ia = jours_trad × (1 - 0.40) (réduction fixe 40%)qa : jours_ia = jours_trad × (1 - 0.35) (réduction fixe 35%)pm : jours_ia = jours_trad × (1 - 0.25) (réduction fixe 25%)Recalcul du coût : cout_ia_role = jours_ia × tauxJournaliers[role]
cout_architecte_trad = somme(tous_couts_taches_trad) × architectePourcentageGlobal / 100jours_architecte_trad = cout_architecte_trad / tauxJournaliers.architecteCalcul des totaux globaux :
total_trad_brut = somme(couts_taches_trad) + cout_architecte_tradtotal_trad_risque = total_trad_brut × risque_globalPour chaque bloc, calculer et afficher :
cout_bloc_brut_trad = somme(couts_taches_trad du bloc)cout_bloc_risque_trad = cout_bloc_brut_trad × facteur_risque_bloccout_bloc_brut_ia = somme(couts_taches_ia du bloc)cout_bloc_risque_ia = cout_bloc_brut_ia × facteur_risque_blocLe rapport doit afficher pour chaque bloc :
Ce mode est conçu pour les projets portés par 1-2 devs seniors, les projets IA-first, et les petites équipes. L'agent estime directement les jours dev par tâche sans passer par les fourchettes effortBaseJours ni l'allocation par rôle.
Pour chaque tâche, l'agent estime directement deux valeurs :
La grille effortBaseJours_ia dans defaults.json sert de référence indicative (pas de calcul automatique). L'agent peut s'en écarter selon le contexte du projet.
Calcul du coût dev par tâche :
cout_trad = jours_trad × tauxJournaliers.dev_seniorcout_ia = jours_ia × tauxJournaliers.dev_senior(Simplification : en mode direct, tout l'effort dev est facturé au taux senior car l'équipe est réduite)
Identique à la Phase 2A (section 2b). Le risque reste évalué par bloc avec les scores de complexité et dépendances.
Charger la grille overheadFixe depuis defaults.json. Sélectionner la taille du projet selon le total des jours dev (traditionnel) :
| Total jours dev trad | Taille | |---------------------|--------| | < 20j | petit | | 20-60j | moyen | | 60-120j | grand | | > 120j | tres_grand |
La grille fournit des valeurs de référence pour chaque rôle d'overhead. L'agent peut les ajuster selon le contexte :
Pour chaque rôle d'overhead, estimer deux valeurs :
jours_trad × (1 - reductionIA_parRole[role])Coût overhead :
cout_overhead_role = jours × tauxJournaliers[role]cout_overhead_total = somme(cout_overhead_role pour chaque role)Le risque s'applique uniquement à l'effort dev, pas à l'overhead. L'overhead (PM, QA, Designer, Architecte) représente des coûts fixes de coordination et qualité qui ne varient pas avec la complexité technique.
total_dev_trad_brut = somme(cout_trad de chaque tâche)
total_dev_ia_brut = somme(cout_ia de chaque tâche)
total_dev_trad_risque = total_dev_trad_brut × risque_global
total_dev_ia_risque = total_dev_ia_brut × risque_global
total_overhead_trad = somme(cout_overhead_trad de chaque rôle)
total_overhead_ia = somme(cout_overhead_ia de chaque rôle)
total_projet_trad = total_dev_trad_risque + total_overhead_trad
total_projet_ia = total_dev_ia_risque + total_overhead_ia
Note : en mode direct, l'architecte est inclus dans l'overhead fixe (pas de surplus 5%).
Identique à la Phase 2A (section 2f) pour la partie dev. L'overhead est présenté séparément comme un bloc à part.
Le format de sortie est compatible avec le rapport standard (Phase 3 et Phase 4). Le rapport mentionne le mode utilisé dans la section Paramètres.
Présenter le tableau récapitulatif. L'interaction utilisateur est gérée par la commande /estimer.
Le rapport est organisé par bloc, avec le détail des tâches et les sous-totaux :
BLOC: [Nom du bloc]
Risque: complexité=[score]/5, dépendances=[score]/5 → facteur ×[facteur]
| Tâche | Type | Complexité | Jours Trad | Jours IA | Coût Trad | Coût IA |
|--------------------|---------------|------------|------------|----------|------------|------------|
| [Nom tâche 1] | [type] | [compl.] | [j] | [j] | [X $] | [X $] |
| ... | | | | | | |
Sous-total brut : [X $] trad | [X $] IA
Sous-total avec risque : [X $] trad | [X $] IA (×[facteur])
---
ARCHITECTE (surplus global, 5%) :
Jours: [j] trad | [j] IA
Coût : [X $] trad | [X $] IA
TOTAUX GLOBAUX :
Brut : [X $] trad | [X $] IA
Avec risque : [X $] trad | [X $] IA
(Facteur de risque global pondéré : ×[facteur])
L'utilisateur peut :
Si le CDC a 20+ tâches, le regroupement par bloc dans le tableau de review est obligatoire.
tools
Documentation de référence SomCraft — DMS Markdown-native avec AI, MCP server, et Studio. À consulter pour toute question sur l'architecture, les APIs, les concepts, ou l'exploitation d'une instance SomCraft. TRIGGERS : somcraft, dms, document management, workspace somcraft, studio somcraft, mcp somcraft, api somcraft
tools
Déployer une instance SomCraft pour un client existant (migrations Supabase + Fly.io + skills). Orchestre 7 phases : pré-flight, plan, migrations, seed, déploiement, smoke tests, installation des skills. TRIGGERS : deploy-somcraft, déployer somcraft, installer somcraft, somcraft client, setup somcraft, upgrade somcraft, status somcraft
tools
Génère l'intégralité de la configuration d'un silo SomTech : docker-compose, services Fly.io, constitutions d'agents, et templates d'environnement. Valide les métadonnées d'application avant génération. À utiliser après validation initiale du client et avant déploiement.
development
Exécute le déploiement complet d'une silo après sa génération : conteneurs Docker, environnement de développement Fly.io, branche Git, et configuration Netlify. Transforme les configs générées en infrastructure active avec URLs stables et builds automatisés.