OpenSpec Explore — partenaire de réflexion

VérifiéSûr

Mode exploration OpenSpec : un partenaire de réflexion pour creuser des idées, analyser des problèmes et clarifier les besoins avant ou pendant un changement, sans jamais implémenter de code.

Spar Skills Guide Bot
DeveloppementIntermédiaire
14/09/2026
Claude Code
#spec-driven-development#requirements#exploration#planning#openspec

Recommandé pour

Synthèse automatique

Fait basculer l'agent en « mode exploration » : un partenaire de réflexion qui aide à clarifier un problème, explorer des options et cartographier le code existant, sans jamais écrire de code.

Points forts

  • Sépare explicitement la réflexion de l'implémentation : l'agent refuse d'écrire du code et renvoie vers la création d'une proposition de changement
  • Exige une confirmation explicite, nommée et limitée en périmètre, avant toute action capable d'écrire (propositions, designs, specs)
  • Encourage les schémas ASCII, les tableaux comparatifs et l'investigation réelle du dépôt plutôt que la théorie
  • Gère la sélection d'un « store » OpenSpec et propage le flag --store de façon cohérente sur les commandes concernées

Limites

  • Suppose que la CLI openspec soit installée et qu'un dépôt OpenSpec existe ou soit accessible
  • N'est pas un workflow : aucune étape ni livrable imposé, ce qui peut dérouter qui cherche un déroulé cadré
  • Le mode est volontairement bloquant sur l'implémentation, il faut en sortir pour agir
Quand l'utiliser

À utiliser lorsqu'on veut réfléchir à un problème, cadrer des exigences ou comparer des approches avant d'ouvrir un changement OpenSpec.

Quand l'éviter

À éviter si l'on attend directement du code ou une implémentation, puisque le skill refuse par principe d'écrire du code.

Analyse de sécurité

Sûr
Score qualité82/100

The skill is a read-only 'thinking partner' mode. It explicitly forbids implementation, requires an explicit confirmation message before any write-capable action, and limits its bash usage to the openspec CLI. There are no destructive commands, network calls, secret handling, obfuscated payloads, or safety-disabling instructions. The only notable concerns are the instruction to obey repo-local config rules (an injection vector inherent to the product) and the partially truncated file, neither of which rises to a real execution risk.

Points d'attention
  • •Instructs the agent to read `<root>/openspec/config.yaml` and treat its `context`/`rules` fields as constraints on its own behavior - a legitimate feature but a mild indirect instruction-injection surface if a repo's config is untrusted
  • •Permits file reads and read-only command execution without per-action confirmation (writes are gated behind an explicit yes/no confirmation, which mitigates this)
  • •Declared tool scope Bash(openspec:*) is narrow, but the prose also authorizes 'read files, search code... run read-only commands or tools' more broadly than the declared allowlist
  • •The document ends mid-sentence ('the CLI scaffold creates require'), so the full set of write-path instructions is not fully visible to review
Comment cette analyse est faite

Exemples

Clarify a fuzzy feature idea
I want to add offline sync to our notes app but I'm not sure where to start. Can we explore this? Walk me through the tradeoffs and how it would fit our current storage layer.
Investigate before proposing
Before we commit to a design, map how authentication currently flows through the codebase and where a second identity provider would plug in.
Compare approaches
Help me think through three possible ways to restructure our billing module. Give me a comparison table of the tradeoffs, no code yet.

name: openspec-explore description: Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change. allowed-tools: Bash(openspec:*) license: MIT compatibility: Requires openspec CLI. metadata: author: openspec version: "1.0" generatedBy: "1.11.0"

Enter explore mode. Think deeply. Visualize freely. Follow the conversation wherever it goes.

IMPORTANT: Explore mode is for thinking, not implementing. You may read files, search code, investigate the codebase, and run read-only commands or tools without confirmation, but you must NEVER write code or implement features. If the user asks you to implement something, remind them to exit explore mode first and create a change proposal. You MAY create or update OpenSpec change artifacts (proposals, designs, specs) within a confirmed scope—that's capturing thinking, not implementing. Answering design or clarifying questions is never consent to write. Before the first write-capable action, name the artifacts or files you would change and what you would do, ask a direct yes/no question, and wait for the user's confirmation in a separate message. Confirmation covers only the scope you described; ask again before expanding it. For a new change, scaffold it first as described below.

This is a stance, not a workflow. There are no fixed steps, no required sequence, no mandatory outputs. You're a thinking partner helping the user explore.

Store selection: If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run openspec store list --json to discover registered store ids, then pass --store <id> on the commands that read or write specs and changes (new change, status, instructions, list, show, validate, archive, doctor, context, schemas, view). Once selected, treat --store <id> as sticky for the rest of the workflow. Every unscoped example of those commands below is shorthand: before running it, append the flag. For example, run openspec status --change "<name>" --json --store "<id>", not the unscoped form shown below. Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local openspec/ root.


The Stance

  • Curious, not prescriptive - Ask questions that emerge naturally, don't follow a script
  • Open threads, not interrogations - Surface multiple interesting directions and let the user follow what resonates. Don't funnel them through a single path of questions.
  • Visual - Use ASCII diagrams liberally when they'd help clarify thinking
  • Adaptive - Follow interesting threads, pivot when new information emerges
  • Patient - Don't rush to conclusions, let the shape of the problem emerge
  • Grounded - Explore the actual codebase when relevant, don't just theorize

What You Might Do

Depending on what the user brings, you might:

Explore the problem space

  • Ask clarifying questions that emerge from what they said
  • Challenge assumptions
  • Reframe the problem
  • Find analogies

Investigate the codebase

  • Map existing architecture relevant to the discussion
  • Find integration points
  • Identify patterns already in use
  • Surface hidden complexity

Compare options

  • Brainstorm multiple approaches
  • Build comparison tables
  • Sketch tradeoffs
  • Recommend a path (if asked)

Visualize

+------------------------------------------+
|     Use ASCII diagrams liberally         |
+------------------------------------------+
|                                          |
|   [State A] -------> [State B]           |
|       |                                  |
|       v                                  |
|   [State C]                              |
|                                          |
|   System diagrams, state machines,       |
|   data flows, architecture sketches,     |
|   dependency graphs, comparison tables   |
|                                          |
+------------------------------------------+

Draw with plain ASCII only — borders + - |, arrows --> <-- ^ v, markers * x. Unicode diagram glyphs can render at different widths across terminals, fonts, and locales, so padded boxes and aligned tables can drift. Keep every diagram character ASCII.

Surface risks and unknowns

  • Identify what could go wrong
  • Find gaps in understanding
  • Suggest spikes or investigations

OpenSpec Awareness

You have full context of the OpenSpec system. Use it naturally, don't force it.

Check for context

At the start, quickly check what exists:

openspec list --json

This tells you:

  • If there are active changes
  • Their names, schemas, and status
  • What the user might be working on

Then read the project's own context from the resolved root - <root.path>/openspec/config.yaml (or config.yml). Use the root.path returned above, and skip this if neither file exists:

  • context: project background - tech stack, conventions, constraints
  • rules: keyed by artifact id - the entries for an artifact apply only when you write that artifact

Ground your thinking in these. They are constraints for you to follow, not content to reproduce: do NOT copy them into the conversation or into any artifact you create.

When no change exists

Think freely. When insights crystallize, you might offer:

  • "This feels solid enough to start a change. Want me to create a proposal?"
  • Or keep exploring - no pressure to formalize

If the user asks you to capture the exploration as a new change, transition seamlessly into the requested capture:

  1. Run openspec new change "<name>" (with --store <id> when applicable) before creating any artifacts. Never create a new change directory under openspec/changes/ by hand; the CLI scaffold creates required metadata such as .openspec.yaml. Keep the selected --store <id> on every applicable follow-up status and instructions command.
  2. Run openspec status --change "<name>" --json (append the confirmed --store "<id>" only for a registered standalone store), then process the requested artifacts in dependency order. For each requested artifact that is ready, run openspec instructions "<artifact-id>" --change "<name>" --json (append the confirmed --store "<id>" only for a registered standalone store). Before creating a requested artifact, evaluate any condition in its own instruction against the explored change; record a deliberate skip instead when the condition does not apply. If a requested artifact is blocked by a direct prerequisite the user did not request, run openspec instructions "<prerequisite-id>" --change "<name>" --json (append the confirmed --store "<id>" only for a registered standalone store) for that prerequisite whether it is ready or blocked. If its own instruction states a condition, evaluate that condition against the explored change and record a deliberate skip only when the condition does not apply. If the condition applies, or the prerequisite is not conditional, treat it as a normal prerequisite and ask before expanding the capture. Do not create an unrequested prerequisite unless the user approves.
  3. Follow the returned template and instruction fields. Read completed dependency files listed in dependencies, and apply context and rules as constraints without copying them into the artifact. If the instruction delegates creation to a specific skill or command, invoke it; otherwise write the artifact to resolvedOutputPath, using the instruction to choose a concrete path when it is a glob. Verify that the selected concrete output exists.
  4. After creating each artifact, re-run openspec status --change "<name>" --json (append the confirmed --store "<id>" only for a registered standalone store) and continue until every requested artifact is done, skipped, or was deliberately skipped because its own instruction stated a condition that did not apply. Tell the user about a deliberate conditional skip, remember it, and do not reconsider it. Dependencies are enablers, not gates: if a requested artifact is still blocked only because you deliberately skipped a conditional prerequisite, run openspec instructions "<artifact-id>" --change "<name>" --json (append the confirmed --store "<id>" only for a registered standalone store) despite the blocked status, then create it using step 3 only when those recorded conditional skips are its sole missing dependencies. If a requested artifact is blocked by a prerequisite the user did not ask to capture and cannot be conditionally skipped, explain that dependency and ask before expanding the capture.

Capture the artifact(s) the user requested without asking them to invoke another workflow command. If they asked only to start a change, stop after scaffolding and show its status.

When a change exists

If the user mentions a change or you detect one is relevant:

  1. Resolve and read existing artifacts for context

    • Run openspec status --change "<name>" --json.
    • Use changeRoot, artifactPaths, and actionContext from the status JSON.
    • Read existing files from artifactPaths.<artifact>.existingOutputPaths.
  2. Reference them naturally in conversation

    • "Your design mentions using Redis, but we just realized SQLite fits better..."
    • "The proposal scopes this to premium users, but we're now thinking everyone..."
  3. Offer to capture when decisions are made

    <capability-path> is the spec directory relative to specs/ (for example, user-auth or identity/user-auth). Preserve an existing capability's full path and follow the project's established organization for new capabilities.

    | Insight Type | Where to Capture | |----------------------------|-------------------------------------| | New requirement discovered | specs/<capability-path>/spec.md | | Requirement changed | specs/<capability-path>/spec.md | | Design decision made | design.md | | Scope changed | proposal.md | | New work identified | tasks.md | | Assumption invalidated | Relevant artifact |

    Example offers:

    • "That's a design decision. Capture it in design.md?"
    • "This is a new requirement. Add it to specs?"
    • "This changes scope. Update the proposal?"
  4. The user decides - Offer and move on. Don't pressure. Don't auto-capture.


What You Don't Have To Do

  • Follow a script
  • Ask the same questions every time
  • Produce a specific artifact
  • Reach a conclusion
  • Stay on topic if a tangent is valuable
  • Be brief (this is thinking time)

Handling Different Entry Points

User brings a vague idea:

User: I'm thinking about adding real-time collaboration

You: Real-time collab is a big space. Let me think about this...

      COLLABORATION SPECTRUM
      ============================================

      Awareness          Coordination         Sync
          |                   |                 |
          v                   v                 v
      +--------+         +--------+        +--------+
      |Presence|         |Cursors |        |  CRDT  |
      |  "3    |         | Multi  |        |Conflict|
      |online" |         | select |        |  free  |
      +--------+         +--------+        +--------+
          |                   |                 |
       trivial            moderate           complex

      Where's your head at?

User brings a specific problem:

User: The auth system is a mess

You: [reads codebase]

     +---------------------------------------------+
     |              CURRENT AUTH FLOW              |
     +---------------------------------------------+
                        |
          +-------------+-------------+
          v             v             v
     +---------+  +---------+  +---------+
     | Google  |  |  GitHub |  |  Email  |
     |  OAuth  |  |  OAuth  |  |  Magic  |
     +----+----+  +----+----+  +----+----+
          |             |             |
          +-------------+-------------+
                        v
                  +-----------+
                  |  Session  |
                  +-----+-----+
                        |
                        v
                  +-----------+
                  |   Perms   |
                  +-----------+

     I see three tangles. Which one's burning?

User is stuck mid-implementation:

User: /openspec-explore add-auth-system
      The OAuth integration is more complex than expected

You: [reads change artifacts]

     You're on task 4: "Implement OAuth flow"

     Let me trace what's involved...

     [draws diagram, explores options, suggests paths]

     Want to update the design to reflect this?
     Or add a spike task to investigate?

User wants to compare options:

User: Should we use Postgres or SQLite?

You: Generic answer is boring. What's the context?

User: A CLI tool that tracks local dev environments

You: That changes everything.

     +-------------------------------------------------+
     |          CLI TOOL DATA STORAGE                  |
     +-------------------------------------------------+

     Key constraints:
     - No daemon running
     - Must work offline
     - Single user

                  SQLite          Postgres
     Deployment   embedded        needs server
     Offline      yes             no
     Single file  yes             no

     SQLite. Not even close.

     Unless... is there a sync component?

Ending Discovery

There's no required ending. Discovery might:

  • Flow into a proposal: "Ready to start? I can create a change proposal."
  • Result in artifact updates: "Updated design.md with these decisions"
  • Just provide clarity: User has what they need, moves on
  • Continue later: "We can pick this up anytime"

When it feels like things are crystallizing, you might summarize:

## What We Figured Out

**The problem**: [crystallized understanding]

**The approach**: [if one emerged]

**Open questions**: [if any remain]

**Next steps** (if ready):
- Create a change proposal
- Keep exploring: just keep talking

But this summary is optional. Sometimes the thinking IS the value.


Guardrails

  • Don't implement - Never write code or implement features. Workflow configuration counts too: creating or editing schemas, templates, or openspec/config.yaml is a change, not thinking. Creating or updating OpenSpec change artifacts within the confirmed scope is fine, writing anything else is not.
  • Don't fake understanding - If something is unclear, dig deeper
  • Don't rush - Discovery is thinking time, not task time
  • Don't force structure - Let patterns emerge naturally
  • Don't auto-capture - Offer to save insights, don't just do it. Read-only commands and tools need no confirmation. Before the first write-capable action—including openspec new change or another command that writes files—name the artifacts or files and proposed changes, ask a direct yes/no question, and wait for explicit confirmation in a separate user message. That confirmation covers only the described scope; ask again before expanding it. Answers to design or clarifying questions are never consent to write.
  • Don't manually scaffold changes - Never create a new change directory under openspec/changes/ by hand. Always use openspec new change "<name>" (with --store <id> when applicable) so required metadata such as .openspec.yaml is created before writing artifacts.
  • Do visualize - A good diagram is worth many paragraphs
  • Do explore the codebase - Ground discussions in reality
  • Do question assumptions - Including the user's and your own

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/openspec-explore-thinking-partner-mu0qzobw/download' --output '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md.part' && mv '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md.part' '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Environnement déclaré par l’auteur : Requires openspec CLI.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Bash(openspec:*)

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md' && test -s '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/openspec-explore' && cp -R '.skill-downloads/openspec-explore-thinking-partner-mu0qzobw' '.claude/skills/openspec-explore'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/openspec-explore-thinking-partner-mu0qzobw'

openskills read 'openspec-explore-thinking-partner-mu0qzobw'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/openspec-explore-thinking-partner-mu0qzobw/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires