psychology

chevp-ai-framework

Lifecycle Gates Guidelines Commands Agents Templates
gavel Rule 13 · Guideline

AskUserQuestion

Every decision the AI surfaces to the human is a clickable question with concrete options —
not a wall of prose ending in a question mark.

The human's job is to decide, not to re-read explanations.

Why

Free-text questions silently degrade to rubber-stamping

visibility_off

Hidden choices

Buried in prose, the human must scan, extract, and reformulate the question before they can decide.

schedule

Slow loops

Free-text replies drift, lose context, and force follow-up clarifications. Clickable options collapse the round-trip.

balance

Explicit trade-offs

Each option exposes its cost, risk, and reversibility — the human decides on signal, not memory.

The Rule

Mechanical, not aesthetic

Whenever the AI needs a decision, preference, or disambiguation from the human, it MUST use the AskUserQuestion tool with 2–4 concrete, mutually exclusive, clickable options.

Free-text questions buried in prose are forbidden — including for non-gate matters such as scope clarification, mode disambiguation, library/approach choice, naming, refactor depth, or “should I continue?” checkpoints.

If the AI catches itself ending a paragraph with ? — that is a violation. Rewrite as an AskUserQuestion call.

Anatomy

Five fields — each one carrying a piece of the decision

question

The actual decision, phrased as a single sentence. Short. No nested questions.

header

A 1–3 word category label shown above the question. Helps when bundling related decisions.

options[].label

Each option label is ≤ 5 words, decision-shaped, mutually exclusive. The recommended option goes first and is suffixed with (Recommended).

options[].description

Carries the why — cost, risk, reversibility. So the human can decide without scrolling back to read prose.

multiSelect

false by default (one choice). Set true only when several options can co-exist.

tips_and_updates The tool always appends an automatic “Other” option — never add one yourself.

Example 1 — Library Choice

A single decision with a clear recommendation

check Right AskUserQuestion call
Storage

Which database should the auth service use?

SQLite (file)

Zero ops. Single-writer limit blocks horizontal scale — reversible only behind a migration.

DynamoDB

Managed & cheap at low volume. Locks us into AWS; query patterns are pre-committed.

Click to choose to confirm
close Wrong Free-text question buried in prose

So I’ve been looking at the storage layer and I think we have a few options on the table. Postgres is probably the most robust choice and we already operate one in production, although it does add some ops cost. SQLite would be much simpler to deploy as a single file but has single-writer limitations which would bite us once we scale horizontally. DynamoDB is also worth considering since it’s managed and cheap at low volume but it would lock us into AWS and force us to commit to query patterns up front.

So — should I go with Postgres, SQLite, or DynamoDB? Or did you have something else in mind?

The human has to scan three paragraphs, mentally extract the trade-offs, type a reply, then often re-clarify.

Example 2 — Bundled Decisions

Up to 4 related questions in one call — never split across turns

Refactor · Question 1 of 3

How deep should the auth refactor go?

Middleware + session storage

Closes compliance gap fully. Bigger PR, requires migration plan.

Refactor · Question 2 of 3

Behind a feature flag?

No — ship straight to main

Cleaner code. Rollback requires revert + deploy.

Refactor · Question 3 of 3

Migration window for existing sessions?

Force re-login at cutover

Clean cutover. User-visible disruption.

link These three decisions belong together — splitting them across turns adds latency and loses context.

Example 3 — Gate Transition

G1 / G2 / G3 are decisions too — the evidence block carries the why, AskUserQuestion carries the verdict

Gate G2 · Exploration → Production

Approve plan EXP-014-auth-refactor for production?

Evidence: prototype confirmed · insights.md written · Challenger output recorded · Kill Criteria defined.

Reject — back to Exploration

Signal a missing artefact or a flaw in the approach — no production code starts.

Defer — spawn a proposal

Park the plan as PROP-NNN for later triage; no scope is lost.

Anti-Patterns

What to never do — and what to do instead

Anti-Pattern Why it fails Better
Free-text trade-off prose ending in ? Forces re-reading; ambiguous to answer. AskUserQuestion with 2–4 options & trade-offs in description.
Single-option Confirm → Yes/No Theatre, not decision — one side is meaningless. Just proceed and report. Or pose a real either/or.
Splitting one decision across 3 consecutive turns Adds latency, loses context. One AskUserQuestion call with multiple questions.
Tool call followed by free-text question Re-introduces the prose-question pattern. Bundle into the same call, or wait for the answer.
Manual “Other / Custom” filler option The tool already injects an “Other” fallback. Drop it — rely on the built-in fallback.

Scope

When the rule applies — and when it doesn’t

check_circle

Always use AskUserQuestion

  • Mode/intent ambiguous (Context vs. Exploration vs. Production)
  • Scope clarification — which file, which feature, how deep
  • Approach choice — library, pattern, refactor depth
  • Gate decisions G1 / G2 / G3 — alongside the evidence block
  • Plan-proposal triage — /promote vs. /defer vs. /reject
  • Naming & file-placement decisions
  • “Should I continue?” checkpoints
cancel

Don’t use it for

  • Reporting results — finished work and diff summaries are statements, not questions
  • Information requests — the human asks, the AI answers; this tool is for the reverse direction
  • Internal AI deliberation — the Challenger role critiques inside the AI; it does not surface as a user question
  • Manufactured choices — if only one viable path exists, take it and report

Relation to Other Rules

How AskUserQuestion fits into the framework’s rule system

Rule 2

AI enforces, human decides

Clickable options are the mechanical form of “human decides”.

Rule 5

Ownership stays with the human

The AI must still recommend; the human still chooses.

Rule 8

Approval requires evidence

For gate transitions: the tool carries the decision, the evidence: block carries the justification. Both required.

menu_book

Read the source guideline

The canonical, machine-readable rule lives next to the rest of the framework.

guidelines/ask-user-question.md open_in_new