| name | goal-maker |
| description | /goal 명령에 사용할 condition 프롬프트를 5-7 인터뷰로 자동 생성. QJC 4-section 구조 (목적/조건/결과물/세부사항/세부 목적) + 앤트로픽 공식 권장 가드 5종 자동 주입 + stdout/클립보드/Desktop 파일 3-way 출력. 사용 시점 — /goal 프롬프트 작성 / "goal 프롬프트 만들어" / "/goal 명령 짤 거야" / 새 작업 시작 전 condition 설계. 직접 /goal 실행은 사용자가 새 세션에서 수행.
|
goal-maker — /goal Prompt Generator
비유: 비행 계획서 작성 보조관이다. 조종사(사용자)가 매번 비행 계획서를 손으로 쓰지 않게, 인터뷰 7개 질문으로 핵심을 받아 표준 양식 + 안전 가드(연료/날씨/대체공항)를 자동으로 채워서 출력한다.
언제 호출되는가
다음 사용자 발화/맥락에서 호출:
/goal-maker 슬래시 커맨드 직접 입력
/goal-maker <한 줄 주제> 시드 인자 입력
/goal-maker --quick 또는 /goal-maker --quick <주제> — 3-question 모드
- "goal 프롬프트 만들어줘" / "/goal 짜줘" / "condition 작성 도와줘"
- 새 큰 작업 시작 전 "이 작업을 /goal로 돌리려는데 프롬프트 작성"
절대 하지 말 것 (CRITICAL)
- ❌ 생성한 프롬프트로
/goal 자체를 자동 호출 — 사용자가 새 세션에서 직접 실행
- ❌ Q4 "측정 기준" 답이 모호하면("잘 동작해야") 그대로 넘어가지 말 것 — 재질문 의무 (G2)
- ❌ proof channel 누락 — 측정 기준만 있고 "어떻게 transcript에 surface될지" 없으면 evaluator 평가 불가 (G6)
- ❌ turn limit 누락 — infinite loop 방지를 위해 명시 의무 (G7, default 20턴)
- ❌ 외부 의존 항목 본문 혼입 — "사용자 시연 OK" / "인덱싱 완료" 같은 항목은 세션 외 분리 (G8)
- ❌ 가드 8종 중 하나라도 누락 후 deliver.sh 호출 —
references/qjc-goal-guard-checklist.md 12개 항목 통과 의무
- ❌ universal quantifier ("모두/끝까지/완전히") raw 그대로 출력 — G1 자동 변환 후에만 출력
워크플로우
Phase 0 — 모드 결정
| 입력 | 행동 |
|---|
/goal-maker (no args) | 풀 인터뷰 (Q1-Q7) |
/goal-maker "XYZ" | Q1 자동 채움 ("XYZ"), Q2-Q7 진행 |
/goal-maker --quick | Q1, Q3, Q4 (3-tap) |
/goal-maker --quick "XYZ" | Q3, Q4 (2-tap) |
--quick 모드는 Q2/Q5/Q6/Q7을 default 값으로 자동 채움:
- Q2 default:
(조건 미명시 — 사용자가 본 프롬프트 입력 시 추가 명시 권장)
- Q5 default:
테스트 완료 후 /handoff-verify /commit-push-pr --merge 까지 진행하라
- Q6 default:
궁극적으로 [Q1 주제]가 좋아져야 한다
- Q7 default: 없음 (skip)
Phase 1 — 인터뷰 (templates/interview-questions.json 참조)
중요: AskUserQuestion 도구로 한 번에 1-3개씩 묶어서 묻는다. brainstorming 룰의 "one at a time" 엄격성보다 사용자 시간 절약 우선. 단, Q4(측정 기준)는 다른 질문과 묶지 말고 단독으로 — 가장 중요하기 때문.
질문 묶음 권장:
- 1차: Q1 + Q2 + Q3 (목적/상황/결과물)
- 2차: Q4 단독 (measurable signal)
- 3차: Q5 + Q6 + Q7 (워크플로우/가치/제외)
각 질문 옵션은 multiple-choice 시도 (사용자가 빠르게 선택). 단 Q1, Q3, Q4는 자유 텍스트 입력 받아도 OK.
Q1. 무엇을 이루고 싶나요? (한 줄)
사용자에게 단답(한 줄)로 묻는다. 이 답이 4-section의 # 목적 첫 bullet이 된다.
가드 G1 적용: "모두/끝까지/모든/전부/완전히/완벽하게" 단어 감지 시 즉시 다음을 출력에 자동 적용:
| 원어 | 변환 |
|---|
| "모두 처리하라" | "Claude 권한 내에서 가능한 모두 처리하라" |
| "끝까지 진행" | "Claude 권한 내에서 끝까지 진행" |
| "완전히 자동화" | "Claude가 실행 가능한 범위 내에서 완전히 자동화" |
사용자에게 변환 사실을 짧게 안내 후 진행.
Q2. 현재 어떤 상황/제약이 있나요? (3-5 bullet)
복수 입력 OK. AskUserQuestion으로는 어려우니 자유 텍스트.
옵션 카드 (참고용):
- 기술 부채 / 외주 의존 / 시간 제약
- 새로 시작 (greenfield) / 기존 코드 수정 (brownfield)
- 고객/직원/외부 의존 항목 명시
Q3. 어떤 결과물이 나와야 끝난 건가요? (한 줄)
# 필수 결과물 매핑.
옵션 예시 (multiple-choice):
- "새로운 스킬 / 에이전트 / 커맨드"
- "기존 파일 수정 (UI/API/DB)"
- "리포트 / 분석 / 문서"
- "검색 최적화 / 메타데이터 / 인프라"
- 자유 입력 (Other)
Q4. "성공"을 어떻게 측정하나요? (가장 중요 — G2 강제)
이 질문이 가드 G2의 핵심. 단독 메시지로 질문.
모호한 답 거부 패턴:
| 거부 답변 | 재질문 |
|---|
| "잘 동작하면" | "검증 가능한 형태로 다시 — 예: unit test 12개 PASS / Lighthouse SEO ≥90 / 페이지 LCP ≤2.5s / gws calendar 6건 등록 확인" |
| "퍼펙트하게" | "Claude가 평가할 수 있는 binary 기준은? 예: 'Lighthouse a11y ≥95 (라이트+다크 양쪽)' / '8개 슬라이드 silent_clip=0'" |
| "좋아져야" | "어느 수치가 어떻게 바뀌어야? 예: 'CTR 베이스라인 +20%' / '월간 인입 리드 50건+'" |
좋은 답 패턴 (그대로 사용):
- "특정 테스트 N개 PASS"
- "Lighthouse [축] ≥ [점수]"
- "[URL] 페이지 [핵심 기능] 실행 검증"
- "사용자에게 [산출물 경로] 시연 + OK 응답"
- "스크린샷 N장 첨부 + 시각 검증"
Q5. 워크플로우 끝맺음?
## 세부사항 끝부분 매핑. multiple-choice 권장:
- "테스트 완료 후
/handoff-verify → /commit-push-pr --merge (권장 풀-사이클)"
- "테스트만 (
/handoff-verify 까지)"
- "테스트 + 직원 공유 (
dc push 포함)"
- "사용자 명시 stop point 까지 (예: '대표 검토 후 stop')"
G4 적용: 위 옵션에서 /handoff-verify 또는 "테스트" 포함 시 자동 letter-vs-spirit guard 추가.
Q6. 궁극적 비즈니스 가치는?
## 세부 목적 매핑. 자유 텍스트. 예시 7개와 동일 톤:
- "업무 효율과 성과가 좋아져야 한다"
- "노출이 잘 되고 전환이 되어야 한다"
- "광고 효율이 좋아져야 한다"
- "슬라이드 퀄리티가 좋아야 한다"
- "업무 프로세스가 좋아져야 한다"
Q7. 범위 제외 항목? (옵션, skip 가능)
# 조건 및 상황 추가 bullet 매핑 + G3 (scope guard) 강화. 자유 텍스트.
빈 입력이면 skip하되, G3는 default로 적용 (무관 리팩토링 금지).
Phase 2 — 자동 가드 8종 적용 (CRITICAL)
references/qjc-goal-guard-checklist.md 참조 + 본 워크플로우의 G1-G8 적용.
필수 검증 (출력 전 self-review):
[ ] G1: universal quantifier 0건 또는 보정 완료
[ ] G2: ## 세부사항 첫 줄 "**측정 기준**: <Q4 답변>" 존재
[ ] G3: ## 세부사항 끝에 "단, 본 작업 외 무관 리팩토링 금지" 존재
[ ] G4: Q5에 /handoff-verify 또는 테스트 → "테스트 카운트 감소 금지" 존재
[ ] G5: 출력 끝에 "_session 한계: ..._" 푸터 존재
[ ] G6: **증명 채널** — 측정 기준 직후 "Claude가 transcript에 출력할 형식" 명시 (CRITICAL, evaluator 평가 가능성 보장)
[ ] G7: **턴 제한** — "최대 N 턴 안에 완료 또는 명시적 사용자 승인" (default N=20)
[ ] G8: **세션 외 항목 분리** — 외부 의존(사용자 시연/인덱싱/다른 PC) 항목은 별도 섹션
[ ] Q1-Q7 모두 4-section에 정확히 매핑
[ ] 측정 기준이 binary 평가 가능 (LLM evaluator가 판단 가능)
[ ] 출력 길이 적절 (20-35줄)
[ ] 한국어 톤 유지 (영문 직역체 0)
G6 — Proof Channel (CRITICAL — 앤트로픽 공식 요구):
evaluator는 도구 호출 불가, conversation surface된 텍스트만 본다. 측정 기준만으론 부족 — Claude가 그 측정을 transcript에 어떻게 surface할지 명시해야 한다.
| Q4 측정 항목 | 자동 생성 증명 채널 |
|---|
| "unit test N개 PASS" | "본문에 `npm test` stdout 결과 첨부 — PASS N/N 카운트 명시" |
| "Lighthouse SEO ≥90" | "본문에 `Lighthouse 점수: SEO=NN/100, a11y=NN/100` 형식 출력" |
| "page LCP ≤ 2.5s" | "본문에 `LCP=N.Ns (target ≤ 2.5s)` 측정 결과 출력" |
| "PDF ≥ N쪽" | "본문에 `pdftotext -layout 결과: NN쪽` 카운트 출력" |
| "Supabase INSERT N건" | "본문에 `SELECT COUNT(*) FROM os_X WHERE created_at > '...' = N` 결과 출력" |
| "dc push 성공" | "본문에 `git push 결과: commit_hash, main 동기화 완료` 명시" |
| "build green" | "본문에 `npm run build exit code: 0` 명시" |
| "WCAG AA 위반 0" | "본문에 `axe-core 위반: light=0, dark=0` 출력" |
G7 — Turn Limit:
## 세부사항에 자동 추가:
- **턴 제한**: 최대 20턴 안에 condition 충족 또는 명시적 사용자 승인 요청 (turn count > 20 시 진행 중단 + 현 상태 사용자 보고)
복잡한 작업은 사용자가 N을 조정 (Q5 응답에서 "최대 N턴" 명시 가능).
G8 — 세션 외 항목 분리:
외부 의존 키워드 감지 시 자동으로 별도 섹션 분리:
| 감지 키워드 | 분리 사유 |
|---|
| "사용자 시연", "사용자 OK", "대표 검토" | 사용자 응답 의존 — Claude가 transcript로 충족 못 만듦 |
| "직원이 호출", "다른 PC", "팀원 사용" | 다른 환경 의존 |
| "ChatGPT 인용", "Perplexity 검색", "GSC 인덱싱" | 외부 API/플랫폼 지연 (N일+ 대기) |
| "결제 완료", "송금 도착" | 외부 시스템 응답 |
자동 추가 구조:
## 세부사항
...
### 세션 외 검증 (Plan에 명시 후 사용자 위임)
- {외부 의존 항목 1}
- {외부 의존 항목 2}
세션 내 항목과 분리되어, evaluator가 세션 내 항목만으로 condition 판단 가능.
Phase 3 — 출력 (scripts/deliver.sh 호출)
TOPIC_SLUG=$(echo "$Q1" | tr ' ' '-' | head -c 30)
DATE=$(date +%Y-%m-%d)
TMP=$(mktemp)
cat > "$TMP" << 'PROMPT_END'
<위 인터뷰 결과 빌드한 4-section 프롬프트>
PROMPT_END
bash "${CLAUDE_PLUGIN_ROOT}/skills/goal-maker/scripts/deliver.sh" "$TMP" "$TOPIC_SLUG" "$DATE"
deliver.sh가:
- stdout 미리보기 출력
- pbcopy로 클립보드 복사
~/Desktop/goal-${TOPIC_SLUG}-${DATE}.txt 저장
- 사용 안내 출력
Phase 4 — 사용 안내 (마지막 메시지)
✅ goal 프롬프트 생성 완료
📋 클립보드에 복사됨
📁 ~/Desktop/goal-<slug>-<date>.txt
💡 다음 단계:
1. 새 Claude Code 세션 시작
2. `/goal ` 입력 (뒤에 공백)
3. cmd+v 붙여넣기
4. Enter
⚠️ 알아둘 점:
- 이 프롬프트는 Claude 권한 내 가능 범위에 맞춰 자동 보정됨
- session 한계 (시크릿 추출/외부 계정 발급 등)는 푸터에 명시됨
- 작업 도중 `/goal clear`로 언제든 종료 가능
출력 템플릿 (v2 — 가드 8종)
templates/4-section-base.md 참조. 핵심 구조:
아래 목적을 진행하여 테스트 성공까지 진행하라. 필요한 정보가 있다면 브레인스토밍하라.
# 목적
- {Q1} ← G1 보정 적용
# 조건 및 상황
- {Q2 bullet 1}
- {Q2 bullet 2}
- {Q2 bullet N}
{Q7 있으면 추가}
# 필수 결과물
- {Q3}
## 세부사항
- **측정 기준**: {Q4} ← G2 필수
- **증명 채널** (Claude가 transcript에 surface할 형식): ← G6 CRITICAL
- {각 측정 항목별 출력 형식, 예: "npm test 결과 본문에 PASS N/N 출력"}
- **턴 제한**: 최대 20턴 안에 condition 충족 또는 명시적 사용자 승인 요청 ← G7
- {Q5 워크플로우} ← G4 자동 보강
- 테스트 통과를 위한 테스트 삭제 금지, 기존 테스트 카운트 유지 (G4 적용 시)
- 단, 본 작업 외 무관 리팩토링 / 의존성 업그레이드 / 다른 도메인 변경 금지 ← G3
### 세션 외 검증 (Plan에 명시 후 사용자 위임) ← G8 (해당 시)
- {외부 의존 항목 1}
- {외부 의존 항목 2}
## 세부 목적
- 궁극적으로 {Q6} 좋아져야 한다.
---
_session 한계: 시크릿 추출 / 외부 계정 신규 발급 / 사용자 명시 승인이 필요한 항목은 Claude 권한 밖이며, 해당 항목 발견 시 Plan에 명시 후 사용자 안내._ ← G5
핵심 변경 (v2):
- "측정 기준" 직후 증명 채널 라인 (G6) — Claude가 그 측정을 transcript에 surface하는 형식 명시
- 턴 제한 라인 (G7) — default 20턴
- 세션 외 검증 별도 섹션 (G8) — evaluator 평가 불가 항목 격리
→ evaluator(default Haiku)가 매 턴 후 condition + transcript를 평가할 때, 측정 결과가 Claude 본문에 명시적으로 surface되어 binary yes/no 판단 가능.
사용자 발화 예시
예시 1 — 기본 호출
사용자: /goal-maker
Claude: [Q1+Q2+Q3 묶음 질문]
사용자: [답변]
Claude: [Q4 단독 질문]
사용자: [답변]
Claude: [Q5+Q6+Q7 묶음 질문]
사용자: [답변]
Claude: [가드 5종 self-review → deliver.sh → 안내]
예시 2 — 시드 인자
사용자: /goal-maker "랜딩 페이지 SEO/GEO/AEO 최적화"
Claude: Q1을 "랜딩 페이지 SEO/GEO/AEO 최적화"로 자동 채웠습니다. Q2-Q7 진행합니다.
[Q2+Q3 묶음 질문]
...
예시 3 — Quick 모드
사용자: /goal-maker --quick "/lecture 핸드아웃 자세하게"
Claude: Q3, Q4만 묻습니다 (Q1 자동, Q2/Q5/Q6/Q7 default).
[Q3 질문]
사용자: [답변]
[Q4 단독]
사용자: [답변]
Claude: [출력]
종속 참조
| 파일 | 용도 |
|---|
references/anthropic-goal-best-practices.md | 앤트로픽 공식 가이드 요약 (acceptance test, scope guard, turn limit) |
references/qjc-goal-guard-checklist.md | G1-G5 자동 가드 9개 체크리스트 |
references/example-prompts-7.md | 예시 7개 패턴 분석 |
templates/4-section-base.md | 기본 출력 템플릿 |
templates/interview-questions.json | 표준 7 질문 JSON |
scripts/deliver.sh | stdout + pbcopy + Desktop 저장 |
README.md §"Why It Exists" | 4대 의무 도출 배경 (2026-05-22 사고 사례) |
비활성화
export QJC_GOAL_MAKER_DISABLED=1
권장 안 함. /goal 자동 생성 없이 직접 작성하면 무한 cycle 사고(2026-05-22) 재발 위험.
사고 사례 학습 통합
본 스킬은 다음 사고로부터 학습됨:
- 2026-05-22
/goal "후속 작업 모두 직접 진행하라" 무한 cycle (universal quantifier deadlock)
- 앤트로픽 공식 가이드 (2026-05, Claude Code 2.1.139)
- 처방 → G2 (measurable), G3 (scope), G4 (letter-vs-spirit)
메타-개선 트리거
본 스킬 사용 중 다음 패턴 발견 시 즉시 룰 추가:
- 사용자가 "이 질문 빼" 정정 → 인터뷰 질문 우선순위 재조정
- 출력 가드 무시 → 가드 자동 적용 강화
- 새 가드 패턴 발견 → G6, G7 추가