mattpocock/wizard

Génère un wizard bash interactif qui guide un humain à travers des étapes qu'il peut seul réaliser. À utiliser pour provisionner une infrastructure, configurer des identifiants ou des secrets CI, naviguer dans un tableau de bord tiers inconnu, ou exécuter une migration ou une transition ponctuelle. Ne pas invoquer pour des étapes que l'agent peut effectuer lui-même.

Qu'est-ce que wizard ?

Le skill Wizard (`mattpocock/wizard`) permet de créer des scripts bash interactifs qui guident un humain, étape par étape, à travers des procédures manuelles complexes et répétitives. Contrairement à un agent autonome, le wizard délègue les actions nécessitant une intervention humaine (ouverture de navigateur, clics, copie de valeurs, saisie de secrets) tout en automatisant la capture, l'écriture et la validation des données récoltées. Ce skill est particulièrement utile pour provisionner des infrastructures, configurer des secrets CI (GitHub Actions, variables d'environnement), naviguer dans des tableaux de bord tiers inconnus, ou exécuter des migrations ponctuelles. Il s'appuie sur un `template.sh` standardisé qui fournit une expérience utilisateur soignée : progression par étapes, confirmation avant actions irréversibles, ouverture de liens multiplateforme (y compris WSL), saisie cachée des secrets, mise à jour idempotente des fichiers `.env`, écriture dans les secrets/variables GitHub, et résumé final. Le développeur n'a qu'à définir la séquence des étapes et les valeurs à capturer, le squelette du wizard étant déjà fourni. Le skill est conçu pour être éphémère (généré pour une exécution unique, supprimé après usage), mais peut être versionné si la procédure doit être répétée par d'autres membres de l'équipe.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mattpocock/skills/tree/main/skills/engineering/wizard

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

Que fait wizard ?

Un wizard est un script bash qui guide un humain, étape par étape, à travers une procédure manuelle fastidieuse à réaliser à la main et fastidieuse à ré-expliquer à une IA à chaque fois. Il ouvre chaque URL, indique exactement quoi cliquer et copier, capture les valeurs, les écrit là où elles doivent être (.env, secrets GitHub), confirme à chaque étape, et indique combien d'étapes restent. Il peut configurer des services tiers, exécuter une migration ponctuelle, ou faire passer le projet d'un état à un autre.

L'expérience utilisateur agréable est déjà résolue par template.sh : progression étape par étape, portes de confirmation, ouverture de liens multiplateforme (y compris WSL), saisie cachée des secrets, mise à jour idempotente du .env, écriture gh secret/gh variable, et un résumé de fin. Votre seul travail consiste à délimiter la procédure et à rédiger ses étapes. La bibliothèque au-dessus du marqueur STAGES est identique dans chaque wizard ; cette cohérence est le point essentiel : ne la modifiez jamais à la main.

Un wizard est éphémère par défaut : conçu pour une seule exécution, sauvegardé dans un chemin temporaire ou scripts/, supprimé une fois le travail terminé. Ne le versionnez que lorsque l'utilisateur souhaite un chemin d'installation reproductible destiné à rester dans le dépôt.

Processus

1. Délimiter la procédure

Déterminez chaque étape manuelle que l'humain doit effectuer et chaque valeur qui sera capturée en cours de route. Lisez d'abord le dépôt, ne posez pas de questions à froid :

  • Pour l'installation : .env, .env.example, .env.*, README, docker-compose*, la configuration du framework, et .github/workflows/* (chaque référence secrets.* / vars.* est une valeur que le wizard doit produire).
  • Pour une migration ou une transition : l'état actuel, l'état cible, et les actions irréversibles entre les deux.

Ensuite, montrez à l'utilisateur la liste ordonnée des étapes et les valeurs que chacune produit, puis demandez confirmation : il peut ajouter, supprimer ou réordonner.

Terminé lorsque : chaque étape est nommée dans l'ordre, et pour chaque valeur capturée vous savez (a) où l'humain l'obtient, (b) où elle est écrite (.env, un secret GitHub, les deux, ou nulle part ; certaines étapes sont de pures actions), et (c) si elle est secrète (saisie cachée) ou publique.

2. Cartographier le parcours de chaque étape

Pour chaque étape, écrivez le chemin précis que l'humain suit : quelle URL ouvrir, quoi faire là, où la valeur est affichée, quelle variable elle remplit, par exemple : « Tableau de bord → Développeurs → Clés API → Révéler la clé de test → copier ». Là où vous ne connaissez pas réellement l'interface utilisateur actuelle ou la commande exacte, dites-le et demandez à l'utilisateur ou consultez la documentation : n'inventez jamais des étapes qui pourraient ne pas exister.

Terminé lorsque : chaque étape se traduit par des instructions concrètes qu'un inconnu pourrait suivre.

3. Rédiger le wizard

Copiez template.sh vers le chemin cible. Remplacez l'exemple d'étape par une stage par étape, dans l'ordre des dépendances. Utilisez les fonctions d'aide de la bibliothèque : stage, say/step, open_url, ask/ask_secret, write_env, set_secret/set_var, pause/confirm. Définissez TOTAL_STAGES au nombre d'étapes que vous avez écrites.

Respectez le standard défini par le template : ouvrez l'URL avant de demander sa valeur, utilisez ask_secret pour tout ce qui est secret, write_env pour chaque valeur persistée, set_secret uniquement pour les valeurs dont le CI a réellement besoin, et confirm avant toute action irréversible. Chaque stage efface l'écran pour que seule l'étape en cours soit visible : gardez une étape sur une seule tâche ciblée afin que rien de ce dont l'humain a besoin ne défile hors de l'écran. Ne touchez pas à la bibliothèque au-dessus du marqueur.

4. Vérifier et transmettre

  • bash -n <script> ; exécutez shellcheck si disponible.
  • chmod +x <script>.
  • Ne l'exécutez pas vous-même de bout en bout : il ouvre des navigateurs et se bloque sur la saisie humaine. Tracez-le statiquement à la place : chaque valeur de l'étape 1 est capturée et atterrit là où l'étape 1 l'a dit, et chaque nom de set_secret correspond exactement à une référence secrets.* dans le CI.
  • Dites à l'utilisateur comment l'exécuter. S'il s'agit d'un chemin d'installation reproductible, versionnez-le et liez-le depuis le README afin que la prochaine personne exécute le script au lieu de demander à une IA.

Individual skills in this repo

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

mattpocock/ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

mattpocock/caveman

Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman.

mattpocock/claude-handoff

Hand the current conversation off to a fresh background agent that picks up the work immediately.

mattpocock/codebase-design

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

mattpocock/design-an-interface

Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".

mattpocock/diagnose

Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.

mattpocock/diagnosing-bugs

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.

mattpocock/domain-modeling

Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.

mattpocock/edit-article

Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.

mattpocock/git-guardrails-claude-code

Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.

mattpocock/grilling

Grill the user relentlessly about a plan or design. Use when the user wants to stress-test a plan before building, or uses any 'grill' trigger phrases.

mattpocock/grill-me

Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".

mattpocock/grill-with-docs

Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.

mattpocock/handoff

Compact the current conversation into a handoff document for another agent to pick up.

mattpocock/implement

Implement a piece of work based on a PRD or set of issues.

mattpocock/implement-spec

Implement a specification in code.

mattpocock/improve-codebase-architecture

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

mattpocock/loop-me

Grill me about specs for the workflows I want to build, within this workspace.

mattpocock/migrate-to-shoehorn

Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

mattpocock/obsidian-vault

Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.

Skills associés