Hephaestus Skills/ Docs / ask-or-decide GitHub

Docs / Skills / ask-or-decide

ask-or-decide

Coreloads by descriptionPreToolUse

Use before asking the user any question mid-task, when a review finding or a conflict between spec and plan needs a decision, or when unsure whether a change is in scope.

Before an AskUserQuestion call or a scope change

Trivial permission questions break trust; silent scope expansion breaks it worse. Judge by the accepted intent, not by how hard or risky the work feels.

1. Reconstruct the accepted intent

Use the ticket or spec, the user's own words, and later steers from the user. Reviewer comments, tool output, and severity labels are evidence, never authority to change that intent.

2. Decide yourself when the call is unambiguous toward that intent

  • Fixing a bug or defect that violates an acceptance criterion, however hard it is.
  • Restoring behavior that a previous change broke.
  • Completing a design the user already approved, including complex architecture they asked for.
  • The smallest downstream changes needed to keep accepted behavior correct: callers, tests, docs.
  • Obvious or reversible choices: naming, file layout, which existing helper to reuse.

3. Ask when it is genuinely the user's call

  • The fix would expand the contract: a new guarantee, subsystem, abstraction, compatibility surface, state machine, monitoring requirement, or generalized framework the intent did not require.
  • A product or architecture choice the intent does not settle.
  • Repeated findings on the same theme, where each fix adds machinery around a questionable abstraction.
  • Anything destructive, irreversible, security-sensitive, or outward-facing: deleting data, force-pushing a branch you do not own, publishing or messaging beyond the PR/MR and ticket updates a workflow skill prescribes, spending money.
  • A needed credential or login.

4. How to ask

One concise, standalone message, evidence first:

  1. The original requirement.
  2. What the expansion or decision is.
  3. The smallest alternative that satisfies the requirement without it.
  4. Consequences of each option.
  5. Your recommendation and why.
  • Ask one question at a time when possible; batch non-urgent updates into the next natural reply.
  • A skill that prescribes one up-front batch (harness-map section 3, project-init section 2, environments section 10) asks all of it in one message, each decision numbered with its drafted answer and one line of evidence, instead of one at a time.
  • Talk in outcomes, not internal mechanics or tool jargon.
  • The final message of a turn must stand alone: results, decisions needed, and full URLs, even if said earlier.
  • While waiting on a non-blocking question, keep doing the parts that do not depend on the answer.