Files
portfolio-hub/.github/skills/new-discovery/SKILL.md
T
genichin 0c7c1f7bcf Squashed '.vendor/stage-pilot/' changes from 646bc1e..e745b12
e745b12 feat: add Claude Code support via CLAUDE.md and .claude/commands/ wrapper files

git-subtree-dir: .vendor/stage-pilot
git-subtree-split: e745b12f579e8c17fc4c2421b157a1620e5dbc7d
2026-05-11 01:09:46 +00:00

354 lines
24 KiB
Markdown

---
name: new-discovery
description: "Use when: deciding whether to update an existing Discovery document or start a new one, running /new-discovery with or without parameters, drafting docs/discovery/dcy-<id>_<YYYYMMDD>_<topic-slug>.md for a real product/service change, generating Discovery documents, or updating docs/discovery/index.md after baseline initialization is ready."
argument-hint: "예: 사용자 로그인 기능 추가 - OAuth2 소셜 로그인, 세션 관리, 로그아웃 처리"
user-invocable: true
---
# Purpose
This skill decides whether an incoming request should update an existing Discovery document or start a new one, then drafts or updates Discovery documentation based on issues, user requests, meeting notes, or repository state.
입력이 없으면 현재 Discovery/SRS/batch/release 상태와 baseline 문서 상태를 읽어 새 Discovery가 필요한지 판정한다. baseline 초기화가 아직 끝나지 않은 저장소에서는 먼저 `bootstrap-baseline`으로 `docs/project-structure.md`, `docs/runtime-flows.md`, active index를 준비한 뒤 첫 real Discovery를 생성한다.
새 Discovery를 생성하기로 판정된 경우 generated output must follow this structure:
- `docs/discovery/dcy-<id>_<YYYYMMDD>_<topic-slug>.md`
- Update `docs/discovery/index.md`
# When to use
다음 상황에서 사용한다.
- 새로운 SDLC 주기를 시작해야 할 때
- 기존 SDLC의 요구사항, 범위, 성공 기준을 조정해야 하는데 새 주기 생성이 필요한지 먼저 판정해야 할 때
- `/new-discovery ...` 또는 파라미터 없는 `/new-discovery`로 Discovery 초안을 만들어야 할 때
- baseline 초기화가 완료된 뒤 첫 real Discovery를 시작해야 할 때
- 이슈/요청사항을 `docs/discovery/` 아래 표준 Discovery 문서로 전환해야 할 때
- Discovery 문서를 템플릿 기반으로 작성하되, 추론 가능한 내용을 실제 문장으로 채워야 할 때
- `docs/discovery/index.md`에 새 Discovery 링크를 추가해야 할 때
# Inputs
이 skill은 아래 입력을 사용한다.
- 이슈 식별 정보
- GitHub issue link 또는 issue 번호
- 이슈 내용
- 사용자 입력 원문 또는 이슈 본문 전체
- 이슈 제목 또는 요청 요약
- SDLC 문맥
- 기존 `docs/discovery/` 폴더 구조 및 파일 목록
- 기존 `docs/srs/`, `docs/batches/`, `docs/releases/` 상태
- 기존 `docs/discovery/index.md` 내용
- `docs/project-structure.md`, `docs/runtime-flows.md` 존재 여부
- 현재 시각 (KST)
- 저장소 문맥
- 현재 저장소 상태
- 저장소 현황 탐색 결과
- 템플릿 파일
- `.github/templates/discovery/discovery.md`
- `.github/templates/discovery/index.md`
- `.github/templates/project-structure.md`
- `.github/templates/runtime-flows.md`
입력 해석 규칙:
- GitHub issue link 또는 issue 번호가 있으면 해당 이슈의 제목, 본문, 링크를 기준 입력으로 사용한다.
- 사용자 입력 원문과 요청 요약은 이슈 링크가 없거나 보조 설명이 필요할 때 함께 사용한다.
- 파라미터가 없으면 저장소 상태를 먼저 분류한 뒤 추천 Discovery 또는 진행 중인 반복 유지 여부를 판단한다.
- 저장소 현황 탐색 결과는 `# 3. 문제점의 요약` 중 `현재 상태` 작성에 사용한다.
# Core Rules
## 0. Baseline 문서 정책
- `docs/project-structure.md`와 `docs/runtime-flows.md`는 SDLC의 별도 governance unit가 아니라, 이후 Discovery/REQ/Batch/Release에서 공통으로 참조하는 cross-cutting baseline 문서다.
- baseline 초기화는 첫 Discovery와 분리된 `bootstrap-baseline` 경로를 기본값으로 사용한다.
- baseline 문서와 active index가 모두 없는 저장소에서는 `new-discovery`가 Discovery를 생성하기 전에 `bootstrap-baseline`을 우선 추천하고 중단한다.
- baseline 문서가 이미 있고, Discovery가 구조/런타임 변경을 다룰 때만 해당 Discovery 안에 baseline 문서 갱신 요구를 포함한다.
## 1. 파라미터 없는 실행 판정 규칙
- `/new-discovery`가 파라미터 없이 실행되면 먼저 아래 경로를 점검한다.
- `docs/discovery/`
- `docs/srs/`
- `docs/batches/`
- `docs/releases/`
- `docs/project-structure.md`
- `docs/runtime-flows.md`
- 파라미터 없는 실행은 아래 3가지 저장소 상태 중 하나로 판정한다.
- `no-history`: Discovery와 후속 SDLC 문서가 사실상 없고 첫 반복을 시작해야 하는 상태
- `active-cycle`: draft/review Discovery, Proposed REQ, 진행 중 batch, 미정리 release처럼 활성 unit가 존재해 파라미터 없는 실행만으로는 다음 반복 추천이 모호한 상태
- `ready-for-next-iteration`: active unit는 없고 새 반복을 시작할 준비가 된 상태
- `no-history`이고 baseline 문서 또는 active index가 없으면 `bootstrap-baseline`을 우선 추천하고 새 Discovery를 생성하지 않는다.
- `no-history`이지만 baseline 초기화가 끝나 있으면 첫 real Discovery를 생성한다.
- `active-cycle`이면 새 Discovery를 생성하지 않고 중단한다. 대신 현재 반복을 계속 진행하도록 `run-sdlc` 또는 해당 후속 skill을 추천한다.
- `ready-for-next-iteration`이면 이전 Discovery, SRS, 구현 상태, baseline 문서 차이를 읽고 추천 follow-up Discovery를 생성한다.
- `ready-for-next-iteration`에서 후보 ranking만 먼저 필요하면 `suggest-next-discovery`를 사용하고, 실제 문서 생성이 확정되면 `new-discovery`로 이어 간다.
- baseline 문서가 없고 active unit도 없다면, follow-up Discovery보다 `bootstrap-baseline`을 우선한다.
## 2. 기존 Discovery 갱신 vs 새 Discovery 생성 판정 규칙
- 기존 주기 후보 탐색과 비교는 아래 `확인 절차`를 따른다.
- 후보 문서가 있고 아래 조건을 모두 만족하면 기존 Discovery를 갱신한다.
- 변경이 기존 문제 정의와 핵심 사용자 시나리오를 유지한다.
- FR/NFR 변경이 문구 명확화, 측정 가능성 보강, 범위 경계의 미세 조정, 우선순위 재정렬 수준이다.
- 요구사항 삭제 또는 수정이 기존 REQ, batch planning, batch design, implementation 산출물을 사실상 무효화하지 않는다.
- 대상 Discovery가 아직 초기 정리 단계이거나, 후속 단계 문서가 있어도 변경 영향이 국소적이라 동일 문서 안에서 추적 가능하다.
- 아래 조건 중 하나라도 만족하면 새 Discovery를 생성한다.
- FR/NFR 삭제 또는 수정이 범위, 이해관계자, 핵심 사용자 시나리오, 성공 기준을 실질적으로 바꾼다.
- 기존 하위 단계 문서나 구현 결과를 다시 써야 할 정도로 설계/구현 전제가 깨진다.
- 기존 Discovery가 사실상 Freeze 이후 단계로 진행되어 변경 이력을 같은 문서에 계속 누적하면 책임 경계가 흐려진다.
- 운영 환류, 새로운 이슈, 정책 전환 등으로 후속 반복을 독립 주기로 추적하는 편이 명확하다.
- 기존 Discovery를 더 이상 기준으로 쓰지 않더라도 기존 문서를 삭제하지 않는다. 새 문서를 생성하는 경우 기존 문서는 참조 대상으로 유지하고, 대체 또는 후속 관계를 문서에 남긴다.
- 판정 결과는 반드시 아래 둘 중 하나로 명시한다.
- `기존 Discovery 갱신`
- `새 Discovery 생성`
### 확인 절차
- 입력 원문 또는 추천 Discovery 주제에서 아래 식별 정보를 먼저 추출한다.
- GitHub issue 번호 또는 링크
- 이슈 제목의 핵심 명사
- 기능명, 모듈명, 동사, 영향 범위 키워드
- `docs/discovery/` 아래 기존 문서를 탐색할 때는 `.vendor/` 경로를 제외하고 아래 순서로 후보를 찾는다.
- issue 번호 또는 링크의 정확 일치
- 이슈 제목과 파일명 slug의 핵심 키워드 일치
- 기존 Discovery 문서 안의 문제 정의, FR/NFR, 범위 경계 키워드 일치
- 후보 문서가 하나 이상 발견되면 각 후보마다 아래 항목을 비교한다.
- 같은 문제 정의 또는 같은 기능 묶음을 다루는지
- 현재 단계가 Discovery, REQ 정제, batch delivery, release 이후 어디까지 진행됐는지
- 이번 변경이 기존 FR/NFR의 미세 조정인지, 핵심 요구사항 폐기 또는 재정의인지
- 기존 하위 단계 문서와 구현 산출물을 유지 가능한지, 다시 작성해야 하는지
- 후보가 없으면 기본 판정은 `새 Discovery 생성`이다.
- 후보가 하나이고 판정 규칙에 명확히 부합하면 해당 후보를 기준으로 자동 판정한다.
- 후보가 여러 개이거나, 하나의 후보라도 `기존 Discovery 갱신`과 `새 Discovery 생성` 사이에서 명확히 갈리지 않으면 임의로 진행하지 않는다.
- 후보 문서 경로 목록과 각 후보의 비교 근거를 사용자에게 보고한다.
- 사용자 확인 전에는 새 폴더 생성이나 기존 문서 갱신을 하지 않는다.
- 최종 판정 결과에는 선택된 대상 문서 경로 또는 새로 만들 Discovery 생성 사유를 반드시 함께 기록한다.
## 3. Discovery ID 규칙
- `docs/discovery/` 아래 기존 문서 중 `dcy-<3자리>_` 패턴의 최대 번호를 찾는다.
- 다음 번호를 3자리 zero-pad로 계산한다.
- 오늘 날짜를 `YYYYMMDD` 형식으로 구한다.
- 사용자 입력 원문, 추천 Discovery 제목, 이슈 본문 전체, GitHub issue link에서 `topic-slug`를 만든다.
- `topic-slug`는 소문자 kebab-case의 형태로 만든다.
- slug 규칙:
- 영문/숫자 외 문자는 `-`로 치환
- 연속 `-`는 하나로 축약
- 시작/끝 `-` 제거
- 결과가 비면 `untitled` 사용
- 최종 `DISCOVERY_ID`는 `dcy-<id>_<YYYYMMDD>_<topic-slug>` 형식이어야 한다.
## 4. 문서 생성/갱신 규칙
- 판정 결과가 `새 Discovery 생성`이면 새 파일을 `docs/discovery/<DISCOVERY_ID>.md` 경로로 생성한다.
- `새 Discovery 생성`인 경우 Discovery 문서는 `.github/templates/discovery/discovery.md`를 기반으로 생성한다.
- `docs/discovery/index.md`가 없으면 `.github/templates/discovery/index.md`를 기반으로 생성한다.
- Discovery가 구조/런타임 baseline 갭을 직접 다루는 경우, `.github/templates/project-structure.md`와 `.github/templates/runtime-flows.md`를 이후 산출물 템플릿 참조로 취급한다.
- `기존 Discovery 갱신`이면 대상 Discovery 문서를 갱신한다.
- 동일 경로가 이미 있으면 덮어쓰지 말고 다음 ID를 재계산한다.
- 불필요한 파일은 만들지 않는다.
## 5. Discovery 초안 작성 원칙
- 입력 문장이 짧더라도 기능 목적, 예상 사용자, 산출물, 성공 조건을 합리적으로 추론해 초안을 작성한다.
- 입력만으로 추론 가능한 내용은 플레이스홀더로 남기지 말고 실제 문장으로 채운다.
- 사용자 승인, 외부 데이터, 정책 결정, 확정 범위 경계처럼 추론만으로 확정하면 안 되는 항목만 플레이스홀더로 남긴다.
- 공란은 허용하지 않는다.
- 합리적 기본안을 제시할 수 있으면 초안 문장으로 채운다.
- 사용자 확인이 반드시 필요하면 관련 본문에는 최소 플레이스홀더를 남기고 `# 10. 사용자 결정 필요 항목 요약`에 정리한다.
- `기존 Discovery 갱신`인 경우 FR/NFR 변경 또는 삭제 이유, 영향 받는 하위 단계, 기존 문서와의 차이를 문서 안에 명시해 변경 근거를 남긴다.
- Discovery가 구조/런타임 baseline 변경을 직접 다루는 경우 `# 4. 이번에 정의할 변경`, `# 5. 요구사항 목록`, `# 9. 파일 처리 결과`에 `docs/project-structure.md`와 `docs/runtime-flows.md` 갱신 요구를 명시한다.
## 6. 플레이스홀더 유지 규칙
- 사용자 승인 전 확정되면 안 되는 정책/범위/산출물 위치/대상 독자 결정은 본문에도 플레이스홀더를 남긴다.
- `# 10. 사용자 결정 필요 항목 요약`의 항목은 반드시 아래 형식 중 하나를 사용한다.
- `{{DECIDE_*}}`
- `{{CONFIRM_*}}`
- `{{DATA_*}}`
- `TBD` 같은 일반 문자열보다 의미가 드러나는 플레이스홀더를 우선 사용한다.
# Discovery Sections To Fill
다음 섹션은 자동으로 채워야 한다.
## `# 1. 계획 상태 요약`
- `해석` 2줄은 입력 요청 또는 파라미터 없는 실행의 저장소 상태 해석을 바탕으로 직접 작성한다.
## `# 0. 문서 상태`
- `새 Discovery 생성`이면 `대체됨`, `후속 주기 참조` 기본값은 `없음`으로 둔다.
- 기존 Discovery를 대체하거나 이어받는 새 Discovery를 만드는 경우, 이전 Discovery 문서에도 해당 참조 필드를 갱신한다.
- `기존 Discovery 갱신`이면 기존 참조 값을 보존하고, 새 관계가 확정된 경우에만 관련 필드를 갱신한다.
플레이스홀더 치환 규칙:
- `{{DISCOVERY_ID:dcy-<3자리>_<YYYYMMDD>_<topic-slug>}}` -> 계산한 `DISCOVERY_ID`
- `{{SUPERSEDED_BY_DISCOVERY:없음 또는 docs/discovery/<DISCOVERY_ID>.md}}` -> `없음` 또는 대체 Discovery 경로
- `{{FOLLOW_UP_DISCOVERY_REF:없음 또는 docs/discovery/<DISCOVERY_ID>.md}}` -> `없음` 또는 후속 Discovery 경로
## `# 2. 요구사항 판정 결과`
- 기본값은 `신규`로 둔다.
- 입력만으로 명백한 중복/유사라고 판단 가능한 경우에만 다르게 쓴다.
- 근거 2줄도 직접 작성한다.
## `# 3. 문제점의 요약`
- 현재 상태, 기대 상태, 이해관계자, 주요 사용자 시나리오를 입력 기반으로 채운다.
- 특히 `현재 상태`는 저장소 탐색 결과와 baseline 문서 존재 여부를 반영해야 한다.
## `# 4. 이번에 정의할 변경`
- 핵심 변경 항목 1~3개를 직접 작성한다.
- Discovery가 구조 또는 runtime baseline 갭을 다루면 baseline 문서 갱신을 핵심 변경 항목에 포함한다.
- `영향 범위`의 코드/문서/운영 영향도 추론해 채운다.
## `# 5. 요구사항 목록`
- FR 2개 이상, NFR 1개 이상을 직접 작성한다.
- Discovery가 구조 또는 runtime baseline 갭을 다루는 경우, `docs/project-structure.md`와 `docs/runtime-flows.md` 갱신 요구를 FR에 포함한다.
- In Scope/Out of Scope는 초안 수준으로 제안한다.
- 사용자 승인 없이는 확정할 수 없는 범위 경계는 플레이스홀더로 남긴다.
## `# 6. 리스크/가정 목록`
- 리스크 2개 이상, 가정 2개 이상을 직접 작성한다.
- 오픈 질문은 정말 결정이 필요한 경우에만 남긴다.
## `# 7. 초기 성공 기준`
- 성공 기준 2개 이상을 작성한다.
- Discovery가 구조 또는 runtime baseline 변경을 다루는 경우 baseline 문서와 이후 산출물 참조 가능성을 성공 기준에 연결한다.
- 각 성공 기준에 대해 측정 방식과 데이터 출처 초안을 작성한다.
## `# 9. 파일 처리 결과`
- 생성 결과와 최소 참조 문서를 채운다.
- Discovery가 구조 또는 runtime baseline 갭을 다루면 `.github/templates/project-structure.md`와 `.github/templates/runtime-flows.md`를 참조 문서에 포함한다.
- 참조 문서가 없으면 `없음`이라고 쓴다.
## `# 10. 사용자 결정 필요 항목 요약`
- 자동 추론으로 확정할 수 없는 항목만 `DECIDE`, `CONFIRM`, `DATA`에 넣는다.
- 이 섹션 항목은 설명문이 아니라 플레이스홀더 형식으로 남긴다.
## `# 11. Discovery Freeze`
- `Handoff Decision` 기본값은 `보류`다.
- `Handoff Rationale`에는 현재 상태를 짧게 적는다.
- 예: `초기 Discovery 초안 생성 완료, REQ 초안 작성 전 사용자 확인 필요`
# Repository Exploration
Discovery 문서의 `# 3. 문제점의 요약` 중 `현재 상태`를 채우기 위해 저장소 현황 탐색을 수행한다.
1. 이슈 원문 또는 추천 주제에서 핵심 키워드(기능명, 모듈명, 동사)를 추출한다.
2. 키워드를 기반으로 저장소에서 관련 파일, 디렉터리, 함수, 기존 문서를 탐색한다.
3. 탐색 범위는 아래와 같다.
- 소스 파일: `.ts`, `.js`, `.py`, `.go`, `.java` 등
- 설정 파일
- 기존 `docs/` 문서
4. 아래 항목은 제외한다.
- 테스트 파일
- 의존성 잠금 파일 (`package-lock.json`, `.lock`)
5. 탐색 결과에서 아래 내용을 추출한다.
- 관련 파일 경로 목록 (최대 10개)
- 현재 구현 방식 요약 (함수명, 클래스명, 주요 로직 1~3줄)
- 현재 상태에서 이슈 원문이 지적하는 문제가 실제로 존재하는지 여부
- `docs/project-structure.md`, `docs/runtime-flows.md` 존재 여부와 최신성 판단에 필요한 단서
6. 관련 파일을 찾지 못하면 `관련 파일 없음 — 신규 기능으로 추정`으로 기록한다.
7. 탐색 결과는 `# 3. 문제점의 요약`의 `현재 상태` 기술에만 반영한다.
# Execution Procedure
다음 순서대로 작업한다.
1. 입력 원문이 있으면 이슈명을 한 문장으로 정리하고, 없으면 저장소 상태를 먼저 분류한다.
2. 파라미터 없는 실행이면 discovery/srs/batches/releases/baseline 문서 상태를 읽어 `no-history`, `active-cycle`, `ready-for-next-iteration` 중 하나로 판정한다.
3. 입력 원문이 없고 `active-cycle`이면 새 Discovery 자동 생성을 중단하고 현재 반복을 계속 진행해야 하는 이유와 추천 skill을 보고한다.
4. `no-history`이고 baseline 문서 또는 active index가 비어 있으면 `bootstrap-baseline`을 우선 추천하고 Discovery 생성을 중단한다.
5. `no-history`이지만 baseline 초기화가 끝나 있으면 첫 real Discovery 생성 대상으로 확정한다.
6. 입력 원문이 없고 `ready-for-next-iteration`이면 이전 Discovery, SRS, 구현 상태, baseline 문서 상태를 바탕으로 추천 follow-up Discovery 주제를 정한다.
7. 입력 원문, 이슈 링크, 신규 요구 요약처럼 명시적 신규 입력이 있으면 `active-cycle` 여부와 무관하게 위 `확인 절차`에 따라 issue 번호/링크, 제목 키워드, 기능명, 범위 키워드를 추출하고 기존 후보 주기를 찾는다.
8. 입력 원문이 없고 추천 Discovery 주제가 정해졌으면 위 `확인 절차`에 따라 issue 번호/링크, 제목 키워드, 기능명, 범위 키워드를 추출하고 기존 후보 주기를 찾는다.
9. 후보 비교 결과를 바탕으로 `기존 Discovery 갱신` 또는 `새 Discovery 생성`으로 판정한다.
10. `active-cycle` 상태에서 명시적 신규 입력으로 새 Discovery를 진행하는 경우, 기존 active unit와의 범위 충돌 여부와 병렬 진행 사유를 함께 기록한다.
11. 판정이 애매하면 사용자 확인 전까지 자동 생성 또는 자동 갱신을 중단하고 후보와 근거를 보고한다.
12. 저장소 현황 탐색을 수행한다.
13. 판정 결과가 `새 Discovery 생성`이면 기존 `docs/discovery/` 경로를 다시 스캔해 다음 번호를 계산한다.
14. `새 Discovery 생성`이면 날짜와 slug를 조합해 `DISCOVERY_ID`를 만든다.
15. `새 Discovery 생성`이면 `docs/discovery/<DISCOVERY_ID>.md` 파일을 생성한다.
16. `기존 Discovery 갱신`이면 대상 Discovery 문서를 갱신한다.
17. 아래 플레이스홀더를 우선 치환한다.
- `{{DOC_STATUS:draft|review|confirmed}}` -> `draft`
- `{{DISCOVERY_ID:dcy-<3자리>_<YYYYMMDD>_<topic-slug>}}` -> 계산한 `DISCOVERY_ID`
- `{{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}` -> 입력 원문 또는 요약 이슈명
- `{{ISSUE_NAME}}` -> 입력 원문 또는 요약 이슈명
- `{{CREATED_AT_KST:TBD}}` -> 현재 시각(KST)
- `{{CREATED_AT_KST}}` -> 현재 시각(KST)
- `{{UPDATED_AT_KST:TBD}}` -> 현재 시각(KST)
- `{{UPDATED_AT_KST}}` -> 현재 시각(KST)
- `{{SUPERSEDED_BY_DISCOVERY:없음 또는 docs/discovery/<DISCOVERY_ID>.md}}` -> `없음` 또는 대체 Discovery 경로
- `{{FOLLOW_UP_DISCOVERY_REF:없음 또는 docs/discovery/<DISCOVERY_ID>.md}}` -> `없음` 또는 후속 Discovery 경로
- `{{OUTPUT_PATH}}` -> 생성 파일 경로
- `{{FILE_RESULT:생성|갱신|미생성}}` -> `생성`
18. Discovery가 구조 또는 runtime baseline 갭을 직접 다루면 `docs/project-structure.md`와 `docs/runtime-flows.md` 갱신 요구를 핵심 변경과 FR에 반영한다.
19. `기존 Discovery 갱신`인 경우 `{{OUTPUT_PATH}}`와 `{{FILE_RESULT}}`는 갱신 대상 파일과 `갱신`으로 해석한다.
20. `새 Discovery 생성`이면서 기존 Discovery를 대체하거나 이어받는 경우, 기존 Discovery 문서에 `대체됨` 또는 `후속 주기 참조` 필드를 새 문서 경로로 갱신한다.
21. Discovery 문서에서는 추론 가능한 플레이스홀더를 적극적으로 실제 내용으로 치환한다.
22. 추론 불가능하거나 사용자 확인이 필요한 항목만 플레이스홀더로 남긴다.
23. `새 Discovery 생성`인 경우에만 `docs/discovery/index.md` 전역 인덱스에 새 행을 추가한다.
24. `기존 Discovery 갱신`인 경우 전역 인덱스에 새 행을 추가하지 않는다.
# Global Index Rules
- `docs/discovery/index.md`가 없으면 아래 골격으로 새로 만든다.
- `## Discovery 목록`에는 새 행을 추가한다.
- 형식은 아래와 같다.
`| <DISCOVERY_ID> | <YYYYMMDD> | <ISSUE_NAME> | [Discovery](./<DISCOVERY_ID>.md) | draft |`
- 테이블 구조 자체는 바꾸지 않는다.
- `기존 Discovery 갱신`으로 판정된 경우 `docs/discovery/index.md`에 새 행을 추가하지 않는다.
- 같은 `DISCOVERY_ID`가 이미 있으면 중복 추가하지 않는다.
# Output Expectations
작업이 끝나면 아래 내용을 보고할 수 있어야 한다.
- 판정 결과 (`기존 Discovery 갱신` 또는 `새 Discovery 생성`)
- 파라미터 없는 실행이면 저장소 상태 분류 (`no-history` | `active-cycle` | `ready-for-next-iteration`)
- `active-cycle` 상태였다면 자동 중단 사유 또는 병렬 Discovery 허용 사유
- 대상 `DISCOVERY_ID`
- 확인에 사용한 후보 Discovery 목록과 각 후보의 비교 근거
- 새 Discovery인 경우 생성한 파일 경로
- 기존 Discovery 갱신인 경우 갱신한 파일 경로
- 기존 Discovery와의 대체 또는 후속 참조 갱신 결과
- `docs/discovery/index.md` 갱신 결과 또는 미갱신 사유
- `docs/project-structure.md`, `docs/runtime-flows.md` baseline 상태와 Discovery 반영 결과
- 저장소 현황 탐색 결과
- 자동으로 채운 Discovery 핵심 섹션 요약
- 사용자 확인이 필요해 플레이스홀더로 남긴 항목 요약
# Validation
완료 전에 아래를 확인한다.
- `새 Discovery 생성`이면 생성 경로가 `docs/discovery/<DISCOVERY_ID>.md` 형식을 만족하는지
- `새 Discovery 생성`이면 Discovery 문서가 생성되었는지
- `새 Discovery 생성`이면 `docs/discovery/index.md`가 신규 생성 또는 올바르게 갱신되었는지
- Discovery가 구조 또는 runtime baseline 갭을 다루면 `docs/project-structure.md`, `docs/runtime-flows.md` 갱신 요구가 문서 본문에 포함됐는지
- `기존 Discovery 갱신`이면 대상 Discovery 문서만 갱신되었는지
- `기존 Discovery 갱신`이면 새 `DISCOVERY_ID`와 불필요한 파일이 생성되지 않았는지
- 기존 Discovery 후보 탐색 결과와 판정 근거가 보고 가능한 형태로 정리되었는지
- 파라미터 없는 실행에서 `active-cycle` 상태라면 사용자 확인이나 명시적 신규 입력 없이 새 Discovery를 자동 생성하지 않았는지
- `active-cycle` 상태에서 명시적 신규 입력으로 새 Discovery를 생성한 경우, 기존 active unit와의 범위 충돌 여부와 판정 근거가 함께 정리됐는지
- 판정이 애매한 경우 사용자 확인 없이 새 폴더 생성이나 기존 문서 갱신을 진행하지 않았는지
- `대체됨`, `후속 주기 참조` 필드가 `없음` 또는 유효한 Discovery 경로로 채워졌는지
- 새 Discovery가 기존 Discovery의 대체 또는 후속 반복이라면 기존 Discovery의 참조 필드가 함께 갱신되었는지
- 추론 가능한 섹션은 실제 문장으로 채워졌는지
- 사용자 확인이 필요한 항목만 플레이스홀더로 남았는지