Steering User Elicitation

作者 cline26378461e978無授權條款34 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫2 個月前更新

Elicit and challenge data-analysis requirements before querying. Use when the user asks ambiguous data questions, requests business/report answers, needs metric definitions clarified, or may be drawing decisions from incomplete data.

僅含說明Data & Analytics
AI 產生的概覽

引導代理在撰寫查詢前釐清並質疑含糊的資料分析需求。

功能
此技能說明如何為資料請求填寫 Intent 區塊,將每個欄位標記為已確認、假設、需使用者提供或需查閱。它提供針對性追問的說法、處理缺失或常被誤解指標的規則,以及可略過釐清問題的嚴格判定條件。其產出是釐清後的需求,而非查詢或檔案。
適用情境
當使用者提出含糊的資料問題、要求業務或報告類答案、需要釐清指標定義,或可能依據不完整的資料做決策時使用。它適用於查詢之前的需求蒐集階段。
執行需求
僅為說明性內容,不含指令碼。它會引用父層 data-analyst 技能以及 reading-data-dict 資源,用於解析已記錄的指標定義。

Steering and User Elicitation

This skill describes how to fill the Intent block (defined in the parent data-analyst/SKILL.md) well, how to phrase good pushback, and how to handle metrics that are missing or commonly misunderstood.

Start from the assumption that the first request is underspecified; it almost always is. Most data requests have hidden ambiguity even when they read cleanly. Asking at least one clarifying question should be the norm; answering a first message with zero questions should be rare. The goal is productive friction, not an exhausting questionnaire.

Filling each Intent field

For each Intent field, choose the right marker:

  • Confirmed when the user stated it explicitly in this conversation.
  • Assumed only for genuinely low-stakes fields where a wrong guess would not change the answer's shape or the user's decision. State the assumption so the user can correct you: "Assuming all users (no plan filter); I'll note if filtering looks needed." If a wrong guess could mislead, it is NEED FROM USER, not Assumed.
  • NEED FROM USER when the field materially affects the result and the user did not specify it, the normal state of most fields on a first request. Stop and ask one targeted question.
  • LOOK UP: <term> when the field references a term with a documented definition (a named metric, a funnel stage). Resolve it via ../reading-data-dict/ before querying; do not guess its meaning.

What each field is asking:

  • Metric: what exactly should be counted, summed, averaged, or compared?
  • Population: users, accounts, sessions, requests, versions, providers, or feature users?
  • Time window: dates, release window, week-over-week, last N days?
  • Grain: daily, weekly, per release, per user, per workspace?
  • Filters: plan, platform, model/provider, version, geography, telemetry enabled?
  • Output: quick answer, SQL, CSV, chart, HTML/report, or dashboard seed?

Also keep audience in mind (internal debug, exec/business update, customer/investor answer); it raises the bar for confirming definitions before presenting.

A block with no questions at all should be rare and deliberate, not the easy path. If you filled every field as Confirmed or Assumed, stop and re-check: which metric definition, which population (unique users vs events), which window (and the current partial day?), which grain? At least one of these is usually a real choice the user should make. The rule is "ask the one or two questions that most change the answer," not "find a default for everything so you can proceed."

Good pushback

Use targeted pushback like:

  • "I can answer this two ways: raw event count or unique affected users. Which do you want?"
  • "This metric is only representative of telemetry-enabled users. Is directional analysis acceptable?"
  • "A 2-day window may be noisy. Should I compare against the prior 2 days or prior week?"
  • "Before plotting this, I want to confirm the definition of active user."

When the metric doesn't exist

If the exact metric the user is asking for does not exist in the available data (schema, data dictionary, or known tables), do not silently substitute a proxy metric. Instead, pause and ask clarifying questions:

  • "I don't see a direct metric for X. The closest available options are Y and Z, would either of these work?"
  • "That metric isn't in our current schema. Can you describe what you're trying to measure so I can find the best approximation?"
  • "I can approximate this using [field], but it may not match your definition exactly. Should I proceed with that caveat, or would you like to refine the request?"

When the metric exists but the user likely means something else

The harder case is a term that is documented but commonly means different things. "Revenue" may mean billings, net, or gross; "active user" may mean any-event vs a task-creating user; a "task" may be created vs completed. When a request uses such a term:

  • Mark it LOOK UP in the Intent block and resolve the documented definition.
  • If the documented definition diverges from common usage, surface it before assuming: "Our revenue model is net of refunds, is that the figure you want, or gross billings?"
  • Do not silently adopt the documented definition just because it exists. Confirm it when the divergence could change the answer or the decision.

When to skip the full Intent block

Always produce the Intent block. You may skip asking questions (mark every field Confirmed or Assumed, none NEED FROM USER) only when the request is mechanically unambiguous. Treat this as a checkable test, not a judgment call, skip questions only if the user's message contains all of:

  • a fully-qualified table or documented metric name (no interpretation needed),
  • an explicit time window (a date literal or an unambiguous relative window),
  • an explicit aggregate or operation (count, sum, avg, top-N, etc.).

Example that qualifies: "How many rows in analytics.events_daily from 2026-05-20 to 2026-05-27?"

If any of those three is missing or interpretable, at least one field is NEED FROM USER or LOOK UP, do not skip.

來源與署名

來源:cline/skills位於skills/data-analyst/skills/steering-user-elicitation提交2637846

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架