Communitygithub.com

AlemTuzlak/skills

Génère un cours complet en markdown et un mini-cours HTML interactif pour apprendre en profondeur n'importe quel sujet, en s'appuyant sur les sciences cognitives.

Qu'est-ce que skills ?

Cette compétence transforme la demande d'apprentissage d'un utilisateur en un cours structuré et fondé sur des preuves, en markdown, ainsi qu'un mini-cours HTML autonome. Elle est conçue pour les apprenants adultes sans connaissance préalable (niveau de lecture B1) et s'appuie sur des principes de psychologie cognitive et de conception pédagogique éprouvés, comme la pratique de récupération, l'effet d'espacement, les exemples travaillés et la théorie de la charge cognitive. Le processus complet comporte plusieurs phases : une pré-interview pour évaluer les connaissances et objectifs, une recherche parallèle via quatre agents spécialisés (contenu faisant autorité, influenceurs de niche, références canoniques et paysage des sous-thèmes), la rédaction d'un plan personnalisé, puis la génération des chapitres par lots parallèles. Chaque chapitre respecte des règles pédagogiques strictes (diagrammes obligatoires, analogies avec avertissement, glossaire pour le jargon, etc.). Le résultat final inclut un fichier OUTLINE.md, un WRITING_GUIDE.md complet, tous les chapitres markdown et un fichier index.html interactif, offrant une expérience d'apprentissage complète et personnalisée, du début à la fin.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/teach-me

Demander à votre IA préférée

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

Documentation

/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 :

  1. Concret avant l'abstrait (Goldstone, Fyfe et al.). Chaque chapitre commence par une instance concrète observable avant toute définition abstraite.
  2. 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.
  3. 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.
  4. Exemples travaillés + évanescence progressive (Sweller, Renkl & Atkinson). Premiers chapitres : exemples travaillés complets. Milieu : étapes progressivement masquées. Fin : invite uniquement.
  5. Théorie de la charge cognitive (Sweller, Mayer). Maximum ~4 nouveaux concepts nommés par chapitre. Une seule nouvelle dimension de difficulté à la fois.
  6. Segmentation / fiches (Mayer & Pilegard). Les chapitres sont des jeux de fiches de 250 à 500 mots, un concept par fiche, un diagramme par fiche.
  7. 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.
  8. 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".
  9. 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".
  10. 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.
  11. 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.
  12. 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.
  13. 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

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. Vérifiez si <emplacement-sortie>/learn-<identifiant>/ existe déjà.
  3. 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.
  4. 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é).
  5. Ne remplacez jamais de manière destructive un cours précédent.

Phase 2 — Emplacement de sortie

  1. Recherchez en mémoire une entrée étiquetée teach-me-output-location ou similaire. Utilisez Glob sur C:/Users/AlemTuzlak/.claude/projects/F--projects/memory/*.md et Grep pour teach-me.
  2. Si trouvé et que le chemin existe toujours, utilisez-le. Indiquez brièvement : "Écriture dans <chemin>."
  3. 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".
  4. 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 via AskUserQuestion.
  5. Si oui, écrivez un fichier mémoire teach_me_output_location.md avec le frontmatter type: user et le chemin dans le corps. Mettez à jour MEMORY.md avec une ligne.
  6. 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

  1. Écrivez <emplacement-sortie>/learn-<identifiant>/OUTLINE.md avec 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
...
  1. Ouvrez automatiquement le fichier : Bash code --new-window "<chemin-absolu-vers-OUTLINE.md>".
  2. 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és
  • 1,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 engager

Si vous choisissez reshape, je réviserai OUTLINE.md et demanderai à nouveau.

  1. Si l'utilisateur dit reshape, prenez ses notes, révisez OUTLINE.md, enregistrez, rouvrez, demandez à nouveau. Bouclez jusqu'à ce qu'il soit validé.
  2. 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 :

  1. …

[Le reste du contenu est tronqué pour la traduction]

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

AlemTuzlak/skills

Use when the user wants to write a blog post about a feature, product change, PR, git diff, or any technical topic - accepts marketing briefs, PRs, git refs, codebase paths, or freeform descriptions as input

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the change intent is already settled and the agent must map what a behavior change touches before an implementation plan or any code. Use for new features, bug fixes, and refactors that move a boundary. Don't use for typos, comments, formatting, lockfile-only diffs, docs with no code, or while the user is still deciding what they want.

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

Skills associés