"내가 놓치고 있는 게 뭐지?"라고 묻는 게 지겨워져서, AI가 먼저 질문하게 만들었습니다
요약
사용자가 무엇을 찾는지 모를 때 AI가 먼저 프로젝트를 스캔하고 필요한 기능을 제안하는 SKILLmama v1.3의 워크플로우 변화를 소개합니다. 기존의 수동 검색 방식에서 벗어나 프로젝트의 스택 프로필을 분석하고 격차 분석(Gap Analysis)을 통해 필요한 기술 스택을 역으로 질문하는 에이전트 중심의 접근법을 다룹니다.
핵심 포인트
- 사용자의 명시적 요청 없이도 프로젝트를 스캔하여 필요한 기술을 제안
- 패키지 파일, 설정, 소스 구조를 분석하여 스택 프로필 구축
- 단순 누락 확인이 아닌 프로젝트 맥락에 따른 격차 분석(Gap Analysis) 수행
- 보안과 관측성 등 필수 기능을 놓치지 않도록 돕는 능동적 워크플로우
제 첫 번째 글에서 저는 SKILLmama를 만들었습니다. 이는 사용자의 정확한 스택에 가장 적합한 라이브러리를 찾아내고, 점수를 매기며, 순위를 정하는 AI 기술 (skill)입니다.
제 두 번째 글에서는 보안 게이트 (security gate)를 추가했습니다. 도구가 위험하다면 높은 점수는 아무런 의미가 없기 때문입니다.
이 두 워크플로우 (workflow)에는 동일한 가정이 깔려 있었습니다: 당신은 이미 무엇을 찾고 있는지 알고 있다는 것입니다.
당신이 /skillmama find me a job queue for Node.js라고 입력하면, AI는 검색하고, 점수를 매기고, 순위가 매겨진 선택지를 반환합니다. 이는 구체적인 공백을 염두에 두고 있을 때는 아주 좋습니다.
하지만 대부분의 경우, 그렇지 않습니다. 무언가를 만드는 데 몰두하다 보면 다음과 같은 질문을 던지는 것을 잊곤 합니다: 인증 (auth) 기능이 있는가? 관측성 (observability) 기능이 있는가? 큐 (queue)가 있는가? 결국 속도 제한 (rate limiting) 없이 기능이 배포되거나, 무언가 고장 났는데 에러 트래킹 (error tracking)이 되지 않을 때 고생하며 깨닫게 됩니다.
그래서 저는 워크플로우를 뒤집었습니다. v1.3에서는 인자 없이 /skillmama를 입력하면, 먼저 프로젝트를 스캔한 뒤 무엇을 찾아야 할지 질문합니다.
기존 흐름 vs 새로운 흐름
이전 (흐름 A — 여전히 존재함):
/skillmama find me an auth library for Next.js
↓
스택 컨텍스트 (stack context)를 위해 프로젝트 스캔
...
현재 (흐름 B — 기능이 주어지지 않았을 때 트리거됨):
/skillmama
↓
심층 스캔 (deep scan): 패키지 파일, 설정, 소스 구조 읽기
...
두 흐름 모두 동일한 검색 및 점수 산정 파이프라인 (pipeline)에서 만납니다. 흐름 B는 단지 그 앞에 스캔과 질의응답 (Q&A) 단계를 추가했을 뿐입니다.
스캔이 실제로 하는 일
인자 없이 /skillmama를 실행하면 다음 항목들을 읽습니다:
- 패키지 파일 (
package.json,pyproject.toml,go.mod등) - 설정 및 인프라 (
Dockerfile,docker-compose.yml,.env.example,vercel.json,fly.toml) README.md및CLAUDE.md- 소스 파일 구조 (전체 읽기가 아닌 파일 목록)
- 2~4개의 대표적인 소스 파일 — 엔트리 포인트 (entry point), 라우트 핸들러 (route handler), 모델 (model)
여기서부터는 **스택 프로필(Stack Profile)**을 구축합니다:
Language: TypeScript
Framework: Next.js 14
Database: Postgres via Prisma
...
격차 분석 (Gap Analysis): 빠진 모든 것이 문제가 아닐 때
SKILLmama는 스택 프로필이 구축된 후, 단순히 빈 행(empty row)을 발견할 때마다 격차로 표시하지 않습니다. 대신 프로젝트가 실제로 무엇을 하고 있는지 살펴보고 심각도(severity)를 할당합니다:
- High (높음) — 이 유형의 앱에서는 일반적이며, 곧 필요할 가능성이 높음
- Medium (중간) — 유용하지만 긴급하지는 않음
- Low (낮음) — 추측성 / 있으면 좋은 기능(nice-to-have)
OpenAI가 이미 연결된 Next.js 앱의 경우, 출력은 다음과 같을 수 있습니다:
## SKILLmama — 프로젝트 스캔
감지된 스택: TypeScript / Next.js 14 / Postgres / OpenAI / 인증(auth) 없음
...
그런 다음 멈춥니다. 사용자가 답변할 때까지 진행하지 않습니다.
하드 스톱이 중요한 이유
제가 처음 구상했던 이 플로우의 버전은 단순히 가장 높은 심각도의 격차 하나만 자동으로 선택하여 실행했습니다. 그것은 두 가지 이유로 잘못되었습니다:
1. 심각도는 의도(intent)에 상대적입니다. 소비자용 SaaS 앱에서 'High' 격차가 내부 도구에서는 'Low' 격차일 수 있습니다. 스캐너는 사용자가 어떤 것을 만들고 있는지 알지 못합니다. 그것은 사용자만이 압니다.
2. 여러 격차를 순서대로 다루고 싶을 수 있습니다. 만약
Phase 2 — 검색어 도출 (derive search terms)
Phase 3 — 5단계 검색 (GitHub → MCP → npm/PyPI → Templates)
Phase 3.5 — 보안 게이트 (libraries)
...
Next.js + Postgres 스택의 인증 격차 (auth gap)에 대해, 다음과 같은 결과가 생성됩니다:
TypeScript / Next.js 14 / Postgres 기준 모든 후보군 점수 산정:
| 후보군 (Candidate) | 호환성 (Compat) | 인기 (Pop) | 유지보수 (Maint) | 단순성 (Simple) | 점수 (Score) |
| --- | --- | --- | --- | --- | --- |
...
어댑터(Adapters)에서 변경된 사항
Flow B가 네 가지 어댑터 모두에 적용되었습니다:
| 어댑터 (Adapter) | Flow B 트리거 방법 |
|---|---|
| Claude Code | /skillmama (인자 없음) |
| ... |
설치 (Install)
모든 에이전트 (skills CLI를 통해):
npx skills add Magithar/SKILLmama
Claude Code:
cp .claude/commands/skillmama.md /your-project/.claude/commands/skillmama.md
그 다음 모든 Claude Code 세션에서 /skillmama를 입력하세요 — 인자는 필요하지 않습니다.
Claude.ai: 리포지토리에서 미리 빌드된 skillmama.zip을 다운로드하여 Customize → Skills에 업로드하세요.
OpenAI Codex: codex/AGENTS.md 파일을 리포지토리 루트에 배치하세요.
Antigravity: antigravity/PROMPT.md를 시스템 프롬프트 (system prompt)로 로드하세요.
리포지토리 (The Repo)
Apache 2.0 라이선스입니다. v1.0, v1.1 또는 v1.2를 사용 중이었다면 최신 버전을 가져오세요 (pull). 유일하게 새로 추가된 동작은 /skillmama 뒤에 아무것도 입력하지 않고 실행했을 때 발생하는 동작입니다.
스캐너에 포함되어야 할 격차 카테고리를 발견하셨나요? 이슈 (issue)를 생성해 주세요 — 이 목록은 실제 프로젝트 유형에 따라 계속 확장될 예정입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기