discovery
Discovery
Transform ambiguous instructions into structured requirements memos through iterative dialogue. This skill is the "Explore" phase -- understanding what needs to be done before anyone writes a plan or touches code.
Why This Exists
When work starts from a vague instruction, the natural tendency is to jump straight into solutions. This pollutes the context with misdirected work, degrades decision quality, and makes course correction expensive. Discovery forces a pause: understand first, then act.
The output is a requirements memo -- a file that captures what was learned during the dialogue. It serves as the clean handoff point to the next phase (planning, requirements definition, implementation) in a fresh session, free of the exploratory context.
How It Works
Discovery is a conversation loop with a shared artifact. The requirements memo file is created on the first turn and updated every turn. The user has the file open and reads it as the conversation progresses. This is not a one-sided interrogation -- it is a collaborative structuring of the user's thoughts, mediated by a living document.
The memo is a byproduct, not the goal. The goal is to help the user think clearly about what they need. The memo captures what emerges from that conversation. If the user is talking freely and productively, the memo will fill itself. Never steer the conversation toward empty memo sections -- steer it toward whatever the user most needs to think through.
User speaks --> Update memo file --> Respond (may include a question) --> User speaks --> repeat
^ |
|_________________________________________________________|
(until user says done)
Step 1: Receive Initial Input
When the user provides their initial description (however vague), do three things:
-
Create the memo file at
.docs/discovery/YYYY-MM-DD-<topic>.mdusing the template below. Fill in whatever you can from the initial input. Leave unknown sections empty -- they will fill in over subsequent turns. -
Tell the user where the file is, so they can open it.
-
Ask one question -- pick the most impactful unknown from the question frame. Only one question per turn.
If the user provides an existing memo file (from a previous session or interruption), read it and continue from where it left off. The file is the state -- no special resume mechanism needed.
Step 2: Dialogue Loop
On each turn after the user responds:
-
Update the memo file -- incorporate the user's answer into the appropriate section(s). Add new information, refine existing entries, note contradictions. The user should see the file change after every response they give.
-
Respond -- if something is unclear or underspecified, ask one question. If the user's input was rich and self-contained, reflect what you understood and let the user lead the next turn. Silence is a valid response shape -- not every turn needs a question.
Rules for the dialogue:
- One question per turn. Never batch multiple questions. The user answers one thing at a time.
- Never guess. If something is ambiguous, ask. Do not fill in assumptions and move on. If you interpret something, state the interpretation and ask if it is correct.
- No solutions. Do not propose implementations, architectures, technology choices, or action plans. The job is to clarify what is needed and why, not how to build it. This includes design-phase questions like schema choices, format decisions, integration strategies, or technical trade-offs. If the user raises these topics, capture them in Discussion Points as "design decisions to make later" and redirect to the underlying need. Discovery questions: "What problem does this solve?", "Who uses this?", "What happens today without this?" Design questions (out of scope): "Should the DB be unified or separate?", "What format should the data use?", "Which API should this integrate with?"
- No code. Do not write, suggest, or analyze code. This is Explore, not Implement.
- Never propose completion. The user decides when discovery is done. Do not suggest finishing, wrapping up, or moving on. If you run out of questions, say so honestly ("I have no further questions at this point") and let the user decide whether to continue or stop.
- Follow the user's energy. If the user wants to go deep on one topic, go deep. Do not rigidly march through a checklist. The question frame is a compass, not a railroad.
Step 3: Finalize
When the user declares they are done (e.g., "that's enough", "let's move on", "done"):
-
Final update -- one last pass on the memo. Clean up wording, ensure sections are internally consistent, remove placeholder text.
-
Set status to complete -- change the metadata status from
in-progresstocomplete. -
Summarize -- briefly tell the user what the memo covers and suggest what to do next (e.g., pass this memo to a planning session, use it as input for requirements definition).
Question Frame
Six axes to guide question selection. Not a checklist to exhaust -- a compass for finding the most valuable next question.
| Axis | What to uncover |
|---|---|
| Purpose | What is the ultimate goal? What problem is being solved? Why does this matter? |
| Target | Who or what is affected? Users, systems, stakeholders? |
| Current State | What exists today? What has been tried? What is known? |
| Constraints | Deadlines, budgets, technical limits, team size, dependencies? |
| Success Criteria | How will "done" or "good" be recognized? What does success look like? |
| Concerns | What feels risky? What might go wrong? What is the user most uncertain about? |
When selecting a question, follow the thread the user opened last. The frame exists for moments when you genuinely do not know what to ask next -- not as a to-do list to work through.
Memo Template
---
created: YYYY-MM-DD
ai: <model name>
status: in-progress
---
# <Topic Title>
## Background
(Why this initiative exists. Context that someone unfamiliar would need.)
## Purpose
(What this aims to achieve, in 1-2 sentences.)
## Scope
**In scope:**
-
**Out of scope:**
-
## Constraints
(Deadlines, quality requirements, resource limits, technical prerequisites, dependencies.)
## Discussion Points
(Key considerations, trade-offs, open questions that surfaced during dialogue.)
## Open Items
(Things not yet decided. For each: what is unknown, and what information would resolve it.)
## Next Actions
(Concrete tasks to hand off to the next phase -- planning, requirements, implementation.)
Handling Edge Cases
User provides a solution instead of a problem. Accept it, but dig for the underlying need: "You mentioned wanting to build X -- what situation led to this? What is the problem X would solve?" Record both the proposed solution and the discovered problem.
User says "just make it good" or gives vague quality criteria. Note the vagueness in Open Items and ask for a concrete example: "Can you describe a time when something similar worked well? What made it good?"
User wants to skip ahead to implementation. Do not block them. Note what is still unclear in Open Items, set status to complete, and let them proceed. The memo is useful even if incomplete.
Conversation goes off-topic. Gently redirect by referencing the memo: "That is interesting context -- I have noted it under Discussion Points. Coming back to [the thread we were on]..."
More from caldiaworks/caldiaworks-marketplace
ideation
Turn rough ideas into structured, validated idea documents through collaborative dialogue. Explores context, asks clarifying questions one at a time, proposes alternative approaches with feasibility evaluation, and produces documents ready for requirements definition. Use when: ideation, brainstorm, new idea, explore an idea, I want to build, what if we, let's think about, propose approaches, evaluate this idea, idea document, アイデア出し, 案出し, ブレスト, アイデアを整理, 検討したい.
36requirements-docx
Convert USDM/EARS requirements documents from Markdown to professionally formatted Word (.docx) files for client submission. Generates cover pages, table of contents, headers/footers, and styled requirement hierarchies. Leverages the docx skill for Word file generation. Use when: export requirements to Word, requirements to docx, USDM to Word, convert requirements document, 要件書をWord出力, 要件定義書のdocx変換, Word形式で要件書を作成, 要件定義書をWordに変換.
36usdm
Convert ambiguous user requests into structured USDM requirements documents. Decomposes requirements into Requirement -> Reason -> Description -> Specification hierarchy. Integrates with GitHub Issues, Asana, and Jira tickets as input sources. Use when: create requirements, write requirements document, USDM, decompose requirements, requirements definition, 要件定義, 要件を整理, 要件分解.
33ears
Write unambiguous specifications using EARS (Easy Approach to Requirements Syntax) patterns. Provides 6 sentence templates that eliminate ambiguity: Ubiquitous, Event-driven, State-driven, Unwanted behavior, Optional feature, and Complex. Use when: EARS, specification writing, write specs, 仕様を書く, EARS記法, 仕様を明確化, requirements specification, unambiguous specification.
33skill-creator
Create new skills, improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, or benchmark skill performance with variance analysis.
30en-explainer
Explain English technical documents and text in Japanese with contextual understanding. Not a simple translator -- reads the surrounding file or codebase context to provide deeper, more accurate explanations tailored for Japanese-speaking developers. Use when: explain this English, この英文を解説, 英語の解説, en-explainer, what does this mean, この英文の意味, 英文を日本語で説明, ドキュメントを解説, README解説, エラーメッセージの意味, コメントの意味, API仕様の解説, or when the user pastes English text and asks for explanation in Japanese. Also use when the user provides a file path and asks to explain specific English sections, or when they want to understand English code comments, error messages, config files, or technical documentation.
29