ask-to-plan · git:20260912.38254d6 · 2026-09-12 · sha256 3c8198aaf1a8b64f

ask-to-plan git:20260912.38254d6A

Immutable. This exact content is served forever at /api/v1/blob/3c8198aaf1a8b64f.

---
name: ask-to-plan
description: "Guide a user from an unclear idea to an actionable plan through the agent harness's native ask tool and clickable choices. Use when the user wants a guided requirements interview, step-by-step questions, help deciding what to build, or a button-led path from goals to scope, solution, and technology choices. Do not turn an ordinary implementation request or a single clarification into an interview."
license: Apache-2.0
metadata:
  author: scarletkc
  source: https://github.com/scarletkc/agents
  summary: "Turn a rough idea into clear goals, requirements, a solution, and an actionable plan through guided questions and native choices."
---

# Ask to Plan

Help the user discover what they want by making one useful decision at a time.
Move from broad outcomes to concrete requirements and then an implementable
plan. The user should be able to make progress by choosing buttons, including
when they have no idea yet or do not know technical terms.

The default deliverable is a plan. Starting this interview or accepting a
solution does not itself request implementation. If the user later asks to
build it, carry the settled requirements into that work.

## Use the harness's actual ask tool

Identify the native structured-question tool exposed in the current session,
such as `request_user_input`, `request_user_input_async`, or the harness's
equivalent. Use the tool to present choices. Follow its actual schema and
current mode restrictions, including question limits, option limits, and
whether the interface already supplies free-text input or an Other option.
Tool names here are discovery hints, not a promise that a tool is available.

Start with a brief explanation of the next decision and one native question.
Do not print a questionnaire, simulate buttons in Markdown, or produce a
complete solution before learning the user's intent. If structured input is
unavailable or fails, explain that buttons are unavailable here and use a
concise text question if the harness permits it. A skill cannot add a missing
tool or override its restrictions; do not change agent settings to enable it.

For an asynchronous ask tool, submission acknowledgement means the question is
pending. Wait for the actual answer before asking a dependent question or
settling that decision; only independent inspection can advance meanwhile.
If a prompt is dismissed or returns no answer, follow the harness's rules for
waiting or continuing with assumptions. Keep unanswered choices unresolved or
explicitly provisional. A preselected option, timeout, or tool success is not
the user's choice.

## Make each question easy to answer

- Ask one question per round by default. Its answer should change the goal,
  scope, approach, or next question. Skip details that do not affect the plan.
- Offer two or three short, distinct choices within the tool's limits. Explain
  the practical consequence of each in a short description when supported.
  Ask about one dimension; do not bundle audience, platform, and budget into
  a single choice.
- Build options from what is already known. Use the user's language and level
  of detail. A beginner can choose "only on my computer" or "shared across
  devices" without knowing database names.
- Provide a useful uncertainty choice when needed, such as "Help me choose"
  or "Show me examples". After that choice, offer concrete directions or a
  reasoned recommendation; do not repeat the same difficult question.
- Recommend an option when the known needs support it and explain why. If
  the tool requires a recommended option, ground it in the stated context or
  a disclosed provisional assumption. Do not invent a user preference.
- Accept free-text corrections and combinations where supported. Use multiple
  selection only for choices that can coexist; incompatible approaches need
  a single choice. If exact input matters, such as a project path, request it
  through a supported input surface instead of guessing it from buttons.

Users can change a previous answer, ask for an explanation, let the agent
choose, or ask for the plan now. Mention these possibilities briefly when
useful; they do not all need to occupy an option in every question.

## Narrow from outcomes to implementation

First extract what the user has already supplied. For an existing project,
inspect the relevant context within the authorized scope before asking for
facts the project can answer. Enter at the first consequential gap instead
of restarting a prepared sequence.

Use the following progression as a map, not a mandatory questionnaire. After
each answer, choose the next uncertainty whose resolution most changes the
plan. Skip settled or irrelevant areas and revisit earlier decisions when a
new constraint changes them.

| Area | Decision to uncover |
|------|----------------------|
| Direction | What improvement does the user want, and for whom? If they have no idea yet, offer a few concrete outcomes to explore. |
| Problem and success | What is difficult today, what main scenario should become possible, and what observable result would count as success? |
| First useful scope | What must the first version do, what can wait, and what is outside this effort? Resolve competing priorities with a concrete tradeoff. |
| Constraints | Which limits actually affect this idea: existing tools, intended devices, collaborators, data, budget, deadline, or maintenance capacity? |
| Solution | Which approach fits the chosen outcome and constraints? Compare meaningful alternatives only where the choice changes the result. |
| Implementation plan | What tools or technology are needed, what comes first, and how will each useful result be checked? |

For example, after "I want to build something but have no idea", the first
native question might offer "Save time on a repeated task", "Make something
for others to use", and "Explore a few ideas". Selecting the first should
lead to relevant tasks to simplify. Selecting the second should lead to an
audience or problem to serve. Neither answer establishes a website, a mobile
app, an AI feature, or a technology stack.

Once the purpose is clear, specialize the questions to its domain. A booking
tool may need to settle who manages availability; a learning plan may need
to settle what the learner wants to practice. Do not keep asking generic
startup questions after a concrete workflow is known.

## Derive the technical choices

Ask about consequences the user can judge before asking about implementation
preferences. Work out local versus shared use, important data needs, external
integrations, and maintenance expectations only as relevant to the idea.

Then recommend a coherent, appropriately sized solution. For software, map
each proposed stack component to a requirement and explain the tradeoffs in
plain language. Respect an existing stack or an explicit technical preference;
inspect compatibility before recommending a change. A user who says "you
choose" has delegated that decision, so make it and record the reason rather
than continuing to quiz them about frameworks.

Verify changeable claims such as service pricing, supported integrations, and
compatibility against current authoritative sources when they affect the
choice. If verification is unavailable, mark the assumption and include the
needed check in the plan. Do not force software architecture or a technology
stack into a non-software outcome; specify the relevant tools and method.

## Carry decisions forward

Maintain a compact working record in conversation context: the goal, accepted
decisions, constraints, agent recommendations or assumptions, and consequential
open questions. Keep user choices distinct from inferred facts. Show a short
recap at a change of direction or before comparing solutions, rather than
reprinting the full record after every answer.

If the user changes an earlier choice, update dependent scope, solution, and
stack decisions. Preserve answers that still apply. When answers conflict,
explain the specific tradeoff and ask which should take priority. Do not keep
an obsolete decision in the final plan or silently resolve a material conflict.

## Converge and deliver the plan

Stop exploring when the goal and audience, first useful scope, major
constraints, solution, and acceptance criteria are clear enough for someone
to take the next step. Unknowns that could overturn feasibility need a choice
or an explicit validation task. Routine implementation details can remain
agent decisions; they do not justify more interview rounds.

Show a compact preview of the proposed outcome and let the user choose to
receive the plan or revisit the part that still feels wrong. This is alignment
on requirements, not permission to execute. If the user already asks to finish
or output the plan, deliver it directly and label unresolved assumptions.

Write a self-contained plan at a depth appropriate to the task. Cover:

- The goal, intended users, and observable success criteria.
- The main scenario and requirements, first-version priorities, and deferred
  or excluded work that matters to the agreed boundary.
- The chosen solution and why it fits; for software, the proposed technology
  stack and the role of each component.
- An ordered implementation path with concrete deliverables, dependencies,
  and acceptance checks for the useful milestones.
- Remaining assumptions, consequential risks or unknowns, and how to resolve
  them, followed by the first actionable step.

Do not fill the plan with invented budgets, deadlines, scale targets, or
confirmed-sounding guesses. If the user ends discovery early, deliver a useful
provisional plan with its gaps visible. End after the requested plan unless
the user has also requested further work.