Agent Skills: Role

Turn rough ideas into iron-clad work orders. Use when request is vague like "add a button", "make it better", "fix the thing". Triggers on ambiguous or underspecified requests.

UncategorizedID: saadshahd/moo.md/intent

Install this agent skill to your local

pnpm dlx add-skill https://github.com/saadshahd/moo.md/tree/HEAD/hope/skills/intent

Skill Files

Browse the full folder contents for intent.

Download Skill

Loading file tree…

hope/skills/intent/SKILL.md

Skill Metadata

Name
intent
Description
Turn rough ideas into iron-clad work orders. Use when request is vague like "add a button", "make it better", "fix the thing". Triggers on ambiguous or underspecified requests.

Role

CLARIFY. Turn rough ideas into iron-clad work orders. Ask the fewest questions to make every criterion testable by a stranger. Clarity over completeness — a partial spec with boolean criteria beats a thorough spec with vague ones.

Principles

  1. User owns intent — If the user says "I know what I want," proceed without clarification. Never override stated intent.
  2. At least one question must be adversarial — Always ask what this should NOT do, or what would make it wrong. Non-goals prevent scope creep better than goals prevent gaps.
  3. A spec is ready when a stranger could verify each criterion without asking what you meant — If it requires interpretation, it's not ready.
  4. Max 3 rounds of clarification — After 3, proceed with [ASSUMPTION] labels on unresolved items. Endless clarification is worse than marked assumptions.
  5. Adapt focus to what the session needs — Clarifying a bug is different from clarifying a feature is different from clarifying a retrospective. Lead with the questions that matter most for this context.
  6. When interpretations diverge, ask the user which they mean — Don't pick for them. Present the options and let them choose.

Process

  1. Understand — State what you understood. Scan for labeled blocks (TASK:, CONTEXT:, DONE:, STAKES:, CONSTRAINTS:, FEASIBLE:). Pre-populate matching fields and mark [USER-PROVIDED]. Focus questions on gaps, not fields already answered.

    | Context | Lead with | | ----------------------- | ----------------------------------------------------- | | Building something | What artifact, for whom, with what constraints? | | Fixing something | What's the symptom, what changed, what's expected? | | Making a decision | What decision, what options, what criteria? | | Reviewing what happened | What was the outcome, what surprised, what to change? | | Writing | What audience, what tone, what must it cover? | | Learning | What do you already know, what's the gap? |

  2. Close gaps — Ask the 3 highest-uncertainty questions per round. Each question ≤15 words. At least one adversarial ("what should this NOT do?"). Use MCQ format for speed: "1A, 2B." Max 3 rounds — after that, proceed with [ASSUMPTION] labels.

  3. Compress — Echo back in one sentence (≤20 words): deliverable + #1 must-include + hardest constraint. User responds YES to lock, or EDITS to revise.

  4. Emit brief — Produce the locked work order:

    • OBJECTIVE (1 sentence)
    • NON-GOALS (3-5 things a reasonable person WOULD attempt)
    • CONSTRAINTS (what must not change)
    • ACCEPTANCE (7-12 bullets, each ≤20 words, each testable by a stranger, ≥2 "must NOT" bullets)
    • STOP CONDITIONS (3-5 observable failure states, not process labels)
    • BLAST RADIUS (1 sentence: what breaks if this is wrong)

    Self-audit (revise before presenting if any FAIL):

    • OBJECTIVE present → [pass/fail]
    • NON-GOALS has 3-5 bullets → [pass/fail]
    • ACCEPTANCE has 7-12 bullets → [pass/fail]
    • ≥2 bullets say "must NOT" → [pass/fail]
    • STOP CONDITIONS has 3-5 → [pass/fail]
    • All bullets ≤20 words → [pass/fail]
    • BLAST RADIUS present → [pass/fail]

Boundaries

User owns intent. If user says "I know what I want," proceed without clarification. Intent translates — it never decides for the user.

When user asks "what do you need from me" or "give me the template":

Fill what you know, delete what you don't:

TASK: [verb + object + outcome] (≤15 words)
CONTEXT: [where it lives, who uses it, what connects to it]
DONE: [artifact you can point to when finished]
STAKES: [low/medium/high — why]
CONSTRAINTS: [what must NOT change]

Handoff

Brief is locked. Invoke the next pipeline phase:

  • Needs shaping → Skill(skill="hope:shape") with this brief
  • Needs expert validation → Skill(skill="hope:consult") with this brief
  • Ready to execute → Skill(skill="hope:loop") with this brief