In my last article, I added Flow B to SKILLmama: run /skillmama with no arguments, and it scans your project, finds capability gaps, and asks before it searches. The whole point was to stop the AI from guessing what you need.
Then @alexshev left this comment:
Having the AI ask first is underrated because it changes the contract from answer-generation to ambiguity-reduction. The best agents I have used spend a little time shrinking the unknowns before they touch code.
"Ambiguity-reduction over answer-generation." That's a sharper framing of the idea than I'd come up with myself. But reading it back, I realized the comment had quietly exposed a hole in my own design.
The Hole
SKILLmama has two entry points:
-
Flow B —
/skillmamawith no args → scan → ask → search -
Flow A —
/skillmama find me a job queue→ scan → search
Flow B asked first. Flow A didn't.
When you named a capability directly, SKILLmama scanned your project for stack context — and then went straight to searching and ranking. It reduced the ambiguity it could see from your files, but it never reduced the ambiguity it couldn't: budget, license, self-hosted vs. hosted, "must work with what I already run."
So /skillmama find me a job queue on a solo side project would happily return an enterprise-grade, infra-heavy #1 pick — technically the highest score, practically wrong for the person asking. The commenter's principle applied perfectly to Flow B. Flow A was still in answer-generation mode.
The Fix: Phase 1.5
I added one step to Flow A: Confirm Constraints.
Phase 0 — parse the request
Phase 1 — scan the project
Phase 1.5 — if no constraints were stated: ask ONE informed question, then STOP ← new
Phase 2 — derive search terms
Phase 3 — search
...
The key word is informed. Because Phase 1 already scanned your stack, the question isn't a generic "any constraints?" — it's built from what it just found:
SKILLmama: I see you're on Python / FastAPI / PostgreSQL / Docker / OpenAI.
Before I search — any constraints? (e.g. self-hosted, open-source only,
free tier, must integrate with PostgreSQL). Reply "none" to search with no filters.
Then it stops and waits — same hard stop that makes Flow B collaborative.
The Three Rules That Keep It From Being Annoying
A clarifying question is only good if it doesn't fire when it shouldn't. So Phase 1.5 has guardrails:
1. It only fires when you gave no constraints. If you already said find me an open-source job queue, the constraint is on the table — it skips the question and searches immediately. No nagging.
2. It degrades gracefully. If there are no project files to scan (empty folder, fresh repo), it doesn't print a broken I see you're on [nothing] sentence. It falls back to a generic constraint question instead.
3. It asks once. No re-prompting loops. One question, your answer (or "none"), then it runs.
Why "One Informed Question" Beats "A Form"
I could have made Flow A ask the same three questions Flow B asks. I didn't, on purpose.
Flow B earns three questions because it's doing open-ended discovery — it found a handful of gaps and needs to know which ones matter, what your constraints are, and what it missed. Flow A already knows the capability. The only real unknown left is constraints. Asking more than that would be friction for its own sake.
The contract the commenter described — shrink the unknowns before you touch code — doesn't mean "ask everything." It means ask for the smallest input that most changes the output. For a scored ranking, that input is constraints: a single "must be self-hosted" can reorder the entire top 3.
What Changed
Phase 1.5 is live in v1.4.0 across all four adapters — Claude Code, Claude.ai, OpenAI Codex, and Antigravity. Both entry points now reduce ambiguity before they act; they just ask the right number of questions for how much they already know.
npx skills add Magithar/SKILLmama
github.com/Magithar/SKILLmama — Apache 2.0.
And if you've got a sharp observation about where it still guesses instead of asking — leave a comment. The last one became a release.
Top comments (0)