kramme-cc-workflow/skills/kramme:discovery:interview/SKILL.md
Conduct an in-depth interview about a topic/proposal to uncover requirements, priorities, and non-goals, then create a comprehensive plan. Pass --ideate for divergent framing, --decision-tree / depth-first language to resolve tightly coupled decisions one question at a time, or --research to launch topic-specific research agents before the interview.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:discovery:interviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Conduct a structured, in-depth interview about the presented topic, files, proposal, or feature. Use the AskUserQuestion tool throughout to gather decisions and uncover requirements. Conclude by writing a comprehensive plan.
When not to use: for standalone discovery that produces a one-off plan file, use this skill. For discovery inside a tracked SIW (Structured Implementation Workflow) initiative — where the output feeds siw/ planning documents — use kramme:siw:discovery instead.
--decision-tree, --research, or depth-first trigger phrases; read UBIQUITOUS_LANGUAGE.md and STRATEGY.md if present--ideate is set, treat that as an explicit request to run Phase 0 and proceed directly into the divergent pass.--research is set or the topic names external libraries, frameworks, or cross-cutting concerns, launch parallel research agents tailored to the confirmed topic classification, then run a brief check-in before the interview.Use these markers in user-facing output to keep downstream tooling parseable:
CONFUSION — when the working hypothesis doesn't fit the user's framing and you need to flag it before continuing.MISSING REQUIREMENT — when a question cannot be answered from the provided artifact and needs user input.UNVERIFIED — when you assert something you haven't confirmed (e.g., a feasibility guess during Phase 0 convergence).STALE — when repo-level product strategy exists but its last_updated value is old enough to deserve caution.MISSING PRODUCT CONTEXT — when strategy grounding would materially help but no STRATEGY.md exists.FRAMING — the label applied when Phase 0 converges on the concrete problem statement that will feed the interview.PLAN — the label applied to the synthesized plan document at hand-off.Parse $ARGUMENTS as shell-style arguments so quoted paths stay intact.
--ideate is present, set force_ideate=true and remove from argument list.--decision-tree is present, set decision_tree_requested=true and remove from argument list.--research is present, set research_requested=true and remove from argument list.decision_tree_requested=true without removing meaningful topic words unless the phrase is only an instruction.If UBIQUITOUS_LANGUAGE.md exists at the project root, read it before framing and use its canonical terms throughout the interview and plan. If the user uses a term that conflicts with the glossary, ask one targeted question to resolve the conflict. If the file does not exist, proceed silently.
If STRATEGY.md exists at the project root, read it before framing and extract:
Store this as STRATEGY_CONTEXT. If the file has last_updated frontmatter older than 90 days, mark it STALE: in the initial framing and treat it as context to verify, not a hard constraint. If no STRATEGY.md exists, proceed silently for narrow tasks. For repo-level product discovery or broad "what should we build" work, emit MISSING PRODUCT CONTEXT: once and suggest /kramme:product:strategy as an optional precursor without blocking the interview.
Use Decision-Tree mode when decision_tree_requested=true; otherwise use the default topic-classified coverage flow. Read references/decision-tree-mode.md only when Decision-Tree mode is active.
Before starting the interview, write down a working hypothesis for:
STRATEGY_CONTEXT, when presentTreat these as assumptions to validate, not excuses to ask generic setup questions.
Frame the underlying problem, not the proposed solution. When the input includes a proposed approach ("let's add X", "we should switch to Y"), separate the problem the proposal is meant to solve from the proposal itself. The proposal may be correct, but the framing — and any research in Phase R — must be about the problem so that alternatives stay visible.
If the topic conflicts with active tracks, target users, key metrics, or non-goals in STRATEGY_CONTEXT, state the conflict before asking interview questions. Surface it as context, not as a veto: the user may be intentionally changing direction.
If the hypothesis doesn't seem to match the user's framing, emit CONFUSION: and ask a clarifying question before continuing.
After drafting the working hypothesis, classify the topic into one of these categories:
| Type | Indicators | Focus Areas | | --- | --- | --- | | Software Feature | New functionality, UI changes, API additions | Architecture, data model, UX flows, integration | | Process/Workflow | Team processes, approval flows, automation | Steps, roles, triggers, exceptions, tooling | | Architecture Decision | Technology choice, pattern selection, migration | Options, tradeoffs, constraints, reversibility | | Documentation/Proposal | RFC, design doc, specification review | Gaps, clarity, feasibility, actionability |
Use AskUserQuestion to confirm the topic type if unclear.
Treat this classification as provisional whenever Phase 0 may still run. If Phase 0 changes the framing or turns a vague topic into a different kind of concrete ask, repeat Step 2 on the chosen framing before starting Step 3. The final topic type controls the interview dimensions, coverage labels, and template selection in Step 5.
Run Phase 0 only when one of the following is true:
--ideate in $ARGUMENTS.If the framing is concrete (e.g., "Add email-based 2FA to the login flow") and the user did not pass --ideate, skip Phase 0 and proceed to Step 3. If the user explicitly passed --ideate, treat that as an intentional request to explore alternatives first and run Phase 0 anyway.
When Phase 0 is triggered by auto-detection (not by --ideate), display a one-line notice and then pause for an explicit user choice before running it:
CONFUSION: The framing is broad. Running a short divergent pass (7 variation lenses, 3 stress-test axes) before the interview. Skip with "just interview me".
Immediately follow that notice with AskUserQuestion using two options:
Run divergent pass — continue with Phase 0Just interview me — skip Phase 0 and proceed with the current framingDo not start generating variations until the user has answered. If they pick "Just interview me" (or respond with equivalent free text), skip Phase 0 and proceed with the current framing.
Read references/variation-lenses.md and follow it to generate 5–8 candidate variations (4–7 lenses), converge with the three stress-test axes, and run the convergence protocol. When presenting the strongest variations via AskUserQuestion, reserve one option slot for None of these — let's iterate. and keep the total within AskUserQuestion's 2-4 option limit. Emit the FRAMING: marker on the chosen framing. If the user keeps rejecting candidates, fall back to the original framing and proceed.
Then feed the chosen framing into Step 2 and reclassify before Step 3. If the topic type changes, tell the user which type is now in force before you continue.
Run Phase R when either is true:
--research in $ARGUMENTS.If the framing is purely about priorities, ownership, or business context — answers only the user can give — skip Phase R. Research can't replace human input on those.
When Phase R is auto-triggered (not by --research), display a one-line notice and pause for an explicit choice via AskUserQuestion:
The framing names {library / framework / cross-cutting concern}. Running parallel research agents (codebase + docs) before the interview will let questions skip what's already answered. Skip with "just interview me".
Two options: Run research pre-pass or Just interview me. Do not launch agents until the user has answered.
Read references/research-agents.md for the per-classification agent prompt templates. Pick the agent set matching the topic type from Step 2:
Spawn them with the current host runtime's subagent mechanism when available. For codebase research, use an Explore/explorer-style agent; for docs or web research, use a research-capable agent if the host exposes one, otherwise perform that research inline in the main thread with the available docs and web tools. Each agent's prompt comes from the reference file.
Research the problem, not the proposal. If the input includes a proposed solution, every agent should investigate the underlying problem independently before evaluating the proposal.
Each agent must return: what it found, where it found it (file paths or URLs), and key snippets.
After agents return, summarize the key finding in 2-3 sentences and surface anything that:
Use AskUserQuestion to present a specific choice about how to proceed — not a generic "does this make sense?". Examples:
useDebouncedSearch doing 80% of this. Do you want to extend it, or build separately?"If the research surfaces nothing surprising, name that briefly and proceed. If it changes the framing or classification, repeat Step 2 before Step 3.
If an agent fails or returns no usable findings, do not block the interview: name which coverage area is therefore still user-answered (rather than research-answered) and continue. Never present a failed agent's absence as a confirmed finding.
Carry research findings forward as context for Step 3. Apply the existing Codebase-as-Answer-Source Rule more aggressively now: any question whose answer is in the research output should be presented as "Research found {finding} at {path}. Confirm or correct?" instead of asked open-ended.
Read references/interview-operations.md, then read references/question-dimensions.md before crafting the first interview round.
Use the reference's question philosophy, Codebase-as-answer-source rule, and topic-specific dimensions to ask questions that challenge assumptions, expose edge cases, reveal dependencies, quantify tradeoffs, force prioritization, separate decision ownership, and plan the learning loop.
Avoid obvious questions. If the artifact, workspace, provided files, or existing docs already answer a question, explore first, present the inferred answer with the source, and ask only for confirmation or correction. If a dimension requires information the artifact does not contain and the user has not provided, emit MISSING REQUIREMENT: before asking the user to fill the gap.
Use the default coverage rounds unless decision_tree_requested=true.
In Decision-Tree mode, read references/decision-tree-mode.md, identify the root decision for the topic type, map first-level dependencies, and resolve branches depth-first. Ask one question at a time by default; batch only routine independent sibling questions. When the active tree is resolved, return to coverage rounds for any remaining question dimensions that are independent of the decisions already settled.
Use references/interview-operations.md for round structure, adaptive follow-up behavior, the ADR-offer hook, progress tracking, and completion criteria. Ask 1-4 questions per round, synthesize answers before the next round, display coverage status by topic type, and stop when no major unknowns remain rather than mechanically chasing 100% coverage.
Suggest a filename based on the topic, e.g., user-auth-redesign-plan.md or deployment-process-plan.md. Ask user for preferred location. Before writing, check whether the target path already exists; if it does, confirm overwrite or pick a new name via AskUserQuestion rather than clobbering a prior plan silently.
Pick the template matching the final topic type in force after Step 2 and any Phase 0 or Phase R reclassification:
| Topic Type | Template File |
| ---------------------- | --------------------------------- |
| Software Feature | assets/template-feature.md |
| Process/Workflow | assets/template-process.md |
| Architecture Decision | assets/template-architecture.md |
| Documentation/Proposal | assets/template-doc-review.md |
Read the matching template, fill in the interview findings, and write the populated result to the user-chosen location. Emit PLAN: as the hand-off label:
PLAN: Written to {path}. Ready for review.
If a required section cannot be filled because the interview didn't cover it, leave the placeholder in place and add MISSING REQUIREMENT: {dimension} above it so the gap is explicit.
Before writing, run the red-flag and pre-plan verification checklists in references/interview-operations.md. Do not fill plan sections from assumption; use explicit MISSING REQUIREMENT: markers for interview gaps.
When the host runtime supports it (Claude Code) and the user wants to move directly into implementation planning, offer to call EnterPlanMode so the synthesized plan becomes the seed of an interactive plan. Ask once via AskUserQuestion (Enter plan mode now / Stop here, I'll review first) — don't auto-trigger. If the runtime doesn't expose EnterPlanMode, skip this step silently.
PLAN: marker is present at hand-off.tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.