|
| 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