Skip to content

Commit b4f474c

Browse files
DanMeonclaude
andcommitted
feat: /new-spec Claude Code skill — 새 version spec 스캐폴드 자동화
호출: /new-spec <version> <topic> (예: /new-spec v0.4.0 view-renderer) 산출: - docs/roadmap/<version>/<topic>.md (frontmatter Draft + EARS placeholder) - docs/design/<version>/<topic>-research.md (페어 ADR) - docs/roadmap/README.md 의 활성 spec 인덱스 row 추가 - 작업 후 scripts/lint_docs.py docs/ 자동 실행 (무결성 검증) CONVENTIONS § 새 spec 추가 절차 자동화. disable-model-invocation: true — 사용자 명시 호출만 받음. 콘텐츠 결정 (실제 결정 / 인수조건 / 비목표) 은 사람의 판단으로 유지, skill 은 구조 일관성만 자동화. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 514c9e7 commit b4f474c

1 file changed

Lines changed: 130 additions & 0 deletions

File tree

.claude/skills/new-spec/SKILL.md

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
---
2+
name: new-spec
3+
description: Scaffold a new version spec and paired ADR following docs/CONVENTIONS.md
4+
argument-hint: <version> <topic>
5+
arguments:
6+
- version
7+
- topic
8+
disable-model-invocation: true
9+
---
10+
11+
# /new-spec — 새 spec 스캐폴드
12+
13+
목적: `<version>` (예: `v0.4.0`) + `<topic>` (예: `view-renderer`) 인자로 신규 per-version spec + 짝 페어 ADR + roadmap 인덱스 row 를 일괄 생성.
14+
15+
## 산출물
16+
17+
다음 4가지를 한 번에 생성/갱신:
18+
19+
1. **`docs/roadmap/<version>/<topic>.md`** — spec 본문 (frontmatter `status: Draft`, `target: <version>`)
20+
2. **`docs/design/<version>/<topic>-research.md`** — 짝 페어 ADR (frontmatter `status: Draft`, `target: <version>`)
21+
3. **`docs/roadmap/README.md`** — § 활성 spec 인덱스 표에 row 추가
22+
4. **§ 인수조건 placeholder** — EARS 5종 키워드 예시 (Ubiquitous / Event-Driven / State-Driven / Optional / Unwanted)
23+
24+
## 작업 절차
25+
26+
본 skill 호출 시 모델은 다음 순서로 진행:
27+
28+
1. **인자 검증**
29+
- `version``vX.Y.Z` SemVer 형식인지
30+
- `topic` 이 kebab-case 인지
31+
- `docs/roadmap/<version>/<topic>.md` 가 이미 존재하면 abort (기존 spec 침해 방지)
32+
33+
2. **CONVENTIONS.md 정독** — frontmatter schema / 명명 규칙 / cross-link 방향성 / EARS notation 섹션을 읽고 본 작업에 적용
34+
35+
3. **디렉토리 생성** (없으면)
36+
- `docs/roadmap/<version>/`
37+
- `docs/design/<version>/`
38+
39+
4. **`docs/roadmap/<version>/<topic>.md` 작성** — 아래 템플릿:
40+
41+
```markdown
42+
---
43+
status: Draft
44+
target: <version>
45+
last_updated: <오늘 YYYY-MM-DD>
46+
---
47+
48+
# <version> — <topic 의 한국어 요약 제목>
49+
50+
<한 문단 요약 — 본 spec 이 무엇을 도입하고 왜 필요한지>.
51+
52+
주요 결정의 근거·대안·실패 시나리오는 짝 페어: [<topic>-research.md](../../design/<version>/<topic>-research.md).
53+
54+
## 결정 사항
55+
56+
| 항목 || 근거 |
57+
|---|---|---|
58+
| 1 | (placeholder) | (placeholder) |
59+
60+
## 인수조건
61+
62+
<!-- EARS notation (CONVENTIONS § 인수조건 형식) — AC-N ID 부여, 테스트 marker 와 1:1 매핑 -->
63+
64+
- **AC-1** (Ubiquitous) — `THE <system> SHALL <response>`
65+
- **AC-2** (Event-Driven) — `WHEN <trigger>, THE <system> SHALL <response>`
66+
- **AC-3** (State-Driven) — `WHILE <state>, THE <system> SHALL <response>`
67+
- **AC-4** (Optional) — `WHERE <feature>, THE <system> SHALL <response>`
68+
- **AC-5** (Unwanted) — `IF <condition>, THEN THE <system> SHALL <response>`
69+
70+
## 영구 비목표
71+
72+
- (본 spec 의 범위에서 명시적으로 제외하는 항목)
73+
74+
## 참조
75+
76+
- 짝 페어 (ADR): [<topic>-research.md](../../design/<version>/<topic>-research.md)
77+
```
78+
79+
5. **`docs/design/<version>/<topic>-research.md` 작성** — 아래 템플릿:
80+
81+
```markdown
82+
---
83+
status: Draft
84+
target: <version>
85+
last_updated: <오늘 YYYY-MM-DD>
86+
---
87+
88+
# <version> <topic> — 설계 의사결정 리서치 요약
89+
90+
[<version>/<topic>.md](../../roadmap/<version>/<topic>.md) §결정 사항 중 외부 독자가 "왜?" 를 던질 만한 N건의 업계 선례·대안·실패 시나리오를 기록한다. <topic>.md 본문이 최종 결정을 기술하고, 본 문서는 그 결정의 근거를 담는다.
91+
92+
## 결정 매트릭스
93+
94+
| # | 항목 | 옵션 비교 | 채택 | 1차 근거 |
95+
|---|---|---|---|---|
96+
| 1 | (placeholder) | A: ... / B: ... / C: ... | (?) | (?) |
97+
98+
## 1. <첫 결정 항목>
99+
100+
### 팩트
101+
### 검증자 반박
102+
### 최종 결정
103+
### 1차 소스
104+
105+
## 참조
106+
107+
- [roadmap/<version>/<topic>.md](../../roadmap/<version>/<topic>.md) — 본 리서치의 결정 요약
108+
```
109+
110+
6. **`docs/roadmap/README.md` 의 § 활성 spec 인덱스 표에 row 추가** — 기존 표 마지막 줄 다음에:
111+
112+
```markdown
113+
| <version> (<topic>) | Draft | [<version>/<topic>.md](<version>/<topic>.md) | [design/<version>/<topic>-research.md](../design/<version>/<topic>-research.md) |
114+
```
115+
116+
7. **무결성 검증** — 작업 후 `python3 scripts/lint_docs.py docs/` 실행. 위반 시 사용자에게 보고하고 수정 안내.
117+
118+
## 규칙 (CONVENTIONS.md 준수)
119+
120+
- frontmatter schema 정확 적용 (status enum / target SemVer / last_updated YYYY-MM-DD)
121+
- spec ↔ research 페어 외 다른 spec 파일 직접 link **금지** (인덱스 경유)
122+
- kebab-case 파일명, vX.Y.Z 디렉토리명
123+
- 상대경로 implicit (`./` prefix 금지)
124+
125+
## 한계
126+
127+
- spec 본문은 placeholder — 실제 결정 / 인수조건 / 비목표는 사용자가 채움
128+
- design research 의 결정 매트릭스도 placeholder — N개 결정의 실제 비교는 사용자가 작성
129+
130+
본 skill 은 **구조 일관성** (frontmatter / 페어 / 인덱스 / EARS placeholder) 만 자동화. 콘텐츠 결정은 사람의 판단.

0 commit comments

Comments
 (0)