research

Installation
SKILL.md

Research

Deeply understand a problem, its context, and its constraints before thinking about solutions. The output is a structured RESEARCH.md that becomes the primary input for create-prd and create-technical-design.

Rule: Do not propose solutions. Do not sketch architectures. Do not evaluate options. This phase is about understanding — not deciding.

Routing

  • Turn research into requirements → /create-prd
  • Turn research into architecture → /create-technical-design
  • Propose and decide between options → /create-rfc

Process

Step 1 — Intake Interview

Do not read any code or fetch any URLs yet.

Use AskUserQuestion to gather what the user already knows about the problem space. Capture intent from what they have already shared — only ask for what is genuinely missing. Cover:

  • What problem are you trying to solve? Describe it from the perspective of the person experiencing it.
  • Who is affected? Be specific about roles, contexts, and frequency.
  • What does the current state look like? What workarounds exist today?
  • What does a good outcome look like, without prescribing a solution?
  • What constraints exist — technical, legal, operational, time, team?
  • What is already known or decided? What is still open?
  • Are there existing solutions, prior art, or competitor approaches worth studying?
  • What would make this research complete? What questions must be answered before spec work can begin?

Context-gathering rules:

  • Ask one focused topic at a time using AskUserQuestion. You may group tightly related sub-questions, but never ask about multiple unrelated topics in a single message.
  • When a response introduces a new constraint, stakeholder, edge case, or dependency, follow that branch to resolution before moving on.
  • Record anything the user explicitly flags as unknown as an open question — do not invent answers.

Step 2 — Codebase Scan

Scan the existing codebase to surface technical context relevant to the problem. Focus only on what bears on the problem; do not do a broad survey.

Look for:

  • Existing modules, services, or components that relate to the problem domain
  • Established patterns: file structure, naming conventions, data flow, testing approach
  • Prior decisions recorded in .specs/ (ADRs, RFCs, PRDs, technical designs) that overlap with this problem
  • Technical debt, known limitations, or constraints visible in the code or comments
  • Integration boundaries: external services, APIs, or data stores that are in play

Record what you find as observations, not conclusions. Do not infer solutions.

Step 3 — External Research

Using the references and topics surfaced in Steps 1 and 2, fetch and read relevant external sources. This may include:

  • Documentation for technologies, APIs, or standards involved
  • Prior art: open-source solutions, published approaches, or industry patterns
  • Competitor or analogous product approaches mentioned by the user
  • Standards, compliance requirements, or legal references

Rules:

  • Only fetch URLs the user provided or URLs surfaced from codebase findings. Do not guess or invent URLs.
  • Summarize what is relevant. Do not reproduce large blocks of external content verbatim.
  • Record the source URL and the key finding from each reference.

Step 4 — Synthesize and Draft

Compile everything gathered across Steps 1–3 into a RESEARCH.md document using the template below.

File location: .specs/[feature-slug]/RESEARCH.md — derive the slug from the feature or problem name (lowercase, hyphen-separated). Create the directory if it does not exist.

Before drafting, verify:

  • Every section can be written from observed facts — not invented conclusions
  • Open questions are recorded honestly, not papered over
  • No solution or architecture is proposed anywhere in the document

Step 5 — Recommend Next Steps

After saving the document, present the user with the recommended next step based on what the research revealed:

Research complete: .specs/[feature-slug]/RESEARCH.md

Suggested next steps:
- Run /create-prd to turn this research into a product requirements document
- Run /create-technical-design if the problem is primarily technical and requirements are clear
- Run /create-rfc if a significant decision needs alignment before moving forward

Template

# Research — [Feature or Problem Name]

| Field   | Value       |
|---------|-------------|
| Author  | @Name       |
| Date    | YYYY-MM-DD  |
| Status  | Draft / Final |

## Problem Framing

What is the problem, stated from the perspective of the person experiencing it? Describe the gap between the current state and the desired state. Do not propose a solution.

**Current state**: [What exists today and how it falls short]

**Desired state**: [What a good outcome looks like, without prescribing a solution]

**Impact**: [Who is affected, how frequently, and what the cost of the status quo is]

## Stakeholders & Users

| Stakeholder / User | Role or Context | Primary Need or Pain |
|--------------------|-----------------|----------------------|
| [Name or type] | [When/where they encounter this] | [What they need or what hurts] |

Add one row per distinct stakeholder or user type.

## Constraints

Hard limits that any solution must respect. Non-negotiable.

### Technical
- [Constraint]: [explanation]

### Legal / Compliance
- [Constraint]: [explanation]

### Operational
- [Constraint]: [explanation]

### Time / Team
- [Constraint]: [explanation]

Write "None identified." for any category with no constraints.

## Existing Solutions & Prior Art

What has already been tried, built, or considered? What can be learned from analogous solutions?

| Solution / Approach | Source | Key Finding | Applicability |
|---------------------|--------|-------------|---------------|
| [Name or description] | [Internal / URL] | [What it does or reveals] | [High / Medium / Low — and why] |

Write "None identified." if no relevant prior art was found.

## Codebase Findings

Observations from scanning the existing codebase that are relevant to this problem. Observations only — no conclusions about what to build.

- **[Module / file / pattern]**: [What it does and why it is relevant]

Write "Not applicable." if there is no existing codebase relevant to this problem.

## External References

Sources consulted during research.

| Reference | URL | Key Finding |
|-----------|-----|-------------|
| [Title or description] | [URL] | [What it contributes to the understanding of this problem] |

Write "None." if no external sources were consulted.

## Open Questions

Questions that must be answered before or during spec and design work. These are known unknowns — record them honestly.

| Question | Why It Matters | Owner | Status |
|----------|---------------|-------|--------|
| [Question] | [Impact if unresolved] | [Person or team] | Open / In Progress / Resolved |

Write "None." if all questions have been resolved.

## Recommended Next Steps

What should happen after this research is complete?

- [Step 1 with skill reference if applicable]
- [Step 2]

Validation Checklist

  • Problem Framing states the problem from the user's perspective — no solutions proposed
  • Desired state describes an outcome, not an implementation
  • Stakeholders & Users has one row per distinct persona
  • All four Constraints categories are addressed (or explicitly marked "None identified.")
  • Existing Solutions includes internal and external prior art
  • Codebase Findings lists specific modules or patterns, not vague generalities
  • External References includes source URL and key finding for each entry
  • Open Questions records every unresolved question honestly
  • No architecture, technology choice, or solution is proposed anywhere in the document
Related skills
Installs
5
GitHub Stars
6
First Seen
Apr 17, 2026