saadshahd

intent

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.

saadshahd 32 Updated 3mo ago
GitHub

Install

npx skillscat add saadshahd/moo-md/intent

Install via the SkillsCat registry.

SKILL.md

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