research-questions
Generate a research checklist from a use case. Reads the UC, its FRs, NFRs, and BRs, then produces questions grouped by requirement. For technical questions, provides options with tradeoffs. Used at t
SKILL.md.claude/skills/research-questions/SKILL.md
GitHubResearch questions
Generate the research checklist for a use case build.
Input
The PO names a UC or a build scope (e.g., "UC-001"). Use the active version from
dev/versions/README.md. Read these files:
- The version spec UC file:
dev/versions/vN/spec/02-use-cases/UC-XXX.md - Every in-scope FR in
dev/versions/vN/spec/referenced in the UC's step table and alternative flows. - Every NFR and BR referenced by those FRs or by the UC.
- Existing research in
dev/research/— to avoid asking already-answered questions. - Existing decisions in
dev/decisions/— to avoid asking already-decided questions.
Process
Step 1 — Build the flow model
Before generating any questions, trace the runtime flow end-to-end:
- Read the UC's step table (S1, S2, ...) and alternative flows (A1, A2, ...).
- For each step, think through the concrete technical operations that happen at
runtime. Go from trigger to completion. Example for "system fetches chapter":
- Browser sends URL to backend API
- Backend resolves DNS, checks for SSRF
- Backend sends HTTP GET to target site
- Target site returns HTML (or blocks the request)
- Backend parses HTML, locates chapter content
- Backend extracts text, strips ads/navigation
- Backend returns structured text to frontend
- Write each sub-step as a node in the flow. This is the flow model.
- For alternative flows, branch from the main flow at the decision point.
The flow model goes into the checklist as a visible section so the PO can see the full picture before reading individual questions.
Step 2 — Derive questions from the flow
Walk through the flow model step by step. At each node, ask:
"Do we know HOW to do this?" — if not, that's a research question.
"Are there CHOICES to make here?" — if yes, that's a decision question.
"Can this FAIL, and do we know how to handle it?" — if not, that's a resilience question.
Check if existing research already answers the question — if yes, reference it and mark as
answeredordecided.For technology choices, provide an options table:
Option Description Fits requirements Tradeoffs Runtime questions. When a flow node runs through the runtime (OpenCode: sessions, tool calls, model calls, streaming, permissions), ask how the runtime handles it and where DeckAgent hooks in — unless
dev/research/already answers it. This research is mandatory for builds that touch the runtime (WORKFLOW.md "Phase 1").LLM boundary questions. When it is unclear whether a node should call the model or use prebuilt, deterministic parts (themes, layouts, animations, renderers), ask it as a decision question. The default is deterministic code.
Tag each question with:
- Flow step: which node in the flow model it comes from.
- Why it matters: which FR/AC depends on the answer.
Output
Create dev/versions/vN/builds/UC-XXX-label/research-checklist.md from the template at
dev/templates/research-checklist.md.
The checklist has two main sections:
Flow model — the step-by-step runtime trace, in prose. Each node shows what happens technically. Questions are annotated inline so the PO can see where each one comes from.
Questions table — grouped by FR/NFR. Each question has:
- A unique ID:
RQ-N(scoped to this UC) - The question text
- Flow step reference (e.g., "S2.3 — Parse HTML")
- Why it matters (which FR/AC)
- Status:
open,answered, ordecided - Options table (for technical choices)
- A unique ID:
Step 3 — Generate sequence diagrams for tickets
When creating GitHub Issues for research questions (using research-ticket template),
generate a Mermaid sequence diagram for each ticket that:
- Shows the full UC flow as a sequence diagram with the actual participants (User, Frontend, Backend, External services).
- Highlights the step(s) this question relates to using
rect rgb(255, 230, 150)with anotepointing to the RQ number. - Keeps the unhighlighted steps visible but simple — the reader sees the full context but their eye goes to the highlighted area.
- Uses the same diagram across related questions, just moving the highlight.
The diagram is the first thing the reader sees — before the question itself.
Create deliverable files for each question:
- Research answer: add a section
## UC-XXX/RQ-N: Titleto the matching topic file indev/research/. Research files are topic-based containers — one file per topic, questions from multiple UCs accumulate in the same file. - Decision record: create
dev/decisions/DEC-NNN-topic.mdfrom the template atdev/decisions/_TEMPLATE.md, with the options table pre-filled only. LeaveChoiceandWhyempty — the PO writes those after researching (see WORKFLOW.md "Roles").
Include a deliverable map table in the checklist linking each RQ to its file.
Also seed the traceability matrix at dev/versions/vN/builds/UC-XXX-label/traceability-matrix.md from
dev/templates/traceability-matrix.md — one row per in-scope FR/AC and NFR, with the
Tier column seeded from each AC's Check field (deterministic → ci, evaluation →
eval) — so the spine exists from the start of the build.
Follow WORKFLOW.md "Document rules": front-load the checklist's ## At a glance block,
keep the template's section order, and reference matrix rows rather than restating
requirement text.
Linking convention
All cross-references must be clickable Markdown links (see WORKFLOW.md "Linking convention"). At the start, derive the repo base URL:
git remote get-url origin
# https://github.com/{owner}/{repo}.git → base = https://github.com/{owner}/{repo}
Apply to every output:
- Research checklist: Ticket column uses
[#N]({base}/issues/N), Deliverable map File column uses[dev/research/topic.md]({base}/blob/main/dev/research/topic.md). - Research files (
dev/research/):**Ticket:** [#N]({base}/issues/N)and**Blocked by:** [#N]({base}/issues/N). - Decision files (
dev/decisions/):ticket [#N]({base}/issues/N).
Rules
- The agent supplies questions and options tables only. It does not answer the
research questions and does not fill the
ChoiceorWhyof a decision record — the PO does that (see WORKFLOW.md "Roles"). This is the one phase where the human keeps the thinking. - Do not generate questions about product requirements — those are settled in the spec.
- Do not generate questions answerable by reading the spec — read it first.
- Do not generate questions about implementation details that can be decided during coding (variable names, internal function splits). Focus on decisions that affect the architecture, the test strategy, or the ticket structure.
- If a question spans multiple FRs, list it once under the most relevant FR and cross-reference.
- Existing answered questions in
dev/research/are referenced, not duplicated.