Audit
Revenue Readiness Audit — 45분 진단, Clarity Dimensions 정량 평가, Track A/B/C 추천. 프로젝트 진단, 매출 준비도 확인 시 사용.From its SKILL.md
npx -y skills add october-academy/agnt --skill auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
20.0 KB, as published. Nobody here has run it
Revenue Readiness Audit — 45분 진단으로 프로젝트의 매출 준비 상태를 정량 평가하고 맞춤 Track을 추천합니다.
데이터 경로 결정
AGNT_DIR
.claude/agnt/state.json을 Read 시도 → 성공하면 AGNT_DIR =.claude/agnt- 실패 시
~/.claude/agnt/state.jsonRead 시도 → 성공하면 AGNT_DIR =~/.claude/agnt - 실패 시
.codex/agnt/state.jsonRead 시도 → 성공하면 AGNT_DIR =.codex/agnt - 실패 시
~/.codex/agnt/state.jsonRead 시도 → 성공하면 AGNT_DIR =~/.codex/agnt - 모두 없으면 → "먼저
/agnt:start로 시작하세요." 출력 후 종료
REFS_DIR
{AGNT_DIR}/references/shared/navigator-engine.md 존재 여부로 탐색 (navigator-engine.md의 Section 2 참조).
출력 규칙
내부 로직(경로 탐색, state 파싱, MCP 검색, 점수 계산)은 무음 처리.
진단 원칙
Anti-Sycophancy 규칙
진단 중(Step 1-3) 절대 사용하지 않는 표현:
- "좋은 접근이야" → 대신: 포지션을 테이킹해. 이게 되는지 안 되는지 말해.
- "여러 관점이 있어" → 대신: 하나를 골라.
- "고려해볼 수 있어" → 대신: "이 가설은 약해. 왜냐면..."
- "그것도 괜찮아" → 대신: 될지 안 될지 말해.
- "이해할 수 있어" → 대신: 근거가 부족하면 부족하다고 해.
항상 해야 하는 것:
- 모든 답변에 포지션을 테이킹하라. 네 입장 + "어떤 증거가 있으면 입장을 바꿀 것인지"도 말해.
- 유저의 주장에서 가장 강한 버전을 도전하라. 약한 버전을 허수아비로 치지 마.
- 주장을 도전하되, 사람을 공격하지 마. "네 답은 아직 추상적이야. 이 가설이 약한 이유를 보자."가 맞고, "틀렸어"는 틀림.
Push×3 방법론
첫 번째 답은 포장된 답이다. 진짜 답은 2-3번째 push에서 나온다.
유저: "개발자를 위한 AI 도구를 만들고 있어"
BAD: "큰 시장이네! 어떤 도구인지 알아보자."
GOOD: "지금 AI 개발자 도구가 10,000개야. 어떤 개발자가 매주 2시간 이상 낭비하는
어떤 작업을 네 도구가 없애줘? 그 사람 이름을 대봐."
한 번 push하고, 다시 push해. 예시:
- "기업 대상이라고 했잖아. 구체적으로 어느 회사 누구?"
- "'수요가 있다'고 했는데, 내일 제품이 사라지면 진짜 화낼 사람이 누구야?"
한 번에 하나만 질문
절대 질문을 묶지 마. 한 번에 여러 질문을 하면 얕은 답이 나오고 점수 측정이 부정확해진다.
BAD: "타겟이 누구야? 기술 스택은? 인증은 어떻게 할 거야?" GOOD: "네 제품을 가장 간절하게 필요로 하는 한 명이 있다면, 그 사람 직업이 뭐야?"
선택지 우선
Audit도 자유 입력보다 선택지를 먼저 준다.
- 1차: 상태/강도/유형을 3-5개 선택지로 받는다
- 2차: 꼭 필요한 경우에만 한 줄 근거를 받는다
- URL, 숫자, 실제 관찰 메모, 제품 한 줄 설명만 자유 입력 허용
- 선택지는 하드코딩하지 않고
project.*, stage, 직전 답변을 바탕으로 동적으로 만든다
Escape Hatch
유저가 조급함을 표현하면 ("그냥 해줘", "질문 그만"):
- 첫 번째: "알겠어. 근데 어려운 질문이 바로 가치야 — 시험 건너뛰고 처방전 받는 거랑 같아. 두 개만 더 물어볼게."
- 두 번째 pushback: 존중하고 넘어가. 세 번째는 물어보지 마.
실행 절차
0. state 확인 + resume 체크
{AGNT_DIR}/state.json Read.
meta.schema_version != 3→ "먼저/agnt:start를 실행하세요." 종료
Resume 체크: audit_progress가 null이 아니면 중단된 세션이 있다.
AskUserQuestion:
- A) 이어서 진행 —
audit_progress.current_step부터 시작 - B) 처음부터 다시 —
audit_progress = null로 초기화 후 Step 1부터
이미 완료된 Audit: audit_result가 null이 아니면:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
이미 Audit를 완료했어
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Track: {audit_result.track}
Verdict: {audit_result.verdict}
자기 평가: {audit_result.user_confidence}/5
AskUserQuestion:
- A) 다시 진단할래 — audit_result, audit_progress 초기화 후 Step 1부터
- B) 이대로 유지 —
/agnt:next를 안내하고 종료
Step 1: 스테이지 라우팅 + 프로젝트 진단 (15분)
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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 초기 점수에 반영:
- recon 항목 7개 중 4개 이상 ✅ → evidence_clarity 초기값 0.4
- recon 항목 2-3개 ✅ → evidence_clarity 초기값 0.2
- recon 항목 0-1개 ✅ 또는 파일 없음 → evidence_clarity 초기값 0.0
project.url이 있고 recon-report가 없으면, Stage B/C/D에서 Site Reconnaissance를 수행한다 (start 스킬의 3.5절 동일 절차).
AskUserQuestion: "이 내용으로 진행할까, 새로 정의할까?"
- A) 이대로 진행 — Step 1 Stage Routing으로 이동
- B) 새로 정의 — 아래 질문 진행
Stage Routing
유저의 현재 단계를 파악하여 질문을 분기한다.
AskUserQuestion: "지금 어느 단계야?"
- A) 아이디어만 있어 (아직 아무것도 안 만듦)
- B) 만들고 있어 / 만들었어 (유저 없음)
- C) 유저가 있어 (유료 전환 전)
- D) 돈을 받고 있어 (매출 발생)
Stage에 따른 질문 선택:
A (아이디어) → Q1, Q2, Q3
B (빌딩 중) → Q1, Q2, Q4
C (유저 있음) → Q1, Q2, Q4, Q5
D (매출 있음) → Q1, Q4, Q5, Q6
Clarity Dimensions (가중 점수)
모든 답변을 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}%
질문 (Stage에 따라 선택)
순차 AskUserQuestion — 한 번에 하나만, Push×3 적용. 각 질문은 먼저 선택지로 받고, 선택지만으로 부족할 때만 한 줄 근거를 받는다.
Q1 Demand Reality AskUserQuestion: "네 제품이 내일 사라지면 진짜 화날 사람이 있어?"
- 강도 기반 선택지 3-4개를 동적으로 생성
- 예: 없음 / 애매함 / 1-2명 명확 / 여러 명 명확
Q2 Status Quo AskUserQuestion: "그 사람들은 지금 이 문제를 어떻게 버티고 있어?"
- 현재 대안 유형을 3-5개 동적으로 생성
project.problem과 ICP 맥락에 안 맞는 옵션은 넣지 않는다
Q3 Desperate Specificity AskUserQuestion: "ICP는 어디까지 좁혀져 있어?"
- buyer clarity 수준에 맞는 선택지 3-4개를 동적으로 생성
Q4 Narrowest Wedge AskUserQuestion: "이번 주 안에 돈 받을 수 있는 가장 작은 버전은?"
- 현재 제품 단계에 맞는 wedge 상태 선택지 3-4개를 동적으로 생성
Q5 Observation & Surprise AskUserQuestion: "실제 사용/행동을 본 적이 있어?"
- evidence 강도 선택지 3-4개를 동적으로 생성
Q6 Future-Fit AskUserQuestion: "3년 뒤 이 문제는 어떻게 될 것 같아?"
- 미래 중요도 선택지 3-4개를 동적으로 생성
선택지가 B/C/D인 경우에만, 필요한 질문에서 한 줄 근거 추가:
- "근거가 되는 한 장면만 적어줘."
Perspective Shift (터널비전 방지)
질문이 한 주제에 3라운드 연속 머물면, 강제로 줌아웃:
"잠깐, 지금 {주제}에 3번 연속 깊이 들어갔어. 한 발 물러서서 — 아직 다루지 않은 다른 문제가 있어?"
Stall Detection
2라운드 연속 readiness 점수가 ±0.05 이내로 변하지 않으면:
"지금 질문 방향을 바꿔볼게." → 가장 낮은 clarity 차원이 아닌, 두 번째로 낮은 차원으로 targeting 전환.
수집한 답변을 저장:
- Q1 답변 →
project.problem(핵심 문제 추출) — 모든 Stage에서 수집됨 - Q2 답변 → buyer/problem clarity 점수에 반영 (별도 저장 없음)
- Q3 답변 →
project.icp - Q4 답변 →
project.hypothesis - Q5 답변 → evidence_clarity 점수에 반영
- Q6 답변 → journey-brief 기록용 (clarity 점수 기여 없음, 전략적 인사이트)
project.name은 Q1에서 자동 생성 (짧은 프로젝트명)
audit_progress 저장: { current_step: 2, data: { stage, questions_asked, answers, clarity_scores }, readiness: {score} } → state.json Write
Step 2: 시장 판정 (10분)
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step 2/4 · 시장 판정
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Ambiguity: {(1 - readiness) × 100}%
가장 약한 차원: {weakest_dimension}
몇 가지 더 물어볼게.
Weakest-Dimension Targeting: Step 1에서 가장 낮은 clarity 차원을 공략.
순차 AskUserQuestion — Push×3 + 한 번에 하나:
Buyer Clarity가 낮으면: AskUserQuestion: "ICP 명확도는 어느 쪽이야?"
- buyer clarity를 설명하는 선택지 3-4개를 동적으로 생성
Problem Clarity가 낮으면: AskUserQuestion: "현재 대안의 불만은 어느 쪽이 더 커?"
- 현재 문제 맥락에서 plausible한 불만 선택지 3-5개를 동적으로 생성
Offer Clarity가 낮으면: AskUserQuestion: "우리 오퍼 상태는 어디에 가까워?"
- 오퍼 선명도 상태 선택지 3-4개를 동적으로 생성
Evidence Clarity가 낮으면: AskUserQuestion: "지금까지 실제로 해본 검증은?"
- 현재 프로젝트 단계에서 가능한 검증 유형 3-5개를 동적으로 생성
추가 질문 (순차, 한 번에 하나):
AskUserQuestion: "기술 스택은 어디에 가까워?"
- 현재 제품 형태에 맞는 기술/전달 방식 후보 3-5개를 동적으로 생성
- 마지막 선택지는 항상
기타 — 한 줄 입력
E를 선택한 경우에만: "기술 스택을 한 줄로 적어줘."
- 자유 입력
"시장은 국내야? 해외야?"
- A) 국내
- B) 해외
- C) 둘 다
한국 시장 구조적 제약 체크 (국내 시장인 경우):
{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: 판정 + 맞춤 경로 (15분)
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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: "이 판정이 맞아?"
- 1~5 점수 (1 = 전혀 아님, 5 = 정확함)
답변을 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: 커뮤니티 연결 (5분)
출력:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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
지금 안 들어가도 돼. 나중에 막힐 때 찾아가면 돼.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. Journey-brief 기록
{AGNT_DIR}/journey-brief.md Read 시도.
- 없으면 navigator-engine.md의 journey-brief 템플릿으로 새로 생성
- 있으면 기존 파일 사용
## 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.
6. 완료 + MCP 제출
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 — 현재 상태 확인
══════════════════════════════════════════
규칙
- Audit는
project.*를 소유한다. Track A/B 유저는/agnt:discover를 별도로 실행할 필요 없음 - AI가 Track을 판정하지 못하면 fallback to Track C (가장 보수적)
audit_progress는 각 Step 완료 시마다 저장 (세션 중단 시 resume 가능)audit_result저장 시audit_progress를 null로 초기화- 한 번에 하나의 질문만 (절대 묶지 않음)
- Push×3 적용 — 첫 답변에서 끝나지 않고 파고듦
- Anti-sycophancy — 포장하지 말고 포지션 테이킹
- Perspective shift — 한 주제에 3라운드 이상 머물면 줌아웃
- Stall detection — 2라운드 점수 정체 시 targeting 전환
- 한국어 출력, 기술 용어 원문 유지
- 반말 톤
identity,sync필드가 state에 없으면 navigator-engine.md 기본값 사용