Vous avez passé des heures à perfectionner un prompt. Il donne des résultats parfaits. Trois semaines plus tard, vous en avez besoin à nouveau… et impossible de le retrouver. Ce scénario est malheureusement universel. En 2025, avec la multiplication des use cases IA dans les entreprises, la gestion professionnelle de vos prompts n'est plus optionnelle — c'est une infrastructure critique. Ce guide vous montre comment créer une bibliothèque de prompts réutilisables, versionnée et scalable.
🎯 Pourquoi une bibliothèque de prompts ?
Le problème
La plupart des professionnels qui utilisent Claude ou d'autres LLM quotidiennement ont le même workflow chaotique :
- Écrire un prompt dans le chat
- Obtenir un bon résultat
- Oublier le prompt exact
- Recommencer from scratch la prochaine fois
- Obtenir un résultat différent (souvent moins bon)
C'est comme un développeur qui écrirait du code sans jamais le sauvegarder. Absurde, non ?
Les bénéfices concrets
| Sans bibliothèque | Avec bibliothèque |
|---|---|
| 15-30 min pour écrire un prompt | 2 min pour charger un template |
| Résultats inconsistants | Qualité reproductible |
| Connaissances dans la tête d'une personne | Savoir partageable en équipe |
| Impossible de mesurer l'amélioration | Historique des versions et performances |
| Duplication d'efforts | Réutilisation et composition |
ROI estimé : pour une équipe de 5 personnes utilisant l'IA quotidiennement, une bibliothèque bien gérée économise 10-15h/semaine.
📁 Architecture d'une bibliothèque
Structure de fichiers recommandée
prompts/
├── README.md # Documentation de la bibliothèque
├── _templates/ # Templates de base réutilisables
│ ├── base-article.md
│ ├── base-email.md
│ └── base-analysis.md
├── marketing/
│ ├── email-prospection.md
│ ├── email-relance.md
│ ├── landing-page.md
│ └── social-media/
│ ├── linkedin-post.md
│ └── twitter-thread.md
├── content/
│ ├── blog-seo.md
│ ├── newsletter.md
│ └── case-study.md
├── code/
│ ├── code-review.md
│ ├── refactoring.md
│ └── api-design.md
├── analysis/
│ ├── data-analysis.md
│ ├── competitor-analysis.md
│ └── market-research.md
└── system-prompts/
├── support-agent.md
├── seo-writer.md
└── code-assistant.md
Format standard d'un fichier prompt
Chaque prompt dans votre bibliothèque devrait suivre un format standard :
# Email de prospection B2B SaaS
## Métadonnées
- **ID** : MKT-001
- **Version** : 2.3
- **Catégorie** : Marketing > Email
- **Auteur** : Nicolas
- **Dernière modification** : 2025-02-20
- **Modèle testé** : Claude 3.5 Sonnet, GPT-4
- **Score qualité** : 8.5/10
- **Tags** : email, prospection, B2B, SaaS
## Variables
| Variable | Description | Exemple |
|----------|-------------|---------|
| [[NOM_PROSPECT]] | Nom du prospect | Jean Dupont |
| [[ENTREPRISE]] | Entreprise du prospect | TechCorp |
| [[POSTE]] | Poste du prospect | CTO |
| [[PAIN_POINT]] | Problème identifié | Coûts d'infrastructure |
| [[PRODUIT]] | Notre produit | CloudOptim |
| [[HOOK]] | Accroche personnalisée | Votre post LinkedIn sur... |
## System Prompt
Tu es un commercial B2B senior spécialisé en SaaS. Tu écris
des emails de prospection qui obtiennent >30% de taux d'ouverture
et >10% de taux de réponse.
## Prompt
Rédige un email de prospection pour [[NOM_PROSPECT]],
[[POSTE]] chez [[ENTREPRISE]].
Contexte :
- Pain point identifié : [[PAIN_POINT]]
- Notre solution : [[PRODUIT]]
- Accroche : [[HOOK]]
Contraintes :
- Max 5 lignes de corps
- Objet : max 6 mots, curiosité sans clickbait
- Pas de "je me permets", pas de "n'hésitez pas"
- CTA : une seule question simple
- Ton : professionnel mais humain
## Exemple de sortie attendue
[Un exemple concret du résultat idéal]
## Historique des versions
- v2.3 (2025-02-20) : Ajout variable HOOK pour personnalisation
- v2.2 (2025-02-10) : Réduction à 5 lignes (meilleur taux réponse)
- v2.1 (2025-01-28) : Ajout contrainte anti-clichés
- v2.0 (2025-01-15) : Refonte complète, structure AIDA
- v1.0 (2024-12-01) : Version initiale
🔧 Le système de variables
Types de variables
Les variables rendent vos prompts dynamiques et réutilisables :
| Type | Syntaxe | Usage |
|---|---|---|
| Texte simple | [[NOM]] |
Noms, titres, mots-clés |
| Texte long | [[CONTEXTE]] |
Descriptions, briefs |
| Choix | {{TON:formel\|informel\|technique}} |
Options prédéfinies |
| Nombre | {{NB_MOTS:500}} |
Valeurs avec défaut |
| Booléen | {{INCLURE_FAQ:oui}} |
Activation de sections |
| Liste | {{POINTS_CLÉS[]}} |
Éléments multiples |
Variables en pratique
# Template : Article de blog SEO
Tu es un rédacteur web SEO senior.
Rédige un article pour le blog de [[ENTREPRISE]].
**Sujet** : [[SUJET]]
**Mot-clé principal** : {{MOT_CLÉ}}
**Mots-clés secondaires** : {{MOTS_CLÉS_SECONDAIRES[]}}
**Audience** : [[AUDIENCE]]
**Longueur** : {{NB_MOTS:1500}} mots
**Ton** : {{TON:professionnel|conversationnel|expert}}
Structure :
- Titre H1 optimisé (max 60 caractères)
- Introduction avec le problème du lecteur (150 mots)
{{#SI INCLURE_FAQ}}
- FAQ (5 questions schema.org friendly)
{{/SI}}
- Méta title (≤60 caractères)
- Méta description (150-160 caractères)
Automatiser le remplacement
Avec Python :
import re
def fill_prompt(template: str, variables: dict) -> str:
"""Remplace les variables dans un template de prompt."""
result = template
for key, value in variables.items():
if isinstance(value, list):
value = ", ".join(value)
result = result.replace(f"{{{[[key]]}}}", str(value))
# Gestion des valeurs par défaut {{VAR:default}}
result = re.sub(
r'\{\{(\w+):([^}]+)\}\}',
lambda m: variables.get(m.group(1), m.group(2)),
result
)
return result
# Utilisation
template = open("prompts/content/blog-seo.md").read()
prompt = fill_prompt(template, {
"ENTREPRISE": "TechFlow",
"SUJET": "Les 10 erreurs de pricing SaaS",
"MOT_CLÉ": "pricing SaaS",
"MOTS_CLÉS_SECONDAIRES": ["tarification", "modèle freemium", "pricing strategy"],
"AUDIENCE": "fondateurs de startups SaaS",
"TON": "conversationnel"
})
Avec OpenClaw, ce remplacement de variables peut être automatisé dans des workflows complets, chaînant plusieurs prompts templates.
🏷️ Système de catégorisation
Par domaine
marketing/ → Tout ce qui concerne acquisition et conversion
content/ → Rédaction de contenu (blog, social, newsletter)
code/ → Développement, review, architecture
analysis/ → Analyse de données, marché, concurrence
operations/ → Process, documentation, gestion de projet
sales/ → Prospection, qualification, closing
hr/ → Recrutement, onboarding, évaluation
system-prompts/ → Prompts système pour agents/chatbots
Par niveau de complexité
| Niveau | Description | Exemple |
|---|---|---|
| 🟢 Simple | Prompt autonome, pas de variable | Résumé de texte |
| 🟡 Intermédiaire | Variables, quelques contraintes | Email templated |
| 🔴 Avancé | Multi-prompt, conditions, chaînage | Pipeline de contenu |
Par modèle cible
Certains prompts fonctionnent mieux sur certains modèles. Indiquez-le dans les métadonnées :
## Compatibilité
- Claude 3.5 Sonnet : ✅ Testé, score 9/10
- GPT-4 Turbo : ✅ Testé, score 7/10 (tendance à être trop long)
- Llama 3 70B : ⚠️ Fonctionne mais perd des contraintes
- Mistral Large : ✅ Testé, score 8/10
Utilisez OpenRouter pour tester facilement vos prompts sur tous ces modèles.
📊 Versioning et itération
Git pour les prompts
Traitez vos prompts comme du code. Utilisez Git :
# Initialiser le repo
git init prompts-library
cd prompts-library
# Structure initiale
mkdir -p {marketing,content,code,analysis,system-prompts,_templates}
touch README.md
# Commit initial
git add .
git commit -m "init: structure de la bibliothèque de prompts"
# Nouvelle version d'un prompt
git commit -m "feat(marketing): email-prospection v2.3 - ajout variable HOOK"
# Tag pour les versions stables
git tag -a v1.0 -m "Version 1.0 - 25 prompts testés et validés"
Convention de nommage des commits
feat(catégorie): description → Nouveau prompt ou feature
fix(catégorie): description → Correction d'un prompt
perf(catégorie): description → Amélioration de performance
test(catégorie): description → Ajout de tests/exemples
docs(catégorie): description → Documentation
Workflow de versioning
Pour aller plus loin sur ce sujet, consultez notre guide Le guide ultime du prompt engineering en 2025.
┌──────────┐
│ Brouillon│
│ (draft) │
└────┬─────┘
│ Test avec 10 cas
▼
┌──────────┐
│ Beta │
│ (v0.x) │
└────┬─────┘
│ Validation par pair
▼
┌──────────┐
│ Stable │
│ (v1.0) │
└────┬─────┘
│ Feedback d'usage réel
▼
┌──────────┐
│ Itération│
│ (v1.x) │
└──────────┘
Pour aller plus loin sur ce sujet, consultez notre guide Chain-of-Thought, Few-Shot, Tree-of-Thought : les techniques qui marchent.
A/B Testing de prompts
import random
import json
from datetime import datetime
class PromptABTest:
def __init__(self, name: str, variants: dict):
self.name = name
self.variants = variants # {"A": prompt_a, "B": prompt_b}
self.results = {"A": [], "B": []}
def get_variant(self) -> tuple:
"""Retourne un variant aléatoire."""
variant = random.choice(["A", "B"])
return variant, self.variants[variant]
def log_result(self, variant: str, score: int, notes: str = ""):
"""Enregistre le résultat d'un test."""
self.results[variant].append({
"score": score,
"notes": notes,
"timestamp": datetime.now().isoformat()
})
def get_winner(self) -> str:
"""Détermine le meilleur variant."""
avg_a = sum(r["score"] for r in self.results["A"]) / len(self.results["A"]) if self.results["A"] else 0
avg_b = sum(r["score"] for r in self.results["B"]) / len(self.results["B"]) if self.results["B"] else 0
return "A" if avg_a >= avg_b else "B", avg_a, avg_b
🔗 Composition et héritage de prompts
Templates de base (héritage)
Créez des templates de base dont héritent les prompts spécifiques :
# _templates/base-article.md (template parent)
Tu es un rédacteur expert pour [[PUBLICATION]].
Style :
- Phrases courtes (max 20 mots)
- Voix active
- Exemples concrets
- Pas de jargon non expliqué
Structure standard :
- Titre optimisé
- Introduction (hook + promesse)
- Corps structuré en H2/H3
- Conclusion avec CTA
{{INSTRUCTIONS_SPÉCIFIQUES}}
# content/blog-tech.md (hérite de base-article)
{{HÉRITE_DE: _templates/base-article.md}}
PUBLICATION: Blog TechFlow
INSTRUCTIONS_SPÉCIFIQUES:
- Inclure des blocs de code quand pertinent
- Ajouter une section "En résumé" avec 3 bullet points
- Cibler un développeur junior-mid
- Lier vers la documentation officielle
Composition (combiner des prompts)
# Prompt composé : Rapport mensuel complet
## Étape 1 — Analyse des données
{{INCLURE: analysis/data-analysis.md}}
Variables : DATASET={{DONNÉES_MOIS}}, PÉRIODE=[[MOIS]]
## Étape 2 — Insights et tendances
{{INCLURE: analysis/trend-identification.md}}
Variables : DONNÉES_ANALYSÉES={{RÉSULTAT_ÉTAPE_1}}
## Étape 3 — Recommandations
{{INCLURE: analysis/recommendations.md}}
Variables : INSIGHTS={{RÉSULTAT_ÉTAPE_2}}, BUDGET=[[BUDGET]]
## Étape 4 — Rédaction du rapport
{{INCLURE: content/report-template.md}}
Variables : SECTIONS={{RÉSULTATS_1_2_3}}
🤖 Automatisation avec OpenClaw
OpenClaw est l'outil idéal pour opérationnaliser votre bibliothèque de prompts :
Workflow automatisé
# Exemple de workflow OpenClaw
name: "Newsletter hebdomadaire"
steps:
- name: "Collecte des sujets"
prompt_template: "content/newsletter-topics.md"
variables:
SECTEUR: "tech"
NB_SUJETS: 5
- name: "Rédaction"
prompt_template: "content/newsletter-body.md"
variables:
SUJETS: "{{step1.output}}"
TON: "conversationnel"
LONGUEUR: 800
- name: "Optimisation"
prompt_template: "_templates/optimize-copy.md"
variables:
TEXTE: "{{step2.output}}"
OBJECTIF: "taux de clic"
Variables dynamiques
OpenClaw peut injecter automatiquement des variables depuis :
- Des bases de données
- Des API externes
- Des fichiers de configuration
- Le contexte de la conversation
Le code source complet est disponible sur GitHub.
📈 Métriques et amélioration continue
Quoi mesurer
| Métrique | Comment | Pourquoi |
|---|---|---|
| Score qualité | Évaluation 1-10 à chaque usage | Suivre la performance |
| Temps de setup | Chrono du remplissage des variables | Mesurer l'efficacité |
| Taux de réutilisation | Nombre d'usages par prompt | Identifier les plus utiles |
| Taux de modification | % de fois où le résultat est modifié | Qualité du prompt |
| Compatibilité modèle | Score par modèle LLM | Portabilité |
Dashboard de suivi
# Exemple de tracking simple
import json
from pathlib import Path
METRICS_FILE = Path("prompts/_metrics/usage.jsonl")
def log_usage(prompt_id: str, score: int, model: str,
modified: bool, notes: str = ""):
entry = {
"prompt_id": prompt_id,
"score": score,
"model": model,
"modified": modified,
"notes": notes,
"timestamp": datetime.now().isoformat()
}
with open(METRICS_FILE, "a") as f:
f.write(json.dumps(entry) + "\n")
def get_prompt_stats(prompt_id: str) -> dict:
entries = []
with open(METRICS_FILE) as f:
for line in f:
entry = json.loads(line)
if entry["prompt_id"] == prompt_id:
entries.append(entry)
if not entries:
return {"uses": 0}
return {
"uses": len(entries),
"avg_score": sum(e["score"] for e in entries) / len(entries),
"modification_rate": sum(e["modified"] for e in entries) / len(entries),
"models_tested": list(set(e["model"] for e in entries))
}
Cycle d'amélioration
Chaque mois :
1. Identifiez les 5 prompts les plus utilisés
2. Vérifiez leur score moyen
3. Pour ceux < 8/10 : planifiez une itération
4. Pour ceux ≥ 9/10 : documentez pourquoi ils marchent
5. Archivez les prompts non utilisés depuis 3 mois
6. Partagez les meilleurs avec l'équipe
🏢 Gestion en équipe
Conventions d'équipe
# CONTRIBUTING.md
## Règles pour contribuer à la bibliothèque
### Avant de créer un prompt
1. Vérifiez qu'il n'existe pas déjà (cherchez par tags)
2. Identifiez s'il peut hériter d'un template existant
3. Discutez du besoin avec l'équipe si c'est un nouveau domaine
### Format obligatoire
- Utiliser le template standard (voir _templates/prompt-template.md)
- Remplir TOUTES les métadonnées
- Inclure au moins 2 exemples de variables
- Inclure au moins 1 exemple de sortie attendue
### Process de validation
1. Créer une branche : prompt/categorie-nom-du-prompt
2. Tester avec au moins 5 cas différents
3. Demander une review à un collègue
4. Merger après approbation + score ≥ 7/10
### Nommage
- Fichiers : kebab-case (email-prospection-b2b.md)
- Variables : UPPER_SNAKE_CASE ([[NOM_PROSPECT]])
- IDs : CATÉGORIE-NNN (MKT-001, CTN-015)
Partage et onboarding
Hébergez votre bibliothèque sur un dépôt Git privé. Pour l'hébergement de vos outils internes, Hostinger offre des solutions serveur fiables et abordables.
# README.md de la bibliothèque
## 🚀 Quick Start
1. Cloner le repo
2. Parcourir les catégories
3. Choisir un prompt
4. Remplir les variables
5. Copier dans Claude / votre LLM
## 📊 Stats
- 47 prompts validés
- 12 system prompts
- 8 contributeurs
- Score moyen : 8.2/10
🎯 Checklist de démarrage
Pour créer votre bibliothèque aujourd'hui :
- Créez la structure de dossiers (15 min)
- Initialisez Git et faites le premier commit (5 min)
- Migrez vos 5 meilleurs prompts existants dans le format standard (30 min)
- Créez 2-3 templates de base pour vos cas d'usage fréquents (30 min)
- Définissez les conventions de nommage et de variables (15 min)
- Partagez avec votre équipe et récoltez leurs prompts (continu)
La bibliothèque de prompts est un investissement qui se rentabilise dès la première semaine. Chaque prompt sauvegardé est du temps gagné pour toujours. Avec les bons outils — Claude pour la qualité, OpenRouter pour la flexibilité, OpenClaw pour l'automatisation — vous avez tout ce qu'il faut pour passer du prompting artisanal au prompting industriel.
📚 Articles liés
- Le guide ultime du prompt engineering en 2025 — Les bases pour écrire les prompts que vous allez sauvegarder
- Prompt debugging — Perfectionnez vos prompts avant de les ajouter à la bibliothèque
- System prompts : l'art de cadrer son IA — Créez des system prompts réutilisables pour vos agents IA