/teach-me — Générateur de Cours Fondé sur des Preuves
Produisez un cours en markdown en auto-apprentissage + un mini-cours HTML autonome pour n'importe quel sujet que l'utilisateur souhaite apprendre. Conçu pour les apprenants adultes (niveau de lecture B1 du CECR, aucune connaissance préalable), enraciné dans la psychologie cognitive et la recherche en conception pédagogique.
Quand l'utiliser
- L'utilisateur invoque
/teach-me <sujet>(ou sans argument — demandez le sujet) - L'utilisateur dit "apprends-moi X", "je veux apprendre X", "exploration approfondie de X", "crée un cours sur X", "étudie X avec moi"
- À ignorer pour : les questions factuelles rapides ("qu'est-ce que X" — répondez simplement), l'aide sur du code, le débogage, les recherches dans la documentation, les questions sur les API de bibliothèques (utilisez plutôt
context7)
Fondements Pédagogiques (à lire avant de commencer)
Cette compétence est ancrée dans des sciences de l'apprentissage bien reproduites. Les règles ci-dessous ne sont pas des valeurs par défaut négociables — elles sont ce pour quoi l'utilisateur paie :
- Concret avant l'abstrait (Goldstone, Fyfe et al.). Chaque chapitre commence par une instance concrète observable avant toute définition abstraite.
- La pratique de récupération bat la relecture (Roediger & Karpicke ; méta-analyse de Rowland 2014). Chaque chapitre se termine par 3 à 5 invites de rappel libre + 1 rappel croisé entre chapitres.
- Exposition espacée via des rappels délibérés (Cepeda et al. 2006). Chaque concept majeur est utilisé (pas redéfini) dans ≥2 chapitres ultérieurs.
- Exemples travaillés + évanescence progressive (Sweller, Renkl & Atkinson). Premiers chapitres : exemples travaillés complets. Milieu : étapes progressivement masquées. Fin : invite uniquement.
- Théorie de la charge cognitive (Sweller, Mayer). Maximum ~4 nouveaux concepts nommés par chapitre. Une seule nouvelle dimension de difficulté à la fois.
- Segmentation / fiches (Mayer & Pilegard). Les chapitres sont des jeux de fiches de 250 à 500 mots, un concept par fiche, un diagramme par fiche.
- Cohérence visuelle axée sur le diagramme (principes multimédia de Mayer). Diagrammes obligatoires pour les concepts relationnels. Pas d'images décoratives. Les étiquettes sont intégrées au diagramme, pas dans des légendes séparées.
- Hygiène de l'analogie (mise en correspondance structurelle de Gentner). Chaque analogie est suivie dans les 2 phrases d'un avertissement explicite "là où ça ne marche pas".
- Porte du jargon (recherche sur les angles morts des experts Nathan/Koedinger). Chaque terme technique est défini lors de sa première utilisation OU lié à une entrée de glossaire d'un chapitre antérieur. Aucune exception pour les termes "courants".
- Invites d'auto-explication contraintes (Chi et al. ; Bisra et al. 2018 g≈0.55). Entre les fiches : "Terminez cette phrase : X fonctionne parce que ___" avec une réponse modèle dans un bouton à bascule.
- Langage simple pour lecteurs B1. Phrase moyenne ≤18 mots, maximum 25. ≤1 proposition subordonnée par phrase. Passif ≤10%. Voix active. Deuxième personne. Pas d'expressions idiomatiques.
- Partir de ce que l'apprenant sait déjà (Ausubel). La pré-interview recueille les domaines connus de l'utilisateur ; le guide de rédaction les transforme en banque d'analogies.
- Montrer les changements d'état ; ne pas les raconter (Larkin & Simon 1987 ; principe d'appréhension de Tversky & Morrison 2002 ; effet d'information transitoire de Wong/Leahy/Marcus/Sweller 2012 ; petits multiples de Tufte ; segmentation de Mayer). Lorsque la prose décrirait des états successifs ("d'abord ceci, puis cela, après le crash…"), utiliser une
<div class="state-sequence">à 2 à 5 panneaux à la place. Même forme dans chaque panneau, delta annoté, légende = déclencheur + invariant. Le lecteur voit l'évolution ; il ne lit pas une histoire à ce sujet.
Démystifié — ne jamais utiliser : styles d'apprentissage (VAK), cadre des 10 000 heures, gamification (séries/badges), images décoratives pour "l'engagement", "cerveau droit/cerveau gauche", "natifs numériques".
Processus
digraph teach_me {
rankdir=TB;
"Analyser l'invocation" [shape=box];
"Dossier existant ?" [shape=diamond];
"Emplacement de sortie" [shape=box];
"Pré-interview" [shape=box];
"Recherche (4 agents parallèles)" [shape=box];
"Synthétiser + écrire OUTLINE.md" [shape=box];
"L'utilisateur choisit les chapitres" [shape=box];
"Écrire WRITING_GUIDE.md" [shape=box];
"Génération de chapitres (lots parallèles)" [shape=box];
"Passe de cohérence" [shape=box];
"Construire index.html" [shape=box];
"Ouvrir dossier + navigateur" [shape=doublecircle];
"Analyser l'invocation" -> "Dossier existant ?";
"Dossier existant ?" -> "Emplacement de sortie" [label="non"];
"Dossier existant ?" -> "Emplacement de sortie" [label="étendre / nouveau / annuler"];
"Emplacement de sortie" -> "Pré-interview";
"Pré-interview" -> "Recherche (4 agents parallèles)";
"Recherche (4 agents parallèles)" -> "Synthétiser + écrire OUTLINE.md";
"Synthétiser + écrire OUTLINE.md" -> "L'utilisateur choisit les chapitres";
"L'utilisateur choisit les chapitres" -> "Écrire WRITING_GUIDE.md";
"Écrire WRITING_GUIDE.md" -> "Génération de chapitres (lots parallèles)";
"Génération de chapitres (lots parallèles)" -> "Passe de cohérence";
"Passe de cohérence" -> "Construire index.html";
"Construire index.html" -> "Ouvrir dossier + navigateur";
}
Ne sautez pas les phases. Suivez la progression avec TaskCreate pour que l'utilisateur voie où vous en êtes.
Phase 0 — Analyser l'invocation
- Obtenez le sujet à partir des arguments. S'il n'y a pas d'argument, répondez : "Quel sujet voulez-vous apprendre ? Cela peut être technique (une bibliothèque, un langage, un concept) ou non technique (une philosophie, un domaine, une compétence)." et attendez.
- Gardes de validation du sujet :
- Si le sujet est dangereux (synthèse d'armes, cibles de piratage malveillant, actes illégaux) — refusez brièvement et arrêtez. Pas de sermon.
- Si le sujet est trop large (
programmation,science,tout) — demandez à l'utilisateur de préciser avec 2 à 3 exemples concrets : "C'est très large. Voulez-vous préciser quelque chose comme 'modèles de programmation asynchrone en TypeScript' ou 'comment fonctionnent les compilateurs' ?" Attendez une réponse plus précise. - Si le sujet est vague mais traitable (
IA,bases de données) — continuez ; la question ouverte sur le périmètre dans l'entrevue le précisera davantage.
- Calculez l'identifiant : minuscules, remplacez les caractères non alphanumériques par
-, réduisez les-répétés, supprimez les extrémités. Exemple :Programmation Asynchrone→programmation-asynchrone.
Phase 1 — Vérification du dossier existant
- Lisez l'emplacement de sortie depuis la mémoire (voir Phase 2 pour savoir comment il est stocké). Si la mémoire n'a pas encore d'emplacement, reportez cette vérification après que la Phase 2 a collecté l'emplacement.
- Vérifiez si
<emplacement-sortie>/learn-<identifiant>/existe déjà. - Si c'est le cas, présentez trois options via
AskUserQuestion:- Étendre — ajouter de nouveaux chapitres, régénérer des chapitres spécifiques avec de nouvelles notes de style, ou rafraîchir la recherche et recommencer.
- Recommencer — renommer le dossier existant en
learn-<identifiant>-archive-AAAA-MM-JJ/et continuer avec un nouveau cours. - Annuler — arrêter.
- Si Étendre : sous-options — (a) ajouter des chapitres sur de nouveaux sous-thèmes (passer à la recherche avec le OUTLINE.md précédent comme contexte), (b) régénérer des numéros de chapitres spécifiques avec de nouvelles notes (passer à la phase de rédaction pour ces chapitres), (c) rafraîchir la recherche et re-sélectionner les chapitres (nouvelle exécution complète avec le OUTLINE.md précédent fusionné).
- Ne remplacez jamais de manière destructive un cours précédent.
Phase 2 — Emplacement de sortie
- Recherchez en mémoire une entrée étiquetée
teach-me-output-locationou similaire. UtilisezGlobsurC:/Users/AlemTuzlak/.claude/projects/F--projects/memory/*.mdetGreppourteach-me. - Si trouvé et que le chemin existe toujours, utilisez-le. Indiquez brièvement : "Écriture dans
<chemin>." - Si non trouvé, demandez via
AskUserQuestion:- Utiliser
F:/projects/learning/(crée le dossier s'il manque) — Recommandé. - Utiliser le répertoire de travail actuel (
./). - Spécifier un chemin différent — l'utilisateur fournit via "Autre".
- Utiliser
- Après la réponse de l'utilisateur, demandez : "Enregistrer cet emplacement comme valeur par défaut pour les futures exécutions de
/teach-me?" — oui/non viaAskUserQuestion. - Si oui, écrivez un fichier mémoire
teach_me_output_location.mdavec le frontmattertype: useret le chemin dans le corps. Mettez à jourMEMORY.mdavec une ligne. - Réessayez maintenant la vérification du dossier existant de la Phase 1 avec l'emplacement résolu.
Phase 3 — Pré-interview
Demandez en deux allers-retours :
Tour 1 — un seul AskUserQuestion avec 4 questions structurées
Q1 [Connaissances actuelles] : Que savez-vous déjà sur <sujet> ?
- Jamais entendu parler
- Connais la terminologie, pas d'expérience pratique
- J'ai construit des choses de base
- Praticien intermédiaire
Q2 [Compétence cible] : Où voulez-vous arriver ?
- Uniquement un aperçu conceptuel
- Pouvoir construire des choses de base
- Pouvoir construire des choses de niveau production
- Pouvoir enseigner aux autres
Q3 [Budget de profondeur] : Combien en voulez-vous ?
- Aperçu rapide (~3 à 5 chapitres)
- Standard (~6 à 10 chapitres)
- Exploration approfondie (tout ce qui a été recherché, 10 à 15+ chapitres)
Q4 [Charge de pratique] : Combien de pratique pratique ?
- Légère (axée sur la lecture)
- Standard (lecture + rappel + exercice occasionnel)
- Lourde (chaque chapitre contient des exemples travaillés et des exercices)
Tour 2 — un seul message en texte brut
Envoyez ce message exact (remplacez <sujet>) :
Deux autres choses avant que je commence à rechercher :
1. Que connaissez-vous déjà bien ? Listez les langages, frameworks, domaines, loisirs — tout ce sur quoi vous avez passé du temps sérieusement (par exemple "TypeScript, React, théorie musicale, cuisine, échecs"). Je les utiliserai comme sources d'analogies pour ancrer les nouveaux concepts à ce que vous connaissez déjà.
2. Un angle spécifique dans , ou dois-je le couvrir largement ? Dites "surprenez-moi" pour une couverture complète.
Attendez une seule réponse contenant les deux. Analysez de manière flexible — acceptez les listes séparées par des virgules, les listes à puces ou le texte libre.
Persistez les réponses dans une structure de travail (vous les écrirez plus tard dans OUTLINE.md et WRITING_GUIDE.md).
Phase 4 — Recherche (4 agents parallèles)
Lancez un seul appel Agent groupé contenant 4 sous-agents general-purpose. Ils s'exécutent en parallèle. Chacun reçoit un brief autonome et rapporte un rapport structuré.
Voie A — Contenu faisant autorité. Trouvez les meilleurs articles, tutoriels, conférences et documents sur <sujet>. WebSearch + WebFetch les résultats les plus significatifs. Retournez 8 à 15 avec une ligne "pourquoi lire" pour chacun, étiquetés [article|tutoriel|conférence|document].
Voie B — Influenceurs et praticiens de niche. Trouvez des personnes spécifiques connues pour <sujet> — pas des célébrités technologiques, mais des praticiens avec leurs propres blogs/newsletters/Twitter qui approfondissent ce créneau. Retournez 4 à 8 avec : nom, publication personnelle (URL du blog), URL de l'article de référence, une ligne sur pourquoi ils valent la peine d'être suivis. Ignorez quiconque dont la seule production est le marketing d'entreprise.
Voie C — Références canoniques. Documentation officielle, spécifications, implémentations de référence, manuels faisant autorité. Si <sujet> est une bibliothèque/framework/outil CLI, utilisez le MCP context7 (resolve-library-id puis query-docs) pour obtenir la documentation canonique actuelle. Retournez 3 à 8 sources avec des informations de version.
Voie D — Paysage des sous-thèmes et langage canonique. Examinez le sujet pour produire un arbre des sous-thèmes avec des descriptions d'une ligne (généralement 8 à 15 sous-thèmes). Suggérez un ordre pédagogique (prérequis en premier, avancé en dernier). Si le sujet est technique, déterminez le langage canonique utilisé par la documentation officielle / le plus courant en production (par exemple Temporal → TypeScript ou Go ; LangGraph → Python). Énoncez explicitement : "Langage canonique : X, parce que Y."
Chaque agent rend compte en moins de 800 mots, structuré. Après le retour des 4, synthétisez.
Phase 5 — Plan et sélection des chapitres
- Écrivez
<emplacement-sortie>/learn-<identifiant>/OUTLINE.mdavec cette structure :
# Apprendre <Sujet>
## Votre objectif (enregistré)
- **Niveau actuel** : <réponse de Q1>
- **Compétence cible** : <réponse de Q2>
- **Profondeur** : <réponse de Q3>
- **Charge de pratique** : <réponse de Q4>
- **Domaines connus (banque d'analogies)** : <séparés par des virgules du Tour 2>
- **Périmètre/angle** : <réponse du Tour 2>
## Paysage des sous-thèmes (issu de la recherche)
1. <sous-thème 1> — <description en une ligne>
2. <sous-thème 2> — <description en une ligne>
...
## Ordre suggéré
Un ordre respectant les prérequis avec une justification pour chaque étape.
## Chapitres recommandés (~N, basés sur votre budget de profondeur)
Liste numérotée des chapitres proposés. Chaque entrée : titre court + 1 ligne sur ce qui est couvert + estimation des fiches (5 à 9 par chapitre).
## Langage canonique (uniquement pour les sujets techniques)
<langage et justification en une ligne>
## Sources recommandées
- [Source 1](url) — [type] — pourquoi lire
...
## Influenceurs de niche à suivre
- **Nom** — [url du blog] — article de référence : [url de l'article] — une ligne sur pourquoi
...
- Ouvrez automatiquement le fichier :
Bash code --new-window "<chemin-absolu-vers-OUTLINE.md>". - Répondez à l'utilisateur avec ce message exact (remplacez de manière appropriée) :
J'ai écrit le plan dans
<chemin absolu>et je l'ai ouvert pour vous.Répondez avec les chapitres à écrire :
all— écrire tous les chapitres recommandés1,3,5-7— chapitres ou plages spécifiques- Texte libre — décrivez dans vos propres mots sur quoi vous concentrer
reshape— dites-moi quoi ajouter, supprimer, fusionner ou réorganiser avant de nous engagerSi vous choisissez
reshape, je réviserai OUTLINE.md et demanderai à nouveau.
- Si l'utilisateur dit
reshape, prenez ses notes, révisez OUTLINE.md, enregistrez, rouvrez, demandez à nouveau. Bouclez jusqu'à ce qu'il soit validé. - Analysez les sélections en une liste finale ordonnée de chapitres
picks = [...].
Phase 6 — Écrire WRITING_GUIDE.md
Écrivez <emplacement-sortie>/learn-<identifiant>/WRITING_GUIDE.md. Ce fichier est le brief partagé pour tous les agents rédacteurs de chapitres et l'agent de passe de cohérence. Il doit être complet et concret.
Utilisez le modèle à <skill-dir>/assets/templates/WRITING_GUIDE.template.md comme point de départ — remplacez les réponses enregistrées de l'entrevue de l'utilisateur dans les espaces réservés ({{TOPIC}}, {{CURRENT_LEVEL}}, {{TARGET_PROFICIENCY}}, {{PRACTICE_LOAD}}, {{KNOWN_DOMAINS}}, {{SCOPE}}, {{CANONICAL_LANGUAGE}}).
Dirigez également les rédacteurs de chapitres vers la référence de la bibliothèque de composants à <skill-dir>/assets/COMPONENTS.md — ils doivent la parcourir avant d'écrire. Les mentions, les fiches de diagramme, les blocs de comparaison, les onglets, les fiches de statistiques, les pastilles de plateforme et les listes d'étapes sont tous disponibles ; certains sont générés automatiquement à partir de conventions markdown, les autres sont du HTML explicite dans le markdown.
Vérifiez que le fichier généré applique toutes les 13 règles pédagogiques listées dans la section « Fondements Pédagogiques » en haut de ce SKILL.md. Si une règle n'est pas représentée dans le guide, ajoutez-la avant de continuer.
Phase 7 — Génération de chapitres (lots parallèles)
Générez les chapitres sélectionnés par lots parallèles de 3 à 5 sous-agents rédacteurs par tour, séquentiellement sur plusieurs tours.
Pour chaque tour :
- …
[Le reste du contenu est tronqué pour la traduction]