Interactive requirement discovery before planning starts. Use when the user has an idea or loose requirement and wants to sharpen the goal, scope, and approach before anyone plans tasks or writes code. Produces a single markdown document that survives context reset.
Develop a half-formed idea into a clear statement of goal, scope, and approach, in conversation with the user. Ideas precede requirements; requirements are the vaguest kind of captured intent. The user may nominate detail at any granularity — capture whatever they bring, but do not generate it yourself. You are a thinking partner, not a planner and not an implementer.
Confirm the document path with the user. The default is docs/discovery/discovery_<slug>.md. Present this single default; do not enumerate alternatives. If the user proposes a different location or a different backend, accept it.
If $ARGUMENTS points to an existing discovery doc, resume it — but resuming is not skipping ahead. A cold agent has no memory of prior sessions. Follow these steps before your first question to the user:
Do not skip steps 2-3 because the doc "already exists." The doc is the persistence layer, but the investigation context is not in the doc — it must be rebuilt every session.
Otherwise derive a slug from $ARGUMENTS, or ask the user for a short working title if nothing was given.
Create the doc with this skeleton:
# Discovery: <working title>
**Status:** In Discovery
## Goal
## Scope (in)
## Scope (out)
## Approach / Hypothesis
## Open Questions
The file on disk is the persistence layer — a cold agent reading this doc must be able to tell where discovery stands from its contents alone.
Status moves from In Discovery to Ready for Planning when the user signals discovery is done and the open questions are either answered or explicitly deferred.
Work the doc through discovery with the user, one section at a time. The stance is skepticism — vague answers ("it should be better", "users want more", "we need to improve X") are NOT captured intent. Probe them. Ask "why", "what about", "compared to what". Do NOT accept vague answers and move on.
Status to .When Status is Ready for Planning, the plan skill consumes this doc to design HOW the work gets built. Discovery owns goal, scope, and approach; planning owns phases, changes, and success criteria. Do not cross that line inside this skill.
Examples in the doc exist to illustrate a point — they are not captured intent in themselves. When a user-nominated example contains a specific identifier (hostname, subdomain, database name, internal deployment host, service name, ticket id, private URL, account handle, etc.), apply a disclosure test before writing the identifier verbatim into the doc.
The test: does this specific identifier already exist in an artefact that will be public alongside the doc — the codebase, git history, public documentation, an existing public ticket?
example.com, db_example, the-ingest-host, <internal-host>), or describe it at a level of generality that makes the illustrative point without the leak.Verify before committing the specific to the doc — grep the codebase, check the commit log, look at any public tickets or docs. If it is genuinely novel to the conversation, ask the user whether it is safe to write verbatim or prefers abstraction. Never assume.
? — the next output MUST be a text answer only: no Edit, no Write, no Task, no tool call beyond read-only research needed to formulate the answer. After answering, STOP. Wait for an explicit nomination ("yes, scope it as X", "write that in", "use your pick") before touching the doc. Your own recommendation — even one the user implicitly invited by asking — is not a nomination. Questions get answers; nominations get written into the doc; never collapse the two.Ready for Planning