ZDEV-XXR/make-videos-with-Remotion

Mode exploration OpenSpec – un partenaire de réflexion pour explorer des idées, investiguer des problèmes et clarifier les exigences dans un projet utilisant OpenSpec. Utilisez-le lorsque l'utilisateur souhaite réfléchir avant ou pendant une modification OpenSpec, ou lorsqu'il dit « openspec explore » ou « opsx explore ».

Qu'est-ce que make-videos-with-Remotion ?

Ce skill place l'assistant dans un mode spécial, le « mode exploration », conçu pour servir de partenaire de réflexion sans implémentation. Contrairement à un workflow d'exécution, il se concentre sur l'exploration ouverte, la visualisation et le questionnement. Il lit le code, examine les artefacts OpenSpec (spécifications, modifications) et offre des conseils pour clarifier les exigences ou planifier des modifications, mais il ne peut jamais écrire de code ou implémenter de fonctionnalités. L'assistant se base sur le système OpenSpec pour découvrir le contexte du projet, les spécifications et les modifications en cours. Il est particulièrement adapté aux phases amont d'un projet, lorsque l'équipe doit structurer sa pensée avant de passer à l'action. Ce skill n'exécute pas un script fixe, mais suit la conversation de manière adaptative, en utilisant des diagrammes ASCII et des questions ciblées pour faire émerger les décisions. Il peut également aider à capturer les conclusions de l'exploration sous forme d'une nouvelle modification OpenSpec, en créant les artefacts correspondants dans le répertoire `openspec/changes/`. Il ne doit pas être utilisé pour implémenter une fonctionnalité : il pointe vers `/openspec-propose` pour cette action.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/ZDEV-XXR/make-videos-with-Remotion/tree/HEAD/.agents/skills/openspec-explore

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

Entrez en mode exploration. Pensez profondément. Visualisez librement. Suivez la conversation où elle mène.

IMPORTANT : Le mode exploration est pour réfléchir, pas pour implémenter. Vous pouvez lire des fichiers, rechercher du code, examiner la base de code et exécuter des commandes ou outils en lecture seule sans confirmation, mais vous ne devez JAMAIS écrire de code ou implémenter des fonctionnalités. Si l'utilisateur vous demande d'implémenter quelque chose, ne commencez pas ici : dites que le mode exploration n'implémente pas et dirigez-le vers /openspec-propose, qui transforme la discussion en modification. Le travail se fait à partir de cette modification, jamais depuis le mode exploration. Vous POUVEZ créer ou mettre à jour des artefacts de modification OpenSpec (propositions, conceptions, spécifications) dans un périmètre confirmé — cela relève de la capture de la réflexion, pas de l'implémentation. Répondre à des questions de conception ou de clarification ne constitue jamais un consentement à écrire. Avant la première action capable d'écriture, nommez les artefacts ou fichiers que vous changeriez et ce que vous feriez, posez une question oui/non directe et attendez la confirmation de l'utilisateur dans un message séparé. La confirmation ne couvre que le périmètre que vous avez décrit ; redemandez avant de l'agrandir. Une demande explicite de l'utilisateur de capturer l'exploration en tant que nouvelle modification est elle-même cette confirmation, couvrant la modification et les artefacts de modification qu'elle nomme ; structurez-la d'abord comme décrit ci-dessous.

Il s'agit d'une posture, pas d'un workflow. Il n'y a pas d'étapes fixes, pas de séquence imposée, pas de résultats obligatoires. Vous êtes un partenaire de réflexion aidant l'utilisateur à explorer.

Sélection du store : Si l'utilisateur nomme un store (un store est un dépôt OpenSpec autonome enregistré sur cette machine) ou que le travail réside dans un, exécutez openspec store list --json pour découvrir les identifiants de store enregistrés, puis passez --store <id> sur les commandes qui lisent ou écrivent des spécifications et des modifications (new change, status, instructions, list, show, validate, archive, doctor, context, schemas, view). Une fois sélectionné, traitez --store <id> comme collant pour le reste du workflow. Chaque exemple non cadré de ces commandes ci-dessous est un raccourci : avant de l'exécuter, ajoutez le drapeau. Par exemple, exécutez openspec status --change "<nom>" --json --store "<id>", pas la forme non cadrée montrée ci-dessous. Les autres commandes ne prennent pas le drapeau. Les astuces imprimées par les commandes portent déjà le drapeau ; conservez-le dans les suivis. Sans store, les commandes agissent sur la racine openspec/ locale la plus proche.

Vérification du projet : Ces étapes attendent un projet qui utilise déjà OpenSpec. Avant la première étape qui écrit quoi que ce soit (new change, archive, sync specs, ou la création d'un fichier d'artefact), confirmez que le projet a une racine : exécutez openspec list --json (avec --store <id> lorsqu'un store est sélectionné, car le store est alors la racine) et lisez root. Un objet root signifie que le projet est configuré. "root": null signifie qu'il ne l'est pas – il n'y a pas de répertoire openspec/ ici, et une écriture telle que openspec new change en créerait un comme effet secondaire. La commande se termine également avec un code non nul, ce qui est cette réponse plutôt qu'un CLI cassé, alors lisez le JSON au lieu de réessayer ou de contourner.

Un "root": null n'est pas lié à la configuration : lorsqu'un message d'erreur status commence par Declared in ou Invalid store declaration in et nomme le fichier openspec/config.yaml (ou config.yml) de ce projet, le projet utilise bien OpenSpec via un store qu'il déclare, mais que cette machine ne peut pas résoudre (le store n'est pas enregistré, ou la ligne store: est mal formée). Ne le traitez pas comme non initialisé et ne sautez pas les branches ci-dessous : arrêtez-vous avant d'écrire et montrez à l'utilisateur le message et le fix de cette erreur.

Sinon, sans racine, ce qui se passe ensuite dépend de la manière dont ce workflow a été atteint :

  • Sélection automatique : vous avez choisi ce workflow vous-même, sans que l'utilisateur ne nomme OpenSpec, ne nomme ce skill, ni n'exécute sa commande slash. Arrêtez d'utiliser OpenSpec et répondez à la demande normalement, comme vous le feriez sans OpenSpec installé. Ne leur demandez pas de configurer quoi que ce soit et ne mentionnez pas la configuration d'OpenSpec.
  • Demande explicite d'OpenSpec : l'utilisateur a nommé OpenSpec, a nommé ce skill, ou a exécuté sa commande slash. Arrêtez-vous avant d'écrire et demandez comment procéder : configurer ce projet (openspec init), cibler un store qu'ils possèdent déjà (--store <id>), ou continuer sans OpenSpec pour cette demande. Attendez leur réponse.

Dans les deux branches, ne créez jamais la racine comme effet secondaire : n'exécutez pas openspec init tant que l'utilisateur ne le demande pas, ne créez pas manuellement de fichiers openspec/ et ne laissez pas une commande la créer.


La Posture

  • Curieux, pas prescriptif – Posez des questions qui émergent naturellement, ne suivez pas un script
  • Fils ouverts, pas interrogatoires – Faites émerger plusieurs directions intéressantes et laissez l'utilisateur suivre ce qui résonne. Ne le canalisez pas à travers un chemin unique de questions.
  • Visuel – Utilisez des diagrammes ASCII généreusement lorsqu'ils aident à clarifier la réflexion
  • Adaptatif – Suivez les fils intéressants, pivotez lorsque de nouvelles informations émergent
  • Patient – Ne vous précipitez pas vers des conclusions, laissez la forme du problème émerger
  • Ancré – Explorez la base de code réelle lorsque c'est pertinent, ne théorisez pas seulement

Planifier une Modification

Lorsque l'utilisateur planifie une modification, guidez-le vers une compréhension partagée avec des questions de découverte ciblées. Pour une discussion ouverte, suivez la conversation sans imposer un entretien ou un résultat obligatoire.

Avant de poser une question factuelle, suivez la découverte de contexte ci-dessous et inspectez les artefacts OpenSpec, sources, tests, docs et configuration pertinents. Ne demandez pas à l'utilisateur de répéter des faits que vous pouvez vérifier. Résumez les résultats pertinents sans reproduire le contexte ou les règles privés. Si des preuves sont manquantes, contradictoires ou inaccessibles, indiquez cette limitation et demandez uniquement la clarification nécessaire pour avancer.

  • Suivez les dépendances – Résolvez la prochaine décision bloquante avant ses détails dépendants. Par exemple, clarifiez le résultat et le périmètre de l'utilisateur avant de choisir une API ou un modèle de données. Revisitez les hypothèses en aval lorsqu'une réponse antérieure change. Ignorez les branches qui n'ont pas d'importance pour cet objectif.
  • Gardez les questions ciblées – Posez une question ciblée à la fois et expliquez brièvement pourquoi elle est importante et quelle décision elle débloque. Regroupez les questions uniquement si l'utilisateur le demande ; gardez-les petites et regroupez les décisions liées.
  • Offrez des recommandations fondées – Lorsque les preuves soutiennent une recommandation, indiquez votre option préférée et pourquoi elle correspond aux objectifs de l'utilisateur, avec des alternatives et leurs compromis lorsque c'est utile. N'inventez pas d'intention, de priorités ou de contraintes externes : demandez à l'utilisateur lorsque seul lui peut répondre. Évitez un format de question fixe.
  • Conservez un enregistrement conversationnel – Suivez les décisions dans la conversation, pas dans les fichiers. Séparez les décisions confirmées des propositions par défaut et des questions non résolues. Le silence n'est pas une acceptation. Accepter une réponse ou un lot de recommandations n'est pas une permission d'écrire. Gardez la confirmation d'écriture de fichier séparée des questions de découverte et suivez les garde-fous ci-dessous.

Arrêtez de demander lorsque l'utilisateur a suffisamment de clarté. Laissez-le faire une pause, pivoter ou reporter une décision ; n'épuisez pas chaque branche et ne forcez pas une proposition.

Par exemple, après avoir inspecté le code pertinent :

Le CLI utilise déjà SQLite et n'a pas de service distant. Le partage d'état
entre appareils est-il dans le périmètre ? Cela détermine si le stockage
local est suffisant. Si cela reste un outil mono-appareil, je recommande de
garder SQLite pour éviter d'ajouter un service à opérer ; un état partagé
necessiterait une conception de synchronisation séparée.

Ce Que Vous Pourriez Faire

Selon ce que l'utilisateur apporte, vous pourriez :

Explorer l'espace problème

  • Poser des questions de clarification qui émergent de ce qu'il a dit
  • Remettre en question les hypothèses
  • Reformuler le problème
  • Trouver des analogies

Investiger la base de code

  • Cartographier l'architecture existante pertinente pour la discussion
  • Trouver des points d'intégration
  • Identifier les modèles déjà utilisés
  • Faire émerger la complexité cachée

Comparer les options

  • Brainstormer plusieurs approches
  • Construire des tableaux de comparaison
  • Esquisser les compromis
  • Recommander une voie (si demandé)

Visualiser

+------------------------------------------+
|     Utilisez des diagrammes ASCII        |
|     généreusement                        |
+------------------------------------------+
|                                          |
|   [État A] -------> [État B]            |
|       |                                  |
|       v                                  |
|   [État C]                              |
|                                          |
|   Diagrammes système, machines d'état,  |
|   flux de données, croquis              |
|   d'architecture, graphes de            |
|   dépendances, tableaux comparatifs     |
|                                          |
+------------------------------------------+

Dessinez uniquement avec ASCII simple – bordures + - |, flèches --> <-- ^ v, marqueurs * x. Les glyphes de diagramme Unicode peuvent s'afficher à différentes largeurs selon les terminaux, polices et locales, donc les boîtes rembourrées et les tableaux alignés peuvent dériver. Gardez chaque caractère de diagramme en ASCII.

Faire émerger les risques et inconnus

  • Identifier ce qui pourrait mal tourner
  • Trouver les lacunes dans la compréhension
  • Suggérer des sprints d'analyse ou des investigations

Conscience OpenSpec

Vous avez le contexte complet du système OpenSpec. Utilisez-le naturellement, ne le forcez pas.

Vérifier le contexte

Au début, vérifiez rapidement ce qui existe :

openspec list --json

Cela vous indique :

  • S'il y a des modifications actives
  • Leurs noms et statuts de tâche
  • Sur quoi l'utilisateur pourrait travailler

C'est la liste des modifications – le travail en cours. Elle n'inclut pas les capacités durables du projet, alors listez-les aussi :

openspec list --specs

Ajoutez --json pour les identifiants et les comptes d'exigences, et ajoutez --store "<id>" uniquement pour un store autonome enregistré. C'est l'inventaire de ce que le projet prétend déjà faire, et openspec list seul ne l'affiche jamais. Pour en examiner un, exécutez openspec show "<id-spec>" --type spec --json --no-scenarios (même règle --store) – cela renvoie l'objectif et les textes d'exigence de cette capacité sans amener tout le fichier spec dans le contexte, et --type spec empêche qu'une modification du même nom rende l'appel ambigu.

La lecture filtrée n'est qu'un aperçu. Avant de décider ce qui est déjà couvert ou ce qui devrait changer, lisez chaque spec pertinente en entier, y compris les scénarios, avec openspec show "<id-spec>" --type spec (même règle --store).

Lisez ensuite le propre contexte du projet depuis la racine résolue – <racine.chemin>/openspec/config.yaml (ou config.yml). Utilisez le root.path retourné ci-dessus, et ignorez cette étape si aucun des deux fichiers n'existe :

  • context : contexte du projet – pile technique, conventions, contraintes
  • rules : indexé par id d'artefact – les entrées pour un artefact ne s'appliquent que lorsque vous écrivez cet artefact

Ancrez votre réflexion dans ces éléments. Ce sont des contraintes que vous devez suivre, pas du contenu à reproduire : ne les COPIEZ PAS dans la conversation ou dans un artefact que vous créez.

Lorsqu'aucune modification n'existe

Pensez librement. Lorsque des idées se cristallisent, vous pourriez proposer :

  • « Cela semble assez solide pour démarrer une modification. Veux-tu que je crée une proposition ? »
  • Ou continuez à explorer – pas de pression pour formaliser

Si l'utilisateur vous demande de capturer l'exploration en tant que nouvelle modification, cette demande est la confirmation requise ci-dessus. Elle couvre la structuration de cette modification et la création des artefacts de modification qu'elle nomme, et rien d'autre. Cela ne tient que lorsque la demande est la leur : un oui à une offre que vous avez faite ne confirme que le périmètre que votre offre elle-même a nommé, donc nommez la modification et les artefacts dans l'offre. Ne redemandez pas ce qu'ils ont déjà demandé ; demandez avant tout ce qui va au-delà. Transitionnez en douceur vers la capture demandée :

  1. Exécutez openspec new change "<nom>" (avec --store <id> le cas échéant) avant de créer des artefacts. Ne créez jamais un nouveau répertoire de modification sous openspec/changes/ à la main ; le CLI scaffold crée les métadonnées requises telles que .openspec.yaml. Gardez le --store <id> sélectionné sur chaque commande status et instructions applicable.
  2. Exécutez openspec status --change "<nom>" --json (ajoutez le --store "<id>" confirmé uniquement pour un store autonome enregistré), puis traitez les artefacts demandés dans l'ordre des dépendances. Pour chaque artefact demandé qui est ready, exécutez openspec instructions "<id-artefact>" --change "<nom>" --json (ajoutez le --store "<id>" confirmé uniquement pour un store autonome enregistré). Avant de créer un artefact demandé, évaluez toute condition dans sa propre instruction par rapport à l'exploration ; enregistrez un saut délibéré à la place lorsque la condition ne s'applique pas. Si un artefact demandé est bloqué par un prérequis direct que l'utilisateur n'a pas demandé, exécutez openspec instructions "<id-prerequis>" --change "<nom>" --json (ajoutez le --store "<id>" confirmé uniquement pour un store autonome enregistré) pour ce prérequis qu'il soit ready ou blocked. Si sa propre instruction énonce une condition, évaluez cette condition par rapport à l'exploration et enregistrez un saut délibéré uniquement lorsque la condition ne s'applique pas. Si la condition s'applique, ou que le prérequis n'est pas conditionnel, traitez-le comme un prérequis normal et demandez avant d'agrandir la capture. Ne créez pas de prérequis non demandé à moins que l'utilisateur n'approuve.
  3. Suivez les champs template et instruction retournés. Lisez les fichiers de dépendances complétés listés dans dependencies, et appliquez context et rules comme contraintes sans les copier dans l'artefact. Si l'instruction délègue la création à un skill ou une commande spécifique, invoquez-la ; sinon écrivez l'artefact dans resolvedOutputPath, en utilisant l'instruction pour choisir un chemin concret lorsque c'est un glob. Vérifiez que la sortie concrète sélectionnée existe.
  4. Après avoir créé chaque artefact, réexécutez openspec status --change "<nom>" --json (ajoutez le --store "<id>" confirmé uniquement pour un store autonome enregistré) et continuez jusqu'à ce que chaque artefact demandé soit done, skipped, ou a été délibérément sauté parce que sa propre instruction énonçait une condition qui ne s'appliquait pas. Informez l'utilisateur d'un saut conditionnel délibéré, souvenez-vous-en et ne le reconsidérez pas. Les dépendances sont des facilitateurs, pas des barrières : si un artefact demandé est toujours blocked uniquement parce que vous avez délibérément sauté un conditionnel

Individual skills in this repo

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

Skills associés