skills/discover/SKILL.md
문제 선택 + ICP 초안 + 가설 수립. 어떤 문제를 풀지 좁히는 단계.
npx skillsauth add october-academy/agnt discoverInstall 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.
문제 선택 워크플로우. 풀 문제를 찾고, ICP 초안을 만들고, 가설 씨앗을 세웁니다.
.claude/agnt/state.json을 Read 시도 → 성공하면 AGNT_DIR = .claude/agnt~/.claude/agnt/state.json Read 시도 → 성공하면 AGNT_DIR = ~/.claude/agnt.codex/agnt/state.json Read 시도 → 성공하면 AGNT_DIR = .codex/agnt~/.codex/agnt/state.json Read 시도 → 성공하면 AGNT_DIR = ~/.codex/agnt/agnt:start로 시작하세요." 출력 후 종료{AGNT_DIR}/references/shared/navigator-engine.md 존재 여부로 탐색 (navigator-engine.md의 Section 2 참조).
내부 로직(경로 탐색, state 파싱, MCP 검색)은 무음 처리.
{AGNT_DIR}/state.json Read.
meta.schema_version != 3 → "먼저 /agnt:start를 실행하세요." 종료project.problem이 null이 아니면:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
이미 문제를 정의했어
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
문제: {project.problem}
ICP: {project.icp}
가설: {project.hypothesis}
AskUserQuestion:
/agnt:next를 안내하고 종료출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
팔리는 문제 찾기
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
좋은 문제의 3가지 조건:
1. 누군가 지금 이 순간 겪고 있다
2. 기존 대안이 불만족스럽다
3. 돈을 내고 해결할 의향이 있다
Q1: "어떤 문제를 풀고 싶어?"
AskUserQuestion:
D를 선택한 경우 — 발견 가이드:
아이디어가 없는 건 정상이야.
문제를 찾는 3가지 방법:
1. 불편 일기: 오늘 하루 불편했던 순간 3개를 적어봐
2. 커뮤니티 관찰: GeekNews, OKKY, Threads에서
"~하고 싶은데", "~가 불편한데" 패턴 찾기
3. 기존 제품 리뷰: 경쟁 제품 리뷰에서 불만 패턴 찾기
AskUserQuestion: "어디서 가장 강한 힌트를 봤어?"
기타 — 한 줄로 적을래E를 선택한 경우에만: AskUserQuestion: "뭘 발견했는지 한 줄로 적어줘."
A/B/C를 선택한 경우 — 구체화:
AskUserQuestion: "문제 성격은 어디에 가까워?"
기타 — 한 줄로 직접 적을래F를 선택한 경우에만: AskUserQuestion: "문제를 한 줄로 적어줘."
유저 답변을 받은 후:
좋아. 이제 그 문제를 겪는 사람의 초안을 잡자.
AskUserQuestion: "ICP 초안으로 가장 가까운 쪽은?"
기타 — 한 줄로 적을래F를 선택한 경우에만: AskUserQuestion: "직업 + 상황까지 한 줄로 적어줘."
ICP 답변 후, 아래 조건에 하나라도 해당하면 1회 후속 질문:
Push-back 발동 조건 (rule-based):
Push-back: "ICP가 너무 넓어. 가설 검증이 어려워져. 그 사람이 어떤 상황에 있는 사람이야? 예를 들면 '3년차 프론트엔드, 사이드프로젝트 경험 없음'처럼."
Push-back은 1회만. 재답변 후 진행.
마지막으로, 가설을 세우자.
"[ICP]가 [문제]를 해결하기 위해 [솔루션]에 [금액]을 낼 것이다"
AskUserQuestion: "가설의 과금 형태는?"
AskUserQuestion: "가격대는 어디에 가까워?"
아직 모름 허용AskUserQuestion: "가설 문장을 자동으로 조합할까?"
B를 선택한 경우에만: AskUserQuestion: "가설을 한 줄로 적어줘."
가설이 수립된 후:
AskUserQuestion: "이 가설을 한 번 뒤집어볼까?"
A 선택 시:
이 가설의 가장 취약한 가정은 뭐야?
• 아무도 이 문제를 신경 안 쓴다면?
• 기존 대안으로 충분히 만족하는 사람이 대다수라면?
• "{ICP}가 {금액}을 낼 거다" — 이걸 지지하는 신호를 하나라도 봤어?
AskUserQuestion: "가장 취약한 가정은 뭐야?"
기타 — 한 줄로 적을래E를 선택한 경우에만: AskUserQuestion: "취약 가정을 한 줄로 적어줘."
답변에 관계없이:
이걸 확인하는 게 /agnt:interview의 목적이야.
B 선택 시: 바로 7단계로 진행.
수집한 답변을 정리하여 출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
문제 정의 완료
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📌 문제: {정리된 문제}
👤 ICP: {정리된 타겟}
💡 가설: {정리된 가설}
이건 아직 ICP 초안이야.
다음 단계: /agnt:icp — deep-interview로 docs/ICP.md를 완성하자.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
state.json 업데이트:
project.problem = 정리된 문제project.icp = 정리된 ICPproject.hypothesis = 정리된 가설project.name = 문제에서 추출한 짧은 프로젝트명 (2-4 단어)meta.last_action = "discover"meta.total_actions++{AGNT_DIR}/journey-brief.md Read 시도.
파일이 없는 경우: navigator-engine.md의 journey-brief 템플릿으로 신규 생성.
decision-brief.md가 있고 journey-brief.md가 없으면: 파일명 변경 후 사용.
파일이 있는 경우: ## Discovery 섹션을 Replace.
Discovery 섹션:
## Discovery
- 문제: {정리된 문제}
- ICP 초안: {정리된 ICP}
- 가설: {정리된 가설}
- 취약 가정: {6-bis A선택 답변 or "(미선택)"}
ToolSearch로 +agentic30 검색.
도구 발견 시:
save_interview 호출: problem, icp, hypothesis를 저장submit_practice 호출: quest_id = "wf-discover"도구 없으면 (identity.mode != "synced" 또는 ToolSearch 실패):
sync.pending_events에 추가 (50건 초과 시 가장 오래된 이벤트 제거):
{ "type": "submit_practice", "args": { "quest_id": "wf-discover" }, "created_at": "<now()>" }
identity.mode != "synced" AND sync.last_inline_nudge_at == null인 경우:
💾 완료한 퀘스트의 XP를 받으려면 /agnt:connect
→ 나중에 연결해도 지금까지의 XP가 한 번에 적립돼.
sync.last_inline_nudge_at = now() 기록
tools
도구 비교 가이드 — 결제, 마케팅, 분석, 광고 도구. 도구 비교, 결제 솔루션 선택 시 사용.
testing
구독 전략 설계 — niche, paywall, pricing, trial, 플랫폼, 웹 병행 전략을 정한다. 앱/구독형 제품 monetization 설계 시 사용.
tools
현재 상태 대시보드 — 진행 현황, 시그널, 도구, 리더보드. 진행 상태 확인 시 사용.
data-ai
Agentic30 온보딩 + 상태 초기화. 시작하기, 프로젝트 시작 시 사용.