/cc-spec:seed — 흔들리지 않는 "핵심 명세" 굳히기
한 문단 요청(또는 `docs/discovery-*.md`)에서 흔들리지 않는 핵심 명세 `docs/seed-spec-{slug}.md`(DRAFT) 와 결정 기록을 만듭니다 — 숨은 가정을 한 차례 확인해 S5 를 채우고 기계 검사(M-01~M-10)까지만 자체 점검합니다. 판정·잠금은 /cc-spec:verify 가 합니다.
| 항목 | 내용 |
|---|---|
| 실행 명령 | /cc-spec:seed |
| 분류 | 스펙 명확화 |
| 난이도 | ●●○ 보통 |
무엇을 만들지에 대한 한 문단 요청을, 함부로 바꾸지 않는 제품의 "변하지 않는 뼈대(Seed 명세)" 한 장으로 정리합니다.
한마디로#
요청을 나중에 흔들리지 않는 "핵심 약속" 한 장으로 굳히는 단계입니다.
건물로 치면, 인테리어는 바꿔도 되지만 절대 못 옮기는 "기둥과 골조"를 먼저 박아두는 일과 같아요.
예전처럼 다섯 단계 인터뷰를 거치지 않습니다 — 숨은 가정은 한 번의 확인 표로 끄집어내고, "충분히 명확한가"의 판정은 이 명령이 하지 않고 다음 명령(/cc-spec:verify)에서
별도의 판정 모델(Jev) 이 합니다.
누가·언제 쓰나요#
- 만들 방향은 정해졌는데 "정확히 무엇을, 어디까지" 만들지 아직 글로 못 박지 않은 경우
- "이건 절대 바뀌면 안 된다"는 핵심 문제·제약을 문서로 남기고 싶을 때
- 파이프라인에서는 조사(Discovery)를 끝낸 직후, 기획(Planning)에 들어가기 전
👉 먼저 필요한 것: 한 문단짜리 요청 문장 하나면 됩니다. docs/discovery-*.md 가 있으면 그것을 읽어 출발합니다.
무엇을 해주나요#
파일 두 개가 만들어집니다.
-
docs/seed-spec-{프로젝트이름}.md— 핵심 명세(처음엔 초안/DRAFT 상태). 핵심 문제, 절대 바꾸면 안 되는 제약, 핵심 개념, 합격 기준(AC-01, AC-02 …), 드러난 가정이 정리됩니다. docs/decision-log-{프로젝트이름}.md— 앞으로의 결정들을 기록할 "의사결정 일지"의 시작점
여기서 만든 명세는 아직 "초안"입니다. 판정(/cc-spec:verify)을 통과해야 "잠금(LOCKED)"됩니다.
어떻게 쓰나요#
/cc-spec:seed "독자가 같은 책을 읽는 사람과 대화를 시작할 수 있는 커뮤니티"
/cc-spec:seed --from docs/discovery-community.md # 조사 문서에서 출발
/cc-spec:seed --slug community # 프로젝트 식별 이름 직접 지정
--from 을 생략하면 인자 문장을, 그것도 없으면 한 문단 요청을 물어봅니다.
--slug 을 생략하면 요청에서 프로젝트 이름을 자동으로 뽑아냅니다.
안에서 무슨 일이 벌어지나요#
크게 다섯 단계로 진행됩니다.
- 입력 정하기 — 인자 문장 /
--from문서 / 질문, 셋 중 하나로 출발점을 잡습니다. - 가정 확인 (한 번) — 그 요청이 당연하게 깔고 있는 전제를 3개 이상 표로 보여 주고, 맞다/아니다/이렇게 고쳐 달라를 한 번에 받습니다. 꼬리 질문을 이어 가지 않습니다.
- 초안 만들기 — 정해진 양식에 맞춰 핵심 문제(한 문장), 불변 제약(C-01…), 핵심 개념, 합격 기준(AC-01… Must/Must-Not/May), 확인된 가정(A-01…), 변경 이력(v1.0.0)을 채웁니다.
- 자체 점검(무료) — 빠진 칸이 없는지 기계 검사 10항목(M-01~M-10)을 스크립트로 돌려 봅니다. 판정 모델은 부르지 않습니다.
- 검토·저장 — 초안을 보여 드리고 항목별 의견을 반영한 뒤 DRAFT 로 저장하고 결정 기록 파일을 만듭니다.
다음은 /cc-spec:verify 입니다 — 여기서 Jev 가 모호성·패널 판정을 내리고, 통과하면 잠급니다.
⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)
Usage#
/cc-spec:seed "{one-paragraph request}"
/cc-spec:seed --from {discovery-file} # start from docs/discovery-*.md (or any brief)
/cc-spec:seed --slug {project-slug}Parameters#
| Parameter | Description | Default |
|---|---|---|
{request} | One-paragraph statement of what to build | asked interactively if absent |
--from | Brief / discovery document path | latest docs/discovery-*.md if present |
--slug | Project slug | derived from the request |
Execution Flow#
1. Resolve Input#
- Priority: positional request →
--fromfile → latestdocs/discovery-*.md→ ask the user for one paragraph. - If
docs/seed-spec-{slug}.mdalready exists, confirm whether to overwrite (DRAFT) or stop (LOCKED → suggest/cc-spec:evolve).
2. Assumption Pass (exactly one round)#
- Extract ≥ 3 implicit assumptions (technical / business / user) from the input and present them as a table:
| ID | Assumption | Type | Confirm? | - Collect the user's answers once (confirm / deny / rephrase). Denied assumptions become S4
Must-Notcandidates or S2 constraints; confirmed ones fill S5 withUnverified+ a verification method. - Do not recurse into follow-up levels.
config/thresholds.yamlseed_spec.min_assumptions(3) is the floor because M-08 requires it.
3. Generate Seed Spec Draft#
From config/templates/seed-spec.md:
- S1 Core Problem: one sentence, no assumptions, user/business outcome
- S2 Immutable Constraints:
C-NN+ rationale + Type (Technical/Business/Legal) - S3 Domain Entities:
### Namewith Attributes / Relationships / Invariants — all three lines present - S4 Acceptance Boundaries: one flat table,
AC-NN, Type ∈ Must/Must-Not/May, StatusPENDING; at least one Must and one Must-Not - S5 Exposed Assumptions: the confirmed assumptions (
A-NN) - S6 Evolution Log:
v1.0.0row - Metadata:
Ambiguity Score: Not evaluated,Gate: NOT-EVALUATED
4. Self-check (no Jev call)#
python3 "${CLAUDE_PLUGIN_ROOT}/skills/jev-gate/scripts/jev_judge.py" check docs/seed-spec-{slug}.md- exit 0 → continue. exit 2 → fill the failed items (the JSON lists
id,item,detail) and re-run. - This is structural only. It says nothing about clarity — that is
/cc-spec:verify's job.
5. User Review + Save#
- Present the draft, collect per-section feedback, apply revisions.
- Save
docs/seed-spec-{slug}.md(Status: DRAFT) and initializedocs/decision-log-{slug}.mdfromconfig/templates/decision-log.mdwith D-001 = "Seed authoring" recording the assumption-pass outcome.
Output#
| File | Path |
|---|---|
| Seed Spec (DRAFT) | docs/seed-spec-{slug}.md |
| Decision Log | docs/decision-log-{slug}.md |
Next Steps#
/cc-spec:verify— Jev gate (mechanical + ambiguity + panel);--lockon PASS/cc-spec:status --against …— after locking, drift checks of real work
Related Commands#
/cc-spec:verify— Jev judgment gate + lock/cc-spec:evolve— evolve a LOCKED seed
References#
references/SEED_SPEC_SCHEMA.md— schema + how it is serialized for Jevconfig/templates/seed-spec.md— templateskills/seed-spec/SKILL.md— lifecycle rules