📑 Table des matières

Créer une bibliothèque de prompts réutilisables

Prompting 🔴 Avancé ⏱️ 12 min de lecture 📅 2026-02-24

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 :

  1. Écrire un prompt dans le chat
  2. Obtenir un bon résultat
  3. Oublier le prompt exact
  4. Recommencer from scratch la prochaine fois
  5. 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 :

  1. Créez la structure de dossiers (15 min)
  2. Initialisez Git et faites le premier commit (5 min)
  3. Migrez vos 5 meilleurs prompts existants dans le format standard (30 min)
  4. Créez 2-3 templates de base pour vos cas d'usage fréquents (30 min)
  5. Définissez les conventions de nommage et de variables (15 min)
  6. 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