La interfaz está localizada; las descripciones y documentos de las Skills se traducen automáticamente con IA a su idioma. El código, los comandos, rutas y términos técnicos se mantienen en el original, y prevalece el documento del autor.
Explorar Skills
Productividad · SKILL.md

discover

discover

Trigger: vague/unfocused request or solution-without-problem. Also invoked via /discover command. Reframes goal before acting.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentación de la Skill

GitHub

name: discover description: "Trigger: vague/unfocused request or solution-without-problem. Also invoked via /discover command. Reframes goal before acting." modes:

  • auto # auto-triggered on vague/unfocused requests
  • /discover # explicit invocation

Discover — Problem Discovery

You are starting the Discover phase. Your job is to help the user articulate what problem they are actually trying to solve, before jumping to solutions or specs.

CRITICAL: Run HARNESS_DIR=$(epic-harness path) first. NEVER use .harness/ in the project directory.

Iron Law

NO SPEC WITHOUT A PROBLEM STATEMENT. Building the wrong thing well is worse than building the right thing poorly.

Process

Step 0: Prerequisites

  • Resolve harness directory: HARNESS_DIR=$(epic-harness path)
  • Read any existing context (CLAUDE.md, README, codebase structure)
  • Check for existing problem statements in $HARNESS_DIR/specs/PROBLEM-*.md
  • Call mem_recall with a hint describing the current topic area
  • Check for past decision or pattern nodes related to this domain
  • If prior problem exploration exists, reference it: "We discussed something similar before..."
  • If existing PROBLEM files are found, review them — the user may be continuing prior work

Why: Past context prevents re-exploring ground already covered. The knowledge graph connects today's vague request to yesterday's decisions.

Step 1: Listen

Read the user's request carefully. Repeat it back in your own words and ask:

  • "Is that the core of it, or is there more?"

Categorize the request:

CategorySignalExample
Solution without problemUser names a technology or approach"Add Redis caching"
Feature without contextUser describes output, not why"Build a dashboard"
Systemic complaintBroad negative without specifics"Everything is slow"
Vague ambitionGoal with no boundaries"Make it better"
Clear problemObservable gap stated"Login fails for 5% of users"

Why: Categorization determines the probing technique. Misreading the category leads to wrong questions.

Step 2: Probe

Select the technique based on the category identified in Step 1. Ask max 3 questions per round, run max 3 rounds. If the user can't answer or says "I'm not sure", proceed to Frame with what you have.

Technique Selection

User signalTechniqueCore question
Names a solution ("Add Redis")5 Whys"What's happening that makes you need this?" → repeat
Describes a feature without whyJTBD"What situation makes you need this? What would 'done' look like?"
"Everything is broken"Fishbone"Which area: People / Process / Technology / Data / Environment?"
Vague or contradictorySocratic"What specifically do you mean by 'X'?"
Has a vision but no pathDone looks like"When this works perfectly, what do you see?"
Uncertain assumptionsAssumption map"What must be true for this to work?"

Detailed Technique Reference

5 Whys — when the user presents a solution without a problem:

User: "Add Redis caching to the API."
→ "What's happening that makes you want caching?"
→ "Why is that slow?"
→ "Why does that query take long?"

Stop when you reach an actionable root cause. Max 5 levels.

JTBD (Jobs To Be Done) — when the user describes a feature without context:

User: "Build a dashboard."
→ "What situation makes you need this?"
→ "What would you do with the information right now?"
→ "What would have to be true for you to say 'this solved it'?"

Extract job stories: "When [situation], I want [motivation], so I can [outcome]."

Fishbone — when the user has a systemic complaint:

User: "Everything is broken."
→ Walk through categories: People, Process, Technology, Data, Environment
→ "Which of these areas is the biggest contributor?"
→ "Is this on all branches or specific ones?"

Map causes across categories, then narrow to the top 1-2.

Socratic Questioning — when the request is vague or contradictory:

User: "Make it more secure." / "I want it to be faster."
→ Clarification: "What specifically do you mean by 'secure' / 'fast'?"
→ Probing assumptions: "What makes you believe this is the issue?"
→ Implications: "If we change X, what happens to Y?"
→ Alternatives: "What other approaches did you consider?"

"What Does Done Look Like?" — when the user has a vision but no path:

→ "When this is shipped and working perfectly, what specifically do you see?"
→ "What would I click, what output would appear, what would the logs show?"

Work backwards from the concrete end state.

Assumption Mapping — when the request depends on uncertain premises:

→ "Let me check what we're assuming must be true for this to work."
→ List 4-5 assumptions, ask which are uncertain.

Shaky assumptions become prerequisites.

Each round should narrow the space. If after 2 rounds you have enough to frame, don't force a third.

Why: The right technique extracts the real problem in 2-3 rounds instead of 10 random questions. Technique mismatch wastes rounds and frustrates the user.

Step 3: Frame

Synthesize everything into a structured problem statement:

[Who] experiences [observable problem] when [trigger condition], resulting in [quantified impact]. The desired state is [measurable outcome].

Capture supporting context:

  • Root cause (from 5 Whys) or Job story (from JTBD)
  • Constraints: timeline, technology, scale, compatibility
  • Assumptions: what must be true, which are uncertain
  • Out of scope: what this problem explicitly does NOT cover

Show the frame to the user and ask: "Does this capture the problem accurately?"

Why: A written problem statement is testable. If you can't write one, you haven't discovered the problem yet.

Step 4: Save

Once confirmed, save the problem statement:

mkdir -p "$HARNESS_DIR/specs"

Write to $HARNESS_DIR/specs/PROBLEM-{timestamp}.md (see Output Format below).

If the user realizes there are multiple problems during probing, address them one at a time. Each problem gets its own file.

Step 5: Transition

Tell the user: "Problem defined. Run /spec to turn this into a buildable specification."

If the user wants to explore further (e.g., they realize there are actually 3 problems), loop back to Step 2 with the new angle.

Why: The transition from problem to spec is natural but explicit. The user owns the decision to move forward.

When to Trigger

Auto-trigger (no command needed):

  • User's request lacks a clear problem or goal
  • User names a technology/solution without explaining why
  • User describes symptoms without identifying the underlying issue
  • User says "I don't know where to start" or equivalent
  • Request is so broad it could mean 3+ different things

Explicit invocation (/discover):

  • User wants to formally start the discover phase for a new project or feature
  • User wants to re-explore a problem before re-specifying
  • Continuation from a previous discovery session

Anti-Rationalization

ExcuseRebuttalWhat to do instead
"Let's just start building and figure it out"Building without a problem is expensive guessing.Spend 5 minutes framing the problem. It saves hours of rework.
"The problem is obvious"If it were obvious, you'd have a spec, not a vague request.Write the problem statement. If it's obvious, it takes 30 seconds.
"I don't have time for questions"You don't have time to build the wrong thing.Run 2 focused rounds, not 10 open-ended ones.
"I already told you the problem"You told me a solution. The problem is why you need that solution.Ask one "why" question. If the answer reveals the problem, proceed.
"Can't you just figure it out from the code?"Code shows what exists, not what's missing or why it hurts.Combine code exploration with user context for the full picture.
"Let me just show you the bug"A bug is a symptom, not a problem. Fixing symptoms is whack-a-mole.Trace the bug to its root cause before jumping to a fix.

Evidence Required

Before claiming the problem is defined, show ALL of these:

  • Problem statement written in the structured format (Who / Problem / When / Impact / Desired state)
  • Root cause or job story identified
  • At least one measurable/observable criterion for success
  • User confirmed the frame is accurate
  • Scope boundaries stated (what's in and out)

"I think I understand" without a written problem statement = guessing.

Red Flags

  • Jumping to solutions or code during the discovery conversation
  • Asking more than 3 questions per round (overwhelming the user)
  • Running more than 3 rounds without attempting a frame (analysis paralysis)
  • Ignoring when the user says "I'm not sure" — that IS information
  • Producing a problem statement the user didn't confirm
  • Confusing symptoms with root causes
  • Framing the problem so broadly it could mean anything ("improve the system")
  • Skipping discovery for non-trivial, ambiguous work

Output Format

Save to $HARNESS_DIR/specs/PROBLEM-{timestamp}.md:

---
status: framed
created: {ISO-8601 timestamp}
context: {one-line summary}
---

# Problem: {title}

## Problem Statement
{Who} experiences {observable problem} when {trigger condition}, resulting in {quantified impact}. The desired state is {measurable outcome}.

## Root Cause / Job Story
{5 Whys chain or JTBD job story}

## Constraints
- Timeline: {when is this needed}
- Technology: {stack constraints}
- Scale: {expected load/users}
- Compatibility: {backward-compat requirements}

## Assumptions
- {assumption} — {certain / uncertain}
- {assumption} — {certain / uncertain}

## Out of Scope
- {what this problem explicitly does NOT cover}
Skills guardadas