Communitygithub.com

m1nga/skills

25 compétences pratiques pour les agents Codex, Claude Code et Cursor : planifier des produits, récupérer des projets, tester des prompts, préserver la voix et vérifier le travail de l'IA.

Qu'est-ce que skills ?

Ce dépôt de compétences fournit un ensemble de 25 capacités pratiques conçues pour les agents IA spécialisés dans le développement logiciel, notamment Codex, Claude Code et Cursor. Ces compétences couvrent un large éventail de tâches allant de la planification de produits et de la récupération de projets à la génération de tests, à la préservation de la voix de l'utilisateur et à la vérification du travail de l'IA. Chaque compétence est documentée dans un fichier SKILL.md détaillé, décrivant son objectif, son utilisation et son fonctionnement. Ce dépôt est particulièrement utile pour les développeurs qui souhaitent étendre les capacités de leurs agents IA avec des flux de travail éprouvés et reproductibles. Il permet d'automatiser des tâches complexes et d'améliorer la productivité en fournissant des instructions claires et structurées que l'agent peut suivre.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add m1nga/skills

Demander à votre IA préférée

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

Documentation

Mixtape · Une playlist faite main

La bibliothèque de tout le monde est pleine de playlists créées par des inconnus et des algorithmes. Un mixtape est différent : il est créé. L'utilisateur apporte le goût ; vous êtes les mains qui font les heures de recherche, d'appariement et d'arrangement qu'il n'a jamais le temps de faire. Tout ce qui suit sert ce seul sentiment — « cette playlist est à MOI » — alors ne gonflez jamais avec des tubes génériques lorsque la demande implique de la spécificité, et soyez toujours capable de dire pourquoi un morceau a gagné sa place.

Répondez dans la langue de l'utilisateur. Les titres de playlist doivent ressembler à quelque chose que l'utilisateur nommerait, pas à un algorithme (« Vendredi soir · Train électrique du rock chinois », pas « Chinese Rock Mix #1 »).

État : ~/.mixtape/

La mémoire persistante se trouve en dehors de ce paquet dans ~/.mixtape/ (créez-le et les fichiers lors de la première utilisation) :

FichierContientToucher quand
taste.mdPlateforme par défaut · Préférences strictes (langue/époque/style) · Découvertes subtiles (production/voix/énergie) · Morceaux et artistes adorés · Zones rougesLire avant CHAQUE génération ; mettre à jour après analyse du profil ou retour
history.mdUne section par mixtape : date, titre, mode, plateforme, liste des morceaux, retourAjouter après chaque livraison
misses.mdMorceaux qui n'ont pas été trouvés sur une plateforme : - Titre — Artiste (plateforme, date)Lire avant de générer (pour éviter les répétitions) ; ajouter quand l'utilisateur signale un morceau manquant

Le profil est ce qui rend l'agent plus intelligent au fil du temps. Une mise à jour d'une ligne après chaque session est plus efficace qu'un schéma parfait. Deux règles le maintiennent honnête : ce que l'utilisateur dit maintenant l'emporte toujours sur ce que les fichiers se souviennent (mettez à jour le fichier, ne discutez pas), et un seul ordre de scène n'est pas une preuve de goût — un premier « City Pop pour cuisiner » enregistre la plateforme par défaut, pas « aime le City Pop ».

Choisissez le mode

Signal dans la demandeMode
Une scène/ambiance/genre décrite en mots (« rock pour la gym », « coder tard le soir »)Commande rapide — générer directement
Exemples de chansons donnés, éventuellement groupés (« Mes morceaux punk préférés sont ceux-ci, mes morceaux britanniques ceux-là »)Extension par graines — ancrer sur les exemples
L'utilisateur partage des playlists existantes, ou demande 分析我的口味 / « qu'est-ce que j'aime vraiment »Fiche de goût — analyser d'abord, puis organiser

Les modes s'empilent : une commande rapide d'un utilisateur avec un profil de goût enregistré doit quand même être filtrée à travers ce profil.

Commande rapide. Analyser le genre, la scène, l'ambiance, l'époque, la langue, le nombre, la plateforme. Par défaut 25 morceaux. Poser au maximum une question de clarification, et seulement si la réponse changerait vraiment les chansons ; sinon, décider et avancer — la page d'importation est elle-même un aperçu, donc une mauvaise supposition coûte un clic, pas une conversation.

Extension par graines. Les exemples sont une preuve de ce que l'utilisateur entend réellement par un mot de genre. Pour chaque groupe, indiquez en une ligne ce que vous déduisez que les graines partagent (époque ? production ? style vocal ? énergie ?) — cela montre votre raisonnement et permet à l'utilisateur de le corriger à moindre coût. Générez ensuite les voisins par groupe, en conservant les proportions des groupes. Incluez les graines elles-mêmes, sauf si l'utilisateur demande des chansons entièrement nouvelles ; un nombre demandé est le total incluant les graines. Les artistes de départ peuvent réapparaître, mais gardez-les en dessous d'environ un tiers de la liste — l'expansion doit élargir le cercle, pas le boucler. Entrelacez les groupes en une seule arc plutôt que de les laisser en blocs contigus, sauf si l'utilisateur demande des chapitres séparés.

Fiche de goût. Ingérez tout ce que l'utilisateur peut donner : listes de morceaux collées, un fichier exporté, une URL de playlist publique (récupérez-la), ou guidez-les à travers l'exportation Soundiiz vers du texte. Regardez au-delà de l'étiquette de l'utilisateur — il peut dire 抒情, mais ce que les morceaux partagent réellement pourrait être « production des années 90 de Hong Kong/Taïwan + fausset masculin + intros de piano ». Écrivez les résultats dans taste.md, puis organisez des playlists qui mélangent les adorés déjà écoutés (~40%) avec les découvertes non écoutées mais voisines (~60%) — ratio ajustable, et étiquetez lequel est lequel lors de la présentation pour que l'utilisateur voie à la fois le confort et la découverte.

Règles de génération

  • Seulement des chansons réelles. Chaque morceau doit être un enregistrement réel et publié. Le seuil pour être « sûr » : vous pourriez nommer l'album ou l'époque dont il provient. En dessous de ce seuil, vérifiez avec une recherche web — une chanson inventée devient silencieusement une correspondance erronée lors de l'importation, ce qui est pire qu'un morceau de moins.
  • La forme canonique correspond le mieux : titre principal + le véritable nom de l'artiste. Gardez les artistes collaborateurs comme valeurs séparées dans le tableau artists ; supprimez les qualificatifs « feat. », « (Live) » et « (Remix) » sauf si l'utilisateur veut cette version spécifique. Pour les catalogues non latins, utilisez la forme que les plateformes de streaming listent majoritairement (les titres japonais/chinois restent généralement dans l'écriture originale).
  • Vérifiez misses.md ; ne recommandez pas un morceau qui a déjà échoué sur la plateforme cible.
  • L'ordre est la création. Organisez une arc qui correspond à la scène : l'entraînement monte en intensité, le tard le soir descend, le trajet reste stable. Une liste mélangée est un résultat de recherche, pas un mixtape.
  • ≤200 morceaux par lien (limite API). Plus → divisez en volumes (Vol.1, Vol.2), un lien chacun, en respectant la limite de débit de 10 requêtes/min.

Livraison

  1. Affichez la liste numérotée des morceaux dans le chat (avec les étiquettes 已听/nouveau en mode profil, et les déductions de groupe en une ligne en mode graine).
  2. Écrivez la charge utile dans un fichier JSON dans le scratchpad de la session (ou tout répertoire temporaire) :
    {"title": "...", "description": "...", "sourceName": "Mixtape",
     "destination": "youtube",
     "tracklist": [{"title": "...", "artists": ["...", "..."]}]}
    
  3. Canonicalisez avant de poster : python3 <skill-dir>/scripts/canonicalize.py payload.json --country <storefront>. Le script vérifie le titre et l'artiste, rejette les mauvais artistes et les versions indésirables, réécrit les morceaux confirmés selon les métadonnées affichées du catalogue Apple, et écrit un rapport de preuve. Il se ferme avec un code non nul lorsque des morceaux ne sont pas confirmés ; remplacez ces morceaux et relancez. Utilisez le pays de la boutique de l'utilisateur (enregistrez-le dans taste.md, par exemple GB). Si une recherche en texte libre ne trouve pas une chanson mais qu'une page de chanson officielle Apple Music prouve son existence, ajoutez son ID numérique d'URL comme "appleMusicId": 1702056850 sur ce morceau et relancez. Le script recherche cet ID dans la boutique cible et vérifie toujours son titre+artiste ; c'est une preuve, jamais un contournement.
  4. POSTez uniquement le fichier canonique signé : bash <skill-dir>/scripts/post_playlist.sh payload.canonical.json. Le script de publication refuse les modifications non vérifiées ou après vérification, supprime les métadonnées de preuve internes, et envoie à Soundiiz son champ artists documenté. N'envoyez jamais artist (singulier) : Soundiiz accepte la requête mais ignore ce champ, laissant la correspondance se faire uniquement par le titre. Le script imprime le lien d'importation et la date d'expiration en cas de succès.
  5. Remettez le lien avec : 有效期 24 小时;打开 → 确认目标平台 → 导入。Ce clic de confirmation sert également d'aperçu/étape de veto pour l'utilisateur — n'essayez pas de l'automatiser.
  6. Pour une itération, terminez la réconciliation côté plateforme ci-dessous après la réussite de l'importation. Un nouveau lien d'importation est un détail d'implémentation, pas une permission de laisser des doublons ou des playlists numérotées dans la bibliothèque de l'utilisateur.

Présélection de destination (champ destination) : noms de base vérifiés spotify, ytmusic (YouTube Music), youtube (simple playlist vidéo YouTube — préférez ytmusic quand l'utilisateur dit « YouTube » mais pense à la musique), deezer, tidal. Apple Music n'a pas de nom de base présélectionné — omettez le champ et dites à l'utilisateur de choisir Apple Music sur la page d'importation (un tap ; leur compte Soundiiz contient l'autorisation de la plateforme). Souvenez-vous de la plateforme de l'utilisateur dans taste.md et arrêtez de demander.

Itération : une playlist vivante avec une identité stable

Une révision n'est jamais un correctif, un redémarrage ou un second produit. Commencez à partir de la liste de morceaux précédente dans history.md, gardez chaque morceau que l'utilisateur n'a pas opposé son veto, et appliquez les échanges, les changements de ratio ou les extensions à la liste complète. Les morceaux que l'utilisateur a confirmés comme aimés sont l'actif en construction.

Gardez le titre stable accepté par l'utilisateur à travers les révisions. N'ajoutez jamais v2/v3/v4, “修复版”, ou autre gestion de versions au titre dans la bibliothèque de streaming, sauf si l'utilisateur le demande explicitement. Enregistrez les numéros de révision et la lignée uniquement dans history.md. Si la modification directe sur place n'est pas disponible et que Soundiiz doit créer un remplacement, ce remplacement est temporaire jusqu'à ce que la bibliothèque soit réconciliée : l'utilisateur doit se retrouver avec exactement une playlist actuelle sous le titre stable, pas une pile de versions et pas une playlist de correctif.

Après la réussite de l'importation de remplacement :

  1. Lisez la bibliothèque de la plateforme et résolvez la playlist conservée ainsi que tous les prédécesseurs gérés par Mixtape par ID de plateforme exact, nom actuel et nombre de morceaux.
  2. Préservez les playlists non liées même si leurs noms se ressemblent. Ne supprimez jamais par une recherche de titre floue ou par une variable/glob non résolu.
  3. Vérifiez que la playlist conservée a le nombre de morceaux complet attendu, renommez-la au titre stable, et supprimez uniquement les ID de prédécesseurs explicitement résolus.
  4. Lisez à nouveau la bibliothèque. La réussite nécessite une playlist avec le titre stable, le nombre de morceaux attendu, et aucun ID de prédécesseur. Enregistrez ce reçu dans history.md ; ne revendiquez pas le succès de l'appel de mutation seul.

Sur macOS Apple Music, utilisez l'assistant protégé plutôt que du AppleScript destructeur écrit à la main :

python3 <skill-dir>/scripts/reconcile_apple_music.py inventory
python3 <skill-dir>/scripts/reconcile_apple_music.py reconcile manifest.json
python3 <skill-dir>/scripts/reconcile_apple_music.py reconcile manifest.json --apply

Forme du manifeste :

{"stableTitle":"Course",
 "keep":{"id":"6073","expectedName":"梦想感起跑 v4","expectedTrackCount":33},
 "delete":[{"id":"6059","expectedName":"梦想感起跑 v3","expectedTrackCount":8}],
 "protect":[{"id":"5334","expectedName":"I wonder if you know","expectedTrackCount":1}]}

Il nomme le titre stable, l'ID/nom/nombre conservés, et les ID/noms/nombres de prédécesseurs exacts. Ajoutez les playlists à ne pas modifier au protect optionnel ; ils sont vérifiés avant le plan et signalés inchangés dans le reçu final. La réconciliation est en mode dry-run par défaut ; --apply refuse les noms obsolètes, les mauvais nombres, les collisions de titres non gérées ou un ID listé dans des rôles contradictoires, puis imprime un reçu de vérification. Utilisez une API/connecteur de plateforme autorisé pour d'autres services avec le même contrat de pré-vérification → mutation → relecture. Si aucune surface d'écriture autorisée n'existe, dites-le clairement et laissez l'état réconcilié non revendiqué plutôt que de dire à l'utilisateur qu'un doublon est « la nouvelle version ».

Après l'importation (léger, jamais harcelant)

Une ligne lors de la livraison : 导入后如果有没匹配上或踩雷的歌,说一声。Quand ils signalent :

  • Morceau manquant → ajoutez à misses.md ; réparez le matcher ou remplacez les échecs dans la prochaine itération complète. Un lien de complément est autorisé uniquement lorsque l'utilisateur demande explicitement à gérer un correctif séparément.
  • Mauvaise surprise → enregistrez dans taste.md 雷区 avec la raison si donnée (trop bruyant ? époque incorrecte ?).
  • Enregistrez le mixtape dans history.md dans tous les cas.

En cas de problème

  • Morceaux toujours introuvables lors de l'importation malgré les noms canoniques → traitez-le comme une livraison échouée, pas un nettoyage par l'utilisateur. Revérifiez la boutique cible, remplacez ou épinglez les ID de catalogue non résolus, régénérez la playlist complète signée, puis réconciliez-la avec l'identité de plateforme stable. Ne recourez pas par défaut à un fragment de complément.
  • Too many requests → attendez 60s, réessayez une fois.
  • Erreur API ou changement de format → ne laissez pas l'utilisateur en plan : délivrez la liste des morceaux en texte brut avec le chemin manuel (soundiiz.com → Import playlist → coller le texte), et notez le problème d'API pour que la compétence puisse être mise à jour.
  • Soundiiz gratuit convertit une playlist (≤200 morceaux) par transfert — une utilisation personnelle normale n'atteint jamais cette limite ; ne mentionnez les limites que si l'utilisateur le fait.

Skills associés