Generated banner for Steering User Elicitation
Generated logo for Steering User Elicitation

Steering User Elicitation

ClineOfficialPublished by Cline

  • Skill
  • Guidelines
  • Data and AI
  • Apache-2.0
  • No issues found

From the author

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.
— the description by Cline

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Steering and User Elicitation provides a structured approach to handling data analysis requests. It emphasizes that initial requests are often underspecified and encourages agents to practice productive friction by asking targeted questions. The skill outlines how to populate an Intent block, when to push back on ambiguous metrics, and how to handle scenarios where requested data is missing or potentially misinterpreted. By requiring agents to validate metrics, populations, time windows, and grains, it ensures that the final analysis aligns with the user's actual decision-making needs.

What it does

  • Defines a systematic process for evaluating and clarifying user data requests.
  • Provides a framework for categorizing request fields as Confirmed, Assumed, NEED FROM USER, or LOOK UP.
  • Offers strategies for providing constructive pushback on ambiguous or noisy metrics.
  • Establishes protocols for handling missing metrics or documented definitions that diverge from common usage.
  • Mandates the creation of an Intent block for every request to ensure transparency.
  • Sets strict criteria for when an agent may proceed without asking clarifying questions.

When to use it

  • When a user submits an ambiguous data request or asks for business-level reporting.
  • When metric definitions are unclear or subject to multiple interpretations.
  • When there is a risk that the user is making decisions based on incomplete or proxy data.
  • When the agent needs to ensure that the chosen population, time window, or grain is appropriate for the user's goal.

Advantages

  • Reduces the likelihood of delivering inaccurate or misleading data analysis.
  • Ensures alignment between the agent's interpretation and the user's intent.
  • Promotes transparency by documenting assumptions and definitions.
  • Prevents the silent use of proxy metrics that may not meet the user's requirements.

Usage examples

“How many users were active last week?”
The agent identifies 'active user' as ambiguous and asks: 'I can define active users as those who logged in or those who completed a task. Which definition should I use?'
“Show me revenue for the last month.”
The agent notes the ambiguity of 'revenue' and asks: 'Our revenue model is net of refunds. Is that the figure you want, or are you looking for gross billings?'

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/cline/steering-user-elicitation/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip steering-user-elicitation.zip -d .agents/skills

Documentation by Cline

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.

Files

ATTRIBUTION.md

Attribution

This folder is an unmodified copy of the Agent Skill "steering-user-elicitation", distributed by AutoGineer (https://autogineer.com/agent-skills).

The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.

Files added by AutoGineer

  • ATTRIBUTION.md: this file, written by AutoGineer

  • LICENSE: copied from LICENSE

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Cline
Publisher
Cline (Official)
Source
cline/skills · skills/data-analyst/skills/steering-user-elicitation · commit 2637846
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Cline or Cline.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download steering-user-elicitation.zip