DevRites面试

ViktorsBaikers2026-10-27查看 646复制 773

一次询问用户一个问题以提取意图。当用户说“采访我”、“我不确定我想要什么”或询问未指定时使用。不是为了随意澄清。

Download (.md)

📘如何使用这个技能

  1. 1
    复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
  2. 2
    打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
  3. 3
    粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
  4. 4
    直接提出你的需求·AI 会按技能定义的工作流、格式和约束来处理,无需再解释背景

💡 提示:技能生效后,每次对话只需一句需求,AI 会按 SKILL.md 的流程执行。

SKILL.md6855 chars
---
name: devrites-interview
description: Interview the user one question at a time to extract intent. Use when the user says "interview me", "I am not sure what I want", or the ask is underspecified. Not for casual clarification.
triggers:
  - model
---
<!-- loads: {"always":["devrites-lib/reference/standards/core.md","rite-spec/reference/interview-patterns.md"],"triggers":{"afk":["devrites-lib/reference/standards/afk-hitl.md"]},"workspace":["spec.md","questions.md","decisions.md","assumptions.md","decision-coverage.md","state.md"],"rootOnly":["devrites-lib/reference/standards/afk-hitl.md"]} -->
> Read-set manifest: `devrites-engine context --skills-root .devin/skills <slug> --skill devrites-interview` (no workspace: `--out <path>`) bundles every file named below into one deduplicated read.

# devrites-interview: extract intent

Resolve the difference between the request and the user's intent before writing a
spec, plan, or code.

## Protocol
- **Open with a working hypothesis.** State in one line what the user wants, then ask about the
  highest-value unresolved human-owned material decision.
- **One question per turn.** Multiple questions get one answered and the rest ignored.
- **Attach an explicit recommendation** and its reason to every question:
  > "I recommend CSV only because it covers the use case. Choose CSV, CSV + XLSX,
  > or something else?"
  This is a concrete candidate for the user's decision, not an assumption or confirmation.
- **Ask in a full sentence that names the decision and why it changes the
  build** — "Which export formats must v1 ship? Each adds a writer and a proof."
  — never a bare label ("Formats?") or a context-free "any preference?"
- **Highest-value question first:** order by how much the answer changes the build. A
  question that moves the data model or acceptance criteria beats a cosmetic one.
- **Prioritize impact and bound each pass.** Order unknowns **scope > security/privacy > UX >
  technical**. A pass MAY contain at most **3 questions** for cognitive load. After each pass,
  rescan the decision tree and continue in later turns until every human-owned material decision
  is explicitly selected or explicitly deferred by the user. A cap MUST NOT move a blocker to
  `assumptions.md`. Own and log reversible, low-impact technical details instead of asking.
- **Structured options** when the space is enumerable: present them as the standard ranked
  **option set** ([[`afk-hitl.md`](../devrites-lib/reference/standards/afk-hitl.md) → "Option set"](../devrites-lib/reference/standards/afk-hitl.md#option-set-how-every-gap-is-presented)): recommended **first**, labelled
  `(Recommended)`, each with a dimension-tagged rationale (`logic · infra · business ·
  architecture`, + `security`/`UX`/`risk` when in scope), plus the escape hatch. Render via
  `ask_user_question` when the harness has it:
  ```
  1. <recommended> (Recommended) — logic: … · infra: … · business: … · architecture: …
  2. <alternative> — <rationale + the trade-off it accepts>
  3. Something else — I'll describe it
  ```

## Completion condition
Complete only when a topology and decision-tree rescan finds no unresolved human-owned
material decision. Such a decision closes only through the user's option selection,
free-form answer, or explicit deferral. A recommendation is not confirmation. If the user
stops early, persist every visible blocker and MUST NOT claim readiness or advance.

Ask fewer, deeper questions. If answers stop converging around one area, **reframe once**
instead of asking another version of the same question.

## Want vs. should-want
Users sometimes name the convention or best practice they think they should want instead
of their actual preference. Signals include abstract virtues ("scalable", "clean",
"modern"), deference to convention, or an answer that fits any project. Ask: *"if you
didn't have to justify this to anyone, what would you want?"* Record that answer rather
than designing to the generic one.

## What counts as a yes
Approval requires an **explicit** yes. Treat these replies differently:
- *"Whatever you think is best"* / *"you decide"*: **delegation, not approval.** Offer two
  concrete options so the user chooses the substance or explicitly defers it.
- *"Sounds good"* / *"sure, let's go"*: confirm once for a material decision rather than
  treating a polite exit as approval.
- **Silence:** not consent. State what is out of scope and get explicit approval for it.

## Don't ask
- Things the codebase answers (read it first).
- Reversible, low-impact technical details (decide and log as agent-owned assumptions).
- Everything at once "to be thorough."

## When the ask is vague: map the decision tree first
For a short or vague request (`"design a contact page"`), do not ask isolated questions.
Sketch the **decision tree** first, then resolve each branch **depth-first** with the
protocol above. Domain branches per area:
[`../rite-spec/reference/interview-patterns.md`](../rite-spec/reference/interview-patterns.md).

## Reframe (once, when stuck)
If the interview is not converging, use **one** turn to challenge the premise:
*"is a form even the right answer here, or a mailto / booking link?"* Then resume the
protocol with the revised premise.

## /clarify mode: coverage scan of an existing spec
When clarifying a written spec rather than extracting intent from scratch, first enumerate
its actors, journeys/components, states, data boundaries, interfaces/integrations, and
operational/proof surfaces. Scan every material surface against that taxonomy and mark
`closed`, `agent-owned`, `not-applicable`, `deferred-nonblocking`, or `open` with evidence. Ask at most **3 prioritized decision packets per
pass**, targeting `open` rows, one per turn with an explicit recommendation and reason.
A packet may close
several cells only when they share one owner and trade-off.

**Integrate each answer into the relevant spec section** immediately. A Q&A log alone is
insufficient.
Record each question and resolution in `decision-coverage.md` as scan evidence, not a
transcript block in `spec.md`.
Re-run the scan after each pass. Packet limits control cognitive load, never readiness. Continue
later passes while human-owned blockers remain, and stop only when every row is `closed`, `agent-owned`,
`not-applicable`, or `deferred-nonblocking` by the user with a nonblocking reason, owner, and validation
gate. Then re-score the affected
`checklists/<domain>.md`.

## Output
A short summary for the caller: objective in one sentence, confirmed decisions,
open non-blocking items, and the recommended next step. If a workspace is active, write
Q&A to `questions.md`, confirmed calls to `decisions.md`, and only agent-owned reversible,
low-impact technical details to `assumptions.md`. If not, return the summary without creating
a workspace.
来源:skillsdirectory

评论0

登录后参与评论

还没有评论,来抢沙发吧