# I Got Tired of Asking "What Am I Missing?" — So I Made My AI Ask First

> Source: <https://dev.to/magithar/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first-g8>
> Published: 2026-06-30 20:11:39+00:00

In my [first article](https://dev.to/magithar/stop-guessing-which-library-to-use-i-built-an-ai-capability-discovery-engine-3p7p), I built SKILLmama: an AI skill that finds, scores, and ranks the best library for your exact stack.

In my [second article](https://dev.to/magithar/a-high-score-means-nothing-if-the-tool-is-dangerous-so-i-added-a-security-gate-3hpc), I added a security gate — because a high score means nothing if the tool is dangerous.

Both of those workflows had the same assumption baked in: **you already know what you're looking for.**

You type `/skillmama find me a job queue for Node.js`

and it searches, scores, and returns ranked picks. That's great when you have a specific gap in mind.

But most of the time, you don't. You're deep in building something and you haven't stopped to ask: *do I have auth? do I have observability? do I have a queue?* You find out the hard way — when a feature ships without rate limiting, or when something breaks and there's no error tracking.

So I flipped the workflow. In v1.3, `/skillmama`

with no arguments scans your project first and asks what to find.

**Before (Flow A — still exists):**

```
/skillmama find me an auth library for Next.js
    ↓
scan project for stack context
    ↓
search → score → recommend
```

**Now (Flow B — triggered when no capability is given):**

```
/skillmama
    ↓
deep scan: reads package files, config, source structure
    ↓
gap analysis: what's missing for this type of project?
    ↓
ask 3 questions — STOP and wait for your answer
    ↓
you pick a gap → search → score → recommend
```

Both flows converge at the same search and scoring pipeline. Flow B just adds the scan and Q&A in front.

When you run `/skillmama`

with no arguments, it reads:

`package.json`

, `pyproject.toml`

, `go.mod`

, etc.)`Dockerfile`

, `docker-compose.yml`

, `.env.example`

, `vercel.json`

, `fly.toml`

)`README.md`

and `CLAUDE.md`

From that, it builds a **Stack Profile**:

```
Language:      TypeScript
Framework:     Next.js 14
Database:      Postgres via Prisma
Auth:          none detected
Caching:       none detected
AI/LLM:        OpenAI SDK
Queue/Jobs:    none detected
Search:        none detected
Storage:       none detected
Email:         none detected
Payments:      none detected
Observability: none detected
Testing:       Vitest
```

Once the Stack Profile is built, SKILLmama doesn't just flag every empty row as a gap. It looks at what the project is actually doing and assigns severity:

For a Next.js app with OpenAI already wired up, the output might look like this:

```
## SKILLmama — Project Scan

Stack detected: TypeScript / Next.js 14 / Postgres / OpenAI / no auth

Capability gaps found:

| # | Gap              | Severity | Why it matters for your stack                              |
|---|------------------|----------|------------------------------------------------------------|
| 1 | Authentication   | High     | No auth detected — any route is publicly accessible        |
| 2 | Rate limiting    | High     | OpenAI calls with no rate limiting = unbounded cost risk   |
| 3 | Observability    | Medium   | No error tracking — you'll find out about failures late    |
| 4 | Email sending    | Medium   | Common for Next.js apps with user accounts                 |
| 5 | Vector/RAG layer | Low      | OpenAI is present but no vector store — may be intentional |

A few quick questions before I search:
1. Which gap(s) would you like me to find options for?
2. Any constraints? (self-hosted, open-source, must have MCP support, etc.)
3. Anything I missed about your project or plans?
```

Then it **stops**. It does not proceed until you reply.

The first version of this flow I sketched out just picked the highest-severity gap automatically and ran with it. That was wrong for two reasons:

**1. Severity is relative to intent.** A High gap for a consumer SaaS is a Low gap for an internal tool. The scanner doesn't know which one you're building — you do.

**2. You might want to address multiple gaps in order.** If you reply "1 and 2", SKILLmama runs the full search and scoring pipeline once per gap and presents each as its own results block. You get ranked picks for auth *and* rate limiting in one session, not just the first one.

The hard stop is what makes Flow B collaborative rather than presumptuous.

Once you reply — say "1 and 3, open-source preferred" — SKILLmama sets:

`capability`

= Authentication, Observability`constraints`

= open-source preferredAnd jumps straight to Phase 2 (deriving search terms). It **skips Phase 0 and Phase 1** entirely — the stack is already known from the scan, so there's nothing left to parse.

From there, the same pipeline runs as always:

```
Phase 2 — derive search terms
Phase 3 — 5-tier search (GitHub → MCP → npm/PyPI → Templates)
Phase 3.5 — security gate (libraries)
Phase 3.6 — companion skills search
Phase 3.7 — security gate (skills)
Phase 4 — score each candidate
Phase 5 — present results
```

For the auth gap on a Next.js + Postgres stack, that produces something like:

```
Scoring all candidates against TypeScript / Next.js 14 / Postgres:

| Candidate   | Compat | Pop | Maint | Simple | Score    |
|-------------|--------|-----|-------|--------|----------|
| NextAuth.js | 10     | 9   | 9     | 9      | **9.55** |
| Lucia        | 9      | 7   | 10    | 8      | **8.75** |
| Clerk        | 8      | 8   | 10    | 10     | **8.90** |

#1 — NextAuth.js · Score: 9.55/10
The de facto auth layer for Next.js — first-party adapter, zero config for most providers.
- Compatibility: 10/10 — built for Next.js, Prisma adapter available
- Popularity:     9/10 — 22k stars, 800k npm downloads/week
- Maintenance:    9/10 — committed 1 week ago
- Simplicity:    9/10  — provider config only, Prisma adapter is one import
- Security:      PASS
- Install: npm install next-auth
```

Flow B is live across all four adapters:

| Adapter | How to trigger Flow B |
|---|---|
| Claude Code |
`/skillmama` (no args) |
| Claude.ai |
`/skillmama` (no args) |
| OpenAI Codex | `"scan my project and tell me what I need"` |
| Antigravity | `"scan my project and tell me what I need"` |

**Any agent (via skills CLI):**

```
npx skills add Magithar/SKILLmama
```

**Claude Code:**

```
cp .claude/commands/skillmama.md /your-project/.claude/commands/skillmama.md
```

Then `/skillmama`

in any Claude Code session — no arguments needed.

**Claude.ai:** Upload the pre-built `skillmama.zip`

from the repo under Customize → Skills.

**OpenAI Codex:** Place `codex/AGENTS.md`

in your repo root.

**Antigravity:** Load `antigravity/PROMPT.md`

as system prompt.

Apache 2.0. If you used v1.0, v1.1, or v1.2 — pull the latest. The only new behavior is what happens when you run `/skillmama`

with nothing after it.

Found a gap category that should be in the scanner? Open an [issue](https://github.com/Magithar/SKILLmama/issues) — the list is meant to grow with real project types.
