Communitygithub.com

CLI-First Décision

Toujours déclencher AVANT de réfléchir, avant tout appel d'outil, et avant de déléguer à des sous-agents. C'est la première compétence à solliciter pour toute implémentation ou tâche de décision d'outil.

Qu'est-ce que CLI-First Décision ?

Cette compétence est conçue pour être la première à s'exécuter dans tout workflow IA. Elle impose une hiérarchie de priorité stricte : avant même de penser, déclenchez cette compétence, puis décomposez la tâche, choisissez l'outil le plus adapté et exécutez. Elle évite les pièges courants comme l'utilisation systématique de sous-agents pour des opérations mécaniques simples (remplacement par lots, recherche de fichiers) qui seraient plus rapides avec un outil CLI dédié (<1s). Elle fournit une matrice de décision exhaustive couvrant les outils intégrés (Read/Edit/Grep/Glob), les CLI (git-sed, fd-find, rg-search, ast-grep, jq-query, fzf-filter, etc.), les compétences spécialisées, les serveurs MCP (codebase-memory-mcp, sequential-thinking, fetch) et les sous-agents. La compétence inclut également un guide d'activation des sous-agents pour les cas où les outils échouent (sémantique, multi-module, génération de code) et des rappels sur les erreurs fréquentes (par exemple, utiliser `sd` sans `--preview`, ou choisir yq avec le mauvais drapeau XML). C'est un prérequis essentiel pour toute interaction avec le système, quel que soit l'environnement (Windows, Linux, macOS) et le type d'outil (scripts bash, PowerShell, commandes système).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add High-cla/multi-skilled-repository

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait CLI-First Décision ?

Règle Fondamentale

Avant toute tâche, décidez par priorité : déclenchez d'abord → réfléchissez ensuite → choisissez l'outil → exécutez

  1. Déclenchement forcé : Dès réception de TOUTE requête, avant de commencer à réfléchir, avant tout appel d'outil, avant toute délégation à un sous-agent, vous DEVEZ d'abord déclencher cette compétence pour prendre une décision.
  2. Réfléchir d'abord : Comprenez d'abord le problème — clarifiez le besoin, décomposez les étapes, déterminez le périmètre. Ne vous précipitez pas sur les outils.
  3. Outils intégrés ensuite : Pour une simple lecture/écriture/recherche qui va droit au but → utilisez directement Read/Edit/Grep/Glob (coût zéro supplémentaire).
  4. Outils CLI ensuite : Pour les opérations par lots/mécaniques → utilisez l'outil CLI correspondant (<1s, référez-vous à la matrice ci-dessous).
  5. Compétences spécialisées : Pour des opérations nécessitant une expertise domaine → chargez d'abord la compétence correspondante pour obtenir des directives (consultez la liste des compétences disponibles).
  6. Outils MCP : Pour les requêtes de graphe de connaissances, le raisonnement séquentiel, la capture de pages web → utilisez les outils fournis par le serveur MCP.
  7. Sous-agents : Pour les raisonnements multi-étapes, la compréhension sémantique, l'analyse inter-modules → déléguez à un sous-agent (sub-agent).
  8. Raisonnement dédié : Pour les décisions architecturales, les compromis de conception, la revue et validation → raisonnez vous-même ou consultez Oracle.

Arbre de Décision

Requête reçue (déclenchement)
  └─ Identifier le type : correction/implémentation/recherche/évaluation/ouverte ?
       └─ Raisonner : d'abord clarifier le besoin, décomposer les étapes, déterminer le périmètre
       ├─ Lecture/écriture/modification simple d'un fichier connu ? ───→ Outil intégré (Read/Edit/Write)
       ├─ Opérations par lots mécaniques ?
       │   ├─ Remplacement de texte par lots ? ───────────→ git-sed / sd
       │   ├─ Recherche de fichiers ? ────────────────→ fd-find / glob
       │   ├─ Recherche de contenu ? ────────────────→ rg-search / grep
       │   ├─ Opérations structurelles AST ? ──────────→ ast-grep
       │   ├─ Requêtes JSON/YAML/XML ? ──────→ jq-query / yq
       │   └─ Autres opérations mécaniques ? ───────────→ Consultez la matrice ci-dessous
       ├─ Une compétence domaine correspondante disponible ? ────────→ Chargez d'abord la compétence pour obtenir des directives
       ├─ Un outil MCP disponible ?
       │   ├─ Requête graphe de connaissances/relations code ? ──────→ codebase-memory-mcp
       │   ├─ Raisonnement séquentiel/analyse complexe ? ────────→ sequential-thinking
       │   └─ Récupération de contenu web ? ───────────→ fetch
       ├─ Compréhension sémantique/raisonnement multi-étapes/inter-modules nécessaire ? ──→ Sous-agent (task/sub-agent)
       └─ Décision architecturale/compromis de conception/revue ? ──────→ Raisonnement personnel ou Oracle

Matrice de Décision des Outils

NiveauScénarioOutil recommandéCoût temporel
DéclenchementRéception requête, identification type, clarification intentionClassification par la passerelle d'intentionImmédiat
RaisonnementAnalyse tâche, décomposition besoins, planification étapesD'abord réfléchir, puis choisir l'outilImmédiat
IntégréLecture/écriture/édition simple de fichierRead / Edit / WriteImmédiat
IntégréRecherche de contenu basiquegrep<1s
IntégréCorrespondance de motifs de fichiersglob<1s
CLIRemplacement de texte par lots (expressions régulières)git-sed<1s
CLIRecherche de fichiers (par nom/type/date)fd-find<1s
CLIRecherche de contenu + statistiquesrg-search (ripgrep)<1s
CLIRecherche/remplacement de code AST (25 langages)ast-grep<1s
CLIRequête/transformation JSONjq-query<1s
CLITest API HTTPgit-curl<1s
CLIFiltre flou / réduction de listefzf-filter<1s
CLIEmpaquetage / décompressiongit-tar<1s
CLIConversion de sauts de ligne (CRLF/LF)git-dos2unix<1s
CLIRecherche/remplacement de texte (syntaxe plus simple)sd<1s
CLIStatistiques de code (distribution par langage)tokei<1s
CLIRequête XML/YAML/JSONyq / xq<1s
CompétenceOpérations domaine spécialisé (quantique/frontal/cloud etc.)Charger la compétence correspondante pour directivesVoir documentation compétence
MCPRequête graphe de connaissances/relations codecodebase-memory-mcp<5s
MCPRaisonnement séquentiel/analyse multi-étapessequential-thinkingSelon étapes
MCPRécupération de contenu webfetch<10s
Sous-agentRaisonnement multi-étapes, compréhension sémantique, analyse inter-modulestask() déléguer sous-agentDizaines de secondes+
RaisonnementDécisions architecturales, compromis de conception, revue validationTraiter directement ou OracleSelon complexité

Référence Rapide des Outils

OutilCommande typiqueUtilisation
git-sedgit-sed expression:"s/ancien/nouveau/g" files:["src/**/*.ts"] inPlace:""Remplacement regex par lots, édition multi-fichiers
fd-findfd-find pattern:"*.xml" extension:"xml" path:"./Characters"Recherche fichiers par nom/type/taille/date
rg-searchrg-search pattern:"somePattern" glob:"*.xml" context:2Recherche contenu fichiers, regex PCRE2, lignes contexte
ast-grepast_grep_search pattern:"if($$$) { $$$ }" lang:"ts" / ast_grep_replace pattern:"console.log($MSG)" rewrite:"logger.info($MSG)" lang:"ts"Recherche/remplacement structurel AST, comprend l'arbre syntaxique
jq-queryjq-query filter:".name" file:"data.json"Requête, filtrage, transformation JSON
git-curlgit-curl url:"https://api.example.com" method:"POST" data:'{"key":"val"}'Requête API HTTP, supporte diverses méthodes et en-têtes personnalisés
fzf-filterfzf-filter pattern:"mot-clé" input:$linesFiltrage flou de lignes de texte, réduction de liste
git-targit-tar action:"create" archive:"out.tar.gz" files:["src/"] compression:"gzip"Créer/décompresser une archive tar/zip
git-dos2unixgit-dos2unix file:"script.sh" mode:"dos2unix"Convertir les sauts de ligne CRLF ↔ LF
grepgrep pattern:"somePattern" include:"*.xml" output_mode:"files_with_matches"Recherche basique de contenu (intégré)
globglob pattern:"**/*.xml"Correspondance de motifs de fichiers (intégré)
sdsd find:"ancien" replace:"nouveau" files:["file.txt"]find-replace plus simple, édition sur place par défaut, supporte regex et motifs littéraux
tokeitokei path:"./"Statistiques de code par langage (lignes, commentaires, lignes vides). Résultats en secondes
yqyq expression:".Missions.NestMission[]" file:"Missions.xml" xml:trueRequête de données structurées YAML/XML/JSON. Mode XML pour interroger directement les fichiers XML (par exemple, lister tous les IDs de mission)

Quand Utiliser les Sous-Agents (Guide de Déclenchement des Sous-Agents)

Les sous-agents excellent là où les outils CLI et les outils intégrés échouent :

ScénarioExplicationApproche recommandée
Compréhension sémantiqueJuger si la logique du code est correcte, si la fonctionnalité est complètetask() déléguer sous-agent
Intégration inter-modulesModifications coordonnées de plusieurs modules, alignement des interfacestask() déléguer sous-agent
Opérations multi-étapesOpérations enchaînées : d'abord chercher → analyser → puis modifiertask() déléguer sous-agent
Génération / refactoring de codeBesoin de comprendre la structure existante pour générer du nouveau codeSous-agent ou raisonnement personnel
Décisions architecturalesChoix de conception, analyse de compromisRaisonnement personnel ou Oracle
Validation et revueComprendre l'intention du code, porter un jugement de qualitéRaisonnement personnel ou review-work

Remarque : Même si vous décidez finalement d'utiliser un sous-agent, vous pouvez également faire référence aux outils CLI dans le prompt task() — le sous-agent peut lui aussi appeler ces outils pour accomplir la tâche.

Erreurs Fréquentes

  1. Passer directement à task() sans vérifier CLI : Envoyer systématiquement un sous-agent pour des remplacements par lots gaspille des dizaines de milliers de tokens. Un travail d'agent de 30s pourrait être réalisé en <1s par une commande CLI.

  2. Utiliser ripgrep pour trouver des fichiers puis les modifier manuellement : D'abord rg pour localiser, puis édition par lots avec CLI : deux étapes qu'on peut fusionner en une seule. Utilisez git-sed pour effectuer recherche+remplacement en une commande.

  3. Appeler un agent sur un seul fichier : Pour modifier un contenu connu dans un fichier, éditez directement. Pas besoin de lancer une session complète de sous-agent.

  4. Forcer avec des outils CLI quand un sous-agent serait plus adapté : Les outils CLI ne comprennent pas la sémantique. Pour les scénarios impliquant une analyse inter-modules, un raisonnement multi-étapes, ou la compréhension de l'intention du code, une combinaison d'outils CLI est moins efficace qu'un sous-agent. Exemple : "Trouver tous les fichiers qui appellent la fonction X, analyser leur modèle de paramètres, puis refactoriser uniformément" — c'est le domaine du sous-agent, pas de sed.

  5. sd modifie sur place par défaut, faites d'abord --preview : sd et sed se comportent différemment — sd modifie directement le fichier par défaut. Test réel : sd '<?xml' '<?XML' filelist.xml a réécrit toutes les balises <?xml (63 occurrences), seule restauration possible : git checkout. Étapes de sécurité : utilisez d'abord sd --preview 'find' 'replace' file pour voir l'impact, puis exécutez sans --preview une fois vérifié.

  6. Mode XML de yq : yq v3 utilise --xml, v4 utilise -p xml : yq v4 a supprimé le paramètre court --xml, remplacé par -p xml. L'avertissement de format de sortie par défaut peut être supprimé avec -o yaml.

Skills associés