core/capabilities/elicitation/quick-elicit/SKILL.md
Guided specification through 4 focused question rounds in ~3 minutes. Round 0 challenges problem framing before solutioning. Produces framing, intent, boundaries, and acceptance criteria. Use when the user wants to add a feature, build something new, implement functionality, create a component, or says "add", "build", "create", "implement". Do not use when a detailed spec already exists.
npx skillsauth add xoai/sage quick-elicitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Guide the human to articulate a high-quality specification through 4 focused rounds of questions. Takes ~3 minutes, not 20.
Core Principle: The quality of output is determined by the quality of input. The most expensive failure is building the wrong thing correctly. Round 0 challenges the framing BEFORE the other rounds capture requirements.
BUILD mode, before planning. When the human describes something they want to build, add, or change — and no specification exists yet.
Do NOT use when:
.sage/work/ (skip to planning)Before asking anything, scan the relevant codebase area to understand:
If a codebase-scan has been run previously, use its output. Otherwise,
scan the relevant files directly (read project config, entry points,
and the area being changed).
Also scan .sage/docs/ for existing research artifacts (jtbd-, ux-audit-,
opportunity-, user-interview-). If research exists, note the known pain
for use in Round 0.
This determines WHAT TO ASK. Don't ask about things you can already see.
PURPOSE: Challenge whether the request is framed around the right problem BEFORE committing to a specification direction.
Ask ONE question:
"What goes wrong today without this?"
This is not "what does this feature do?" It's "what specific frustration, failure, or friction makes this worth building?" The answer should be a concrete struggling moment, not an abstract category.
If research context exists: Reference the known pain instead of asking open-ended: "Research identified [pain]. Is that still the driver, or has something changed?"
If the answer restates the feature instead of the pain, probe once: "Got it — but what's the actual problem that causes? What goes wrong for the user?"
Do NOT probe more than once. If the pain remains unclear after one follow-up, note it and proceed.
The challenge: Based on the pain + codebase scan, surface one or two implicit premises the user is making:
Before we lock this in — I notice two assumptions worth checking:
1. [Premise]: [one sentence stating the assumption]
→ [one sentence describing why it might be wrong]
2. [Premise]: [one sentence stating the assumption]
→ [one sentence describing why it might be wrong]
Does the original framing still feel right, or should we adjust?
What counts as an implicit premise:
What does NOT count (don't waste time on these):
User responds in one of three ways:
"Framing is right." → Proceed to Round 1 with the original request.
Note: Framing: Original request confirmed. Pain: [stated pain].
"Let's adjust." → User provides adjusted framing. Round 1 uses the
adjusted framing, not the original request.
Note: Framing: Adjusted from [original] to [adjusted]. Pain: [pain].
"I don't know / let me think." → Note uncertainty. Proceed with
original framing but flag it:
Framing: Original request (low confidence). Pain: unclear. Consider /research or /jtbd before building.
At Round 0 completion: Prepend framing decision to .sage/decisions.md
BEFORE proceeding to Round 1:
### YYYY-MM-DD — Framing: [initiative]
[Chose framing]. Pain: [pain]. Challenged: [premise names].
(quick-elicit Round 0)
Round 0 is skipped in exactly these cases:
No other bypass conditions. Standard and Comprehensive ALWAYS get Round 0.
Anti-rationalization contract for Round 0 skip: Do NOT skip Round 0 because:
Ask TWO questions:
"What should this do when it's working perfectly?" Get the happy path. What does success look like from the user's perspective?
"Who uses this, and when?" Get the actor and trigger. This prevents building features nobody uses.
Wait for answers. Then draft a 3-5 sentence intent statement and show it:
INTENT: [feature name]
Framing: [original | adjusted | original (low confidence)]
Pain: [the struggling moment, from Round 0]
When [actor] does [trigger], the system [behavior].
This enables [value/outcome].
Ask: "Does this capture what you mean? Anything to adjust?"
Note: If Round 0 adjusted the framing, Round 1's questions are asked about the ADJUSTED framing, not the original request.
Ask up to THREE questions, adapting based on what you inferred from the codebase:
"What should this explicitly NOT do?" Boundaries prevent scope creep and gold-plating.
"What existing code does this touch? Any concerns?" Skip if the codebase scan already identified the impact area clearly.
"Any security, performance, or compatibility constraints?" Skip if the change is purely internal with no user-facing impact.
Draft boundary conditions and show them:
BOUNDARIES:
- This feature WILL: [list]
- This feature WILL NOT: [list]
- Constraints: [any non-functional requirements]
- Affected areas: [files/modules identified]
Ask: "Anything missing or wrong here?"
Ask ONE question:
"How will we know this works? What would you test manually?"
The answer becomes acceptance criteria. Draft them and show:
ACCEPTANCE CRITERIA:
1. [testable criterion]
2. [testable criterion]
3. [testable criterion]
Each criterion MUST be testable — not "works well" but "returns 200 OK with user.id in response body." If the human gives vague criteria, make them specific.
Combine all four rounds into a spec document saved to
.sage/work/<YYYYMMDD>-<slug>/spec.md using the minimal spec template.
The spec includes a ## Framing section at the top (from Round 0),
followed by Intent, Boundaries, and Acceptance Criteria.
Show the complete spec. Ask: "Ready to plan implementation, or anything to adjust?"
If the user is visibly impatient, compress to 1 round. The compressed version merges pain + intent into one message:
"Before we spec this — what's the actual pain this solves? And then: what should it do when working perfectly?"
One message, two questions. Infer boundaries and criteria from context. Show the complete spec with a Framing section for validation.
Even compressed, the framing question survives. Round 0 can be compressed but NEVER eliminated. A compressed Round 0 still produces a Framing section in the spec.
MUST (violation = bad spec or lost trust):
SHOULD (violation = suboptimal experience):
MAY (context-dependent):
development
Branch-per-initiative git discipline for all delivery workflows. Defines branch naming by workflow, the propose-confirm creation protocol, dirty-tree and detached-HEAD handling, the always user-gated merge protocol, worktree support for parallel sessions, and abandonment cleanup. Activates only in git repositories — silently inactive everywhere else. Use when starting /build, /fix, /architect, or /build-x at Standard+ scope, when resuming an initiative, when offering a merge at a completion checkpoint, or when the user wants a second concurrent initiative.
development
Drives task-by-task execution from an approved plan with quality gates between each task. Reads the plan, finds the next incomplete task, dispatches implementation, validates, updates progress, and continues. Use after a plan is approved and the user says "go", "start building", "execute the plan", or "implement the feature".
testing
Preserves and restores context across agent sessions using plan file checkboxes as source of truth. Use when starting a new session, resuming previous work, ending a session, or when the user says "continue from last time", "what was I doing", or "save progress".
tools
Captures agent mistakes, corrections, and discovered gotchas so they are not repeated. Use when: (1) a command or operation fails unexpectedly, (2) the user corrects the agent, (3) the agent discovers non-obvious behavior through debugging, (4) an API or tool behaves differently than expected, (5) a better approach is found for a recurring task. Also searches past learnings before starting tasks to avoid known pitfalls. Activate alongside the sage-memory skill — they share the same MCP backend but serve different purposes (sage-memory = codebase knowledge, sage-self-learning = agent mistakes and gotchas).