skills/audit/SKILL.md
Revenue Readiness Audit — 45분 진단, Clarity Dimensions 정량 평가, Track A/B/C 추천. 프로젝트 진단, 매출 준비도 확인 시 사용.
npx skillsauth add october-academy/agnt auditInstall 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.
Revenue Readiness Audit — 45분 진단으로 프로젝트의 매출 준비 상태를 정량 평가하고 맞춤 Track을 추천합니다.
.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 검색, 점수 계산)은 무음 처리.
진단 중(Step 1-3) 절대 사용하지 않는 표현:
항상 해야 하는 것:
첫 번째 답은 포장된 답이다. 진짜 답은 2-3번째 push에서 나온다.
유저: "개발자를 위한 AI 도구를 만들고 있어"
BAD: "큰 시장이네! 어떤 도구인지 알아보자."
GOOD: "지금 AI 개발자 도구가 10,000개야. 어떤 개발자가 매주 2시간 이상 낭비하는
어떤 작업을 네 도구가 없애줘? 그 사람 이름을 대봐."
한 번 push하고, 다시 push해. 예시:
절대 질문을 묶지 마. 한 번에 여러 질문을 하면 얕은 답이 나오고 점수 측정이 부정확해진다.
BAD: "타겟이 누구야? 기술 스택은? 인증은 어떻게 할 거야?" GOOD: "네 제품을 가장 간절하게 필요로 하는 한 명이 있다면, 그 사람 직업이 뭐야?"
Audit도 자유 입력보다 선택지를 먼저 준다.
project.*, stage, 직전 답변을 바탕으로 동적으로 만든다유저가 조급함을 표현하면 ("그냥 해줘", "질문 그만"):
{AGNT_DIR}/state.json Read.
meta.schema_version != 3 → "먼저 /agnt:start를 실행하세요." 종료Resume 체크: audit_progress가 null이 아니면 중단된 세션이 있다.
AskUserQuestion:
audit_progress.current_step부터 시작audit_progress = null로 초기화 후 Step 1부터이미 완료된 Audit: audit_result가 null이 아니면:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
이미 Audit를 완료했어
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Track: {audit_result.track}
Verdict: {audit_result.verdict}
자기 평가: {audit_result.user_confidence}/5
AskUserQuestion:
/agnt:next를 안내하고 종료출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Revenue Readiness Audit
Step 1/4 · 프로젝트 진단
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45분이면 끝나. 4단계로 네 프로젝트를 정량 평가하고
가장 빠른 매출 경로를 찾아줄게.
기존 project. 데이터가 있는 경우*:
이전에 정의한 내용이 있어:
문제: {project.problem}
ICP: {project.icp}
가설: {project.hypothesis}
{project.url이 있으면 → "사이트: " + project.url}
Recon Report 참조: {AGNT_DIR}/recon-report.md가 존재하면 Read하여 evidence_clarity 초기 점수에 반영:
project.url이 있고 recon-report가 없으면, Stage B/C/D에서 Site Reconnaissance를 수행한다 (start 스킬의 3.5절 동일 절차).
AskUserQuestion: "이 내용으로 진행할까, 새로 정의할까?"
유저의 현재 단계를 파악하여 질문을 분기한다.
AskUserQuestion: "지금 어느 단계야?"
Stage에 따른 질문 선택:
A (아이디어) → Q1, Q2, Q3
B (빌딩 중) → Q1, Q2, Q4
C (유저 있음) → Q1, Q2, Q4, Q5
D (매출 있음) → Q1, Q4, Q5, Q6
모든 답변을 4가지 차원에서 0.0~1.0로 평가한다:
Readiness = buyer_clarity × 0.35 + problem_clarity × 0.30 + offer_clarity × 0.20 + evidence_clarity × 0.15
| 차원 | 가중치 | 측정 대상 | |------|:------:|----------| | Buyer Clarity | 35% | 구매자가 누구인지 구체적으로 아는가 | | Problem Clarity | 30% | 풀고 있는 문제가 실재하고 절박한가 | | Offer Clarity | 20% | 뭘 얼마에 어떤 형태로 파는지 아는가 | | Evidence Clarity | 15% | 검증 시도/증거가 있는가 |
매 라운드 후 내부적으로 점수를 업데이트하되 유저에게는 ambiguity %만 표시:
Round {n} | Targeting: {가장 낮은 차원} | Ambiguity: {(1 - readiness) × 100}%
순차 AskUserQuestion — 한 번에 하나만, Push×3 적용. 각 질문은 먼저 선택지로 받고, 선택지만으로 부족할 때만 한 줄 근거를 받는다.
Q1 Demand Reality AskUserQuestion: "네 제품이 내일 사라지면 진짜 화날 사람이 있어?"
Q2 Status Quo AskUserQuestion: "그 사람들은 지금 이 문제를 어떻게 버티고 있어?"
project.problem과 ICP 맥락에 안 맞는 옵션은 넣지 않는다Q3 Desperate Specificity AskUserQuestion: "ICP는 어디까지 좁혀져 있어?"
Q4 Narrowest Wedge AskUserQuestion: "이번 주 안에 돈 받을 수 있는 가장 작은 버전은?"
Q5 Observation & Surprise AskUserQuestion: "실제 사용/행동을 본 적이 있어?"
Q6 Future-Fit AskUserQuestion: "3년 뒤 이 문제는 어떻게 될 것 같아?"
선택지가 B/C/D인 경우에만, 필요한 질문에서 한 줄 근거 추가:
질문이 한 주제에 3라운드 연속 머물면, 강제로 줌아웃:
"잠깐, 지금 {주제}에 3번 연속 깊이 들어갔어. 한 발 물러서서 — 아직 다루지 않은 다른 문제가 있어?"
2라운드 연속 readiness 점수가 ±0.05 이내로 변하지 않으면:
"지금 질문 방향을 바꿔볼게." → 가장 낮은 clarity 차원이 아닌, 두 번째로 낮은 차원으로 targeting 전환.
수집한 답변을 저장:
project.problem (핵심 문제 추출) — 모든 Stage에서 수집됨project.icpproject.hypothesisproject.name은 Q1에서 자동 생성 (짧은 프로젝트명)audit_progress 저장: { current_step: 2, data: { stage, questions_asked, answers, clarity_scores }, readiness: {score} } → state.json Write
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 2/4 · 시장 판정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ambiguity: {(1 - readiness) × 100}%
가장 약한 차원: {weakest_dimension}
몇 가지 더 물어볼게.
Weakest-Dimension Targeting: Step 1에서 가장 낮은 clarity 차원을 공략.
순차 AskUserQuestion — Push×3 + 한 번에 하나:
Buyer Clarity가 낮으면: AskUserQuestion: "ICP 명확도는 어느 쪽이야?"
Problem Clarity가 낮으면: AskUserQuestion: "현재 대안의 불만은 어느 쪽이 더 커?"
Offer Clarity가 낮으면: AskUserQuestion: "우리 오퍼 상태는 어디에 가까워?"
Evidence Clarity가 낮으면: AskUserQuestion: "지금까지 실제로 해본 검증은?"
추가 질문 (순차, 한 번에 하나):
AskUserQuestion: "기술 스택은 어디에 가까워?"
기타 — 한 줄 입력E를 선택한 경우에만: "기술 스택을 한 줄로 적어줘."
"시장은 국내야? 해외야?"
한국 시장 구조적 제약 체크 (국내 시장인 경우):
{REFS_DIR}/biz/biz-setup-decision.md Read하여 한국 시장 특수 상황 확인.
출력: "한국 시장이면 결제 수단 확보가 관건이야. 사업자 등록 없이도 가능한 방법이 있어 — 나중에 /agnt:biz-setup에서 안내할게."
각 답변 후 clarity scores 업데이트.
audit_progress 저장: { current_step: 3, data: { ...기존 + step2 답변 }, readiness: {score} } → state.json Write
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 3/4 · 판정 + 맞춤 경로
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
판정 로직 (Readiness Score 기반):
Readiness Score를 기반으로 Track을 결정:
| Readiness Score | Verdict | Track | |:---------------:|---------|:-----:| | 0.70 ~ 1.00 | buyer_exists | A | | 0.40 ~ 0.69 | buyer_uncertain | B | | 0.00 ~ 0.39 | buyer_absent | C |
보조 검증 — 5개 신호로 교차 확인:
| 신호 | buyer_exists (A) | buyer_uncertain (B) | buyer_absent (C) | |------|:-:|:-:|:-:| | 기존 검증 시도 | 있음 (인터뷰/랜딩/사전판매) | 일부 있음 | 없음 | | 경쟁/대안 | 있고 불만 명확 | 있지만 불만 불명확 | 없거나 무료 대안 충분 | | ICP 구체성 | 이름 대면 떠오름 | 집단은 알지만 개인 불명 | "누구나" | | 가격 가설 | 금액까지 언급 | "돈 낼 것 같다" 수준 | 가격 언급 없음 | | 차별점 | 1문장으로 명확 | 설명 필요 | 불명확 |
Readiness Score 기반 Track과 신호 교차 검증이 다르면 → 5개 신호 중 3개 이상 다른 Track을 가리키면 한 단계 보수적으로 하향 (A→B 또는 B→C). AI 판정 실패 시 → fallback to Track C.
판정 출력:
══════════════════════════════════════════
Revenue Readiness Audit 결과
══════════════════════════════════════════
VERDICT: {verdict 한국어}
buyer_exists → "7일 안에 구매자를 만날 수 있어"
buyer_uncertain → "가능성은 있지만 검증이 필요해"
buyer_absent → "아직 구매자가 보이지 않아 — 문제부터 찾자"
──────────────────────────────────────────
Clarity Breakdown
──────────────────────────────────────────
Buyer Clarity: {score}/1.0 [{bar}] (×0.35)
Problem Clarity: {score}/1.0 [{bar}] (×0.30)
Offer Clarity: {score}/1.0 [{bar}] (×0.20)
Evidence Clarity: {score}/1.0 [{bar}] (×0.15)
Readiness Score: {readiness}/1.00
Ambiguity: {(1-readiness)×100}%
근거:
1. {reason_1}
2. {reason_2}
3. {reason_3}
──────────────────────────────────────────
맞춤 경로: Track {track}
──────────────────────────────────────────
{Track 설명}
Track A (5일): 문제가 명확하고 바로 빌드
→ ICP 정리 → 랜딩 → 결제 → 런칭 → 분석 → 수익 확정
Track B (7-8일): 문제가 있지만 검증 필요
→ ICP 정의 → ICP 인터뷰 → SPEC → 랜딩 → BIP → 결제 → 런칭 → 분석
Track C (10일): 아직 문제를 찾는 중
→ 문제 발견 → ICP 정의 → 인터뷰 → BIP → SPEC → 랜딩 → SEO → 결제 → 분석 → 런칭 → 광고
참고: Track C가 나쁜 게 아니야. 대부분 여기서 시작해.
10일이 오래 느껴질 수 있지만, 검증 없이 빌드하면 3개월 날린다.
══════════════════════════════════════════
Track별 첫 24시간 액션 (모멘텀 유지):
Track A: "오늘 /agnt:icp로 ICP 문서를 확정해. 그 다음 /agnt:landing으로 넘어가." Track B: "오늘 /agnt:icp를 실행해. 인터뷰할 사람 기준부터 문서로 고정해." Track C: "오늘 /agnt:discover를 실행해. 문제를 고른 뒤 /agnt:icp로 좁혀."
Simplifier Challenge (Track A/B인 경우):
Track A/B로 판정되면, 한 번 도전:
"잠깐 — 가장 단순한 버전으로 생각해보자. 네가 말한 것 중에서 반을 잘라낸다면 뭐가 남아? 그 절반만으로도 누군가 돈을 내겠어?"
이 답변으로 Track을 재조정하진 않지만, journey-brief에 기록하여 빌드 단계에서 참조.
AskUserQuestion: "이 판정이 맞아?"
답변을 audit_result.user_confidence에 저장.
user_confidence가 1-2인 경우:
"판정이 안 맞다고 느끼면 /agnt:audit를 다시 실행해도 돼. 아니면 이 Track으로 시작하고 나중에 방향을 바꿔도 괜찮아."
audit_result 저장:
{
"track": "A" | "B" | "C",
"verdict": "buyer_exists" | "buyer_uncertain" | "buyer_absent",
"user_confidence": 1-5,
"reasons": ["reason_1", "reason_2", "reason_3"],
"readiness_score": 0.00-1.00,
"clarity_scores": {
"buyer": 0.0-1.0,
"problem": 0.0-1.0,
"offer": 0.0-1.0,
"evidence": 0.0-1.0
},
"simplifier_insight": "...",
"completed_at": "ISO8601"
}
audit_progress 초기화: null (완료했으므로)
state.json Write.
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 4/4 · 커뮤니티
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
혼자 하면 느려. 같은 여정을 걷는 사람들이 있어.
October Academy — Agentic Engineer 양성 교육
https://october-academy.com
Agentic Garage Seoul — 1인 빌더 밋업
https://lu.ma/agentic_garage
Discord — 실시간 소통
https://discord.gg/H4A459FG5r
지금 안 들어가도 돼. 나중에 막힐 때 찾아가면 돼.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{AGNT_DIR}/journey-brief.md Read 시도.
## Audit 섹션을 Replace:
## Audit
- Track: {audit_result.track}
- Verdict: {audit_result.verdict} — {verdict 한국어 설명}
- Readiness Score: {readiness_score}/1.00 (Ambiguity: {ambiguity}%)
- Clarity Breakdown:
- Buyer: {score} | Problem: {score} | Offer: {score} | Evidence: {score}
- 근거:
1. {reason_1}
2. {reason_2}
3. {reason_3}
- Simplifier Insight: {simplifier_insight}
- 진단일: {audit_result.completed_at}
journey-brief.md Write.
meta.last_action = "audit"
meta.total_actions++
state.json Write.
ToolSearch로 +agentic30 검색.
도구 발견 시:
submit_practice("wf-audit") 호출sync.pending_events에 큐잉도구 없으면:
sync.pending_events에 { type: "submit_practice", args: { quest_id: "wf-audit" }, created_at: now() } 추가완료 출력:
══════════════════════════════════════════
Audit 완료
══════════════════════════════════════════
Track {track} · {verdict 한국어}
Readiness: {score}/1.00 · Ambiguity: {ambiguity}%
다음 명령:
/agnt:next — Track {track} 맞춤 다음 행동 추천
/agnt:status — 현재 상태 확인
══════════════════════════════════════════
project.*를 소유한다. Track A/B 유저는 /agnt:discover를 별도로 실행할 필요 없음audit_progress는 각 Step 완료 시마다 저장 (세션 중단 시 resume 가능)audit_result 저장 시 audit_progress를 null로 초기화identity, sync 필드가 state에 없으면 navigator-engine.md 기본값 사용tools
도구 비교 가이드 — 결제, 마케팅, 분석, 광고 도구. 도구 비교, 결제 솔루션 선택 시 사용.
testing
구독 전략 설계 — niche, paywall, pricing, trial, 플랫폼, 웹 병행 전략을 정한다. 앱/구독형 제품 monetization 설계 시 사용.
tools
현재 상태 대시보드 — 진행 현황, 시그널, 도구, 리더보드. 진행 상태 확인 시 사용.
data-ai
Agentic30 온보딩 + 상태 초기화. 시작하기, 프로젝트 시작 시 사용.