/search-first — Cherchez avant de coder
Systématise le workflow « rechercher des solutions existantes avant d'implémenter ».
Déclencheur
Utilisez ce skill lorsque :
- Vous commencez une nouvelle fonctionnalité qui a probablement des solutions existantes
- Vous ajoutez une dépendance ou une intégration
- L'utilisateur demande « ajouter la fonctionnalité X » et que vous êtes sur le point d'écrire du code
- Vous créez un nouvel utilitaire, helper ou abstraction
Workflow
┌─────────────────────────────────────────────┐
│ 0. VÉRIFICATION PRÉALABLE DES OUTILS │
│ Vérifier les canaux de recherche avant │
│ de s'y fier ; signaler honnêtement les │
│ canaux ignorés │
├─────────────────────────────────────────────┤
│ 1. ANALYSE DU BESOIN │
│ Définir la fonctionnalité nécessaire │
│ Identifier les contraintes langage/fw │
├─────────────────────────────────────────────┤
│ 2. RECHERCHE PARALLÈLE (agent chercheur) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ npm / │ │ MCP / │ │ GitHub /│ │
│ │ PyPI │ │ Skills │ │ Web │ │
│ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────┤
│ 3. ÉVALUER │
│ Noter les candidats (fonctionnalité, │
│ maintenance, communauté, docs, licence, │
│ dépendances) │
├─────────────────────────────────────────────┤
│ 4. DÉCIDER │
│ ┌─────────┐ ┌──────────┐ ┌─────────┐ │
│ │ Adopter │ │ Étendre │ │ Créer │ │
│ │ Tel quel│ │ /Wrapper │ │ sur │ │
│ └─────────┘ └──────────┘ └─────────┘ │
├─────────────────────────────────────────────┤
│ 5. IMPLÉMENTER │
│ Installer le paquet / Configurer MCP / │
│ Écrire un minimum de code personnalisé │
└─────────────────────────────────────────────┘
Matrice de décision
| Signal | Action |
|---|---|
| Correspondance exacte, bien maintenu, MIT/Apache | Adopter — installer et utiliser directement |
| Correspondance partielle, bonne base | Étendre — installer + écrire une fine couche d'adaptation |
| Plusieurs correspondances faibles | Composer — combiner 2-3 petits paquets |
| Aucune solution adaptée trouvée | Créer — écrire du code personnalisé, mais informé par la recherche |
Comment utiliser
Étape 0 : Vérification préalable des outils
Ceci est un guide pour l'agent, pas un script de configuration exécutable. Vérifiez uniquement les canaux pertinents pour la tâche et le projet en cours.
| Canal | Vérification | Si manquant |
|---|---|---|
| Recherche dans le dépôt | rg --files et requêtes rg ciblées | Indiquer que seuls les fichiers visibles ont été inspectés |
| Registre de paquets | npm --version, python -m pip --version, ou le gestionnaire de paquets du projet | Utiliser la recherche web/docs et éviter d'affirmer la couverture du registre |
| GitHub CLI | gh auth status | Utiliser uniquement le web public ou l'historique git local |
| Outils MCP/docs | Liste d'outils disponibles ou configuration MCP locale | Revenir aux docs officielles / recherche web |
| Répertoire de skills | ls ~/.claude/skills ~/.codex/skills le cas échéant | Dire qu'aucun catalogue local de skills n'était disponible |
Mode rapide (en ligne)
Avant d'écrire un utilitaire ou d'ajouter une fonctionnalité, parcourez mentalement :
- Cela existe-t-il déjà dans le dépôt ? →
rgdans les modules/tests pertinents d'abord - Est-ce un problème courant ? → Chercher sur npm/PyPI
- Existe-t-il un MCP pour cela ? → Vérifier
~/.claude/settings.jsonet chercher - Existe-t-il un skill pour cela ? → Vérifier
~/.claude/skills/ - Existe-t-il une implémentation/modèle GitHub ? → Lancer une recherche GitHub de code pour trouver des OSS maintenus avant d'écrire du code neuf
Mode complet (agent)
Pour une fonctionnalité non triviale, lancez l'agent chercheur :
Agent(subagent_type="general-purpose", prompt="
Rechercher des outils existants pour : [DESCRIPTION]
Langage/framework : [LANG]
Contraintes : [CONTRAINTES]
Chercher : npm/PyPI, serveurs MCP, skills Claude Code, GitHub
Retourner : Comparaison structurée avec recommandation
")
Les anciennes docs Claude Code peuvent appeler cela Task(...) ; utilisez le nom de l'outil agent/subagent actuel exposé par le harnais actif.
Raccourcis de recherche par catégorie
Outils de développement
- Linting →
eslint,ruff,textlint,markdownlint - Formatage →
prettier,black,gofmt - Tests →
jest,pytest,go test - Pre-commit →
husky,lint-staged,pre-commit
Intégration IA/LLM
- SDK Claude → Context7 pour les dernières docs
- Gestion des prompts → Vérifier les serveurs MCP
- Traitement de documents →
unstructured,pdfplumber,mammoth
Données & API
- Clients HTTP →
httpx(Python),ky/undici(Node) - Validation →
zod(TS),pydantic(Python) - Base de données → Vérifier d'abord les serveurs MCP
Contenu & Publication
- Traitement Markdown →
remark,unified,markdown-it - Optimisation d'images →
sharp,imagemin
Points d'intégration
Avec l'agent planificateur
Le planificateur doit invoquer le chercheur avant la phase 1 (Revue d'architecture) :
- Le chercheur identifie les outils disponibles
- Le planificateur les intègre dans le plan d'implémentation
- Évite de « réinventer la roue » dans le plan
Avec l'agent architecte
L'architecte doit consulter le chercheur pour :
- Les décisions de pile technologique
- La découverte de motifs d'intégration
- Les architectures de référence existantes
Avec le skill iterative-retrieval
Combiner pour une découverte progressive :
- Cycle 1 : Recherche large (npm, PyPI, MCP)
- Cycle 2 : Évaluation détaillée des meilleurs candidats
- Cycle 3 : Test de compatibilité avec les contraintes du projet
Exemples
Exemple 1 : « Ajouter la vérification de liens morts »
Besoin : Vérifier les liens brisés dans les fichiers markdown
Recherche : npm "markdown dead link checker"
Trouvé : textlint-rule-no-dead-link (score : 9/10)
Action : ADOPTER — npm install textlint-rule-no-dead-link
Résultat : Zéro code personnalisé, solution éprouvée en production
Exemple 2 : « Ajouter un wrapper client HTTP »
Besoin : Client HTTP résilient avec gestion des tentatives et des timeouts
Recherche : npm "http client retry", PyPI "httpx retry"
Trouvé : got (Node) avec plugin de retry, httpx (Python) avec retry intégré
Action : ADOPTER — utiliser got/httpx directement avec configuration retry
Résultat : Zéro code personnalisé, bibliothèques éprouvées en production
Exemple 3 : « Ajouter un linter de fichiers de configuration »
Besoin : Valider les fichiers de configuration d'un projet par rapport à un schéma
Recherche : npm "config linter schema", "json schema validator cli"
Trouvé : ajv-cli (score : 8/10)
Action : ADOPTER + ÉTENDRE — installer ajv-cli, écrire un schéma spécifique au projet
Résultat : 1 paquet + 1 fichier de schéma, pas de logique de validation personnalisée
Anti-patrons
- Sauter directement au code : Écrire un utilitaire sans vérifier s'il existe
- Ignorer MCP : Ne pas vérifier si un serveur MCP fournit déjà la capacité
- Ignorer silencieusement : Signaler « rien trouvé » alors qu'un canal de recherche était indisponible
- Sur-personnaliser : Envelopper une bibliothèque si lourdement qu'elle perd ses avantages
- Gonflement des dépendances : Installer un énorme paquet pour une petite fonctionnalité