/cc-product:specify — 무엇을 만들지 "확정"하는 단계
2단계: Specification — Seed spec 을 쓰고(/cc-spec:seed) Jev(판정 전용 모델)로 모호성·패널을 판정해 잠급니다(/cc-spec:verify --lock). `docs/seed-spec-{slug}.md`(LOCKED)·결정 기록·판정 리포트가 남고, PASS 여야 기획(/cc-product:plan)으로 넘어갑니다.
| 항목 | 내용 |
|---|---|
| 실행 명령 | /cc-product:specify |
| 분류 | 파이프라인 |
| 난이도 | ●●● 높음 |
파이프라인 2단계(Specification). "무엇을 만들지"를 누가 봐도 똑같이 이해되도록 한 장(Seed spec)에 못 박고, 그것이 충분히 또렷한지를 문서를 쓴 AI 가 아니라 판정 전용 모델(Jev) 에게 판정받아 잠급니다.
한마디로#
만들 것을 **"애매하지 않게 글로 못 박는 단계"**입니다. 집을 짓기 전에 "방은 몇 개, 창문은 어디"를 도면 한 장에 확정하고, 그 도면을 제3의 감리자가 통과시켜야 착공하는 것과 같아요.
누가·언제 쓰나요#
- 만들 방향은 정해졌는데 "정확히 무엇을, 어디까지" 만들지 아직 흐릿한 경우
- 명세 품질을 사람의 인상이 아니라 확률·점수로 확인하고 싶을 때
- 시점으로는 조사(Discovery)를 끝낸 뒤, 기획(Planning)에 들어가기 직전
👉 건너뛰어도 되는 경우: 이미 확정(LOCKED)된 핵심 명세(Seed spec)가 있고, 메타데이터의 Gate: 가 PASS 이며 그 지문(hash)이 현재 파일과 같은 경우.
👉 먼저 필요한 것: TYPESAFE_API_KEY. 없으면 판정은 "판정 불가(UNVERIFIED)"로 멈추고 이 단계는 완료되지 않습니다.
무엇을 해주나요#
docs/ 폴더에 세 파일이 남습니다.
- 핵심 명세 (
docs/seed-spec-(프로젝트이름).md) — 못 박은 "무엇을 만들지"의 확정본 (LOCKED) - 의사결정 기록 (
docs/decision-log-(프로젝트이름).md) — 무엇을 왜 그렇게 정했는지 - 판정 리포트 (
docs/spec-evaluation-(프로젝트이름).md) — Jev 의 모호성 점수·패널 판정·보완 안내
통과하면 다음 단계인 기획(/cc-product:plan) 으로 넘어갑니다.
어떻게 쓰나요#
/cc-product:specify "커뮤니티 기능"
/cc-product:specify --from docs/discovery-community.md
안에서 무슨 일이 벌어지나요#
-
핵심 명세 작성 (
/cc-spec:seed) — 요청에서 숨은 가정을 한 번 확인해 표로 받고, 핵심 문제·불변 제약·핵심 개념·합격 기준(AC-01…)을 초안으로 씁니다. -
판정·잠금 (
/cc-spec:verify --lock) — 기계 검사 10항목을 코드로 센 뒤, Jev 에 한 번의 요청으로 모호성 5차원과 3관점 패널을 묻습니다. 합격이면 잠급니다. 조건부면 지적을 고쳐 최대 2번 다시 받습니다.
작업이 길어 대화가 늘어났다면 /clear 후 새로 시작해도 됩니다 — 결과는 파일에 남아 있습니다.
⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)
Triggers#
- After Discovery completion, before Planning
- When spec quality must be verified by a backend other than the authoring model
Usage#
/cc-product:specify "Community feature"
/cc-product:specify --from docs/discovery-{slug}.mdParameters#
| Parameter | Required | Description | Example |
|---|---|---|---|
description | ✅ (or --from) | One-paragraph spec target | "Community feature" |
Options#
| Option | Default | Description |
|---|---|---|
--from | latest docs/discovery-*.md | Brief / discovery document to start from |
--slug | derived | Project slug |
Skip Conditions#
- A LOCKED Seed spec exists and its
Gate:metadata isPASSand the recordedspec_hash_shortequalspython3 "${CLAUDE_PLUGIN_ROOT:-plugins/cc-spec}/skills/jev-gate/scripts/jev_judge.py" parse→spec_hash[:7](a changed file invalidates the stamp).
Execution Flow#
Phase 1: Seed Spec#
Source: cc-spec → /cc-spec:seed
- Resolve input (argument /
--from/ latest discovery doc) - One assumption pass (≥ 3 assumptions, confirmed in a single round)
- Draft from template; self-check with
jev_judge.py check(no Jev call) - Artifacts:
docs/seed-spec-{slug}.md(DRAFT),docs/decision-log-{slug}.md
Phase 2: Jev Gate + Lock#
Source: cc-spec → /cc-spec:verify --lock
- Stage 1 — mechanical M-01..M-10 (
jev_judge.py check) - Stage 2 — one Jev request: ambiguity (5 score) + panel (3 choice)
- PASS → lock. CONDITIONAL → fix → re-run (≤ 2 rounds). FAIL → back to Phase 1. UNVERIFIED (no key / API error / unparseable) → stop; the stage is not complete.
- Artifact:
docs/spec-evaluation-{slug}.md; Seed metadataAmbiguity Score+Gatestamp
Gate: Specification Gate#
| Condition | Criteria |
|---|---|
| Mechanical | M-01..M-10 all PASS |
| Ambiguity score | ≤ 0.2, and no flagged Must/Must-Not row or contradiction |
| Panel | blocking = 0 (seats computed from row-level judgments; an uncertain check is not an approval) |
| Jev verified | verdict ≠ UNVERIFIED; stamp matches the file hash |
Pass → /cc-product:plan · Fail → revise and re-run
Artifacts#
| File | Path |
|---|---|
| Seed spec (LOCKED) | docs/seed-spec-{slug}.md |
| Decision log | docs/decision-log-{slug}.md |
| Evaluation report | docs/spec-evaluation-{slug}.md |
After Completion#
- Update specification status to
completedin.pipeline/{slug}.yaml, record artifact paths and the Jev stamp - Present context-clear handoff:
✅ Specification stage complete (Gate PASSED · Jev {model} · {spec_hash_short}). Artifacts saved:
- docs/seed-spec-{slug}.md (LOCKED)
- docs/decision-log-{slug}.md
- docs/spec-evaluation-{slug}.md
**Option 1 (Recommended)**: Clear context and continue to Planning
/clear
Then run: /cc-product:plan
**Option 2**: Continue in current context
Proceed directly to /cc-product:planRelated Commands#
/cc-product:discover— Previous stage (Discovery)/cc-product:plan— Next stage (Planning)/cc-spec:status --against …— later, drift checks of work against the locked seed