{"slug": "i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first", "title": "I Got Tired of Asking \"What Am I Missing?\" — So I Made My AI Ask First", "summary": "A developer built SKILLmama, an AI skill that scans a project's stack and identifies missing capabilities. Version 1.3 adds a gap analysis feature that asks developers what they need, rather than requiring them to specify a library upfront. The tool reads package files, configs, and source structure to build a stack profile and suggest relevant libraries.", "body_md": "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.\n\nIn 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.\n\nBoth of those workflows had the same assumption baked in: **you already know what you're looking for.**\n\nYou type `/skillmama find me a job queue for Node.js`\n\nand it searches, scores, and returns ranked picks. That's great when you have a specific gap in mind.\n\nBut 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.\n\nSo I flipped the workflow. In v1.3, `/skillmama`\n\nwith no arguments scans your project first and asks what to find.\n\n**Before (Flow A — still exists):**\n\n```\n/skillmama find me an auth library for Next.js\n    ↓\nscan project for stack context\n    ↓\nsearch → score → recommend\n```\n\n**Now (Flow B — triggered when no capability is given):**\n\n```\n/skillmama\n    ↓\ndeep scan: reads package files, config, source structure\n    ↓\ngap analysis: what's missing for this type of project?\n    ↓\nask 3 questions — STOP and wait for your answer\n    ↓\nyou pick a gap → search → score → recommend\n```\n\nBoth flows converge at the same search and scoring pipeline. Flow B just adds the scan and Q&A in front.\n\nWhen you run `/skillmama`\n\nwith no arguments, it reads:\n\n`package.json`\n\n, `pyproject.toml`\n\n, `go.mod`\n\n, etc.)`Dockerfile`\n\n, `docker-compose.yml`\n\n, `.env.example`\n\n, `vercel.json`\n\n, `fly.toml`\n\n)`README.md`\n\nand `CLAUDE.md`\n\nFrom that, it builds a **Stack Profile**:\n\n```\nLanguage:      TypeScript\nFramework:     Next.js 14\nDatabase:      Postgres via Prisma\nAuth:          none detected\nCaching:       none detected\nAI/LLM:        OpenAI SDK\nQueue/Jobs:    none detected\nSearch:        none detected\nStorage:       none detected\nEmail:         none detected\nPayments:      none detected\nObservability: none detected\nTesting:       Vitest\n```\n\nOnce 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:\n\nFor a Next.js app with OpenAI already wired up, the output might look like this:\n\n```\n## SKILLmama — Project Scan\n\nStack detected: TypeScript / Next.js 14 / Postgres / OpenAI / no auth\n\nCapability gaps found:\n\n| # | Gap              | Severity | Why it matters for your stack                              |\n|---|------------------|----------|------------------------------------------------------------|\n| 1 | Authentication   | High     | No auth detected — any route is publicly accessible        |\n| 2 | Rate limiting    | High     | OpenAI calls with no rate limiting = unbounded cost risk   |\n| 3 | Observability    | Medium   | No error tracking — you'll find out about failures late    |\n| 4 | Email sending    | Medium   | Common for Next.js apps with user accounts                 |\n| 5 | Vector/RAG layer | Low      | OpenAI is present but no vector store — may be intentional |\n\nA few quick questions before I search:\n1. Which gap(s) would you like me to find options for?\n2. Any constraints? (self-hosted, open-source, must have MCP support, etc.)\n3. Anything I missed about your project or plans?\n```\n\nThen it **stops**. It does not proceed until you reply.\n\nThe 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:\n\n**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.\n\n**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.\n\nThe hard stop is what makes Flow B collaborative rather than presumptuous.\n\nOnce you reply — say \"1 and 3, open-source preferred\" — SKILLmama sets:\n\n`capability`\n\n= Authentication, Observability`constraints`\n\n= 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.\n\nFrom there, the same pipeline runs as always:\n\n```\nPhase 2 — derive search terms\nPhase 3 — 5-tier search (GitHub → MCP → npm/PyPI → Templates)\nPhase 3.5 — security gate (libraries)\nPhase 3.6 — companion skills search\nPhase 3.7 — security gate (skills)\nPhase 4 — score each candidate\nPhase 5 — present results\n```\n\nFor the auth gap on a Next.js + Postgres stack, that produces something like:\n\n```\nScoring all candidates against TypeScript / Next.js 14 / Postgres:\n\n| Candidate   | Compat | Pop | Maint | Simple | Score    |\n|-------------|--------|-----|-------|--------|----------|\n| NextAuth.js | 10     | 9   | 9     | 9      | **9.55** |\n| Lucia        | 9      | 7   | 10    | 8      | **8.75** |\n| Clerk        | 8      | 8   | 10    | 10     | **8.90** |\n\n#1 — NextAuth.js · Score: 9.55/10\nThe de facto auth layer for Next.js — first-party adapter, zero config for most providers.\n- Compatibility: 10/10 — built for Next.js, Prisma adapter available\n- Popularity:     9/10 — 22k stars, 800k npm downloads/week\n- Maintenance:    9/10 — committed 1 week ago\n- Simplicity:    9/10  — provider config only, Prisma adapter is one import\n- Security:      PASS\n- Install: npm install next-auth\n```\n\nFlow B is live across all four adapters:\n\n| Adapter | How to trigger Flow B |\n|---|---|\n| Claude Code |\n`/skillmama` (no args) |\n| Claude.ai |\n`/skillmama` (no args) |\n| OpenAI Codex | `\"scan my project and tell me what I need\"` |\n| Antigravity | `\"scan my project and tell me what I need\"` |\n\n**Any agent (via skills CLI):**\n\n```\nnpx skills add Magithar/SKILLmama\n```\n\n**Claude Code:**\n\n```\ncp .claude/commands/skillmama.md /your-project/.claude/commands/skillmama.md\n```\n\nThen `/skillmama`\n\nin any Claude Code session — no arguments needed.\n\n**Claude.ai:** Upload the pre-built `skillmama.zip`\n\nfrom the repo under Customize → Skills.\n\n**OpenAI Codex:** Place `codex/AGENTS.md`\n\nin your repo root.\n\n**Antigravity:** Load `antigravity/PROMPT.md`\n\nas system prompt.\n\nApache 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`\n\nwith nothing after it.\n\nFound 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.", "url": "https://wpnews.pro/news/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first", "canonical_source": "https://dev.to/magithar/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first-g8", "published_at": "2026-06-30 20:11:39+00:00", "updated_at": "2026-06-30 20:18:49.196229+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "ai-agents"], "entities": ["SKILLmama", "Next.js", "OpenAI", "Postgres", "Prisma", "Vitest"], "alternates": {"html": "https://wpnews.pro/news/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first", "markdown": "https://wpnews.pro/news/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first.md", "text": "https://wpnews.pro/news/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first.txt", "jsonld": "https://wpnews.pro/news/i-got-tired-of-asking-what-am-i-missing-so-i-made-my-ai-ask-first.jsonld"}}