draft
This commit is contained in:
@@ -1,43 +0,0 @@
|
|||||||
# Copilot Instructions
|
|
||||||
|
|
||||||
이 파일은 호스트 프로젝트 고유 규칙과 StagePilot 규칙을 함께 담는다.
|
|
||||||
|
|
||||||
## Host Project Rules
|
|
||||||
|
|
||||||
호스트 프로젝트 전용 규칙은 이 섹션에 작성한다.
|
|
||||||
|
|
||||||
## StagePilot
|
|
||||||
<!-- STAGEPILOT:BEGIN -->
|
|
||||||
# SDLC Governance Instructions
|
|
||||||
|
|
||||||
이 워크스페이스의 AI 에이전트는 Agile 중심 반복형 SDLC를 따른다.
|
|
||||||
모든 작업은 단계 기반으로 수행하며, 단계 스킵은 허용되지 않는다(긴급 핫픽스 예외는 별도 규칙 적용).
|
|
||||||
|
|
||||||
## Lifecycle Stages
|
|
||||||
|
|
||||||
1. Discovery
|
|
||||||
2. Planning
|
|
||||||
3. Design
|
|
||||||
4. Implementation
|
|
||||||
5. Verification
|
|
||||||
6. Release
|
|
||||||
7. Operations
|
|
||||||
|
|
||||||
## Global Rules
|
|
||||||
|
|
||||||
1. 증거 기반: 요구사항, 가정, 리스크, 결정 근거를 문서에 남긴다.
|
|
||||||
2. 게이트 준수: 각 단계의 DoR(진입 조건)과 DoD(완료 조건)을 충족해야 다음 단계로 이동한다.
|
|
||||||
3. 테스트 우선 검증: 구현 결과는 테스트 또는 검증 근거 없이 완료로 간주하지 않는다.
|
|
||||||
4. 변경 영향도 기록: 코드/문서/운영 영향 범위를 명시한다.
|
|
||||||
5. 불확실성 우선 해소: 차단 이슈가 있으면 임의 추정 대신 질문 또는 추가 탐색을 수행한다.
|
|
||||||
6. 운영 환류: 운영 단계 인사이트는 다음 Discovery의 입력으로 반드시 반영한다.
|
|
||||||
|
|
||||||
## Hotfix Exception Path
|
|
||||||
|
|
||||||
긴급 핫픽스는 Discovery/Planning/Design을 경량화할 수 있다. 단, 아래는 필수다.
|
|
||||||
|
|
||||||
1. 최소 요구사항 정의(증상, 영향, 성공 조건)
|
|
||||||
2. 최소 검증(재현 테스트 또는 핵심 시나리오 확인)
|
|
||||||
3. 배포 전 롤백 계획
|
|
||||||
4. 배포 후 Postmortem 작성 및 다음 스프린트 환류
|
|
||||||
<!-- STAGEPILOT:END -->
|
|
||||||
@@ -1,243 +0,0 @@
|
|||||||
# 플레이스홀더 가이드
|
|
||||||
|
|
||||||
이 파일은 `.github/templates/` 및 `.github/prompts/`에서 사용하는 `{{...}}` 플레이스홀더의 문법, 처리 주체, 전체 목록을 정의한다.
|
|
||||||
템플릿을 수정하거나 새 프롬프트를 작성할 때 이 파일을 기준으로 한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 문법 규칙
|
|
||||||
|
|
||||||
| 형식 | 의미 | 예시 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{KEY}}` | 단순 치환 대상. 힌트 없음. | `{{CYCLE_ID}}` |
|
|
||||||
| `{{KEY:hint}}` | 힌트 포함. 치환 시 힌트 텍스트도 함께 제거. | `{{CREATED_AT_KST:TBD}}` |
|
|
||||||
| `{{KEY:opt1\|opt2\|opt3}}` | 열거형. 나열된 값 중 하나를 선택. | `{{DOC_STATUS:draft\|review\|confirmed}}` |
|
|
||||||
| `{{KEY_N_DECISION:hint}}` | AI agent가 섹션 본문에 임시로 삽입하는 판단 대기 마커. `review-discovery` 등 검토 단계에서 실제 문장으로 치환하거나 `#10`으로 이동. | `{{TARGET_STATE_2_DECISION:...}}` |
|
|
||||||
|
|
||||||
> **규칙**: 플레이스홀더를 채울 때는 `{{...}}` 전체를 값으로 교체한다. 힌트나 파이프(`|`) 열거는 최종 문서에 남기지 않는다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 처리 주체 분류
|
|
||||||
|
|
||||||
플레이스홀더는 **누가 채워야 하는가**에 따라 세 가지로 나뉜다.
|
|
||||||
|
|
||||||
### A. 자동 치환 (Auto — 프롬프트 실행 시 agent가 즉시 채움)
|
|
||||||
|
|
||||||
| 키 | 치환 값 | 사용 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{DOC_STATUS}}` / `{{DOC_STATUS:draft\|review\|confirmed}}` | `draft` | 모든 SDLC 문서 `#0` |
|
|
||||||
| `{{CYCLE_ID}}` / `{{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}` | 계산된 주기 ID | 모든 SDLC 문서 `#0`, index, summary |
|
|
||||||
| `{{ISSUE_NAME}}` / `{{ISSUE_NAME:...}}` | 사용자 입력 원문 | 모든 SDLC 문서 `#0`, summary |
|
|
||||||
| `{{CREATED_AT_KST}}` / `{{CREATED_AT_KST:TBD}}` | 현재 시각 (KST) | 모든 SDLC 문서 `#0`, summary |
|
|
||||||
| `{{UPDATED_AT_KST}}` / `{{UPDATED_AT_KST:TBD}}` | 현재 시각 (KST) | 모든 SDLC 문서 `#0`, summary |
|
|
||||||
| `{{OUTPUT_PATH}}` | 생성 파일 경로 | `1_discovery.md` `#9` |
|
|
||||||
| `{{FILE_RESULT}}` / `{{FILE_RESULT:생성\|갱신\|미생성}}` | `생성` (신규) 또는 `갱신` | `1_discovery.md` `#9` |
|
|
||||||
| `{{SUMMARY_STATUS}}` / `{{SUMMARY_STATUS:draft\|review\|confirmed}}` | `draft` | `summary.md` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### B. AI 추론 치환 (Infer — agent가 입력 요청과 저장소 맥락을 바탕으로 초안을 채움)
|
|
||||||
|
|
||||||
> 입력만으로 합리적 추론이 가능한 항목은 플레이스홀더로 남기지 않고 자연어 문장으로 채운다.
|
|
||||||
> 추론이 불확실한 경우에는 `_DECISION` 접미사 형태로 남기고 `review-discovery` 단계에서 처리한다.
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{PLANNING_SCORE_FILE}}` | Planning 점수 파일 경로 또는 `미생성` | `#1` |
|
|
||||||
| `{{TODO_FILE}}` | 관련 TODO/메모 경로 또는 `없음` | `#1` |
|
|
||||||
| `{{SUMMARY_LINE_1}}`, `{{SUMMARY_LINE_2}}` | 현재 검토 배경 및 이번 Discovery 핵심 요약 | `#1` |
|
|
||||||
| `{{REQUIREMENT_CLASSIFICATION}}` | `신규` / `유사` / `완전 중복` | `#2` |
|
|
||||||
| `{{CLASSIFICATION_REASON_1}}`, `{{CLASSIFICATION_REASON_2}}` | 판정 근거 2줄 | `#2` |
|
|
||||||
| `{{CURRENT_STATE_1}}`, `{{CURRENT_STATE_2}}` | 현재 문제 상태 | `#3` |
|
|
||||||
| `{{TARGET_STATE_1}}`, `{{TARGET_STATE_2}}` | 기대 상태 | `#3` |
|
|
||||||
| `{{STAKEHOLDER_1~3}}` | 이해관계자 | `#3` |
|
|
||||||
| `{{CONSTRAINT_1}}`, `{{CONSTRAINT_2}}` | 제약사항 | `#3` |
|
|
||||||
| `{{USER_SCENARIO_1~3}}` | 주요 사용자 시나리오 | `#3` |
|
|
||||||
| `{{CHANGE_ITEM_1~3}}` | 핵심 변경 항목 | `#4` |
|
|
||||||
| `{{CODE_IMPACT_1~2}}`, `{{DOC_IMPACT_1~2}}`, `{{OPS_IMPACT_1~2}}` | 영향 범위 | `#4` |
|
|
||||||
| `{{FR_1~4}}` | 기능 요구사항 (최소 2개) | `#5` |
|
|
||||||
| `{{NFR_1~3}}` | 비기능 요구사항 (최소 1개) | `#5` |
|
|
||||||
| `{{IN_SCOPE_1~2}}`, `{{OUT_OF_SCOPE_1~2}}` | 범위 경계 | `#5` |
|
|
||||||
| `{{RISK_LEVEL_1~3}}`, `{{RISK_1~3}}`, `{{MITIGATION_1~3}}` | 리스크 항목 (최소 2개) | `#6` |
|
|
||||||
| `{{ASSUMPTION_1~3}}` | 가정 (최소 2개) | `#6` |
|
|
||||||
| `{{OPEN_QUESTION_1~3}}`, `{{OPEN_QUESTION_STATUS_1~3}}` | 오픈 질문 | `#6` |
|
|
||||||
| `{{OPEN_QUESTION_ACTION_1~3}}`, `{{OPEN_QUESTION_EXIT_1~3}}` | 오픈 질문 처리 방안/종료 조건 | `#6` |
|
|
||||||
| `{{SUCCESS_METRIC_1~3}}` | 성공 기준 (최소 2개) | `#7` |
|
|
||||||
| `{{MEASURE_METHOD_1~3}}`, `{{MEASURE_SOURCE_1~3}}` | 측정 방식 및 데이터 출처 | `#7` |
|
|
||||||
| `{{CHECK_SCOPE_CRITERIA}}` | 범위 확정 기준 | `#8` |
|
|
||||||
| `{{CHECK_METRICS_CRITERIA}}` | 성공 지표 확정 기준 | `#8` |
|
|
||||||
| `{{CHECK_RISK_OWNER_CRITERIA}}` | 리스크 책임자 지정 기준 | `#8` |
|
|
||||||
| `{{CHECK_CONFIRMEDBY_CRITERIA}}` | Freeze 담당자 지정 기준 | `#8` |
|
|
||||||
| `{{REFERENCE_1~3}}` | 참조 문서 목록 | `#9` |
|
|
||||||
| `{{SUMMARY_POINT_1~2}}` | summary.md 핵심 요약 | `summary.md` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### C. 사용자 결정 필요 (Decide — 자동 추론 불가, 사용자/승인자가 직접 채워야 함)
|
|
||||||
|
|
||||||
> 이 항목들은 `#10 사용자 결정 필요 항목 요약`에 모아서 관리한다.
|
|
||||||
> 섹션 본문에는 최소 플레이스홀더만 남기거나 맥락 설명 문장으로 대체한다.
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{DECIDE_ITEM_1~2}}` | 정책/구조 결정이 필요한 항목 | `#10 > DECIDE` |
|
|
||||||
| `{{CONFIRM_ITEM_1~2}}` | 범위나 책임자 확인이 필요한 항목 | `#10 > CONFIRM` |
|
|
||||||
| `{{DATA_ITEM_1~2}}` | 외부 데이터나 환경 정보가 필요한 항목 | `#10 > DATA` |
|
|
||||||
| `{{FREEZE_HANDOFF_DECISION}}` | Planning 진행 가능 여부 (`Planning 진행 가능` / `보류`) | `#11` |
|
|
||||||
| `{{FREEZE_HANDOFF_RATIONALE}}` | Handoff Decision 판단 근거 | `#11` |
|
|
||||||
| `{{READY_FOR_PLANNING}}` | `true` / `false` | `#11` |
|
|
||||||
| `{{CONFIRMED_BY}}` | Freeze 확정 담당자 이름 | `#11` |
|
|
||||||
| `{{CONFIRMED_AT_KST}}` | Freeze 확정 시각 (KST) | `#11` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. `_DECISION` 접미사 패턴
|
|
||||||
|
|
||||||
섹션 본문에 판단이 필요한 항목이 생겼을 때 AI agent가 임시로 삽입하는 마커이다.
|
|
||||||
|
|
||||||
- **형식**: `{{원래키_N_DECISION:판단 내용 또는 질문}}`
|
|
||||||
- **예시**: `{{TARGET_STATE_2_DECISION:README 확장으로 할지, 별도 파일로 분리할지 결정 필요}}`
|
|
||||||
- **처리 규칙**:
|
|
||||||
- `review-discovery` 프롬프트 실행 시 각 항목을 검토하여 아래 중 하나로 처리한다.
|
|
||||||
- 추론 가능 → 자연어 문장으로 치환
|
|
||||||
- 사용자 결정 필요 → `#10`으로 이동하고 본문은 맥락 설명 문장으로 대체
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Planning 전용 플레이스홀더 (`2_planning.md`)
|
|
||||||
|
|
||||||
### A. 자동 치환 (Auto)
|
|
||||||
|
|
||||||
| 키 | 치환 값 | 사용 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{DISCOVERY_PATH}}` | `docs/sdlc/<CYCLE_ID>/1_discovery.md` | `#0`, `#9` |
|
|
||||||
|
|
||||||
### B. AI 추론 치환 (Infer)
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{PLANNING_ISSUE_PURPOSE}}` | Discovery 이슈명과 핵심 목적 요약 | `#1` |
|
|
||||||
| `{{PLANNING_IN_SCOPE_1~2}}` | Discovery `#5`에서 이식한 In Scope | `#1` |
|
|
||||||
| `{{PLANNING_OUT_OF_SCOPE_1~2}}` | Discovery `#5`에서 이식한 Out of Scope | `#1` |
|
|
||||||
| `{{PLANNING_FR_1~4}}` | Discovery `#5` FR 요약 | `#1` |
|
|
||||||
| `{{PLANNING_NFR_1~2}}` | Discovery `#5` NFR 요약 | `#1` |
|
|
||||||
| `{{DEFERRED_ITEM_1~2}}` | Discovery `#6`에서 Deferred 처리된 오픈 질문 | `#1` |
|
|
||||||
| `{{TASK_TITLE_N}}` | FR/NFR 기반 태스크 제목 | `#2` |
|
|
||||||
| `{{TASK_TYPE_N}}` | 태스크 유형 (`개발\|문서\|검토\|설계\|운영`) | `#2` |
|
|
||||||
| `{{TASK_REF_N}}` | 참조 요구사항 ID (예: `FR-1`) | `#2` |
|
|
||||||
| `{{TASK_DEP_N}}` | 의존 태스크 ID 또는 `-` | `#2` |
|
|
||||||
| `{{TASK_DOD_N}}` | 태스크 완료 조건 | `#2` |
|
|
||||||
| `{{EFFORT_N}}` | 추정 공수 (숫자 또는 범위) | `#3` |
|
|
||||||
| `{{EFFORT_UNIT}}` | 공수 단위 (`SP\|시간\|일`) | `#3` |
|
|
||||||
| `{{EFFORT_NOTE_N}}` | 공수 추정 비고 | `#3` |
|
|
||||||
| `{{TOTAL_EFFORT}}` | 총 추정 공수 | `#3` |
|
|
||||||
| `{{EFFORT_CONFIDENCE}}` | 추정 신뢰도 (`High\|Medium\|Low`) | `#3` |
|
|
||||||
| `{{EFFORT_BASIS}}` | 추정 근거 | `#3` |
|
|
||||||
| `{{MILESTONE_N_NAME}}` | 마일스톤 이름 | `#4` |
|
|
||||||
| `{{MILESTONE_N_TASKS}}` | 마일스톤 포함 태스크 목록 | `#4` |
|
|
||||||
| `{{MILESTONE_N_DONE}}` | 마일스톤 완료 조건 | `#4` |
|
|
||||||
| `{{ITERATION_UNIT}}` | 이터레이션 단위 | `#4` |
|
|
||||||
| `{{ITERATION_N_TASKS}}` | 이터레이션 N 포함 태스크 | `#4` |
|
|
||||||
| `{{TASK_DEPENDENCY_N}}` | 태스크 간 의존 관계 설명 | `#5` |
|
|
||||||
| `{{EXTERNAL_DEP_N}}` | 외부 의존성 항목 | `#5` |
|
|
||||||
| `{{TECH_CONSTRAINT_N}}` | 기술/환경 제약 | `#5` |
|
|
||||||
| `{{VERIFY_CRITERIA_N}}` | 검증 대상 성공 기준 (Discovery S-N 요약) | `#6` |
|
|
||||||
| `{{VERIFY_METHOD_N}}` | 검증 방법 초안 | `#6` |
|
|
||||||
| `{{PLAN_RISK_LEVEL_N}}` | Planning 리스크 등급 | `#7` |
|
|
||||||
| `{{PLAN_RISK_N}}` | Planning 리스크 내용 | `#7` |
|
|
||||||
| `{{PLAN_MITIGATION_N}}` | 리스크 완화 방안 | `#7` |
|
|
||||||
| `{{PLAN_ASSUMPTION_N}}` | Planning 단계 가정 | `#7` |
|
|
||||||
| `{{PLAN_OPEN_QUESTION_N}}` | Planning 오픈 질문 | `#7` |
|
|
||||||
| `{{PLAN_OQ_STATUS_N}}` | 오픈 질문 상태 | `#7` |
|
|
||||||
| `{{PLAN_OQ_ACTION_N}}` | 오픈 질문 처리 방안 | `#7` |
|
|
||||||
| `{{PLAN_OQ_EXIT_N}}` | 오픈 질문 종료 조건 | `#7` |
|
|
||||||
| `{{CHECK_TASKS_CRITERIA}}` | 태스크 확정 기준 | `#8` |
|
|
||||||
| `{{CHECK_EFFORT_CRITERIA}}` | 공수 추정 확정 기준 | `#8` |
|
|
||||||
| `{{CHECK_SCHEDULE_CRITERIA}}` | 일정 확정 기준 | `#8` |
|
|
||||||
| `{{CHECK_DEP_CRITERIA}}` | 외부 의존성 해소 기준 | `#8` |
|
|
||||||
|
|
||||||
### C. 사용자 결정 필요 (Decide)
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{TASK_OWNER_N}}` | 태스크 담당자 | `#2` |
|
|
||||||
| `{{MILESTONE_N_DATE}}` | 마일스톤 목표 날짜 | `#4` |
|
|
||||||
| `{{ITERATION_N_PERIOD}}` | 이터레이션 날짜 범위 | `#4` |
|
|
||||||
| `{{VERIFY_OWNER_N}}` | 검증 담당자 | `#6` |
|
|
||||||
| `{{FREEZE_HANDOFF_DECISION}}` | Design 진행 가능 여부 | `#11` |
|
|
||||||
| `{{FREEZE_HANDOFF_RATIONALE}}` | Handoff Decision 판단 근거 | `#11` |
|
|
||||||
| `{{READY_FOR_DESIGN}}` | `true` / `false` | `#11` |
|
|
||||||
| `{{CONFIRMED_BY}}` | Freeze 확정 담당자 이름 | `#11` |
|
|
||||||
| `{{CONFIRMED_AT_KST}}` | Freeze 확정 시각 (KST) | `#11` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Design 전용 플레이스홀더 (`3_design.md`)
|
|
||||||
|
|
||||||
### A. 자동 치환 (Auto)
|
|
||||||
|
|
||||||
| 키 | 치환 값 | 사용 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{PLANNING_PATH}}` | `docs/sdlc/<CYCLE_ID>/2_planning.md` | `#0`, `#8` |
|
|
||||||
|
|
||||||
### B. AI 추론 치환 (Infer)
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{DESIGN_ISSUE_PURPOSE}}` | Planning 이슈명과 핵심 목적 요약 | `#1` |
|
|
||||||
| `{{DESIGN_TASK_TITLE_N}}` | Planning `#2`에서 이식한 태스크 제목 | `#1` |
|
|
||||||
| `{{DESIGN_TASK_REF_N}}` | Planning `#2`에서 이식한 참조 요구사항 | `#1` |
|
|
||||||
| `{{DESIGN_DEFERRED_ITEM_N}}` | Planning `#7`에서 Deferred 처리된 오픈 질문 | `#1` |
|
|
||||||
| `{{ARCH_OVERVIEW}}` | 전체 아키텍처/구조 개요 | `#2` |
|
|
||||||
| `{{COMPONENT_N_NAME}}` | 주요 컴포넌트 이름 | `#2` |
|
|
||||||
| `{{COMPONENT_N_ROLE}}` | 컴포넌트 역할 | `#2` |
|
|
||||||
| `{{COMPONENT_N_SCOPE}}` | 컴포넌트 영향 범위 | `#2` |
|
|
||||||
| `{{DATA_FLOW_N}}` | 데이터 흐름 단계 | `#2` |
|
|
||||||
| `{{DESIGN_DETAIL_N}}` | 태스크별 설계 방향 | `#3` |
|
|
||||||
| `{{DESIGN_TARGET_N}}` | 변경 대상 파일/함수/설정 | `#3` |
|
|
||||||
| `{{DESIGN_IO_N}}` | 입력/출력 또는 사이드이펙트 | `#3` |
|
|
||||||
| `{{DESIGN_EDGE_N}}` | 예외/엣지 케이스 | `#3` |
|
|
||||||
| `{{INTERFACE_N}}` | API/함수 시그니처 | `#4` |
|
|
||||||
| `{{SCHEMA_N}}` | 데이터 스키마/포맷 | `#4` |
|
|
||||||
| `{{EVENT_N}}` | 이벤트/메시지 | `#4` |
|
|
||||||
| `{{SEC_INJECTION}}` ~ `{{SEC_OTHER}}` | 보안 항목 해당 여부 | `#5` |
|
|
||||||
| `{{SEC_INJECTION_ACTION}}` ~ `{{SEC_OTHER_ACTION}}` | 보안 대응 방안 | `#5` |
|
|
||||||
| `{{DESIGN_RISK_LEVEL_N}}` | Design 리스크 등급 | `#6` |
|
|
||||||
| `{{DESIGN_RISK_N}}` | Design 리스크 내용 | `#6` |
|
|
||||||
| `{{DESIGN_MITIGATION_N}}` | 리스크 완화 방안 | `#6` |
|
|
||||||
| `{{DESIGN_ASSUMPTION_N}}` | Design 단계 가정 | `#6` |
|
|
||||||
| `{{DESIGN_OPEN_QUESTION_N}}` | Design 오픈 질문 | `#6` |
|
|
||||||
| `{{DESIGN_OQ_STATUS_N}}` | 오픈 질문 상태 | `#6` |
|
|
||||||
| `{{DESIGN_OQ_ACTION_N}}` | 오픈 질문 처리 방안 | `#6` |
|
|
||||||
| `{{DESIGN_OQ_EXIT_N}}` | 오픈 질문 종료 조건 | `#6` |
|
|
||||||
| `{{CHECK_DESIGN_COMPLETE}}` | 설계 완성 기준 | `#7` |
|
|
||||||
| `{{CHECK_INTERFACE}}` | 인터페이스 확정 기준 | `#7` |
|
|
||||||
| `{{CHECK_SECURITY}}` | 보안 점검 완료 기준 | `#7` |
|
|
||||||
|
|
||||||
### C. 사용자 결정 필요 (Decide)
|
|
||||||
|
|
||||||
| 키 | 설명 | 위치 |
|
|
||||||
|---|---|---|
|
|
||||||
| `{{DESIGN_TASK_OWNER_N}}` | 태스크 담당자 | `#1` |
|
|
||||||
| `{{FREEZE_HANDOFF_DECISION}}` | Implementation 진행 가능 여부 | `#10` |
|
|
||||||
| `{{FREEZE_HANDOFF_RATIONALE}}` | Handoff Decision 판단 근거 | `#10` |
|
|
||||||
| `{{READY_FOR_IMPLEMENTATION}}` | `true` / `false` | `#10` |
|
|
||||||
| `{{CONFIRMED_BY}}` | Freeze 확정 담당자 이름 | `#10` |
|
|
||||||
| `{{CONFIRMED_AT_KST}}` | Freeze 확정 시각 (KST) | `#10` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 참조 위치 요약
|
|
||||||
|
|
||||||
| 파일 | 역할 | 관련 플레이스홀더 |
|
|
||||||
|---|---|---|
|
|
||||||
| `.github/prompts/new-sdlc.prompt.md` | 주기 생성, 자동/추론 치환 실행 | A, B 전체 |
|
|
||||||
| `.github/prompts/review-discovery.prompt.md` | 검토, `_DECISION` 처리, 사용자 결정 항목 정리 | B (`_DECISION`), C |
|
|
||||||
| `.github/prompts/draft-planning.prompt.md` | Planning 초안 생성, Discovery 내용 이식 | A, B 전체 (Planning) |
|
|
||||||
| `.github/prompts/draft-design.prompt.md` | Design 초안 생성, Planning 내용 이식 | A, B 전체 (Design) |
|
|
||||||
| `.github/templates/sdlc/1_discovery.md` | Discovery 원본 템플릿 | A, B, C 전체 |
|
|
||||||
| `.github/templates/sdlc/2_planning.md` | Planning 원본 템플릿 | A, B, C 전체 (Planning) |
|
|
||||||
| `.github/templates/sdlc/3_design.md` | Design 원본 템플릿 | A, B, C 전체 (Design) |
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-design"
|
|
||||||
description: "Approve a Design document and mark it as confirmed, ready for Implementation"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/3_design.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Design 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `3_design.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 10. Design Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Implementation`을 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
승인 명령 실행 시 자동으로 채우며, 이 값이 남아 있어도 차단하지 않는다.
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 10의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 7(체크리스트) 또는 섹션 9(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 10에 이미 기입되어 있으면** 해소된 것으로 간주한다. 승인 처리 시 해당 플레이스홀더를 실질 값으로 치환하거나 설명 텍스트로 대체한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
예시:
|
|
||||||
- 섹션 7의 `{{CONFIRM_CONFIRMEDBY}}` → 섹션 10의 `Confirmed By: Justin` 값이 있으면 → `Justin`으로 치환 또는 체크리스트 기준 텍스트에서 플레이스홀더 제거
|
|
||||||
- 섹션 9 CONFIRM 항목의 `{{CONFIRM_CONFIRMEDBY}}` → 동일하게 처리
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~6(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `3_design.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 10에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 6` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 5`, `# 7`, `# 9`, `# 10` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Implementation 사전 설정 | `Ready for Implementation: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 10. Design Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 10. Design Freeze`의 `- Ready for Implementation:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 10에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Design 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 3. Design | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Implementation 단계(`/draft-implementation <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-discovery"
|
|
||||||
description: "Approve a Discovery document and mark it as confirmed, ready for Planning"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/1_discovery.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Discovery 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `1_discovery.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 11. Discovery Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Planning`을 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
승인 명령 실행 시 자동으로 채우며, 이 값이 남아 있어도 차단하지 않는다.
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 11의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 8(체크리스트) 또는 섹션 10(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 11에 이미 기입되어 있으면** 해소된 것으로 간주한다. 승인 처리 시 해당 플레이스홀더를 실질 값으로 치환하거나 설명 텍스트로 대체한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
예시:
|
|
||||||
- 섹션 8의 `{{CONFIRM_CONFIRMEDBY}}` → 섹션 11의 `Confirmed By: Justin` 값이 있으면 → `Justin`으로 치환 또는 체크리스트 기준 텍스트에서 플레이스홀더 제거
|
|
||||||
- 섹션 10 CONFIRM 항목의 `{{CONFIRM_CONFIRMEDBY}}` → 동일하게 처리
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~7(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `1_discovery.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 3단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 11에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 3단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 6` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 5`, `# 7`, `# 8`, `# 10`, `# 11` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Planning 사전 설정 | `Ready for Planning: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 11. Discovery Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 11. Discovery Freeze`의 `- Ready for Planning:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 11에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Discovery 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 1. Discovery | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Planning 단계(`/planning-draft <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-implementation"
|
|
||||||
description: "Approve an Implementation document and mark it as confirmed, ready for Verification"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/4_implementation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Implementation 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `4_implementation.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 8. Implementation Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Verification`을 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
승인 명령 실행 시 자동으로 채우며, 이 값이 남아 있어도 차단하지 않는다.
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 8의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 5(체크리스트) 또는 섹션 7(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 8에 이미 기입되어 있으면** 해소된 것으로 간주한다. 승인 처리 시 해당 플레이스홀더를 실질 값으로 치환하거나 설명 텍스트로 대체한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~4(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `4_implementation.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 8에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 4` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 5`, `# 7`, `# 8` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Verification 사전 설정 | `Ready for Verification: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 8. Implementation Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 8. Implementation Freeze`의 `- Ready for Verification:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 8에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Implementation 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 4. Implementation | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Verification 단계(`/draft-verification <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-operation"
|
|
||||||
description: "Approve an Operations document and mark the SDLC cycle as complete"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/7_operation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Operations 문서를 최종 승인 처리하고 SDLC 주기를 완료한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `7_operation.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 10. Operations Freeze`의 `Handoff Decision`을 `승인`으로, `SDLC 주기 완료`를 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 10의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 7(체크리스트) 또는 섹션 9(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 10에 이미 기입되어 있으면** 해소된 것으로 간주한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~6(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `7_operation.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 10에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 5` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 7`, `# 9`, `# 10` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| SDLC 주기 완료 사전 설정 | `SDLC 주기 완료: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 10. Operations Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 10. Operations Freeze`의 `- SDLC 주기 완료:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 10에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Operations 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 7. Operations | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **SDLC 주기 완료 안내**: 승인 완료 시 이 주기의 `# 6` 다음 Discovery 환류 항목이 다음 SDLC 주기의 입력이 됨을 안내한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-planning"
|
|
||||||
description: "Approve a Planning document and mark it as confirmed, ready for Design"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/2_planning.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Planning 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `2_planning.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 11. Planning Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Design`을 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
승인 명령 실행 시 자동으로 채우며, 이 값이 남아 있어도 차단하지 않는다.
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 11의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 8(체크리스트) 또는 섹션 10(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 11에 이미 기입되어 있으면** 해소된 것으로 간주한다. 승인 처리 시 해당 플레이스홀더를 실질 값으로 치환하거나 설명 텍스트로 대체한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
예시:
|
|
||||||
- 섹션 8의 `{{CONFIRM_CONFIRMEDBY}}` → 섹션 11의 `Confirmed By: Justin` 값이 있으면 → `Justin`으로 치환 또는 체크리스트 기준 텍스트에서 플레이스홀더 제거
|
|
||||||
- 섹션 10 CONFIRM 항목의 `{{CONFIRM_CONFIRMEDBY}}` → 동일하게 처리
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~7(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `2_planning.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 11에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 7` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 6`, `# 8`, `# 10`, `# 11` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Design 사전 설정 | `Ready for Design: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 11. Planning Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 11. Planning Freeze`의 `- Ready for Design:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 11에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Planning 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 2. Planning | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Design 단계(`/draft-design <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-release"
|
|
||||||
description: "Approve a Release document and mark it as confirmed, ready for Operations"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/6_release.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Release 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `6_release.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 9. Release Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Operations`를 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 9의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 6(체크리스트) 또는 섹션 8(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 9에 이미 기입되어 있으면** 해소된 것으로 간주한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~5(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `6_release.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 9에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 5` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 4`, `# 6`, `# 8`, `# 9` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Operations 사전 설정 | `Ready for Operations: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 9. Release Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 9. Release Freeze`의 `- Ready for Operations:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 9에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Release 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 6. Release | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Operations 단계(`/draft-operation <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
name: "confirm-verification"
|
|
||||||
description: "Approve a Verification document and mark it as confirmed, ready for Release"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/5_verification.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Verification 문서를 최종 승인 처리한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `5_verification.md`의 상태를 `confirmed`로 변경한다.
|
|
||||||
- `# 9. Verification Freeze`의 `Handoff Decision`을 `승인`으로, `Ready for Release`를 `true`로 변경한다.
|
|
||||||
- `마지막 갱신 시각(KST)`과 승인 시각(`CONFIRMED_AT_KST`)을 현재 시각으로 채운다.
|
|
||||||
- 승인 불가 조건이 있으면 문서를 변경하지 않고 이유를 보고한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 플레이스홀더 분류 기준
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 동일하게 차단 조건으로 취급하지 않는다. 아래 세 유형으로 먼저 분류한다.
|
|
||||||
|
|
||||||
### A. 승인 행위 자체로 채워지는 플레이스홀더 (자동 해소)
|
|
||||||
|
|
||||||
| 플레이스홀더 패턴 | 자동 채움 값 |
|
|
||||||
|---|---|
|
|
||||||
| `{{CONFIRMED_AT_KST...}}` | 현재 시각 (KST, `YYYY-MM-DD HH:MM:SS KST`) |
|
|
||||||
| `{{CONFIRMED_BY...}}` | 섹션 9의 `Confirmed By:` 줄에서 읽은 값. 해당 줄이 없으면 차단하지 않고 플레이스홀더를 제거한 뒤 빈 값으로 처리 |
|
|
||||||
|
|
||||||
### B. 맥락상 해소된 플레이스홀더 (자동 정리)
|
|
||||||
|
|
||||||
섹션 6(체크리스트) 또는 섹션 8(사용자 결정 요약)에 있는 플레이스홀더는 **해당 결정의 실질 값이 섹션 9에 이미 기입되어 있으면** 해소된 것으로 간주한다. 차단하지 않는다.
|
|
||||||
|
|
||||||
### C. 실질 미해소 플레이스홀더 (차단 대상)
|
|
||||||
|
|
||||||
섹션 1~5(본문 내용)에 남아 있는 `{{...}}` 플레이스홀더로서, 위 A·B 유형에 해당하지 않는 것. 이 플레이스홀더가 하나라도 있으면 승인을 보류한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 값이 CYCLE_ID(예: `sdlc-001`)이면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `5_verification.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로를 사용한다.
|
|
||||||
- 파일이 존재하지 않으면 경로를 재확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 플레이스홀더 분류 및 사전 해소
|
|
||||||
|
|
||||||
문서 전체의 `{{...}}` 플레이스홀더를 스캔해 A·B·C 유형으로 분류한다.
|
|
||||||
|
|
||||||
- **A 유형**: 목록만 기록한다. 4단계에서 자동으로 채운다.
|
|
||||||
- **B 유형**: 섹션 9에서 실질 값을 읽어 치환 가능한지 확인한다. 가능하면 4단계에서 함께 처리한다.
|
|
||||||
- **C 유형**: 목록을 보고하고 승인을 보류한다.
|
|
||||||
|
|
||||||
### 3. 승인 가능 여부 확인 (사전 게이트 검사)
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 승인을 진행한다.
|
|
||||||
|
|
||||||
| 항목 | 확인 기준 |
|
|
||||||
|------|-----------|
|
|
||||||
| 문서 상태 | `confirmed`가 아닌 상태(`draft` 또는 `review`)여야 한다. 이미 `confirmed`면 중단한다. |
|
|
||||||
| 실질 미해소 플레이스홀더 (C 유형) | C 유형 플레이스홀더가 0개여야 한다. |
|
|
||||||
| 검증 항목 미통과 | `# 3` 검증 결과에 `실패` 또는 `블로킹` 상태 항목이 없어야 한다. |
|
|
||||||
| 결함(BUG) Open 상태 | `# 4` BUG 목록에 `Open` 상태 항목이 없어야 한다. |
|
|
||||||
| 오픈 질문 미해소 | `# 5` 오픈 질문 목록에 `상태: Open`인 항목이 없어야 한다. |
|
|
||||||
| 필수 섹션 미완성 | `# 2`, `# 3`, `# 6`, `# 8`, `# 9` 섹션이 존재하고 내용이 채워져 있어야 한다. |
|
|
||||||
| Ready for Release 사전 설정 | `Ready for Release: false`이거나 아직 갱신 전인 경우만 승인 처리 대상이다. 이미 `true`이면 이미 처리된 문서임을 알린다. |
|
|
||||||
|
|
||||||
> **예외**: C 유형 플레이스홀더 또는 오픈 질문 미해소만 문제인 경우, 사용자가 명시적으로 `--force`를 표현했으면 해당 항목 목록을 보고하되 승인을 진행한다. 단, 검증 실패/블로킹 항목이나 BUG `Open` 항목이 있으면 `--force`로도 승인하지 않는다.
|
|
||||||
|
|
||||||
### 4. 문서 업데이트 (승인 가능 시에만 실행)
|
|
||||||
|
|
||||||
아래 항목을 변경한다. 이 목록 외 내용은 절대 수정하지 않는다.
|
|
||||||
|
|
||||||
1. `# 0. 문서 상태`의 `- 상태:` 줄 → `confirmed`로 변경
|
|
||||||
2. `# 0. 문서 상태`의 `- 마지막 갱신 시각(KST):` → 현재 시각으로 변경
|
|
||||||
3. `# 9. Verification Freeze`의 `- Handoff Decision:` → `승인`으로 변경
|
|
||||||
4. `# 9. Verification Freeze`의 `- Ready for Release:` → `true`로 변경
|
|
||||||
5. **A 유형 플레이스홀더** → 각 자동 채움 값으로 치환
|
|
||||||
6. **B 유형 플레이스홀더** → 섹션 9에서 읽은 실질 값으로 치환 (또는 플레이스홀더 제거)
|
|
||||||
7. `docs/sdlc/<CYCLE_ID>/index.md`의 Verification 행 `상태` 열 → `` `confirmed` ``로 변경. 행 형식: `| 5. Verification | ... | ... |`
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **처리 결과**: 승인 완료 또는 승인 불가
|
|
||||||
- **자동 처리된 플레이스홀더 목록** (A·B 유형, 승인 완료 시)
|
|
||||||
- **변경된 필드 목록** (승인 완료 시)
|
|
||||||
- **미충족 항목 목록** (승인 불가 시): 각 항목에 대한 조치 안내 포함
|
|
||||||
- **다음 단계 안내**: 승인 완료 시 Release 단계(`/draft-release <CYCLE_ID>`) 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 4단계에서 명시된 항목 외에는 문서 내용을 절대 변경하지 않는다.
|
|
||||||
- C 유형 미해소 조건이 있으면 문서에 아무 변경도 가하지 않는다.
|
|
||||||
- 이미 `confirmed` 상태인 문서에는 재처리하지 않는다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-design"
|
|
||||||
description: "Create a 3_design.md draft from a confirmed Planning document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/2_planning.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Planning 문서를 기반으로 Design 초안(`3_design.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/3_design.md`를 생성한다.
|
|
||||||
- `2_planning.md`의 확정 내용(태스크, 요구사항, 검증 계획, 리스크)을 Design 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 항목은 초안 문장으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `2_planning.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `2_planning.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Planning 인계 조건 확인
|
|
||||||
|
|
||||||
`2_planning.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Design | `true`여야 한다 |
|
|
||||||
| 3_design.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. Planning 내용 추출
|
|
||||||
|
|
||||||
`2_planning.md`와 `1_discovery.md`에서 아래 항목을 읽어 Design 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- 태스크 전체 목록 및 담당자 (`# 2`)
|
|
||||||
- 태스크별 DoD (`# 2`)
|
|
||||||
- FR/NFR 목록 (`# 1`)
|
|
||||||
- 검증 계획 개요 (`# 6`)
|
|
||||||
- 리스크 및 완화 방안 (`# 7`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`# 7`)
|
|
||||||
- 외부 의존성 및 기술/환경 제약 (`# 5`)
|
|
||||||
|
|
||||||
### 4. Design 초안 작성 원칙
|
|
||||||
|
|
||||||
- Planning 태스크 구조와 FR/NFR을 바탕으로 각 태스크의 설계 방향, 변경 대상, 입출력을 초안으로 채운다.
|
|
||||||
- 저장소 구조, 파일 경로, 기존 코드 패턴을 실제로 확인해 변경 대상(`DESIGN_TARGET_N`)을 구체적으로 명시한다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 외부 시스템 계약이 미확정인 인터페이스
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
- 보안 고려사항(`# 5`)은 변경 내용을 기준으로 OWASP Top 10 항목을 점검해 해당/비해당과 근거를 채운다.
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Planning 경로를 자동 입력 |
|
|
||||||
| `# 1` Planning 인계 요약 | Planning `# 2` 태스크 목록 이식, `# 7`의 Deferred 항목 이식 |
|
|
||||||
| `# 2` 아키텍처/구조 개요 | FR/NFR과 저장소 구조를 기반으로 변경 영향 범위 초안 작성 |
|
|
||||||
| `# 2` 주요 컴포넌트 | 실제 파일/모듈/디렉터리 구조를 확인해 영향 컴포넌트 나열 |
|
|
||||||
| `# 3` 상세 설계 | 각 T-N 태스크별 설계 방향, 변경 대상, 입출력 초안 작성 |
|
|
||||||
| `# 4` 인터페이스 정의 | FR/NFR 기반으로 필요한 API, 함수 시그니처, 스키마 초안 작성 |
|
|
||||||
| `# 5` 보안 고려사항 | 변경 내용 기준 OWASP 항목 점검, 해당/비해당 및 대응 방안 채움 |
|
|
||||||
| `# 6` 리스크 | Planning 이월 리스크 중 Design 관련 항목 포함 및 신규 Design 리스크 추가 |
|
|
||||||
| `# 8` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 9` 사용자 결정 필요 | 미확정 인터페이스, 외부 시스템 계약 등 사용자 결정 필요 항목 정리 |
|
|
||||||
| `# 10` Freeze 플래그 | `Handoff Decision: 보류`, `Ready for Implementation: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/3_design.md`
|
|
||||||
- 기반: `.github/templates/sdlc/3_design.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성 결과**: 파일 경로
|
|
||||||
- **채워진 항목 요약**: 자동 추론으로 채운 주요 내용 목록
|
|
||||||
- **사용자 결정 필요 항목**: `# 9`에 정리된 항목 요약
|
|
||||||
- **다음 단계 안내**: Design 검토 후 `/confirm-design <CYCLE_ID>` 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- Planning이 `confirmed` 상태가 아니면 초안을 생성하지 않는다.
|
|
||||||
- 이미 `3_design.md`가 존재하는 경우 사용자 명시 없이 덮어쓰지 않는다.
|
|
||||||
- 변경 대상 경로/파일명은 저장소를 직접 확인해 실제 존재하는 경로를 사용한다. 추측으로 채우지 않는다.
|
|
||||||
- 보안 고려사항은 "비해당"이라도 근거를 한 줄 이상 남긴다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-implementation"
|
|
||||||
description: "Create a 4_implementation.md draft from a confirmed Design document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/3_design.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Design 문서를 기반으로 Implementation 초안(`4_implementation.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/4_implementation.md`를 생성한다.
|
|
||||||
- `3_design.md`의 확정 내용(태스크, 변경 대상, 인터페이스, 보안)을 Implementation 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 항목은 초안 문장으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `3_design.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `3_design.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Design 인계 조건 확인
|
|
||||||
|
|
||||||
`3_design.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Implementation | `true`여야 한다 |
|
|
||||||
| 4_implementation.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. Design 내용 추출
|
|
||||||
|
|
||||||
`3_design.md`와 `2_planning.md`에서 아래 항목을 읽어 Implementation 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- 태스크 전체 목록 및 담당자 (`# 1`)
|
|
||||||
- 태스크별 변경 대상 파일/함수 (`# 3`)
|
|
||||||
- 태스크별 입출력 및 엣지 케이스 (`# 3`)
|
|
||||||
- 인터페이스 정의 (`# 4`)
|
|
||||||
- 보안 고려사항 (`# 5`)
|
|
||||||
- 리스크 및 완화 방안 (`# 6`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`# 6`)
|
|
||||||
|
|
||||||
### 4. Implementation 초안 작성 원칙
|
|
||||||
|
|
||||||
- Design에서 확정된 태스크 구조와 변경 대상을 기반으로 각 태스크의 구현 방법, 변경 파일, 완료 조건을 초안으로 채운다.
|
|
||||||
- 저장소 구조, 파일 경로, 기존 코드 패턴을 실제로 확인해 변경 파일 목록(`IMP_FILE_N`)을 구체적으로 명시한다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 태스크 담당자 (`{{IMP_TASK_OWNER_N:TBD}}`)
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Design 경로를 자동 입력 |
|
|
||||||
| `# 1` Design 인계 요약 | Design `# 1` 태스크 목록 및 변경 대상 이식, `# 6`의 Deferred 항목 이식 |
|
|
||||||
| `# 2` 구현 순서 | 태스크 의존 관계를 기반으로 구현 순서 초안 작성 |
|
|
||||||
| `# 2` 태스크별 구현 방법 | Design `# 3` 상세 설계 내용을 기반으로 구현 접근 방법 초안 작성 |
|
|
||||||
| `# 3` 변경 파일 목록 | Design `# 3`의 변경 대상 파일/함수를 기반으로 실제 경로 확인 후 목록 작성 |
|
|
||||||
| `# 4` 리스크 | Design 이월 리스크 중 Implementation 관련 항목 포함 및 신규 리스크 추가 |
|
|
||||||
| `# 6` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 7` 사용자 결정 필요 | 미확정 태스크 담당자, 외부 시스템 호출 확인 필요 항목 정리 |
|
|
||||||
| `# 8` Freeze 플래그 | `Handoff Decision: 보류`, `Ready for Verification: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/4_implementation.md`
|
|
||||||
- 기반: `.github/templates/sdlc/4_implementation.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성된 파일 경로**
|
|
||||||
- **자동 채워진 항목 목록** (어떤 값으로 채웠는지)
|
|
||||||
- **플레이스홀더로 남긴 항목 목록** (사용자 결정 필요 이유 포함)
|
|
||||||
- **다음 단계 안내**: `/review-implementation <CYCLE_ID>` 실행 안내
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-operation"
|
|
||||||
description: "Create a 7_operation.md draft from a confirmed Release document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/6_release.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Release 문서를 기반으로 Operations 초안(`7_operation.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/7_operation.md`를 생성한다.
|
|
||||||
- `6_release.md`의 배포 결과와 모니터링 정보를 Operations 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 운영 항목은 초안으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `6_release.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `6_release.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Release 인계 조건 확인
|
|
||||||
|
|
||||||
`6_release.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Operations | `true`여야 한다 |
|
|
||||||
| 7_operation.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. 내용 추출
|
|
||||||
|
|
||||||
`6_release.md`, `5_verification.md`, `1_discovery.md`에서 아래 항목을 읽어 Operations 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- 배포 환경 및 배포 방식 (`6_release.md` `# 2`)
|
|
||||||
- 스모크 테스트 항목 (`6_release.md` `# 4`)
|
|
||||||
- Release 모니터링 확인 항목 (`6_release.md` `# 4`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`6_release.md` `# 5`)
|
|
||||||
- 성공 기준(S-N) (`1_discovery.md` `# 7`)
|
|
||||||
|
|
||||||
### 4. Operations 초안 작성 원칙
|
|
||||||
|
|
||||||
- Release의 스모크 테스트/모니터링 항목을 확장해 지속적인 운영 모니터링 항목을 도출한다.
|
|
||||||
- 저장소 구조와 배포 방식을 참고해 장애 대응 절차를 구체적으로 초안으로 작성한다.
|
|
||||||
- `# 6` 다음 Discovery 환류 항목은 초안 생성 시 빈 상태(`없음`)로 두고, 운영 중 갱신하도록 안내한다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 모니터링 담당자 (`{{OPS_MONITOR_OWNER:TBD}}`)
|
|
||||||
- 에스컬레이션 연락처 (`{{OPS_ESCALATION_1:TBD}}`)
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Release 경로를 자동 입력 |
|
|
||||||
| `# 1` Release 인계 요약 | Release 배포 결과 요약, Deferred 항목 이식 |
|
|
||||||
| `# 2` 모니터링 항목 | Release 스모크 테스트/모니터링 항목을 기반으로 지속 모니터링 항목 도출, 임계값 초안 작성 |
|
|
||||||
| `# 3` 런북 — 정상 운영 절차 | Release 배포 방식 기반으로 주기적 확인 절차 초안 작성 |
|
|
||||||
| `# 3` 런북 — 장애 대응 절차 | 롤백 계획 및 배포 방식 기반으로 장애 초기 대응 절차 초안 작성 |
|
|
||||||
| `# 5` 리스크 | Release 이월 리스크 중 Operations 관련 항목 포함 |
|
|
||||||
| `# 6` 다음 Discovery 환류 | `없음`으로 초기화 (운영 중 갱신 안내) |
|
|
||||||
| `# 8` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 9` 사용자 결정 필요 | 모니터링 담당자, 에스컬레이션 담당자 미지정 항목 정리 |
|
|
||||||
| `# 10` Freeze 플래그 | `Handoff Decision: 보류`, `SDLC 주기 완료: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/7_operation.md`
|
|
||||||
- 기반: `.github/templates/sdlc/7_operation.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성된 파일 경로**
|
|
||||||
- **자동 채워진 항목 목록** (어떤 값으로 채웠는지)
|
|
||||||
- **플레이스홀더로 남긴 항목 목록** (사용자 결정 필요 이유 포함)
|
|
||||||
- **다음 단계 안내**: `/review-operation <CYCLE_ID>` 실행 안내
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-planning"
|
|
||||||
description: "Create a 2_planning.md draft from a confirmed Discovery document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/1_discovery.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Discovery 문서를 기반으로 Planning 초안(`2_planning.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/2_planning.md`를 생성한다.
|
|
||||||
- `1_discovery.md`의 확정 내용(FR/NFR, 범위, 성공 기준, 리스크)을 Planning 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 항목은 초안 문장으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `1_discovery.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `1_discovery.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Discovery 인계 조건 확인
|
|
||||||
|
|
||||||
`1_discovery.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Planning | `true`여야 한다 |
|
|
||||||
| 2_planning.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. Discovery 내용 추출
|
|
||||||
|
|
||||||
`1_discovery.md`에서 아래 항목을 읽어 Planning 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- In Scope / Out of Scope (`# 5`)
|
|
||||||
- FR 전체 목록 (`# 5`)
|
|
||||||
- NFR 전체 목록 (`# 5`)
|
|
||||||
- 성공 기준 S-1~S-N (`# 7`)
|
|
||||||
- 리스크 R-1~R-N 및 완화 방안 (`# 6`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`# 6`)
|
|
||||||
- 가정 A-1~A-N (`# 6`)
|
|
||||||
|
|
||||||
### 4. Planning 초안 작성 원칙
|
|
||||||
|
|
||||||
- 입력 요청과 Discovery 내용을 바탕으로 합리적으로 추론 가능한 항목은 자연어 문장으로 채운다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 태스크 담당자 (`{{TASK_OWNER_N:TBD}}`)
|
|
||||||
- 마일스톤 목표 날짜 (`{{MILESTONE_N_DATE:TBD}}`)
|
|
||||||
- 이터레이션 기간 (`{{ITERATION_N_PERIOD:TBD}}`)
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
- 공수 추정은 유사 작업 기준 또는 태스크 복잡도 기반으로 초안 값을 제안한다. 불확실하면 범위(예: `2-4 SP`)로 표기한다.
|
|
||||||
- 태스크는 각 FR 1개당 최소 1개를 생성하되, 구현/검토/문서화를 묶거나 분리하는 것이 합리적이면 그렇게 한다.
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Discovery 경로를 자동 입력 |
|
|
||||||
| `# 1` Discovery 인계 요약 | Discovery `# 5` 범위/FR/NFR 내용 요약 이식 |
|
|
||||||
| `# 1` 이월 오픈 질문 | Discovery `# 6`의 `Deferred` 항목 이식 |
|
|
||||||
| `# 2` 태스크 분해 | FR/NFR 기반으로 최소 2개 이상의 태스크 생성 |
|
|
||||||
| `# 2` 태스크 DoD | 각 태스크의 완료 조건을 FR 내용 기반으로 초안 작성 |
|
|
||||||
| `# 3` 공수 추정 | 각 태스크에 초안 공수값 또는 범위 제안 |
|
|
||||||
| `# 4` 마일스톤 | 태스크 그룹 기반으로 최소 1개 이상 초안 작성 |
|
|
||||||
| `# 5` 의존성 | 태스크 간 의존 관계를 분석해 초안 작성 |
|
|
||||||
| `# 6` 검증 계획 | Discovery 성공 기준(S-N)과 연결해 검증 방법 초안 작성 |
|
|
||||||
| `# 7` 리스크 | Discovery 이월 리스크 중 Planning 관련 항목 포함 및 신규 Planning 리스크 추가 |
|
|
||||||
| `# 9` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 10` 사용자 결정 필요 | 담당자 지정, 일정 확정, 예산/환경 제약 등 사용자 결정 필요 항목 정리 |
|
|
||||||
| `# 11` Freeze 플래그 | `Handoff Decision: 보류`, `Ready for Design: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/2_planning.md`
|
|
||||||
- 기반: `.github/templates/sdlc/2_planning.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성 결과**: 파일 경로
|
|
||||||
- **채워진 항목 요약**: 자동 추론으로 채운 주요 내용 목록
|
|
||||||
- **사용자 결정 필요 항목**: `# 10`에 정리된 항목 요약
|
|
||||||
- **다음 단계 안내**: Planning 검토 후 `/confirm-planning <CYCLE_ID>` 실행 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- Discovery가 `confirmed` 상태가 아니면 초안을 생성하지 않는다.
|
|
||||||
- 이미 `2_planning.md`가 존재하는 경우 사용자 명시 없이 덮어쓰지 않는다.
|
|
||||||
- 추론 불가 항목은 `TBD` 대신 의미 있는 플레이스홀더(`{{TASK_OWNER_1:TBD}}` 등)로 남긴다.
|
|
||||||
- 공수 추정 초안은 반드시 근거(유사 사례, 복잡도 판단 등)와 함께 `# 3`에 명시한다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-release"
|
|
||||||
description: "Create a 6_release.md draft from a confirmed Verification document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/5_verification.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Verification 문서를 기반으로 Release 초안(`6_release.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/6_release.md`를 생성한다.
|
|
||||||
- `5_verification.md`의 검증 결과와 `4_implementation.md`의 변경 파일 목록을 Release 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 배포 계획 항목은 초안으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `5_verification.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `5_verification.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Verification 인계 조건 확인
|
|
||||||
|
|
||||||
`5_verification.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Release | `true`여야 한다 |
|
|
||||||
| 6_release.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. 내용 추출
|
|
||||||
|
|
||||||
`5_verification.md`, `4_implementation.md`, `1_discovery.md`에서 아래 항목을 읽어 Release 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- 검증 결과 요약 (`5_verification.md` `# 3`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`5_verification.md` `# 5`)
|
|
||||||
- 변경 파일 목록 (`4_implementation.md` `# 3`)
|
|
||||||
- 저장소 구조 및 배포 관련 설정 파일
|
|
||||||
|
|
||||||
### 4. Release 초안 작성 원칙
|
|
||||||
|
|
||||||
- 저장소 구조와 배포 관련 파일(`.github/workflows`, `Makefile`, `bootstrap/` 등)을 실제로 확인해 배포 방식과 도구를 구체적으로 초안으로 채운다.
|
|
||||||
- 롤백 계획은 변경 파일 목록을 기반으로 현실적인 롤백 절차를 초안으로 작성한다.
|
|
||||||
- 스모크 테스트 항목은 핵심 기능 FR을 기반으로 도출한다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 롤백 담당자 (`{{REL_ROLLBACK_OWNER:TBD}}`)
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Verification 경로를 자동 입력 |
|
|
||||||
| `# 1` Verification 인계 요약 | Verification 검증 결과 요약, Deferred 항목 이식 |
|
|
||||||
| `# 2` 배포 환경/방식/도구 | 저장소 구조 기반으로 배포 방식 초안 작성 |
|
|
||||||
| `# 2` 배포 순서 | 변경 파일 목록 기반으로 의존 관계를 고려한 배포 순서 초안 작성 |
|
|
||||||
| `# 3` 롤백 계획 | 변경 내용에 대한 현실적인 롤백 조건 및 절차 초안 작성 |
|
|
||||||
| `# 4` 스모크 테스트 | FR 기반으로 핵심 시나리오 도출 및 확인 방법 초안 작성 |
|
|
||||||
| `# 5` 리스크 | Verification 이월 리스크 중 Release 관련 항목 포함 |
|
|
||||||
| `# 7` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 8` 사용자 결정 필요 | 배포 담당자, 롤백 담당자 미지정 항목 정리 |
|
|
||||||
| `# 9` Freeze 플래그 | `Handoff Decision: 보류`, `Ready for Operations: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/6_release.md`
|
|
||||||
- 기반: `.github/templates/sdlc/6_release.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성된 파일 경로**
|
|
||||||
- **자동 채워진 항목 목록** (어떤 값으로 채웠는지)
|
|
||||||
- **플레이스홀더로 남긴 항목 목록** (사용자 결정 필요 이유 포함)
|
|
||||||
- **다음 단계 안내**: `/review-release <CYCLE_ID>` 실행 안내
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
---
|
|
||||||
name: "draft-verification"
|
|
||||||
description: "Create a 5_verification.md draft from a confirmed Implementation document"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/4_implementation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
확정된 Implementation 문서를 기반으로 Verification 초안(`5_verification.md`)을 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/<CYCLE_ID>/5_verification.md`를 생성한다.
|
|
||||||
- `4_implementation.md`의 완료 태스크와 `1_discovery.md`의 성공 기준(S-N)을 Verification 초안의 입력으로 사용한다.
|
|
||||||
- 추론 가능한 검증 항목은 초안으로 채우고, 사용자 결정이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 CYCLE_ID(예: `sdlc-001`)를 제공했으면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `4_implementation.md` 경로를 확정한다.
|
|
||||||
- 사용자가 파일 경로를 직접 제공했으면 해당 경로의 상위 폴더에서 `4_implementation.md`를 찾는다.
|
|
||||||
- 파일이 없으면 사용자에게 피드백하고 중단한다.
|
|
||||||
|
|
||||||
### 2. Implementation 인계 조건 확인
|
|
||||||
|
|
||||||
`4_implementation.md`에서 아래 조건을 확인한다. 미충족 시 중단하고 이유를 보고한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `confirmed`여야 한다 |
|
|
||||||
| Ready for Verification | `true`여야 한다 |
|
|
||||||
| 5_verification.md 존재 여부 | 이미 존재하면 덮어쓰기 의사를 확인하고, 의사 표현이 없으면 중단한다 |
|
|
||||||
|
|
||||||
### 3. 내용 추출
|
|
||||||
|
|
||||||
`4_implementation.md`, `3_design.md`, `1_discovery.md`에서 아래 항목을 읽어 Verification 초안 작성에 사용한다.
|
|
||||||
|
|
||||||
- 이슈명 (`# 0`의 `이슈명:`)
|
|
||||||
- 문서 ID / CYCLE_ID
|
|
||||||
- 구현 완료 태스크 목록 및 변경 파일 (`# 1`, `# 3`)
|
|
||||||
- 태스크별 완료 조건(DoD) (`# 2`)
|
|
||||||
- Deferred 처리된 오픈 질문 (`# 4`)
|
|
||||||
- 성공 기준(S-N) (`1_discovery.md` `# 7`)
|
|
||||||
- 기능 요구사항(FR) 목록 (`1_discovery.md` `# 5`)
|
|
||||||
- 검증 계획 개요 (`2_planning.md` `# 6`)
|
|
||||||
|
|
||||||
### 4. Verification 초안 작성 원칙
|
|
||||||
|
|
||||||
- Discovery 성공 기준(S-N)과 FR 목록을 기반으로 검증 항목(VC-N)을 도출한다.
|
|
||||||
- 각 VC 항목에 검증 방법(수동/자동/혼합)과 측정 가능한 성공 기준을 초안으로 채운다.
|
|
||||||
- 검증 결과(`# 3`) 테이블은 모두 `미완료`로 초기화한다.
|
|
||||||
- 아래 항목은 추론 불가 또는 사용자 확인 필요이므로 플레이스홀더로 남긴다.
|
|
||||||
- 검증 담당자 (`{{VER_OWNER_N:TBD}}`)
|
|
||||||
- Freeze 확정 담당자 (`{{CONFIRMED_BY:TBD}}`)
|
|
||||||
|
|
||||||
### 5. 자동으로 채워야 하는 항목
|
|
||||||
|
|
||||||
| 항목 | 채움 방법 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0` 메타데이터 | 현재 시각, CYCLE_ID, 이슈명, Implementation 경로를 자동 입력 |
|
|
||||||
| `# 1` Implementation 인계 요약 | Implementation `# 1`/`# 2` 태스크 목록 및 DoD 이식, `# 4`의 Deferred 항목 이식 |
|
|
||||||
| `# 2` 검증 항목 | Discovery S-N 기준과 FR/NFR을 기반으로 VC-N 항목 도출 및 검증 방법/성공 기준 초안 작성 |
|
|
||||||
| `# 2` 성공 기준 연결 | S-N과 VC-N의 연결 관계 명시 |
|
|
||||||
| `# 3` 검증 결과 | 모든 항목 `미완료`로 초기화, 통과/실패 집계 0으로 초기화 |
|
|
||||||
| `# 5` 리스크 | Implementation 이월 리스크 중 Verification 관련 항목 포함 |
|
|
||||||
| `# 7` 파일 처리 결과 | 생성 결과와 참조 문서 경로 채움 |
|
|
||||||
| `# 8` 사용자 결정 필요 | 검증 담당자 미지정 항목 정리 |
|
|
||||||
| `# 9` Freeze 플래그 | `Handoff Decision: 보류`, `Ready for Release: false` 초기값 입력 |
|
|
||||||
|
|
||||||
### 6. 파일 생성
|
|
||||||
|
|
||||||
- 경로: `docs/sdlc/<CYCLE_ID>/5_verification.md`
|
|
||||||
- 기반: `.github/templates/sdlc/5_verification.md`를 구조 기준으로 사용하되, 위 작성 원칙에 따라 채운 초안을 생성한다.
|
|
||||||
|
|
||||||
### 7. 결과 보고
|
|
||||||
|
|
||||||
응답에 아래 내용을 포함한다.
|
|
||||||
|
|
||||||
- **생성된 파일 경로**
|
|
||||||
- **자동 채워진 항목 목록** (어떤 값으로 채웠는지)
|
|
||||||
- **플레이스홀더로 남긴 항목 목록** (사용자 결정 필요 이유 포함)
|
|
||||||
- **다음 단계 안내**: `/review-verification <CYCLE_ID>` 실행 안내
|
|
||||||
@@ -1,173 +0,0 @@
|
|||||||
---
|
|
||||||
name: "new-sdlc"
|
|
||||||
description: "Create next SDLC cycle folder and draft 1_discovery.md from slash-command arguments"
|
|
||||||
argument-hint: "예: 사용자 로그인 기능 추가 - OAuth2 소셜 로그인, 세션 관리, 로그아웃 처리"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
/new-sdlc 로 들어온 인자를 기반으로 새 SDLC 주기를 생성한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `docs/sdlc/sdlc-<id>_<YYYYMMDD>_<topic-slug>/` 폴더를 생성한다.
|
|
||||||
- 위 폴더에 `1_discovery.md` draft 문서를 생성한다.
|
|
||||||
- 위 폴더에 `index.md`, `summary.md` draft 문서를 함께 생성한다.
|
|
||||||
- `1_discovery.md`는 `.github/templates/sdlc/1_discovery.md`를 기반으로, 입력 문장과 현재 구현 상태를 바탕으로 기본 내용을 가능한 한 채운 초안이어야 한다.
|
|
||||||
|
|
||||||
입력 해석:
|
|
||||||
- 사용자가 `/new-sdlc ...` 뒤에 입력한 전체 텍스트를 이슈 원문으로 사용한다.
|
|
||||||
- 이슈명은 원문과 현재 구현 상태를 확인하여 한 문장으로 요약한다.
|
|
||||||
- `topic-slug`는 이슈 원문을 소문자 kebab-case로 변환해 만든다.
|
|
||||||
- slug 규칙:
|
|
||||||
- 영문/숫자 외 문자는 `-`로 치환
|
|
||||||
- 연속 `-`는 하나로 축약
|
|
||||||
- 시작/끝 `-` 제거
|
|
||||||
- 결과가 비면 `untitled` 사용
|
|
||||||
|
|
||||||
Discovery 초안 작성 원칙:
|
|
||||||
- 입력 문장이 짧더라도 기능 목적, 예상 사용자, 산출물, 성공 조건을 합리적으로 추론해 초안을 작성한다.
|
|
||||||
- 이미 입력만으로 추론 가능한 내용은 플레이스홀더로 남기지 말고 자연어 문장으로 채운다.
|
|
||||||
- 사용자 승인, 외부 데이터, 정책 결정, 확정 범위 경계처럼 추론만으로 확정하면 안 되는 항목만 플레이스홀더로 남긴다.
|
|
||||||
- 사용자 결정이 필요한 항목은 `결정 필요` 같은 일반 문장으로만 쓰지 말고, 반드시 `{{...}}` 플레이스홀더 형태로 남긴다.
|
|
||||||
- 모르면 공란으로 두지 말고 아래 둘 중 하나로 처리한다.
|
|
||||||
- 합리적 기본안 제시 가능: 초안 문장으로 채운다.
|
|
||||||
- 사용자 확인이 반드시 필요: `# 10. 사용자 결정 필요 항목 요약`에 넣고 관련 본문에는 최소 플레이스홀더를 남긴다.
|
|
||||||
|
|
||||||
자동으로 채워야 하는 Discovery 섹션:
|
|
||||||
- `# 1. 계획 상태 요약`
|
|
||||||
- `해석` 2줄은 입력 요청을 바탕으로 직접 작성한다.
|
|
||||||
- `# 2. 요구사항 판정 결과`
|
|
||||||
- 기본값은 `신규`로 두되, 입력만으로 명백한 중복/유사라고 판단 가능한 경우에만 다르게 쓴다.
|
|
||||||
- 근거도 2줄 작성한다.
|
|
||||||
- `# 3. 문제점의 요약`
|
|
||||||
- 현재 상태, 기대 상태, 이해관계자, 주요 사용자 시나리오를 입력 기반으로 채운다.
|
|
||||||
- `# 4. 이번에 정의할 변경`
|
|
||||||
- 핵심 변경 항목 1~3개를 직접 작성한다.
|
|
||||||
- `영향 범위`의 코드/문서/운영 영향도 추론해 채운다.
|
|
||||||
- `# 5. 요구사항 목록`
|
|
||||||
- FR 2개 이상, NFR 1개 이상을 직접 작성한다.
|
|
||||||
- In Scope/Out of Scope는 초안 수준으로 제안하되, 사용자 승인 없이는 확정할 수 없는 경계는 플레이스홀더로 남긴다.
|
|
||||||
- `# 6. 리스크/가정 목록`
|
|
||||||
- 리스크 2개 이상, 가정 2개 이상을 직접 작성한다.
|
|
||||||
- 오픈 질문은 정말 결정이 필요한 경우에만 남긴다.
|
|
||||||
- `# 7. 초기 성공 기준`
|
|
||||||
- 성공 기준 2개 이상과 측정 방식/데이터 출처 초안을 작성한다.
|
|
||||||
- `# 9. 파일 처리 결과`
|
|
||||||
- 생성 결과와 최소 참조 문서를 채운다. 참조 문서가 없으면 `없음`이라고 쓴다.
|
|
||||||
- `# 10. 사용자 결정 필요 항목 요약`
|
|
||||||
- 자동 추론으로 확정할 수 없는 항목만 `DECIDE`, `CONFIRM`, `DATA`에 넣는다.
|
|
||||||
- 이 섹션의 항목은 설명문이 아니라 플레이스홀더 형식으로 남긴다.
|
|
||||||
- `# 11. Discovery Freeze`
|
|
||||||
- `Handoff Decision`은 기본 `보류`로 둔다.
|
|
||||||
- `Handoff Rationale`에는 "초기 Discovery 초안 생성 완료, Planning 인계 전 사용자 확인 필요"와 같이 현재 상태를 적는다.
|
|
||||||
|
|
||||||
플레이스홀더를 유지해도 되는 대표 항목:
|
|
||||||
- 승인/확정 책임자
|
|
||||||
- 외부 문서 경로, 아직 없는 후속 산출물 경로
|
|
||||||
- 사용자 확인이 필요한 범위 경계
|
|
||||||
- 데이터 출처가 실제로 정해지지 않은 성공 지표 측정값
|
|
||||||
- 오픈 질문의 최종 답변
|
|
||||||
|
|
||||||
플레이스홀더 유지 규칙:
|
|
||||||
- 사용자 승인 전 확정되면 안 되는 정책/범위/산출물 위치/대상 독자 결정은 본문에도 플레이스홀더를 남긴다.
|
|
||||||
- `# 10. 사용자 결정 필요 항목 요약`에 들어가는 항목은 반드시 `{{DECIDE_*}}`, `{{CONFIRM_*}}`, `{{DATA_*}}` 형태를 사용한다.
|
|
||||||
- `TBD` 같은 일반 문자열보다 의미가 드러나는 플레이스홀더를 우선 사용한다.
|
|
||||||
|
|
||||||
실행 절차:
|
|
||||||
1. `docs/sdlc/` 아래의 기존 폴더 중 `sdlc-<3자리>_` 패턴을 스캔해 최대 번호를 찾는다.
|
|
||||||
2. 다음 번호를 3자리 zero-pad로 계산한다. 예: `001`, `002`, ...
|
|
||||||
3. 오늘 날짜를 `YYYYMMDD`로 구한다.
|
|
||||||
4. `CYCLE_ID = sdlc-<id>_<YYYYMMDD>_<topic-slug>`를 만든다.
|
|
||||||
5. 저장소 현황 탐색 — `# 3 문제점 요약`의 "현재 상태" 기술 근거를 수집한다.
|
|
||||||
- 이슈 원문에서 핵심 키워드(기능명, 모듈명, 동사)를 추출한다.
|
|
||||||
- 키워드를 기반으로 저장소에서 관련 파일·디렉터리·함수를 탐색한다.
|
|
||||||
- 탐색 범위: 소스 파일(`.ts`, `.js`, `.py`, `.go`, `.java` 등), 설정 파일, 기존 문서(`docs/`). 테스트 파일과 의존성 잠금 파일(`package-lock.json`, `.lock`)은 제외한다.
|
|
||||||
- 탐색 결과에서 아래 항목을 추출한다.
|
|
||||||
- 관련 파일 경로 목록 (최대 10개, 관련성 높은 순)
|
|
||||||
- 현재 구현 방식 요약 (함수명·클래스명·주요 로직 1~3줄)
|
|
||||||
- 현재 상태에서 이슈 원문이 지적하는 문제가 실제로 존재하는지 여부
|
|
||||||
- 관련 파일을 찾지 못한 경우: "관련 파일 없음 — 신규 기능으로 추정"으로 기록하고 계속 진행한다.
|
|
||||||
- 탐색 결과는 `1_discovery.md` 작성 시 `#3` 현재 상태 기술에만 반영한다. 다른 섹션에는 사용하지 않는다.
|
|
||||||
6. `docs/sdlc/<CYCLE_ID>/` 폴더를 생성한다.
|
|
||||||
7. `.github/templates/sdlc/1_discovery.md`를 기반으로 `docs/sdlc/<CYCLE_ID>/1_discovery.md`를 생성한다.
|
|
||||||
7. [`.github/templates/sdlc/index.md`](../../.github/templates/sdlc/index.md)를 기반으로 `docs/sdlc/<CYCLE_ID>/index.md`를 생성한다.
|
|
||||||
|
|
||||||
8. `.github/templates/sdlc/summary.md`가 있으면 이를 기반으로 `docs/sdlc/<CYCLE_ID>/summary.md`를 생성한다. 템플릿이 없으면 아래 기본 골격으로 생성한다.
|
|
||||||
|
|
||||||
```md
|
|
||||||
# Summary - {{CYCLE_ID}}
|
|
||||||
|
|
||||||
- 이슈명: {{ISSUE_NAME}}
|
|
||||||
- 상태: {{SUMMARY_STATUS:draft|review|confirmed}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST}}
|
|
||||||
|
|
||||||
## 핵심 요약
|
|
||||||
- {{SUMMARY_POINT_1}}
|
|
||||||
- {{SUMMARY_POINT_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 단계별 문서
|
|
||||||
- [Discovery](./1_discovery.md)
|
|
||||||
- [Index](./index.md)
|
|
||||||
```
|
|
||||||
|
|
||||||
11. 생성 파일들에서 아래 플레이스홀더를 우선 치환한다.
|
|
||||||
- `{{DOC_STATUS:draft|review|confirmed}}` -> `draft`
|
|
||||||
- `{{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}` -> 계산한 `CYCLE_ID`
|
|
||||||
- `{{CYCLE_ID}}` -> 계산한 `CYCLE_ID`
|
|
||||||
- `{{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}` -> 사용자 입력 원문
|
|
||||||
- `{{ISSUE_NAME}}` -> 사용자 입력 원문
|
|
||||||
- `{{CREATED_AT_KST:TBD}}` -> 현재 시각(KST)
|
|
||||||
- `{{CREATED_AT_KST}}` -> 현재 시각(KST)
|
|
||||||
- `{{UPDATED_AT_KST:TBD}}` -> 현재 시각(KST)
|
|
||||||
- `{{UPDATED_AT_KST}}` -> 현재 시각(KST)
|
|
||||||
- `{{OUTPUT_PATH}}` -> 생성 파일 경로
|
|
||||||
- `{{FILE_RESULT:생성|갱신|미생성}}` -> `생성`
|
|
||||||
- `{{SUMMARY_STATUS:draft|review|confirmed}}` -> `draft`
|
|
||||||
12. `1_discovery.md`에서는 위 규칙에 따라 추론 가능한 플레이스홀더를 적극적으로 실제 내용으로 치환한다. 이때 5단계에서 수집한 저장소 현황 탐색 결과를 `# 3 문제점 요약`의 현재 상태 기술에 반영한다.
|
|
||||||
13. 추론 불가능하거나 사용자 확인이 필요한 항목만 플레이스홀더로 남긴다.
|
|
||||||
14. `docs/sdlc/index.md` 전역 인덱스를 갱신한다.
|
|
||||||
- 파일이 없으면 아래 초기 골격으로 신규 생성한다.
|
|
||||||
|
|
||||||
```md
|
|
||||||
# SDLC 전체 주기 인덱스
|
|
||||||
|
|
||||||
<!-- 아래 테이블은 /new-sdlc 실행 시 자동 갱신된다. 수동 편집 금지. -->
|
|
||||||
|
|
||||||
## 주기 목록
|
|
||||||
|
|
||||||
| ID | 날짜 | 이슈명 | Discovery | 상태 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
|
|
||||||
## 단계별 횡단 조회
|
|
||||||
|
|
||||||
| 단계 | 문서 목록 |
|
|
||||||
|---|---|
|
|
||||||
| Discovery | |
|
|
||||||
| Planning | |
|
|
||||||
| Design | |
|
|
||||||
| Implementation | |
|
|
||||||
| Verification | |
|
|
||||||
| Release | |
|
|
||||||
| Operations | |
|
|
||||||
```
|
|
||||||
|
|
||||||
- 파일이 이미 있으면 다음 규칙으로 갱신한다.
|
|
||||||
- `## 주기 목록` 테이블에 새 행을 추가한다. 형식:
|
|
||||||
`| <CYCLE_ID> | <YYYYMMDD> | <ISSUE_NAME> | [Discovery](./<CYCLE_ID>/1_discovery.md) | draft |`
|
|
||||||
- `## 단계별 횡단 조회` 테이블에서 `Discovery` 행의 `문서 목록` 셀에 `[<CYCLE_ID>](./<CYCLE_ID>/1_discovery.md)` 링크를 추가한다.
|
|
||||||
- 나머지 단계 행은 해당 단계 파일이 실제로 존재할 때만 링크를 추가한다(지금은 Discovery만 추가).
|
|
||||||
- 테이블 구조 자체는 변경하지 않는다. 행/셀 추가만 한다.
|
|
||||||
|
|
||||||
응답 형식:
|
|
||||||
- 생성된 `CYCLE_ID`
|
|
||||||
- 생성한 폴더 경로
|
|
||||||
- 생성한 파일 경로 목록 (`1_discovery.md`, `index.md`, `summary.md`)
|
|
||||||
- `docs/sdlc/index.md` 갱신 결과 (신규 생성 또는 갱신된 행 내용)
|
|
||||||
- **저장소 현황 탐색 결과**: 발견된 관련 파일 목록과 현재 상태 요약 (또는 "관련 파일 없음 — 신규 기능으로 추정")
|
|
||||||
- 자동으로 채운 Discovery 핵심 섹션 요약
|
|
||||||
- 사용자 확인이 필요해 플레이스홀더로 남긴 항목 요약
|
|
||||||
|
|
||||||
중요 규칙:
|
|
||||||
- 질문 없이 바로 생성을 시도한다. (입력이 비어 있어 slug를 만들 수 없는 경우에만 짧게 확인)
|
|
||||||
- 기존 동일 경로가 있으면 덮어쓰지 말고, 다음 ID를 재계산해 새 주기로 생성한다.
|
|
||||||
- `docs/sdlc/index.md`에 이미 같은 `CYCLE_ID` 행이 있으면 중복 추가하지 않는다.
|
|
||||||
- 불필요한 파일은 만들지 않는다.
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-design"
|
|
||||||
description: "Review and validate SDLC Design document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/3_design.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Design 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `3_design.md` 파일의 일관성 확인 (태스크/아키텍처/인터페이스/보안 간 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `3_design.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `2_planning.md`도 함께 읽어 인계 내용의 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. Planning 인계 정합성 검토
|
|
||||||
|
|
||||||
`# 1. Planning 인계 요약`이 `2_planning.md`의 확정 내용과 일치하는지 확인한다.
|
|
||||||
|
|
||||||
- 태스크 목록(T-N 제목, 참조 요구사항)이 Planning `# 2`와 내용/수량이 일치하는가
|
|
||||||
- 이월된 오픈 질문이 Planning `# 7`의 `Deferred` 항목과 대응하는가
|
|
||||||
- `# 3` 상세 설계의 T-N 항목이 `# 1` 태스크 목록과 누락 없이 1:1 대응하는가
|
|
||||||
|
|
||||||
### 3. 저장소 현황 대조
|
|
||||||
|
|
||||||
`3_design.md`에 기술된 "현재 상태(개선 전)"가 실제 저장소와 일치하는지 확인한다.
|
|
||||||
|
|
||||||
#### 3-1. 변경 대상 파일 존재 여부
|
|
||||||
|
|
||||||
`# 3 상세 설계`의 각 T-N 섹션에서 "변경 대상" 파일/함수 경로를 추출하고 실제 저장소에서 확인한다.
|
|
||||||
|
|
||||||
| 확인 항목 | 기준 |
|
|
||||||
|-----------|------|
|
|
||||||
| 수정 대상으로 명시된 파일 | 실제 저장소에 존재해야 한다. 없으면 경고 — 경로 오류 또는 신규 생성 여부를 명시하도록 요구 |
|
|
||||||
| 삭제 대상으로 명시된 파일 | 실제 저장소에 존재해야 한다. 없으면 경고 |
|
|
||||||
| 신규 생성 대상으로 명시된 파일 | 실제 저장소에 **없어야** 한다. 이미 존재하면 경고 — 수정 대상으로 재분류 필요 |
|
|
||||||
|
|
||||||
#### 3-2. "현재 상태" 기술 정확성
|
|
||||||
|
|
||||||
`# 3 상세 설계` 및 `# 4 인터페이스 정의`에서 "현재 X 방식으로 동작한다", "현재 Y 함수가 Z를 반환한다" 등 현황을 기술한 문장을 찾아 실제 코드와 대조한다.
|
|
||||||
|
|
||||||
- 일치: 별도 표시 없이 통과
|
|
||||||
- 불일치: 해당 문장과 실제 코드를 나란히 제시하고 설계 문서 수정을 요구한다. **불일치 항목이 하나라도 있으면 최종 판단을 "보류(Hold)"로 설정한다.**
|
|
||||||
- 확인 불가(파일이 너무 크거나 탐색 범위 초과): "확인 불가 — 수동 검토 권장" 으로 표시한다.
|
|
||||||
|
|
||||||
#### 3-3. 인터페이스 시그니처 대조
|
|
||||||
|
|
||||||
`# 4 인터페이스 정의`에 "현재 시그니처"가 명시된 항목에 대해 실제 코드의 함수/메서드 시그니처와 대조한다.
|
|
||||||
|
|
||||||
- 파라미터 이름·타입·반환 타입이 일치하는지 확인한다.
|
|
||||||
- 불일치 시 실제 시그니처를 제시하고 설계 문서 수정을 요구한다.
|
|
||||||
|
|
||||||
### 5. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **태스크 번호 연속성**: `# 1`, `# 2` 컴포넌트 영향 범위, `# 3` 상세 설계의 T-N 번호가 누락 없이 연속이고 일치하는가
|
|
||||||
- **인터페이스 정합성**: `# 3` 상세 설계에서 언급된 API/함수가 `# 4` 인터페이스 정의에 실제로 명시되었는가
|
|
||||||
- **보안 연결성**: `# 3`에서 입출력이 정의된 경우 `# 5` 보안 점검의 "입력값 검증(Injection)" 항목이 적절히 점검되었는가
|
|
||||||
- **숫자 연속성**: R-N, DA-N, OQ-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "적절히", "대략", "가능하면" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지. 비공식 표현 제거
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 6. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 Planning/저장소 정보로 추론 가능한지 확인
|
|
||||||
- 컴포넌트 역할(`COMPONENT_N_ROLE`), 데이터 흐름(`DATA_FLOW_N`), 엣지 케이스(`DESIGN_EDGE_N`) 등 구조적으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 태스크 담당자(`DESIGN_TASK_OWNER_N`)
|
|
||||||
- 외부 시스템 계약이 미확정인 인터페이스(`INTERFACE_N`, `SCHEMA_N`)
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 문서 내 맥락, Planning 내용, 저장소 구조로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 사용자/승인자 결정, 외부 시스템 계약, 책임자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 7. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, PLANNING_PATH 채워졌는가) |
|
|
||||||
| `# 1 Planning 인계 요약` | 태스크 최소 1개 이상, Planning 태스크와 1:1 대응 여부 |
|
|
||||||
| `# 2 아키텍처/구조 설계` | 전체 구조 개요 1문단 이상, 주요 컴포넌트 1개 이상 |
|
|
||||||
| `# 3 상세 설계` | 모든 T-N 태스크에 설계 방향과 변경 대상이 있는가 |
|
|
||||||
| `# 4 인터페이스 정의` | 해당 없으면 "해당 없음" 명시, 있으면 함수/API 시그니처가 구체적인가 |
|
|
||||||
| `# 5 보안 고려사항` | 4개 항목(Injection/Auth/Data/Dep) 모두 해당/비해당 판정이 있는가, 해당 항목에 대응 방안이 있는가 |
|
|
||||||
| `# 6 리스크/가정/오픈 질문` | 리스크 1개 이상, 가정 1개 이상, OQ `Open` 상태가 있으면 종료 조건이 명시되었는가 |
|
|
||||||
| `# 7 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 9 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 (단순 문장 아닌가) |
|
|
||||||
| `# 10 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 8. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (Ready for Implementation)**:
|
|
||||||
- 모든 T-N 태스크에 설계 방향과 변경 대상이 채워졌는가
|
|
||||||
- 인터페이스 계약이 구체적으로 명시되었는가
|
|
||||||
- 보안 점검 항목 중 "해당"은 모두 대응 방안이 있는가
|
|
||||||
- `# 6` 오픈 질문에 `Open` 상태 항목이 없거나 모두 `Deferred` 처리 완료인가
|
|
||||||
- 남은 플레이스홀더는 모두 정당한가 (사용자/승인자 결정이 정말 필요)
|
|
||||||
- Freeze 플래그가 준비되었는가 (`READY_FOR_IMPLEMENTATION: true`로 변경 가능한가)
|
|
||||||
- 저장소 현황 대조에서 불일치 항목이 없는가 (3-2, 3-3)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 표현/인터페이스 초안만 수정하면 가능
|
|
||||||
- 보안 항목 중 근거가 빈약한 항목 보완 권장
|
|
||||||
- 저장소 현황 대조 결과 중 "확인 불가" 항목이 있어 수동 검토 권장
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- T-N 태스크 설계 방향 누락, 인터페이스 미정의, 보안 "해당" 항목에 대응 방안 없음, OQ `Open` 잔여 등 근본적 재검토 필요
|
|
||||||
- 저장소 현황 대조(3-2, 3-3)에서 불일치 항목이 하나라도 있는 경우
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Planning 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 저장소 현황 대조 결과 (불일치/확인 불가 항목 나열, 없으면 "이상 없음")
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 3` 상세 설계 — T-2 변경 대상 누락)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{COMPONENT_2_ROLE}}` → "Copilot 프롬프트 파일 등록·관리" 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{DESIGN_TASK_OWNER_1:TBD}}` → 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-discovery"
|
|
||||||
description: "Review and validate SDLC Discovery document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/1_discovery.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Discovery 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- 1_discovery.md 파일의 일관성 확인 (개념/용어/범위 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더({{...}}) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
검토 절차:
|
|
||||||
|
|
||||||
1. 입력 해석
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 1_discovery.md 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백한다.
|
|
||||||
|
|
||||||
2. 일관성 검토 (모든 섹션 대상)
|
|
||||||
- 용어: 같은 개념이 다른 이름으로 반복되는지 확인. 예: "사용자"와 "최종 사용자", "범위"와 "경계" 혼용.
|
|
||||||
- 개념 중복: 섹션 간 내용이 동일하거나 매우 유사한 부분 식별. 예: `# 1`의 해석과 `# 10` 요약의 중복.
|
|
||||||
- 범위 정합성: In Scope/Out of Scope가 명확히 구분되는지, 요구사항 목록과 맞는지 확인.
|
|
||||||
- 숫자 일관성: 리스크(R-1~3), 가정(A-1~3), 성공 기준(S-1~3) 등 번호가 누락 없이 연속인지 확인.
|
|
||||||
|
|
||||||
3. 표현 검토 (모든 텍스트)
|
|
||||||
- 문법: 문장 구조, 주술 호응, 시제 일관성 확인.
|
|
||||||
- 명확성: 주관적이거나 모호한 표현 식별. 예: "적절한", "대략적으로", "대체로".
|
|
||||||
- 작성 수준: 기술 문서 기준의 형식적 톤 유지. 비공식 표현이나 과도한 가정 제거.
|
|
||||||
- 오타: 한글 띄어쓰기, 숫자 오류, 링크 형식 검증.
|
|
||||||
|
|
||||||
4. 플레이스홀더 처리
|
|
||||||
- 모든 `{{...}}` 플레이스홀더를 나열하고, 각 항목의 의도를 파악한다.
|
|
||||||
- AI agent 할당 항목 식별:
|
|
||||||
- `{{ASSUMPTION_1_DECISION:...}}`, `{{TARGET_STATE_2_DECISION:...}}` 같은 `_DECISION` 형태
|
|
||||||
- `{{DECIDE_*}}`, `{{CONFIRM_*}}`, `{{DATA_*}}` 형태
|
|
||||||
- 각 항목에 대해 아래 중 하나를 판단한다.
|
|
||||||
- **채울 수 있음**: 문서 내 다른 섹션, 입력 요청, 저장소 구조를 바탕으로 합리적 내용 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 사용자/승인자의 정책 결정, 외부 데이터 확인, 승인 책임자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
- 처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
5. 섹션별 최소 검수 기준
|
|
||||||
- `# 0 문서 상태`: 메타데이터 완성도 확인 (예: CREATED_AT_KST는 현재 시각으로 채워졌는가)
|
|
||||||
- `# 2 요구사항 판정`: 판정이 신규/유사/중복 중 하나인가, 근거는 2줄 이상인가
|
|
||||||
- `# 3 문제점 요약`: 현재 상태와 기대 상태가 명확히 대비되는가
|
|
||||||
- `# 5 요구사항 목록`: FR/NFR 각각 최소 개수(FR 2개, NFR 1개) 이상인가, 범위 경계가 명시되었는가
|
|
||||||
- `# 6 리스크/가정/오픈질문`: 항목 수가 적절한가(2개 이상), 오픈 질문은 정말 결정 필요인가
|
|
||||||
- `# 8 확인 체크`: 체크 항목이 구체적이고 측정 가능한가
|
|
||||||
- `# 10 사용자 결정 필요`: 플레이스홀더가 실제 플레이스홀더 형식인가 (단순 문장 아닌가)
|
|
||||||
- `# 11 Freeze`: Handoff Decision과 Rationale이 채워졌는가
|
|
||||||
|
|
||||||
6. 최종 승인 판단
|
|
||||||
- **승인 가능 (Ready for Planning)**:
|
|
||||||
- 모든 일관성 오류가 해소되었는가
|
|
||||||
- 명확하지 않은 표현이 제거되었는가
|
|
||||||
- 남은 플레이스홀더는 모두 정당한가 (사용자/승인자 결정이 정말 필요)
|
|
||||||
- 모든 요구 섹션이 채워졌는가
|
|
||||||
- Freeze 플래그가 준비되었는가 (READY_FOR_PLANNING: true로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 표현만 수정하면 가능
|
|
||||||
- 플레이스홀더 중 일부는 명확성을 위해 재작성 권장
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- 개념적 불일치, 범위 재정의, 승인자 선정 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
응답 형식:
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 점수 (예: 3/5 = 범위 경계 미명시)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{TARGET_STATE_2_DECISION}}` → "GitHub 기반으로 운영"로 치환)
|
|
||||||
- 유지된 항목 (예: `{{DECIDE_ITEM_1}}` → 사용자 승인 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
|
|
||||||
중요 규칙:
|
|
||||||
- 도큐먼트 내용을 변경하는 경우 반드시 명확히 표기한다.
|
|
||||||
- AI agent 판단으로 치환한 항목은 합리적 근거를 함께 설명한다.
|
|
||||||
- 의도적으로 플레이스홀더를 유지한 이유도 명시한다.
|
|
||||||
- 승인 판단은 객관적 기준(섹션 완성도, 형식 준수, 범위 명확성)을 우선으로 한다.
|
|
||||||
@@ -1,111 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-implementation"
|
|
||||||
description: "Review and validate SDLC Implementation document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/4_implementation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Implementation 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `4_implementation.md` 파일의 일관성 확인 (태스크/변경 파일/완료 조건 간 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `4_implementation.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `3_design.md`도 함께 읽어 인계 내용의 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. Design 인계 정합성 검토
|
|
||||||
|
|
||||||
`# 1. Design 인계 요약`이 `3_design.md`의 확정 내용과 일치하는지 확인한다.
|
|
||||||
|
|
||||||
- 태스크 목록(T-N 제목, 변경 대상)이 Design `# 1`/`# 3`과 내용/수량이 일치하는가
|
|
||||||
- 이월된 오픈 질문이 Design `# 6`의 `Deferred` 항목과 대응하는가
|
|
||||||
- `# 2` 태스크별 구현 방법의 변경 대상이 Design `# 3`의 변경 대상과 일치하는가
|
|
||||||
|
|
||||||
### 3. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **태스크 번호 연속성**: `# 1`, `# 2`, `# 3`의 T-N 번호가 누락 없이 연속이고 일치하는가
|
|
||||||
- **변경 파일 정합성**: `# 2` 태스크별 변경 대상이 `# 3` 변경 파일 목록에 빠짐없이 포함되어 있는가
|
|
||||||
- **완료 조건 측정 가능성**: `# 2` 각 태스크의 완료 조건(DoD)이 구체적이고 측정 가능한가 ("구현 완료"처럼 모호한 표현 금지)
|
|
||||||
- **숫자 연속성**: R-N, IA-N, OQ-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "적절히", "대략", "가능하면" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지. 비공식 표현 제거
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 5. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 Design 내용으로 추론 가능한지 확인
|
|
||||||
- 변경 파일 유형(`IMP_FILE_TYPE_N`), 관련 태스크(`IMP_FILE_TASK_N`) 등 구조적으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 태스크 담당자(`IMP_TASK_OWNER_N`)
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 문서 내 맥락, Design 내용, 저장소 구조로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 사용자/승인자 결정, 외부 확인, 책임자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 6. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, DESIGN_PATH 채워졌는가) |
|
|
||||||
| `# 1 Design 인계 요약` | 태스크 최소 1개 이상, Design 태스크와 1:1 대응 여부 |
|
|
||||||
| `# 2 구현 계획` | 모든 T-N 태스크에 구현 방법, 변경 대상, 완료 조건이 있는가 |
|
|
||||||
| `# 3 변경 파일 목록` | `# 2`에서 언급된 변경 대상이 모두 목록에 포함되었는가, 파일 경로가 실제 경로인가 |
|
|
||||||
| `# 4 리스크/가정/오픈 질문` | 리스크 1개 이상, 가정 1개 이상, OQ `Open` 상태가 있으면 종료 조건이 명시되었는가 |
|
|
||||||
| `# 5 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 7 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 (단순 문장 아닌가) |
|
|
||||||
| `# 8 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 7. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (Ready for Verification)**:
|
|
||||||
- 모든 T-N 태스크에 구현 방법, 변경 대상, 완료 조건이 채워졌는가
|
|
||||||
- 변경 파일 목록이 실제 파일 경로 기준으로 정확한가
|
|
||||||
- `# 4` 오픈 질문에 `Open` 상태 항목이 없거나 모두 `Deferred` 처리 완료인가
|
|
||||||
- 남은 플레이스홀더는 모두 정당한가 (사용자/승인자 결정이 정말 필요)
|
|
||||||
- Freeze 플래그가 준비되었는가 (`READY_FOR_VERIFICATION: true`로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 완료 조건(DoD) 일부가 모호하거나, 변경 파일 경로 확인 필요
|
|
||||||
- 플레이스홀더 중 일부는 명확성을 위해 재작성 권장
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- 태스크 구현 방법 누락, 변경 파일 목록 불완전, OQ `Open` 잔여 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Design 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 2` T-2 완료 조건 모호)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{IMP_FILE_TYPE_2}}` → `수정` 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{IMP_TASK_OWNER_1:TBD}}` → 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-operation"
|
|
||||||
description: "Review and validate SDLC Operations document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/7_operation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Operations 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `7_operation.md` 파일의 일관성 확인 (모니터링/런북/환류 항목 간 충돌 및 누락)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `7_operation.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `6_release.md`도 함께 읽어 인계 내용 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. 인계 정합성 검토
|
|
||||||
|
|
||||||
- 배포 결과 요약이 Release `# 2`/`# 4`의 내용과 일치하는가
|
|
||||||
- 이월된 오픈 질문이 Release `# 5`의 `Deferred` 항목과 대응하는가
|
|
||||||
- 런북의 장애 대응 절차가 Release `# 3`의 롤백 계획과 연결되는가
|
|
||||||
|
|
||||||
### 3. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **모니터링 실현 가능성**: `# 2` 모니터링 항목의 임계값이 수치화되었는가 ("오류가 없어야 한다" 대신 "5xx 오류율 1% 이하" 등)
|
|
||||||
- **런북 실행 가능성**: `# 3` 절차가 실제 운영자가 따를 수 있을 만큼 구체적인가
|
|
||||||
- **에스컬레이션 일관성**: 에스컬레이션 경로가 실제 연락 가능한 대상인가
|
|
||||||
- **숫자 연속성**: R-N, OQ-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "문제가 생기면", "필요할 때" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 5. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 Release 내용으로 추론 가능한지 확인
|
|
||||||
- 모니터링 확인 방법(`OPS_MONITOR_METHOD_N`), 장애 대응 첫 단계 등 구조적으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 모니터링 담당자(`OPS_MONITOR_OWNER`)
|
|
||||||
- 에스컬레이션 연락처(`OPS_ESCALATION_1`)
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 문서 내 맥락, Release 내용으로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 실제 운영 정보, 담당자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 6. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, REL_PATH 채워졌는가) |
|
|
||||||
| `# 1 Release 인계 요약` | 배포 환경과 스모크 테스트 결과가 명시되었는가 |
|
|
||||||
| `# 2 운영 모니터링` | 모니터링 항목 최소 1개 이상, 각 항목에 임계값과 대응 방안이 있는가 |
|
|
||||||
| `# 3 런북` | 정상 운영 절차 1단계 이상, 장애 대응 절차 1단계 이상, 에스컬레이션 경로가 있는가 |
|
|
||||||
| `# 5 리스크/오픈 질문` | OQ `Open` 상태가 있으면 종료 조건이 명시되었는가 |
|
|
||||||
| `# 6 다음 Discovery 환류` | "없음"이거나 구체적인 인사이트/개선 사항이 기록되었는가 |
|
|
||||||
| `# 7 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 9 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 |
|
|
||||||
| `# 10 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 7. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (SDLC 주기 완료)**:
|
|
||||||
- 모니터링 항목에 임계값과 대응 방안이 모두 명시되었는가
|
|
||||||
- 런북(정상 운영/장애 대응/에스컬레이션)이 완비되었는가
|
|
||||||
- `# 5` 오픈 질문에 `Open` 상태 항목이 없거나 모두 `Deferred` 처리 완료인가
|
|
||||||
- `# 6` 다음 Discovery 환류 항목이 작성되었거나 "없음"으로 명시되었는가
|
|
||||||
- Freeze 플래그가 준비되었는가 (`SDLC_CYCLE_COMPLETE: true`로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 모니터링 임계값이 모호하거나, 런북 절차 보완 필요
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- 모니터링 항목 없음, 장애 대응 절차 없음, 에스컬레이션 경로 없음 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Release 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 2` 모니터링 임계값 미수치화)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{OPS_MONITOR_METHOD_1}}` → `GitHub 저장소 오류 로그 확인` 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{OPS_MONITOR_OWNER:TBD}}` → 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
@@ -1,127 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-planning"
|
|
||||||
description: "Review and validate SDLC Planning document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/2_planning.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Planning 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `2_planning.md` 파일의 일관성 확인 (태스크/요구사항/범위 간 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `2_planning.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `1_discovery.md`도 함께 읽어 인계 내용의 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. Discovery 인계 정합성 검토
|
|
||||||
|
|
||||||
`# 1. Discovery 인계 요약`이 `1_discovery.md`의 확정 내용과 일치하는지 확인한다.
|
|
||||||
|
|
||||||
- FR/NFR 목록이 Discovery `# 5`와 내용/수량이 일치하는가
|
|
||||||
- In Scope / Out of Scope 경계가 Discovery와 충돌하지 않는가
|
|
||||||
- 이월된 오픈 질문이 Discovery `# 6`의 `Deferred` 항목과 대응하는가
|
|
||||||
|
|
||||||
### 3. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **용어**: 태스크 제목, 요구사항 ID(FR-N, T-N, M-N), 담당자 표기가 섹션 간 일치하는가
|
|
||||||
- **태스크 참조**: `# 2` 태스크 분해 테이블의 T-N 번호가 `# 3` 공수 추정, `# 4` 일정 계획, `# 5` 의존성과 연속·일치하는가
|
|
||||||
- **성공 기준 연결**: `# 6` 검증 계획의 기준(S-N)이 Discovery `# 7`과 대응하는가
|
|
||||||
- **숫자 연속성**: T-N, M-N, OQ-N, R-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "적절히", "대략", "가능하면" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지. 비공식 표현 제거
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 5. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 Discovery 내용으로 추론 가능한지 확인
|
|
||||||
- 태스크 유형(`TASK_TYPE_N`), 참조 요구사항(`TASK_REF_N`), 의존 관계(`TASK_DEP_N`) 등 구조적으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 태스크 담당자(`TASK_OWNER_N`)
|
|
||||||
- 마일스톤 목표 날짜(`MILESTONE_N_DATE`)
|
|
||||||
- 이터레이션 기간(`ITERATION_N_PERIOD`)
|
|
||||||
- 검증 담당자(`VERIFY_OWNER_N`)
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 문서 내 맥락, Discovery 내용, 저장소 구조로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 사용자/승인자 결정, 외부 데이터, 책임자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 6. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, DISCOVERY_PATH 채워졌는가) |
|
|
||||||
| `# 1 Discovery 인계 요약` | FR 2개 이상, NFR 1개 이상, In/Out Scope 명시 여부 |
|
|
||||||
| `# 2 작업 분해` | 태스크 최소 2개 이상, 각 태스크에 DoD가 있는가 |
|
|
||||||
| `# 3 공수 추정` | 모든 태스크에 추정 공수와 단위가 있는가, 총 공수와 신뢰도가 명시되었는가 |
|
|
||||||
| `# 4 일정 계획` | 마일스톤 최소 1개 이상, 이터레이션 단위가 정의되었는가 |
|
|
||||||
| `# 5 의존성 및 제약` | 태스크 간 의존성이 `# 2`와 일치하는가 |
|
|
||||||
| `# 6 검증 계획` | Discovery 성공 기준(S-N)과 연결된 검증 방법 초안이 있는가 |
|
|
||||||
| `# 7 리스크/가정/오픈 질문` | 항목이 적절한가(리스크 1개 이상, 가정 1개 이상), 오픈 질문은 정말 결정 필요인가 |
|
|
||||||
| `# 8 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 10 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 (단순 문장 아닌가) |
|
|
||||||
| `# 11 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 7. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (Ready for Design)**:
|
|
||||||
- 모든 일관성 오류가 해소되었는가
|
|
||||||
- 명확하지 않은 표현이 제거되었는가
|
|
||||||
- 남은 플레이스홀더는 모두 정당한가 (사용자/승인자 결정이 정말 필요)
|
|
||||||
- 모든 요구 섹션이 채워졌는가
|
|
||||||
- Freeze 플래그가 준비되었는가 (`READY_FOR_DESIGN: true`로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 표현/수치만 수정하면 가능
|
|
||||||
- 플레이스홀더 중 일부는 명확성을 위해 재작성 권장
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- 태스크-요구사항 연결 누락, 공수 추정 근거 부재, 범위 재정의 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Discovery 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 3` 공수 추정 — T-2 추정값 누락)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{TASK_DEP_2}}` → `T-1` 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{TASK_OWNER_1:TBD}}` → 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 문서 내용을 변경하는 경우 반드시 명확히 표기한다.
|
|
||||||
- AI agent 판단으로 치환한 항목은 합리적 근거를 함께 설명한다.
|
|
||||||
- 의도적으로 플레이스홀더를 유지한 이유도 명시한다.
|
|
||||||
- 승인 판단은 객관적 기준(섹션 완성도, 형식 준수, Discovery 정합성)을 우선으로 한다.
|
|
||||||
- Discovery와의 정합성 확인은 `1_discovery.md`를 직접 읽어서 수행한다. 기억이나 추론에 의존하지 않는다.
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-release"
|
|
||||||
description: "Review and validate SDLC Release document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/6_release.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Release 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `6_release.md` 파일의 일관성 확인 (배포 준비/롤백/스모크 테스트 간 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `6_release.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `5_verification.md`와 `4_implementation.md`도 함께 읽어 인계 내용 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. 인계 정합성 검토
|
|
||||||
|
|
||||||
- 검증 결과 요약이 Verification `# 3` 결과와 일치하는가
|
|
||||||
- 이월된 오픈 질문이 Verification `# 5`의 `Deferred` 항목과 대응하는가
|
|
||||||
- 스모크 테스트 항목이 핵심 FR과 연결되는가
|
|
||||||
|
|
||||||
### 3. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **배포 순서 일관성**: `# 2` 배포 순서가 Implementation `# 3` 변경 파일 목록과 연결되는가
|
|
||||||
- **롤백 실현 가능성**: `# 3` 롤백 절차가 실제 배포 방식에 맞게 기술되었는가 (git 기반이면 커밋/브랜치/태그 참조, CI/CD 기반이면 파이프라인 롤백 방법 등)
|
|
||||||
- **스모크 테스트 충족성**: `# 4` 스모크 테스트가 핵심 기능을 최소한 커버하는가
|
|
||||||
- **숫자 연속성**: R-N, OQ-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "필요 시", "대략", "적절히" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 5. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 저장소 구조로 추론 가능한지 확인
|
|
||||||
- 배포 방식(`REL_DEPLOY_METHOD`), 스모크 테스트 방법(`REL_SMOKE_METHOD_N`) 등 저장소 구조 기반으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 롤백 담당자(`REL_ROLLBACK_OWNER`)
|
|
||||||
- 배포 대상 환경(`REL_TARGET_ENV`): 실제 운영 환경 정보
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 저장소 구조, 문서 내 맥락으로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 실제 환경 정보, 담당자 지정 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 6. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, VER_PATH 채워졌는가) |
|
|
||||||
| `# 1 Verification 인계 요약` | 검증 결과 요약(통과 수/전체 수)이 있는가 |
|
|
||||||
| `# 2 배포 준비` | 배포 환경, 방식, 도구가 명시되었는가, 배포 순서가 1단계 이상인가 |
|
|
||||||
| `# 3 롤백 계획` | 롤백 조건 1개 이상, 롤백 절차 1단계 이상, 롤백 담당자가 있는가 |
|
|
||||||
| `# 4 배포 후 확인` | 스모크 테스트 항목 1개 이상, 각 항목에 확인 방법과 성공 기준이 있는가 |
|
|
||||||
| `# 5 리스크/오픈 질문` | OQ `Open` 상태가 있으면 종료 조건이 명시되었는가 |
|
|
||||||
| `# 6 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 8 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 |
|
|
||||||
| `# 9 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 7. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (Ready for Operations)**:
|
|
||||||
- 배포 준비(환경/방식/순서)가 명확히 정의되었는가
|
|
||||||
- 롤백 조건, 절차, 담당자가 모두 명시되었는가
|
|
||||||
- 스모크 테스트 항목이 최소 1개 이상이고 성공 기준이 구체적인가
|
|
||||||
- `# 5` 오픈 질문에 `Open` 상태 항목이 없거나 모두 `Deferred` 처리 완료인가
|
|
||||||
- Freeze 플래그가 준비되었는가 (`READY_FOR_OPERATIONS: true`로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 배포 방식 설명이 모호하거나 스모크 테스트 성공 기준 보완 필요
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- 롤백 계획 없음, 배포 순서 불명확, 스모크 테스트 항목 누락 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Verification 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 3` 롤백 담당자 미지정)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{REL_DEPLOY_METHOD}}` → `git push (자동 배포 없음)` 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{REL_ROLLBACK_OWNER:TBD}}` → 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
---
|
|
||||||
name: "review-verification"
|
|
||||||
description: "Review and validate SDLC Verification document for consistency, completeness, and readiness for approval"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/5_verification.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
SDLC Verification 문서를 체계적으로 검토하고, 승인 가능한 상태인지 판단한다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `5_verification.md` 파일의 일관성 확인 (검증 항목/성공 기준/결과 간 중복 및 충돌)
|
|
||||||
- 기술적 오류, 잘못된 표현, 명확하지 않은 문구 식별
|
|
||||||
- AI agent에게 할당된 플레이스홀더(`{{...}}`) 중 판단/결정 가능한 항목 처리
|
|
||||||
- 플레이스홀더 중 사용자 결정이 정말 필요한 항목만 남겼는지 확인
|
|
||||||
- 최종 승인 가능 상태 판단
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 검토 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 사용자가 제공한 문서 경로 또는 CYCLE_ID에서 `5_verification.md` 파일 위치를 확정한다.
|
|
||||||
- 파일이 없으면 입력값을 다시 확인하도록 사용자에게 피드백하고 중단한다.
|
|
||||||
- `4_implementation.md`와 `1_discovery.md`도 함께 읽어 인계 내용 및 성공 기준 정합성 확인에 사용한다.
|
|
||||||
|
|
||||||
### 2. 인계 정합성 검토
|
|
||||||
|
|
||||||
- 구현 완료 태스크 목록이 Implementation `# 1`/`# 2`와 내용/수량이 일치하는가
|
|
||||||
- 검증 항목(VC-N)이 Discovery `# 7` 성공 기준(S-N) 및 FR과 연결되어 있는가 (`# 2` 성공 기준 연결 섹션 확인)
|
|
||||||
- 이월된 오픈 질문이 Implementation `# 4`의 `Deferred` 항목과 대응하는가
|
|
||||||
|
|
||||||
### 3. 일관성 검토 (모든 섹션 대상)
|
|
||||||
|
|
||||||
- **VC 번호 연속성**: `# 2` 검증 항목과 `# 3` 검증 결과의 VC-N 번호가 누락 없이 연속이고 일치하는가
|
|
||||||
- **성공 기준 측정 가능성**: `# 2` 각 VC 항목의 성공 기준이 구체적이고 측정 가능한가 ("정상 동작"처럼 모호한 표현 금지)
|
|
||||||
- **검증 결과 정합성**: `# 3` 통과/실패 집계가 실제 결과 테이블과 일치하는가
|
|
||||||
- **결함 연결성**: `# 4` BUG 항목이 검증 항목(VC-N)과 연결되는지 확인
|
|
||||||
- **숫자 연속성**: R-N, OQ-N, BUG-N 번호가 누락 없이 연속인지 확인
|
|
||||||
|
|
||||||
### 4. 표현 검토 (모든 텍스트)
|
|
||||||
|
|
||||||
- **문법**: 문장 구조, 주술 호응, 시제 일관성
|
|
||||||
- **명확성**: "정상적으로", "충분히", "대략" 같은 모호한 표현 식별
|
|
||||||
- **작성 수준**: 기술 문서 기준의 형식적 톤 유지. 비공식 표현 제거
|
|
||||||
- **오타**: 한글 띄어쓰기, 숫자 오류, 테이블 형식 검증
|
|
||||||
|
|
||||||
### 5. 플레이스홀더 처리
|
|
||||||
|
|
||||||
모든 `{{...}}` 플레이스홀더를 나열하고 각 항목의 의도를 파악한다.
|
|
||||||
|
|
||||||
AI agent가 채울 수 있는 항목:
|
|
||||||
- `{{..._DECISION:...}}` 형태 — 문서 내 다른 섹션이나 Discovery/Implementation 내용으로 추론 가능한지 확인
|
|
||||||
- 검증 방법(`VER_METHOD_N`), 결함 심각도(`BUG_SEVERITY_N`) 등 구조적으로 추론 가능한 항목
|
|
||||||
|
|
||||||
사용자 결정이 필요한 항목 (플레이스홀더 유지):
|
|
||||||
- 검증 담당자(`VER_OWNER_N`)
|
|
||||||
- 결함 재작업 내용(`BUG_FIX_N`): 실제 구현 변경 필요
|
|
||||||
- Freeze 확정 담당자(`CONFIRMED_BY`)
|
|
||||||
|
|
||||||
각 항목에 대해 아래 중 하나를 판단한다:
|
|
||||||
- **채울 수 있음**: 문서 내 맥락, Discovery/Implementation 내용으로 합리적 추론 가능 → 실제 내용으로 치환
|
|
||||||
- **판단 불가능**: 사용자/승인자 결정, 실제 검증 수행 필요 → 플레이스홀더 유지하되 명확성 강화
|
|
||||||
|
|
||||||
처리 결과를 별도 목록으로 보고한다.
|
|
||||||
|
|
||||||
### 6. 섹션별 최소 검수 기준
|
|
||||||
|
|
||||||
| 섹션 | 최소 기준 |
|
|
||||||
|------|---------|
|
|
||||||
| `# 0 문서 상태` | 메타데이터 완성도 확인 (CREATED_AT_KST, IMP_PATH 채워졌는가) |
|
|
||||||
| `# 1 Implementation 인계 요약` | 태스크 최소 1개 이상, Implementation 태스크와 1:1 대응 여부 |
|
|
||||||
| `# 2 검증 계획` | VC 최소 2개 이상, 각 VC에 검증 방법과 측정 가능한 성공 기준이 있는가 |
|
|
||||||
| `# 2 성공 기준 연결` | Discovery S-N이 하나 이상의 VC-N과 연결되었는가 |
|
|
||||||
| `# 3 검증 결과` | VC-N과 결과 테이블의 행 수가 일치하는가, 집계 숫자가 맞는가 |
|
|
||||||
| `# 4 결함` | BUG `Open` 상태가 있으면 재작업 내용이 명시되었는가 |
|
|
||||||
| `# 5 리스크/오픈 질문` | OQ `Open` 상태가 있으면 종료 조건이 명시되었는가 |
|
|
||||||
| `# 6 확인 체크` | 체크 항목이 구체적이고 측정 가능한가 |
|
|
||||||
| `# 8 사용자 결정 필요` | 플레이스홀더가 실제 `{{...}}` 형식인가 (단순 문장 아닌가) |
|
|
||||||
| `# 9 Freeze` | Handoff Decision과 Rationale이 채워졌는가 |
|
|
||||||
|
|
||||||
### 7. 최종 승인 판단
|
|
||||||
|
|
||||||
- **승인 가능 (Ready for Release)**:
|
|
||||||
- 모든 VC 항목이 "통과" 상태인가
|
|
||||||
- BUG `Open` 상태 항목이 없는가 (Deferred는 근거와 함께 허용)
|
|
||||||
- Discovery 성공 기준(S-N)이 모두 VC와 연결되어 검증되었는가
|
|
||||||
- `# 5` 오픈 질문에 `Open` 상태 항목이 없거나 모두 `Deferred` 처리 완료인가
|
|
||||||
- 남은 플레이스홀더는 모두 정당한가 (사용자/승인자 결정이 정말 필요)
|
|
||||||
- Freeze 플래그가 준비되었는가 (`READY_FOR_RELEASE: true`로 변경 가능한가)
|
|
||||||
- **조건부 (Pending Minor Changes)**:
|
|
||||||
- 일부 VC 항목이 아직 "미완료"이나 곧 완료 예정
|
|
||||||
- BUG 항목 심각도가 낮고 재작업 계획이 명확한 경우
|
|
||||||
- **보류 (Hold)**:
|
|
||||||
- VC 항목에 "실패" 또는 "블로킹" 상태 존재, BUG `Open` 잔여, S-N 연결 누락 등 근본적 재검토 필요
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 응답 형식
|
|
||||||
|
|
||||||
- **검토 결과 요약**
|
|
||||||
- Implementation 인계 정합성 오류 (있으면 나열)
|
|
||||||
- 발견된 일관성 오류 (있으면 나열)
|
|
||||||
- 표현/문법 오류 (있으면 나열)
|
|
||||||
- 섹션별 완성도 (예: `# 2` VC-3 성공 기준 모호)
|
|
||||||
|
|
||||||
- **플레이스홀더 처리 결과**
|
|
||||||
- 채워진 항목 (예: `{{VER_METHOD_2}}` → `자동` 로 치환)
|
|
||||||
- 유지된 항목 (예: `{{VER_OWNER_1:TBD}}` → 검증 담당자 지정 필요로 유지)
|
|
||||||
|
|
||||||
- **수정 사항 목록** (적용된 변경)
|
|
||||||
|
|
||||||
- **최종 판단**
|
|
||||||
- 승인 가능 / 조건부 / 보류
|
|
||||||
- 근거 및 남은 작업 사항
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
---
|
|
||||||
name: "run-implementation"
|
|
||||||
description: "Execute implementation tasks from 4_implementation.md and record results"
|
|
||||||
argument-hint: "예: sdlc-001 또는 docs/sdlc/sdlc-001_20260417_stage-pilot/4_implementation.md"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
`4_implementation.md`에 정의된 태스크를 순서대로 실제 구현하고, 완료 후 문서의 확인체크(`#5`)와 파일처리결과(`#6`)를 자동으로 채운다.
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- `#2 구현 계획`에 기술된 순서대로 태스크를 실행한다.
|
|
||||||
- 각 태스크 완료 후 DoD를 자체 확인하고, 미충족 시 즉시 보고한다.
|
|
||||||
- 모든 태스크 완료 후 `#3 변경 파일 목록`을 실제 결과로 갱신하고, `#5`와 `#6`을 채운다.
|
|
||||||
- 문서 상태는 `review`로 변경한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- CYCLE_ID(예: `sdlc-001`)가 주어지면 `docs/sdlc/` 아래에서 해당 패턴으로 시작하는 폴더를 찾아 `4_implementation.md` 경로를 확정한다.
|
|
||||||
- 파일 경로가 직접 주어지면 그대로 사용한다.
|
|
||||||
- 파일이 없으면 사용자에게 경로를 재확인하도록 요청하고 중단한다.
|
|
||||||
|
|
||||||
### 2. 사전 게이트 확인
|
|
||||||
|
|
||||||
아래 조건을 모두 충족해야 구현을 시작한다. 미충족 시 이유를 보고하고 중단한다.
|
|
||||||
|
|
||||||
| 항목 | 기준 |
|
|
||||||
|------|------|
|
|
||||||
| 문서 상태 | `draft` 또는 `review`이어야 한다. `confirmed`이면 이미 완료된 구현임을 알린다. |
|
|
||||||
| `#2` 구현 계획 존재 | 구현 순서와 T-N 섹션이 모두 채워져 있어야 한다. 플레이스홀더가 남아 있으면 `draft-implementation`을 먼저 완성하도록 안내한다. |
|
|
||||||
| `#3` 변경 파일 목록 존재 | 최소 1개 이상의 파일 항목이 있어야 한다. |
|
|
||||||
| Design 인계 조건 | 참조 `3_design.md`가 `confirmed` 상태인지 확인한다. 아니면 경고만 출력하고 계속 진행한다. |
|
|
||||||
|
|
||||||
### 3. 구현 실행
|
|
||||||
|
|
||||||
`#2 구현 계획`의 `구현 순서` 목록을 기준으로 태스크를 순서대로 실행한다.
|
|
||||||
|
|
||||||
#### 태스크별 실행 규칙
|
|
||||||
|
|
||||||
각 T-N 태스크에 대해 아래 순서로 진행한다.
|
|
||||||
|
|
||||||
1. **계획 읽기**: 해당 T-N 섹션의 `구현 방법`, `변경 대상`, `완료 조건`, `주의사항`을 읽는다.
|
|
||||||
2. **현황 파악**: 변경 대상 파일이 이미 존재하는지 확인하고, 존재하면 관련 코드를 읽어 맥락을 파악한다.
|
|
||||||
3. **구현**: 파일 생성, 수정, 삭제를 수행한다. 기존 코드의 스타일과 패턴을 따른다.
|
|
||||||
4. **DoD 자체 확인**: `완료 조건`에 기술된 각 항목을 하나씩 점검한다.
|
|
||||||
- 충족: 다음 태스크로 진행한다.
|
|
||||||
- 미충족: 보고하고 즉시 재작업한다. 재작업 후에도 미충족이면 태스크를 블로킹으로 표시하고 사용자에게 결정을 요청한다.
|
|
||||||
|
|
||||||
#### 실행 중 주의사항
|
|
||||||
|
|
||||||
- 각 태스크의 `주의사항`을 반드시 읽고 구현에 반영한다.
|
|
||||||
- `#4 리스크`에 기록된 리스크 완화 방안을 구현 중에 적용한다.
|
|
||||||
- `#1 이월된 오픈 질문` 항목이 있으면 구현 중 해당 결정을 내려 기록한다.
|
|
||||||
- 구현 중 새로 발견된 문제가 `#3 변경 파일 목록`에 없는 파일을 변경해야 하는 경우, 변경 전 그 이유를 간단히 기록한다.
|
|
||||||
|
|
||||||
### 4. 완료 후 문서 갱신
|
|
||||||
|
|
||||||
모든 태스크 완료 후 아래 항목을 문서에 반영한다. 이 목록 외 내용은 수정하지 않는다.
|
|
||||||
|
|
||||||
#### `#3 변경 파일 목록` 갱신
|
|
||||||
|
|
||||||
실제로 생성/수정/삭제된 파일을 기준으로 목록을 갱신한다.
|
|
||||||
- 계획에 있었으나 실제로 변경되지 않은 파일은 `비고`에 `미변경 - <이유>`를 기록하고 유지한다.
|
|
||||||
- 계획에 없었으나 실제로 변경된 파일은 새 행으로 추가하고 `비고`에 `계획 외 변경`을 기록한다.
|
|
||||||
|
|
||||||
#### `#5 Verification으로 넘기기 전 확인 체크` 갱신
|
|
||||||
|
|
||||||
각 체크 항목을 실제 결과에 따라 `[x]`(완료) 또는 `[ ]`(미완료)로 업데이트한다. 블로킹 태스크가 있으면 해당 항목을 `[ ]`로 남기고 비고를 추가한다.
|
|
||||||
|
|
||||||
#### `#6 파일 처리 결과` 갱신
|
|
||||||
|
|
||||||
- `처리 결과`: `갱신`
|
|
||||||
- `생성 경로`: 경로 확인 후 기입
|
|
||||||
- `마지막 갱신 시각(KST)`: 현재 시각으로 기입
|
|
||||||
|
|
||||||
#### `#0 문서 상태` 변경
|
|
||||||
|
|
||||||
- `상태`: `review`로 변경
|
|
||||||
- `마지막 갱신 시각(KST)`: 현재 시각으로 변경
|
|
||||||
|
|
||||||
### 5. 결과 보고
|
|
||||||
|
|
||||||
구현이 끝나면 아래 항목을 포함한 보고서를 출력한다.
|
|
||||||
|
|
||||||
- **실행 완료된 태스크 목록** (T-N, 완료 조건 충족 여부)
|
|
||||||
- **블로킹 태스크** (있는 경우): 원인 및 필요한 사용자 결정 사항
|
|
||||||
- **계획 외 변경 파일** (있는 경우): 파일명과 이유
|
|
||||||
- **다음 단계 안내**: 블로킹 없음 → `/review-implementation sdlc-001` 실행 권장
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- `4_implementation.md`의 `#2`와 `#3`을 구현의 유일한 기준으로 삼는다. 범위 밖 변경은 사용자 확인 없이 수행하지 않는다.
|
|
||||||
- 기존 코드를 삭제하거나 되돌리기 어려운 파괴적 변경은 수행 전 사용자에게 확인한다.
|
|
||||||
- DoD가 측정 불가능한 서술로 되어 있으면 가능한 근접한 방식으로 자체 평가하고, 평가 방식을 보고서에 명시한다.
|
|
||||||
- 구현 실행은 `draft` 또는 `review` 상태에서만 허용한다.
|
|
||||||
@@ -1,257 +0,0 @@
|
|||||||
---
|
|
||||||
name: "run-sdlc"
|
|
||||||
description: "Run the full SDLC pipeline for a given cycle, automatically resuming from the first incomplete stage"
|
|
||||||
argument-hint: "예: sdlc-001 Justin"
|
|
||||||
agent: "agent"
|
|
||||||
---
|
|
||||||
지정된 SDLC 주기의 전체 파이프라인을 순서대로 실행한다.
|
|
||||||
|
|
||||||
인자:
|
|
||||||
- `sdlc-xyz`: SDLC 주기 ID (예: `sdlc-001`)
|
|
||||||
- `my-name`: 각 단계 승인자 이름 (예: `Justin`)
|
|
||||||
|
|
||||||
목표:
|
|
||||||
- 지정된 SDLC 주기의 현재 진행 상태를 파악하고, 미완료 단계부터 순서대로 실행한다.
|
|
||||||
- 각 단계가 완료(`confirmed`)되면 다음 단계로 자동 진행한다.
|
|
||||||
- 사용자 판단이 필요한 경우 즉시 중단하고, 어떤 판단이 필요한지 명확하게 안내한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 실행 절차
|
|
||||||
|
|
||||||
### 1. 입력 해석
|
|
||||||
|
|
||||||
- 첫 번째 인자를 `CYCLE_ID`로 사용한다 (예: `sdlc-001`).
|
|
||||||
- 두 번째 인자를 `APPROVER_NAME`으로 사용한다 (예: `Justin`).
|
|
||||||
- `docs/sdlc/` 아래에서 `CYCLE_ID`로 시작하는 폴더를 찾는다.
|
|
||||||
- 폴더가 없으면 오류를 보고하고 중단한다.
|
|
||||||
- 폴더가 여러 개이면 가장 최근(날짜 순)을 사용하고 선택한 폴더 경로를 보고한다.
|
|
||||||
- 이후 단계에서 `SDLC_DIR = docs/sdlc/<일치하는 폴더>`로 참조한다.
|
|
||||||
|
|
||||||
### 2. 현재 상태 파악
|
|
||||||
|
|
||||||
`SDLC_DIR/index.md`의 단계별 상태 테이블을 읽어 각 단계의 현재 상태를 확인한다.
|
|
||||||
파일이 없으면 각 문서 파일을 직접 읽어 `# 0. 문서 상태`의 `- 상태:` 줄에서 상태를 확인한다.
|
|
||||||
|
|
||||||
확인 대상 단계와 해당 문서 파일:
|
|
||||||
|
|
||||||
| 단계 | 문서 파일 | confirmed 조건 |
|
|
||||||
|------|-----------|----------------|
|
|
||||||
| Discovery | `1_discovery.md` | 상태 = `confirmed` 또는 `Ready for Planning: true` |
|
|
||||||
| Planning | `2_planning.md` | 상태 = `confirmed` 또는 `Ready for Design: true` |
|
|
||||||
| Design | `3_design.md` | 상태 = `confirmed` 또는 `Ready for Implementation: true` |
|
|
||||||
| Implementation | `4_implementation.md` | 상태 = `confirmed` 또는 `Ready for Verification: true` |
|
|
||||||
| Verification | `5_verification.md` | 상태 = `confirmed` 또는 `Ready for Release: true` |
|
|
||||||
| Release | `6_release.md` | 상태 = `confirmed` 또는 `Ready for Operations: true` |
|
|
||||||
| Operations | `7_operation.md` | 상태 = `confirmed` 또는 `SDLC 주기 완료: true` |
|
|
||||||
|
|
||||||
### 3. 실행 시작 지점 결정
|
|
||||||
|
|
||||||
단계를 아래 순서로 순회하며 `confirmed`가 아닌 첫 번째 단계를 찾는다.
|
|
||||||
|
|
||||||
1. Discovery
|
|
||||||
2. Planning
|
|
||||||
3. Design
|
|
||||||
4. Implementation
|
|
||||||
5. Verification
|
|
||||||
6. Release
|
|
||||||
7. Operations
|
|
||||||
|
|
||||||
모든 단계가 `confirmed`이면 SDLC 주기가 완료되었음을 보고하고 종료한다.
|
|
||||||
|
|
||||||
### 4. 단계별 실행
|
|
||||||
|
|
||||||
시작 지점부터 각 단계의 서브스텝을 아래 순서로 실행한다.
|
|
||||||
각 서브스텝 실행 후 결과를 확인하고, 블로킹 조건이 발생하면 즉시 중단한다.
|
|
||||||
|
|
||||||
#### 4-1. Discovery 단계 (`1_discovery.md`)
|
|
||||||
|
|
||||||
`1_discovery.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | 오류 보고 후 중단 — Discovery 문서는 `/new-sdlc`로 먼저 생성해야 한다 |
|
|
||||||
| `draft` 또는 `review` | ① `review-discovery` → ② `confirm-discovery` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `review-discovery` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-discovery` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-2. Planning 단계 (`2_planning.md`)
|
|
||||||
|
|
||||||
`2_planning.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-planning` → ② `review-planning` → ③ `confirm-planning` |
|
|
||||||
| `draft` | ① `review-planning` → ② `confirm-planning` |
|
|
||||||
| `review` | ① `confirm-planning` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-planning` 실행 시: Discovery가 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `review-planning` 실행 시: {{TASK_OWNER_N}}는 copilot으로 자동으로 채우고, {{MILESTONE_N_DATE}}, {{ITERATION_N_PERIOD}}는 현재 날짜로 채운다. 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-planning` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-3. Design 단계 (`3_design.md`)
|
|
||||||
|
|
||||||
`3_design.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-design` → ② `review-design` → ③ `confirm-design` |
|
|
||||||
| `draft` | ① `review-design` → ② `confirm-design` |
|
|
||||||
| `review` | ① `confirm-design` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-design` 실행 시: Planning이 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `review-design` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-design` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-4. Implementation 단계 (`4_implementation.md`)
|
|
||||||
|
|
||||||
`4_implementation.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-implementation` → ② `run-implementation` → ③ `review-implementation` → ④ `confirm-implementation` |
|
|
||||||
| `draft` | ① `run-implementation` → ② `review-implementation` → ③ `confirm-implementation` |
|
|
||||||
| `review` | ① `review-implementation` → ② `confirm-implementation` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-implementation` 실행 시: Design이 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `run-implementation` 실행 시: 블로킹 태스크가 발생하면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `review-implementation` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-implementation` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-5. Verification 단계 (`5_verification.md`)
|
|
||||||
|
|
||||||
`5_verification.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-verification` → ② `review-verification` → ③ `confirm-verification` |
|
|
||||||
| `draft` | ① `review-verification` → ② `confirm-verification` |
|
|
||||||
| `review` | ① `confirm-verification` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-verification` 실행 시: Implementation이 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `review-verification` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-verification` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-6. Release 단계 (`6_release.md`)
|
|
||||||
|
|
||||||
`6_release.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-release` → ② `review-release` → ③ `confirm-release` |
|
|
||||||
| `draft` | ① `review-release` → ② `confirm-release` |
|
|
||||||
| `review` | ① `confirm-release` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-release` 실행 시: Verification이 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `review-release` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-release` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
#### 4-7. Operations 단계 (`7_operation.md`)
|
|
||||||
|
|
||||||
`7_operation.md`의 상태에 따라 아래 서브스텝을 실행한다.
|
|
||||||
|
|
||||||
| 현재 상태 | 실행할 서브스텝 |
|
|
||||||
|-----------|----------------|
|
|
||||||
| 파일 없음 | ① `draft-operation` → ② `review-operation` → ③ `confirm-operation` |
|
|
||||||
| `draft` | ① `review-operation` → ② `confirm-operation` |
|
|
||||||
| `review` | ① `confirm-operation` |
|
|
||||||
| `confirmed` | 스킵 |
|
|
||||||
|
|
||||||
- `draft-operation` 실행 시: Release가 `confirmed` 상태인지 확인한다. 아니면 중단.
|
|
||||||
- `review-operation` 실행 시: 검토 결과가 **보류(Hold)**이면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
- `confirm-operation` 실행 시: `APPROVER_NAME`을 `Confirmed By` 값으로 사용한다.
|
|
||||||
승인 불가 보고를 받으면 → [블로킹 처리](#블로킹-처리)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 블로킹 처리
|
|
||||||
|
|
||||||
아래 상황 중 하나가 발생하면 즉시 실행을 중단하고 사용자에게 아래 정보를 제공한다.
|
|
||||||
|
|
||||||
1. **review-* 결과가 보류(Hold)인 경우**
|
|
||||||
- 어느 단계의 review에서 보류가 발생했는지
|
|
||||||
- 보류 이유 (review 결과에서 제시된 미충족 항목)
|
|
||||||
- 해결을 위해 필요한 사용자 조치
|
|
||||||
|
|
||||||
2. **confirm-* 결과가 승인 불가인 경우**
|
|
||||||
- 어느 단계의 confirm이 실패했는지
|
|
||||||
- C 유형 미해소 플레이스홀더 목록 (해당 시)
|
|
||||||
- 미해소 오픈 질문 목록 (해당 시)
|
|
||||||
- 해결 방법 안내 (예: 문서에서 해당 항목을 직접 채운 후 `/run-sdlc <CYCLE_ID> <NAME>` 재실행)
|
|
||||||
|
|
||||||
3. **run-implementation 실행 중 블로킹 태스크가 발생한 경우**
|
|
||||||
- 블로킹된 태스크 번호(T-N)와 원인
|
|
||||||
- 사용자가 결정해야 할 사항
|
|
||||||
- 해결 후 `/run-sdlc <CYCLE_ID> <NAME>` 재실행 안내
|
|
||||||
|
|
||||||
4. **Verification 단계가 미완료인 경우**
|
|
||||||
- Verification 문서의 현재 상태
|
|
||||||
- 필요한 조치 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 5. 완료 보고
|
|
||||||
|
|
||||||
전체 파이프라인이 완료되면(모든 단계 `confirmed`) 아래 내용을 포함한 완료 보고를 출력한다.
|
|
||||||
|
|
||||||
- **완료된 주기**: `CYCLE_ID`
|
|
||||||
- **각 단계별 최종 상태** (표 형식)
|
|
||||||
- **이번 실행에서 처리된 단계 목록**
|
|
||||||
- **다음 Discovery 환류 항목**: Operations `# 6` 섹션의 내용 요약 (있는 경우)
|
|
||||||
- **다음 SDLC 주기 시작 안내**: `/new-sdlc <다음 이슈 내용>` 명령 안내
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 서브스텝 실행 방식
|
|
||||||
|
|
||||||
각 서브스텝은 해당 프롬프트 파일의 전체 절차를 그대로 실행한다.
|
|
||||||
|
|
||||||
| 서브스텝 | 참조 프롬프트 |
|
|
||||||
|----------|--------------|
|
|
||||||
| `review-discovery` | `.github/prompts/review-discovery.prompt.md` |
|
|
||||||
| `confirm-discovery` | `.github/prompts/confirm-discovery.prompt.md` |
|
|
||||||
| `draft-planning` | `.github/prompts/draft-planning.prompt.md` |
|
|
||||||
| `review-planning` | `.github/prompts/review-planning.prompt.md` |
|
|
||||||
| `confirm-planning` | `.github/prompts/confirm-planning.prompt.md` |
|
|
||||||
| `draft-design` | `.github/prompts/draft-design.prompt.md` |
|
|
||||||
| `review-design` | `.github/prompts/review-design.prompt.md` |
|
|
||||||
| `confirm-design` | `.github/prompts/confirm-design.prompt.md` |
|
|
||||||
| `draft-implementation` | `.github/prompts/draft-implementation.prompt.md` |
|
|
||||||
| `run-implementation` | `.github/prompts/run-implementation.prompt.md` |
|
|
||||||
| `review-implementation` | `.github/prompts/review-implementation.prompt.md` |
|
|
||||||
| `confirm-implementation` | `.github/prompts/confirm-implementation.prompt.md` |
|
|
||||||
| `draft-verification` | `.github/prompts/draft-verification.prompt.md` |
|
|
||||||
| `review-verification` | `.github/prompts/review-verification.prompt.md` |
|
|
||||||
| `confirm-verification` | `.github/prompts/confirm-verification.prompt.md` |
|
|
||||||
| `draft-release` | `.github/prompts/draft-release.prompt.md` |
|
|
||||||
| `review-release` | `.github/prompts/review-release.prompt.md` |
|
|
||||||
| `confirm-release` | `.github/prompts/confirm-release.prompt.md` |
|
|
||||||
| `draft-operation` | `.github/prompts/draft-operation.prompt.md` |
|
|
||||||
| `review-operation` | `.github/prompts/review-operation.prompt.md` |
|
|
||||||
| `confirm-operation` | `.github/prompts/confirm-operation.prompt.md` |
|
|
||||||
|
|
||||||
`confirm-*` 서브스텝 실행 시 `APPROVER_NAME`을 해당 문서의 Freeze 섹션 `Confirmed By:` 값으로 주입한다.
|
|
||||||
해당 줄이 문서에 없거나 플레이스홀더로 되어 있으면, 실행 전 `APPROVER_NAME`으로 교체한다.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 중요 규칙
|
|
||||||
|
|
||||||
- 각 단계는 정해진 순서대로만 실행하며, 이전 단계가 `confirmed`가 아닌 상태에서 다음 단계를 시작하지 않는다.
|
|
||||||
- `run-implementation`은 실제 코드를 변경하는 단계이므로, 블로킹 조건이 없어도 실행 전 `4_implementation.md`의 구현 계획(`# 2 구현 계획`)과 변경 파일 목록(`# 3 변경 파일 목록`)을 요약해 사용자에게 안내한 뒤 진행한다.
|
|
||||||
- 사용자 판단 없이 임의로 결정할 수 없는 항목(담당자 지정, 외부 환경 정보, 정책 결정 등)은 반드시 중단하고 사용자에게 문의한다.
|
|
||||||
- 블로킹 처리 후 사용자가 문서를 직접 수정하면 `/run-sdlc <CYCLE_ID> <APPROVER_NAME>`을 재실행해 이어서 진행할 수 있다.
|
|
||||||
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
|
|
||||||
@@ -1,219 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. 계획 상태 요약
|
|
||||||
현재 Discovery가 어떤 배경에서 작성되고 있는지, 연계 문서가 있는지, 지금 시점의 해석이 무엇인지 짧게 요약한다.
|
|
||||||
|
|
||||||
- 연계 문서 현황:
|
|
||||||
- Planning 점수 파일: {{PLANNING_SCORE_FILE:미생성 또는 경로}}
|
|
||||||
- 관련 TODO/메모: {{TODO_FILE:경로 또는 없음}}
|
|
||||||
- 해석:
|
|
||||||
- {{SUMMARY_LINE_1:현재 검토/작성 배경 요약}}
|
|
||||||
- {{SUMMARY_LINE_2:이번 Discovery에서 판단해야 할 핵심 요약}}
|
|
||||||
|
|
||||||
# 2. 요구사항 판정 결과
|
|
||||||
이번 요청이 기존 요구사항과 비교해 신규인지, 유사한지, 중복인지 판단하고 그 근거를 남긴다.
|
|
||||||
|
|
||||||
- 판정: {{REQUIREMENT_CLASSIFICATION:완전 중복|유사|신규}}
|
|
||||||
- 근거
|
|
||||||
- {{CLASSIFICATION_REASON_1}}
|
|
||||||
- {{CLASSIFICATION_REASON_2}}
|
|
||||||
|
|
||||||
> **판정이 `완전 중복`인 경우**: 이하 섹션 작성을 중단하고 `# 9. 파일 처리 결과`에 중복 판정 사유와 참조 문서 경로를 기록한 뒤 문서를 닫는다. Planning으로 넘기지 않는다.
|
|
||||||
|
|
||||||
# 3. 문제점의 요약
|
|
||||||
문제의 현재 상태, 기대 상태, 관련 이해관계자, 제약사항을 정리한다. Discovery의 핵심 맥락을 가장 먼저 이해할 수 있어야 한다.
|
|
||||||
|
|
||||||
- 현재 상태
|
|
||||||
- {{CURRENT_STATE_1}}
|
|
||||||
- {{CURRENT_STATE_2}}
|
|
||||||
- 기대 상태
|
|
||||||
- {{TARGET_STATE_1}}
|
|
||||||
- {{TARGET_STATE_2}}
|
|
||||||
- 이해관계자
|
|
||||||
- {{STAKEHOLDER_1:예. 문서 작성자(AI agent)}}
|
|
||||||
- {{STAKEHOLDER_2:예. 리뷰어/승인자}}
|
|
||||||
- {{STAKEHOLDER_3:예. 운영 담당자}}
|
|
||||||
- 제약사항
|
|
||||||
- {{CONSTRAINT_1}}
|
|
||||||
- {{CONSTRAINT_2}}
|
|
||||||
|
|
||||||
## 주요 사용자 시나리오
|
|
||||||
사용자 또는 운영자가 실제로 어떤 상황에서 이 변경을 필요로 하는지 대표 시나리오를 적는다.
|
|
||||||
|
|
||||||
- {{USER_SCENARIO_1}}
|
|
||||||
- {{USER_SCENARIO_2}}
|
|
||||||
- {{USER_SCENARIO_3}}
|
|
||||||
|
|
||||||
# 4. 이번에 정의할 변경
|
|
||||||
이번 Discovery에서 다루는 핵심 변경 항목을 목록으로 적는다. 기능, 구조, 규칙 변경을 함께 포함해도 된다.
|
|
||||||
|
|
||||||
- {{CHANGE_ITEM_1}}
|
|
||||||
- {{CHANGE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
- {{CHANGE_ITEM_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 영향 범위
|
|
||||||
변경이 미칠 코드/문서/운영 범위를 명시해 Planning에서 추정 누락을 줄인다.
|
|
||||||
|
|
||||||
- 코드 영향:
|
|
||||||
- {{CODE_IMPACT_1:예. docs/sdlc/index.md 갱신 로직}}
|
|
||||||
- {{CODE_IMPACT_2:필요 없으면 삭제}}
|
|
||||||
- 문서 영향:
|
|
||||||
- {{DOC_IMPACT_1}}
|
|
||||||
- {{DOC_IMPACT_2:필요 없으면 삭제}}
|
|
||||||
- 운영 영향:
|
|
||||||
- {{OPS_IMPACT_1:예. 배포/운영 절차 변경 없음}}
|
|
||||||
- {{OPS_IMPACT_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 5. 요구사항 목록
|
|
||||||
실제로 구현과 검증으로 이어질 요구사항을 기능/비기능으로 나누어 정리하고, 범위 경계를 명확히 적는다.
|
|
||||||
|
|
||||||
## 기능 요구사항
|
|
||||||
- FR-1: {{FR_1}}
|
|
||||||
- FR-2: {{FR_2}}
|
|
||||||
- FR-3: {{FR_3:필요 없으면 삭제}}
|
|
||||||
- FR-4: {{FR_4:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 비기능 요구사항
|
|
||||||
성능, 운영성, 일관성, 자동화 안정성 등 기능 외 요구사항을 적는다.
|
|
||||||
|
|
||||||
- NFR-1: {{NFR_1}}
|
|
||||||
- NFR-2: {{NFR_2}}
|
|
||||||
- NFR-3: {{NFR_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 범위 경계
|
|
||||||
이번 반복에서 반드시 포함할 범위와 명시적으로 제외할 범위를 구분한다.
|
|
||||||
|
|
||||||
- In Scope
|
|
||||||
- {{IN_SCOPE_1}}
|
|
||||||
- {{IN_SCOPE_2}}
|
|
||||||
- Out of Scope
|
|
||||||
- {{OUT_OF_SCOPE_1}}
|
|
||||||
- {{OUT_OF_SCOPE_2}}
|
|
||||||
|
|
||||||
# 6. 리스크/가정 목록
|
|
||||||
불확실성과 전제 조건을 분리해서 적는다. 리스크는 영향과 완화 방안을, 가정은 현재 판단의 전제를 기록한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{RISK_LEVEL_1:High|Medium|Low}}): {{RISK_1}}
|
|
||||||
- 완화 방안: {{MITIGATION_1}}
|
|
||||||
- R-2 ({{RISK_LEVEL_2:High|Medium|Low}}): {{RISK_2}}
|
|
||||||
- 완화 방안: {{MITIGATION_2}}
|
|
||||||
- R-3 ({{RISK_LEVEL_3:High|Medium|Low}}): {{RISK_3:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{MITIGATION_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 가정
|
|
||||||
아직 확정되지 않았지만 현재 문서 작성의 기반이 되는 전제를 적는다.
|
|
||||||
|
|
||||||
- A-1: {{ASSUMPTION_1}}
|
|
||||||
- A-2: {{ASSUMPTION_2}}
|
|
||||||
- A-3: {{ASSUMPTION_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
답을 아직 모르는 항목을 적는다. 추정으로 덮지 말고 Planning 이전에 확인할 질문으로 남긴다.
|
|
||||||
|
|
||||||
- OQ-1: {{OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{OPEN_QUESTION_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{OPEN_QUESTION_ACTION_1:누가 어떤 방식으로 결정/확인할지}}
|
|
||||||
- 종료 조건: {{OPEN_QUESTION_EXIT_1:언제 이 질문을 Answered/Deferred/Dropped로 처리할지}}
|
|
||||||
- OQ-2: {{OPEN_QUESTION_2}}
|
|
||||||
- 상태: {{OPEN_QUESTION_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{OPEN_QUESTION_ACTION_2:누가 어떤 방식으로 결정/확인할지}}
|
|
||||||
- 종료 조건: {{OPEN_QUESTION_EXIT_2:언제 이 질문을 Answered/Deferred/Dropped로 처리할지}}
|
|
||||||
- OQ-3: {{OPEN_QUESTION_3:필요 없으면 삭제}}
|
|
||||||
- 상태: {{OPEN_QUESTION_STATUS_3:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{OPEN_QUESTION_ACTION_3:누가 어떤 방식으로 결정/확인할지}}
|
|
||||||
- 종료 조건: {{OPEN_QUESTION_EXIT_3:언제 이 질문을 Answered/Deferred/Dropped로 처리할지}}
|
|
||||||
|
|
||||||
### 오픈 질문 처리 기준
|
|
||||||
- `Open`: 아직 답이 없고 다음 단계 진행에 영향이 있는 상태다. 문서에 유지한다.
|
|
||||||
- `Answered`: 답이 확정된 상태다. 관련 본문/요구사항에 반영한 뒤 오픈 질문 목록에서는 제거하거나 resolved 기록으로 이동한다.
|
|
||||||
- `Deferred`: 지금 단계에서 결정하지 않고 다음 단계 또는 후속 이슈로 넘기는 상태다. 넘길 대상과 이유를 반드시 적는다.
|
|
||||||
- `Dropped`: 더 이상 유효하지 않은 질문이다. 삭제 사유를 짧게 남기고 목록에서 제거한다.
|
|
||||||
- 처리 원칙 1: 질문만 남기지 말고 반드시 `상태`, `처리 방안`, `종료 조건`을 함께 적는다.
|
|
||||||
- 처리 원칙 2: 답이 나온 질문은 본문 반영 없이 단순 삭제하지 않는다. 반영 위치를 먼저 갱신한다.
|
|
||||||
- 처리 원칙 3: High 영향 질문은 `Deferred` 처리 후 처리 방안에 Planning 인계 추적 방식을 명시한다.
|
|
||||||
|
|
||||||
# 7. 초기 성공 기준
|
|
||||||
이 변경이 성공했다고 판단할 기준을 측정 가능하게 정의한다. 가능하면 데이터 출처까지 연결한다.
|
|
||||||
|
|
||||||
- S-1: {{SUCCESS_METRIC_1}}
|
|
||||||
- S-2: {{SUCCESS_METRIC_2}}
|
|
||||||
- S-3: {{SUCCESS_METRIC_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 측정 방식 및 데이터 출처
|
|
||||||
각 성공 기준을 어떻게 측정할지와 어떤 데이터나 문서를 근거로 쓸지 적는다.
|
|
||||||
|
|
||||||
- S-1 측정 방식: {{MEASURE_METHOD_1}} / 데이터 출처: {{MEASURE_SOURCE_1}}
|
|
||||||
- S-2 측정 방식: {{MEASURE_METHOD_2}} / 데이터 출처: {{MEASURE_SOURCE_2}}
|
|
||||||
- S-3 측정 방식: {{MEASURE_METHOD_3:필요 없으면 삭제}} / 데이터 출처: {{MEASURE_SOURCE_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 8. Planning으로 넘기기 전 확인 체크
|
|
||||||
Planning 단계로 넘기기 전에 무엇이 확정되어야 하는지 확인한다. 미완료 항목은 후속 결정이 필요함을 뜻한다.
|
|
||||||
|
|
||||||
- [ ] 범위(In Scope/Out of Scope) 확정
|
|
||||||
- 기준: {{CHECK_SCOPE_CRITERIA}}
|
|
||||||
- [ ] 성공 지표의 측정 방식/데이터 출처 확정
|
|
||||||
- 기준: {{CHECK_METRICS_CRITERIA}}
|
|
||||||
- [ ] High 영향 리스크 우선순위 및 해소 책임자 지정
|
|
||||||
- 기준: {{CHECK_RISK_OWNER_CRITERIA}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA}}
|
|
||||||
|
|
||||||
# 9. 파일 처리 결과
|
|
||||||
이 Discovery 문서 생성/갱신 결과와 참조 문서를 기록한다. 이후 추적과 리뷰 시 근거로 사용한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{REFERENCE_1}}
|
|
||||||
- {{REFERENCE_2}}
|
|
||||||
- {{REFERENCE_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 10. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다. 결정, 확인, 데이터 요청을 구분해서 적는다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 11. Discovery Freeze
|
|
||||||
Planning 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 범위: [# 5. 요구사항 목록 > 범위 경계](#5-요구사항-목록)
|
|
||||||
- 리스크/오픈 질문: [# 6. 리스크/가정 목록](#6-리스크가정-목록)
|
|
||||||
- 성공 기준: [# 7. 초기 성공 기준](#7-초기-성공-기준)
|
|
||||||
- 인계 전 확인: [# 8. Planning으로 넘기기 전 확인 체크](#8-planning으로-넘기기-전-확인-체크)
|
|
||||||
- 사용자 결정 필요: [# 10. 사용자 결정 필요 항목 요약](#10-사용자-결정-필요-항목-요약)
|
|
||||||
|
|
||||||
## Freeze 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:Planning 진행 가능|보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:진행 가능 또는 보류 판단 근거 1-2줄}}
|
|
||||||
- Ready for Planning: {{READY_FOR_PLANNING:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 12. 작성 가이드
|
|
||||||
템플릿 사용 시의 기본 규칙을 적는다. 실제 문서를 만들 때는 이 가이드를 기준으로 플레이스홀더를 치환한다.
|
|
||||||
|
|
||||||
- 이 파일은 템플릿이다. 실제 문서 작성 시 `{{...}}` 플레이스홀더를 구체 값으로 교체한다.
|
|
||||||
- 필요 없는 항목은 삭제하고, 부족한 항목은 같은 형식으로 추가한다.
|
|
||||||
- Open Questions는 가정으로 대체하지 말고 그대로 유지한다.
|
|
||||||
- Discovery Freeze는 문서 하단에 반드시 유지한다.
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Discovery: {{DISCOVERY_PATH:docs/sdlc/<CYCLE_ID>/1_discovery.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Discovery 인계 요약
|
|
||||||
Discovery에서 확정된 핵심 내용을 요약한다. 원본은 1_discovery.md를 참조하며, 이 섹션은 Planning 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{PLANNING_ISSUE_PURPOSE:Discovery 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 확정 범위
|
|
||||||
- In Scope
|
|
||||||
- {{PLANNING_IN_SCOPE_1}}
|
|
||||||
- {{PLANNING_IN_SCOPE_2}}
|
|
||||||
- Out of Scope
|
|
||||||
- {{PLANNING_OUT_OF_SCOPE_1}}
|
|
||||||
- {{PLANNING_OUT_OF_SCOPE_2}}
|
|
||||||
|
|
||||||
## 기능 요구사항 (FR) 요약
|
|
||||||
- FR-1: {{PLANNING_FR_1}}
|
|
||||||
- FR-2: {{PLANNING_FR_2}}
|
|
||||||
- FR-3: {{PLANNING_FR_3:필요 없으면 삭제}}
|
|
||||||
- FR-4: {{PLANNING_FR_4:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 비기능 요구사항 (NFR) 요약
|
|
||||||
- NFR-1: {{PLANNING_NFR_1}}
|
|
||||||
- NFR-2: {{PLANNING_NFR_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Discovery에서 `Deferred` 처리되어 Planning 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 작업 분해 (Task Breakdown)
|
|
||||||
FR/NFR 각각을 실행 가능한 단위 태스크로 분해한다. 각 태스크는 하나의 완료 조건을 가져야 한다.
|
|
||||||
|
|
||||||
| ID | 태스크 제목 | 유형 | 참조 요구사항 | 의존 태스크 | 담당자 |
|
|
||||||
|-----|-----------|------|--------------|------------|--------|
|
|
||||||
| T-1 | {{TASK_TITLE_1}} | {{TASK_TYPE_1:개발\|문서\|검토\|설계\|운영}} | {{TASK_REF_1:FR-1}} | - | {{TASK_OWNER_1:TBD}} |
|
|
||||||
| T-2 | {{TASK_TITLE_2}} | {{TASK_TYPE_2:개발\|문서\|검토\|설계\|운영}} | {{TASK_REF_2:FR-2}} | {{TASK_DEP_2:-}} | {{TASK_OWNER_2:TBD}} |
|
|
||||||
| T-3 | {{TASK_TITLE_3:필요 없으면 삭제}} | {{TASK_TYPE_3:개발\|문서\|검토\|설계\|운영}} | {{TASK_REF_3}} | {{TASK_DEP_3:-}} | {{TASK_OWNER_3:TBD}} |
|
|
||||||
| T-4 | {{TASK_TITLE_4:필요 없으면 삭제}} | {{TASK_TYPE_4:개발\|문서\|검토\|설계\|운영}} | {{TASK_REF_4}} | {{TASK_DEP_4:-}} | {{TASK_OWNER_4:TBD}} |
|
|
||||||
|
|
||||||
## 태스크 완료 조건 (DoD)
|
|
||||||
각 태스크의 완료 기준을 명시한다.
|
|
||||||
|
|
||||||
- T-1: {{TASK_DOD_1}}
|
|
||||||
- T-2: {{TASK_DOD_2}}
|
|
||||||
- T-3: {{TASK_DOD_3:필요 없으면 삭제}}
|
|
||||||
- T-4: {{TASK_DOD_4:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 3. 공수 추정
|
|
||||||
각 태스크의 예상 공수를 적는다. 단위는 팀 기준에 맞게 선택한다(SP 또는 시간).
|
|
||||||
|
|
||||||
| ID | 태스크 제목 | 추정 공수 | 추정 단위 | 비고 |
|
|
||||||
|-----|-----------|---------|---------|------|
|
|
||||||
| T-1 | {{TASK_TITLE_1}} | {{EFFORT_1}} | {{EFFORT_UNIT:SP\|시간\|일}} | {{EFFORT_NOTE_1:필요 없으면 삭제}} |
|
|
||||||
| T-2 | {{TASK_TITLE_2}} | {{EFFORT_2}} | {{EFFORT_UNIT}} | {{EFFORT_NOTE_2:필요 없으면 삭제}} |
|
|
||||||
| T-3 | {{TASK_TITLE_3:필요 없으면 삭제}} | {{EFFORT_3}} | {{EFFORT_UNIT}} | {{EFFORT_NOTE_3:필요 없으면 삭제}} |
|
|
||||||
| T-4 | {{TASK_TITLE_4:필요 없으면 삭제}} | {{EFFORT_4}} | {{EFFORT_UNIT}} | {{EFFORT_NOTE_4:필요 없으면 삭제}} |
|
|
||||||
|
|
||||||
- 총 추정 공수: {{TOTAL_EFFORT}}
|
|
||||||
- 추정 신뢰도: {{EFFORT_CONFIDENCE:High|Medium|Low}}
|
|
||||||
- 추정 근거: {{EFFORT_BASIS:추정에 사용한 방법 또는 유사 사례}}
|
|
||||||
|
|
||||||
# 4. 일정 계획
|
|
||||||
이터레이션 또는 스프린트 단위로 태스크 배분 계획을 적는다.
|
|
||||||
|
|
||||||
## 마일스톤
|
|
||||||
| 마일스톤 | 목표 날짜 | 포함 태스크 | 완료 조건 |
|
|
||||||
|---------|---------|-----------|---------|
|
|
||||||
| M-1: {{MILESTONE_1_NAME}} | {{MILESTONE_1_DATE:TBD}} | {{MILESTONE_1_TASKS:T-1, T-2}} | {{MILESTONE_1_DONE}} |
|
|
||||||
| M-2: {{MILESTONE_2_NAME:필요 없으면 삭제}} | {{MILESTONE_2_DATE:TBD}} | {{MILESTONE_2_TASKS}} | {{MILESTONE_2_DONE}} |
|
|
||||||
|
|
||||||
## 이터레이션 계획
|
|
||||||
- 이터레이션 단위: {{ITERATION_UNIT:스프린트|주|없음(단일 배포)}}
|
|
||||||
- 이터레이션 1 ({{ITERATION_1_PERIOD:날짜 범위 또는 TBD}}): {{ITERATION_1_TASKS:T-1, T-2}}
|
|
||||||
- 이터레이션 2 ({{ITERATION_2_PERIOD:날짜 범위 또는 TBD}}): {{ITERATION_2_TASKS:T-3, T-4}}
|
|
||||||
|
|
||||||
# 5. 의존성 및 제약
|
|
||||||
태스크 간 의존 관계와 외부 의존성을 기록한다.
|
|
||||||
|
|
||||||
## 태스크 간 의존성
|
|
||||||
- {{TASK_DEPENDENCY_1:예. T-2는 T-1 완료 후 시작 가능}}
|
|
||||||
- {{TASK_DEPENDENCY_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 외부 의존성
|
|
||||||
다른 팀, 시스템, 도구에 의존하는 항목을 적는다.
|
|
||||||
|
|
||||||
- {{EXTERNAL_DEP_1:예. CI/CD 파이프라인 설정 필요}}
|
|
||||||
- {{EXTERNAL_DEP_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 기술/환경 제약
|
|
||||||
- {{TECH_CONSTRAINT_1}}
|
|
||||||
- {{TECH_CONSTRAINT_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 6. 검증 계획 개요
|
|
||||||
Discovery의 성공 기준과 연결해 어떻게 검증할지 초안을 적는다. 상세 검증은 Verification 단계에서 정의한다.
|
|
||||||
|
|
||||||
| 성공 기준 | 검증 방법 초안 | 담당자 |
|
|
||||||
|---------|-------------|--------|
|
|
||||||
| {{VERIFY_CRITERIA_1:S-1 요약}} | {{VERIFY_METHOD_1}} | {{VERIFY_OWNER_1:TBD}} |
|
|
||||||
| {{VERIFY_CRITERIA_2:S-2 요약}} | {{VERIFY_METHOD_2}} | {{VERIFY_OWNER_2:TBD}} |
|
|
||||||
| {{VERIFY_CRITERIA_3:S-3 요약 또는 삭제}} | {{VERIFY_METHOD_3}} | {{VERIFY_OWNER_3:TBD}} |
|
|
||||||
|
|
||||||
# 7. 리스크
|
|
||||||
Planning 단계에서 새로 식별된 리스크를 기록한다. Discovery에서 이월된 리스크는 `# 1` 이월 항목에서 확인한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{PLAN_RISK_LEVEL_1:High|Medium|Low}}): {{PLAN_RISK_1}}
|
|
||||||
- 완화 방안: {{PLAN_MITIGATION_1}}
|
|
||||||
- R-2 ({{PLAN_RISK_LEVEL_2:High|Medium|Low}}): {{PLAN_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{PLAN_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 가정
|
|
||||||
Planning 수행의 전제가 되는 가정을 적는다.
|
|
||||||
|
|
||||||
- PA-1: {{PLAN_ASSUMPTION_1}}
|
|
||||||
- PA-2: {{PLAN_ASSUMPTION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
Planning 진행 중 확인이 필요한 질문을 적는다.
|
|
||||||
|
|
||||||
- OQ-1: {{PLAN_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{PLAN_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{PLAN_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{PLAN_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{PLAN_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{PLAN_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{PLAN_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{PLAN_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 8. Design으로 넘기기 전 확인 체크
|
|
||||||
Design 단계로 넘기기 전에 무엇이 확정되어야 하는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 전체 태스크 목록 확정 및 담당자 지정
|
|
||||||
- 기준: {{CHECK_TASKS_CRITERIA:모든 태스크에 담당자가 지정되어야 한다}}
|
|
||||||
- [ ] 공수 추정 완료 및 총 공수 확인
|
|
||||||
- 기준: {{CHECK_EFFORT_CRITERIA:모든 태스크의 추정 공수가 채워져야 한다}}
|
|
||||||
- [ ] 마일스톤 및 이터레이션 계획 확정
|
|
||||||
- 기준: {{CHECK_SCHEDULE_CRITERIA:M-1 이상의 마일스톤과 이터레이션 경계가 정의되어야 한다}}
|
|
||||||
- [ ] 외부 의존성 해소 계획 확인
|
|
||||||
- 기준: {{CHECK_DEP_CRITERIA:외부 의존성 각 항목에 담당자 또는 해소 방안이 있어야 한다}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 9. 파일 처리 결과
|
|
||||||
이 Planning 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{DISCOVERY_PATH:docs/sdlc/<CYCLE_ID>/1_discovery.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 10. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 11. Planning Freeze
|
|
||||||
Design 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 작업 분해: [# 2. 작업 분해](#2-작업-분해-task-breakdown)
|
|
||||||
- 공수/일정: [# 3. 공수 추정](#3-공수-추정), [# 4. 일정 계획](#4-일정-계획)
|
|
||||||
- 의존성: [# 5. 의존성 및 제약](#5-의존성-및-제약)
|
|
||||||
- 검증 계획: [# 6. 검증 계획 개요](#6-검증-계획-개요)
|
|
||||||
- 리스크/오픈 질문: [# 7. 리스크](#7-리스크)
|
|
||||||
- 인계 전 확인: [# 8. Design으로 넘기기 전 확인 체크](#8-design으로-넘기기-전-확인-체크)
|
|
||||||
- 사용자 결정 필요: [# 10. 사용자 결정 필요 항목 요약](#10-사용자-결정-필요-항목-요약)
|
|
||||||
|
|
||||||
## Freeze 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:Design 진행 가능|보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:진행 가능 또는 보류 판단 근거 1-2줄}}
|
|
||||||
- Ready for Design: {{READY_FOR_DESIGN:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 12. 작성 가이드
|
|
||||||
템플릿 사용 시의 기본 규칙을 적는다. 실제 문서를 만들 때는 이 가이드를 기준으로 플레이스홀더를 치환한다.
|
|
||||||
|
|
||||||
- 이 파일은 템플릿이다. 실제 문서 작성 시 `{{...}}` 플레이스홀더를 구체 값으로 교체한다.
|
|
||||||
- 필요 없는 태스크/마일스톤 행은 삭제하고, 부족한 항목은 같은 형식으로 추가한다.
|
|
||||||
- 공수 추정은 팀 기준 단위(SP/시간/일)를 통일해서 사용한다.
|
|
||||||
- Planning Freeze는 문서 하단에 반드시 유지한다.
|
|
||||||
@@ -1,187 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Planning: {{PLANNING_PATH:docs/sdlc/<CYCLE_ID>/2_planning.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Planning 인계 요약
|
|
||||||
Planning에서 확정된 핵심 내용을 요약한다. 원본은 2_planning.md를 참조하며, 이 섹션은 Design 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{DESIGN_ISSUE_PURPOSE:Planning 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 확정 태스크 목록
|
|
||||||
| ID | 태스크 제목 | 참조 요구사항 | 담당자 |
|
|
||||||
|----|-----------|------------|--------|
|
|
||||||
| T-1 | {{DESIGN_TASK_TITLE_1}} | {{DESIGN_TASK_REF_1}} | {{DESIGN_TASK_OWNER_1:TBD}} |
|
|
||||||
| T-2 | {{DESIGN_TASK_TITLE_2}} | {{DESIGN_TASK_REF_2}} | {{DESIGN_TASK_OWNER_2:TBD}} |
|
|
||||||
| T-3 | {{DESIGN_TASK_TITLE_3:필요 없으면 삭제}} | {{DESIGN_TASK_REF_3}} | {{DESIGN_TASK_OWNER_3:TBD}} |
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Planning에서 `Deferred` 처리되어 Design 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{DESIGN_DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{DESIGN_DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 아키텍처 및 구조 설계
|
|
||||||
변경이 미치는 전체 구조와 주요 컴포넌트 관계를 설명한다.
|
|
||||||
|
|
||||||
## 전체 구조 개요
|
|
||||||
{{ARCH_OVERVIEW:시스템/모듈/파일 구조를 개요 수준으로 설명. 다이어그램 또는 목록 형태 모두 가능}}
|
|
||||||
|
|
||||||
## 주요 컴포넌트
|
|
||||||
| 컴포넌트 | 역할 | 영향 범위 |
|
|
||||||
|---------|------|---------|
|
|
||||||
| {{COMPONENT_1_NAME}} | {{COMPONENT_1_ROLE}} | {{COMPONENT_1_SCOPE}} |
|
|
||||||
| {{COMPONENT_2_NAME}} | {{COMPONENT_2_ROLE}} | {{COMPONENT_2_SCOPE}} |
|
|
||||||
| {{COMPONENT_3_NAME:필요 없으면 삭제}} | {{COMPONENT_3_ROLE}} | {{COMPONENT_3_SCOPE}} |
|
|
||||||
|
|
||||||
## 데이터 흐름
|
|
||||||
변경과 관련된 주요 데이터 흐름 또는 처리 순서를 적는다. 복잡하면 단계별 목록으로 표현한다.
|
|
||||||
|
|
||||||
- {{DATA_FLOW_1}}
|
|
||||||
- {{DATA_FLOW_2}}
|
|
||||||
- {{DATA_FLOW_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 3. 상세 설계
|
|
||||||
태스크(T-N)별로 구체적인 구현/변경 방법을 기술한다.
|
|
||||||
|
|
||||||
## T-1: {{DESIGN_TASK_TITLE_1}}
|
|
||||||
- 설계 방향: {{DESIGN_DETAIL_1}}
|
|
||||||
- 변경 대상: {{DESIGN_TARGET_1:파일 경로, 함수명, 설정 키 등}}
|
|
||||||
- 입력/출력: {{DESIGN_IO_1:입력값과 출력값 또는 사이드이펙트}}
|
|
||||||
- 예외/엣지 케이스: {{DESIGN_EDGE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## T-2: {{DESIGN_TASK_TITLE_2}}
|
|
||||||
- 설계 방향: {{DESIGN_DETAIL_2}}
|
|
||||||
- 변경 대상: {{DESIGN_TARGET_2}}
|
|
||||||
- 입력/출력: {{DESIGN_IO_2}}
|
|
||||||
- 예외/엣지 케이스: {{DESIGN_EDGE_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## T-3: {{DESIGN_TASK_TITLE_3:필요 없으면 삭제}}
|
|
||||||
- 설계 방향: {{DESIGN_DETAIL_3}}
|
|
||||||
- 변경 대상: {{DESIGN_TARGET_3}}
|
|
||||||
- 입력/출력: {{DESIGN_IO_3}}
|
|
||||||
- 예외/엣지 케이스: {{DESIGN_EDGE_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 4. 인터페이스 정의
|
|
||||||
외부 시스템, 모듈 간 계약(API, 이벤트, 파일 포맷 등)을 명시한다. 해당 없으면 "해당 없음"으로 기재한다.
|
|
||||||
|
|
||||||
## API / 함수 시그니처
|
|
||||||
- {{INTERFACE_1:예. function foo(bar: string): boolean — 설명}}
|
|
||||||
- {{INTERFACE_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 데이터 스키마 / 포맷
|
|
||||||
- {{SCHEMA_1:예. { id: string, status: "draft"|"confirmed" } — 설명}}
|
|
||||||
- {{SCHEMA_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 이벤트 / 메시지
|
|
||||||
- {{EVENT_1:필요 없으면 삭제}}
|
|
||||||
- {{EVENT_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 5. 보안 고려사항
|
|
||||||
OWASP Top 10 기준으로 이번 변경에서 주의해야 할 보안 항목을 점검한다.
|
|
||||||
|
|
||||||
| 항목 | 해당 여부 | 대응 방안 |
|
|
||||||
|------|---------|---------|
|
|
||||||
| 입력값 검증 (Injection) | {{SEC_INJECTION:해당|비해당}} | {{SEC_INJECTION_ACTION:비해당이면 삭제}} |
|
|
||||||
| 인증/인가 | {{SEC_AUTH:해당|비해당}} | {{SEC_AUTH_ACTION:비해당이면 삭제}} |
|
|
||||||
| 민감 데이터 노출 | {{SEC_DATA:해당|비해당}} | {{SEC_DATA_ACTION:비해당이면 삭제}} |
|
|
||||||
| 의존성 취약점 | {{SEC_DEP:해당|비해당}} | {{SEC_DEP_ACTION:비해당이면 삭제}} |
|
|
||||||
| 기타 | {{SEC_OTHER:필요 없으면 삭제}} | {{SEC_OTHER_ACTION:필요 없으면 삭제}} |
|
|
||||||
|
|
||||||
# 6. 리스크
|
|
||||||
Design 단계에서 새로 식별된 리스크를 기록한다. Planning에서 이월된 리스크는 `# 1` 이월 항목에서 확인한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{DESIGN_RISK_LEVEL_1:High|Medium|Low}}): {{DESIGN_RISK_1}}
|
|
||||||
- 완화 방안: {{DESIGN_MITIGATION_1}}
|
|
||||||
- R-2 ({{DESIGN_RISK_LEVEL_2:High|Medium|Low}}): {{DESIGN_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{DESIGN_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 가정
|
|
||||||
Design 수행의 전제가 되는 가정을 적는다.
|
|
||||||
|
|
||||||
- DA-1: {{DESIGN_ASSUMPTION_1}}
|
|
||||||
- DA-2: {{DESIGN_ASSUMPTION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
Design 진행 중 확인이 필요한 질문을 적는다.
|
|
||||||
|
|
||||||
- OQ-1: {{DESIGN_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{DESIGN_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{DESIGN_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{DESIGN_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{DESIGN_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{DESIGN_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{DESIGN_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{DESIGN_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 7. Implementation으로 넘기기 전 확인 체크
|
|
||||||
Implementation 단계로 넘기기 전에 무엇이 확정되어야 하는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 전체 컴포넌트 및 태스크별 설계 완성
|
|
||||||
- 기준: {{CHECK_DESIGN_COMPLETE:모든 T-N 태스크에 설계 방향과 변경 대상이 채워져야 한다}}
|
|
||||||
- [ ] 인터페이스 계약 확정
|
|
||||||
- 기준: {{CHECK_INTERFACE:외부 의존 컴포넌트와의 계약이 명시되어야 한다}}
|
|
||||||
- [ ] 보안 점검 완료
|
|
||||||
- 기준: {{CHECK_SECURITY:OWASP 점검 항목 중 해당 항목은 대응 방안이 있어야 한다}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 8. 파일 처리 결과
|
|
||||||
이 Design 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{PLANNING_PATH:docs/sdlc/<CYCLE_ID>/2_planning.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 9. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 10. Design Freeze
|
|
||||||
Implementation 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 아키텍처/구조: [# 2. 아키텍처 및 구조 설계](#2-아키텍처-및-구조-설계)
|
|
||||||
- 상세 설계: [# 3. 상세 설계](#3-상세-설계)
|
|
||||||
- 인터페이스: [# 4. 인터페이스 정의](#4-인터페이스-정의)
|
|
||||||
- 보안: [# 5. 보안 고려사항](#5-보안-고려사항)
|
|
||||||
- 리스크/오픈 질문: [# 6. 리스크](#6-리스크)
|
|
||||||
- 인계 전 확인: [# 7. Implementation으로 넘기기 전 확인 체크](#7-implementation으로-넘기기-전-확인-체크)
|
|
||||||
- 사용자 결정 필요: [# 9. 사용자 결정 필요 항목 요약](#9-사용자-결정-필요-항목-요약)
|
|
||||||
|
|
||||||
## Freeze 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:Implementation 진행 가능|보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:진행 가능 또는 보류 판단 근거 1-2줄}}
|
|
||||||
- Ready for Implementation: {{READY_FOR_IMPLEMENTATION:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 11. 작성 가이드
|
|
||||||
템플릿 사용 시의 기본 규칙을 적는다. 실제 문서를 만들 때는 이 가이드를 기준으로 플레이스홀더를 치환한다.
|
|
||||||
|
|
||||||
- 이 파일은 템플릿이다. 실제 문서 작성 시 `{{...}}` 플레이스홀더를 구체 값으로 교체한다.
|
|
||||||
- 필요 없는 컴포넌트/태스크 항목은 삭제하고, 부족한 항목은 같은 형식으로 추가한다.
|
|
||||||
- 보안 고려사항은 "비해당"이라도 근거를 남긴다.
|
|
||||||
- Design Freeze는 문서 하단에 반드시 유지한다.
|
|
||||||
@@ -1,155 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Design: {{DESIGN_PATH:docs/sdlc/<CYCLE_ID>/3_design.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Design 인계 요약
|
|
||||||
Design에서 확정된 핵심 내용을 요약한다. 원본은 3_design.md를 참조하며, 이 섹션은 Implementation 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{IMP_ISSUE_PURPOSE:Design 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 확정 태스크 및 변경 대상
|
|
||||||
| ID | 태스크 제목 | 변경 대상 파일/함수 | 담당자 |
|
|
||||||
|----|-----------|-------------------|--------|
|
|
||||||
| T-1 | {{IMP_TASK_TITLE_1}} | {{IMP_TASK_TARGET_1}} | {{IMP_TASK_OWNER_1:TBD}} |
|
|
||||||
| T-2 | {{IMP_TASK_TITLE_2}} | {{IMP_TASK_TARGET_2}} | {{IMP_TASK_OWNER_2:TBD}} |
|
|
||||||
| T-3 | {{IMP_TASK_TITLE_3:필요 없으면 삭제}} | {{IMP_TASK_TARGET_3}} | {{IMP_TASK_OWNER_3:TBD}} |
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Design에서 `Deferred` 처리되어 Implementation 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{IMP_DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{IMP_DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 구현 계획
|
|
||||||
태스크(T-N)별 구현 순서와 접근 방법을 기술한다.
|
|
||||||
|
|
||||||
## 구현 순서
|
|
||||||
태스크 간 의존 관계와 우선순위를 고려한 구현 순서를 정의한다.
|
|
||||||
|
|
||||||
1. {{IMP_ORDER_1:예. T-1 — 기반 구조 구현 (다른 태스크의 의존 대상)}}
|
|
||||||
2. {{IMP_ORDER_2:예. T-2 — 핵심 기능 구현}}
|
|
||||||
3. {{IMP_ORDER_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## T-1: {{IMP_TASK_TITLE_1}}
|
|
||||||
- 구현 방법: {{IMP_METHOD_1:설계 방향을 실제 코드/설정으로 구현하는 접근}}
|
|
||||||
- 변경 대상: {{IMP_TARGET_1:실제 파일 경로, 함수명, 설정 키}}
|
|
||||||
- 완료 조건: {{IMP_DOD_1:이 태스크가 완료된 것으로 간주하는 기준}}
|
|
||||||
- 주의사항: {{IMP_NOTE_1:구현 중 주의해야 할 사항. 필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## T-2: {{IMP_TASK_TITLE_2}}
|
|
||||||
- 구현 방법: {{IMP_METHOD_2}}
|
|
||||||
- 변경 대상: {{IMP_TARGET_2}}
|
|
||||||
- 완료 조건: {{IMP_DOD_2}}
|
|
||||||
- 주의사항: {{IMP_NOTE_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## T-3: {{IMP_TASK_TITLE_3:필요 없으면 삭제}}
|
|
||||||
- 구현 방법: {{IMP_METHOD_3}}
|
|
||||||
- 변경 대상: {{IMP_TARGET_3}}
|
|
||||||
- 완료 조건: {{IMP_DOD_3}}
|
|
||||||
- 주의사항: {{IMP_NOTE_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 3. 변경 파일 목록
|
|
||||||
이번 Implementation에서 생성/수정/삭제되는 파일을 미리 나열한다. 구현 완료 후 실제 결과를 반영해 갱신한다.
|
|
||||||
|
|
||||||
| 파일 경로 | 변경 유형 | 관련 태스크 | 비고 |
|
|
||||||
|---------|---------|-----------|------|
|
|
||||||
| {{IMP_FILE_1}} | {{IMP_FILE_TYPE_1:생성\|수정\|삭제}} | {{IMP_FILE_TASK_1:T-1}} | {{IMP_FILE_NOTE_1:필요 없으면 삭제}} |
|
|
||||||
| {{IMP_FILE_2}} | {{IMP_FILE_TYPE_2:생성\|수정\|삭제}} | {{IMP_FILE_TASK_2}} | {{IMP_FILE_NOTE_2:필요 없으면 삭제}} |
|
|
||||||
| {{IMP_FILE_3:필요 없으면 삭제}} | {{IMP_FILE_TYPE_3:생성\|수정\|삭제}} | {{IMP_FILE_TASK_3}} | {{IMP_FILE_NOTE_3:필요 없으면 삭제}} |
|
|
||||||
|
|
||||||
# 4. 리스크 및 제약
|
|
||||||
Implementation 단계에서 새로 식별된 리스크와 제약사항을 기록한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{IMP_RISK_LEVEL_1:High|Medium|Low}}): {{IMP_RISK_1}}
|
|
||||||
- 완화 방안: {{IMP_MITIGATION_1}}
|
|
||||||
- R-2 ({{IMP_RISK_LEVEL_2:High|Medium|Low}}): {{IMP_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{IMP_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 가정
|
|
||||||
Implementation 수행의 전제가 되는 가정을 적는다.
|
|
||||||
|
|
||||||
- IA-1: {{IMP_ASSUMPTION_1}}
|
|
||||||
- IA-2: {{IMP_ASSUMPTION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
Implementation 진행 중 확인이 필요한 질문을 적는다.
|
|
||||||
|
|
||||||
- OQ-1: {{IMP_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{IMP_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{IMP_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{IMP_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{IMP_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{IMP_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{IMP_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{IMP_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 5. Verification으로 넘기기 전 확인 체크
|
|
||||||
Verification 단계로 넘기기 전에 무엇이 완료되어야 하는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 모든 T-N 태스크 구현 완료
|
|
||||||
- 기준: {{CHECK_ALL_TASKS:각 태스크의 완료 조건(DoD)을 충족해야 한다}}
|
|
||||||
- [ ] 변경 파일 목록과 실제 변경 일치
|
|
||||||
- 기준: {{CHECK_FILE_LIST:3_design.md의 변경 대상과 실제 변경된 파일이 일치해야 한다}}
|
|
||||||
- [ ] 단위 테스트 또는 로컬 검증 완료
|
|
||||||
- 기준: {{CHECK_LOCAL_VERIFY:변경 사항이 로컬 환경에서 의도대로 동작하는지 확인해야 한다}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 6. 파일 처리 결과
|
|
||||||
이 Implementation 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{DESIGN_PATH:docs/sdlc/<CYCLE_ID>/3_design.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 7. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 8. Implementation Freeze
|
|
||||||
Verification 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 구현 계획: [# 2. 구현 계획](#2-구현-계획)
|
|
||||||
- 변경 파일 목록: [# 3. 변경 파일 목록](#3-변경-파일-목록)
|
|
||||||
- 리스크/오픈 질문: [# 4. 리스크 및 제약](#4-리스크-및-제약)
|
|
||||||
|
|
||||||
## 확정 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:구현 완료 및 로컬 검증 후 Verification으로 인계}}
|
|
||||||
- Ready for Verification: {{READY_FOR_VERIFICATION:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 12. 작성 가이드
|
|
||||||
*이 섹션은 작성 참고용이다. 문서 완성 후 삭제해도 된다.*
|
|
||||||
|
|
||||||
- **변경 대상 파일 경로**: 실제 저장소 파일 경로를 명시한다. 추정이나 가상 경로를 쓰지 않는다.
|
|
||||||
- **완료 조건(DoD)**: "구현 완료"처럼 모호한 표현 대신 "파일 X에 함수 Y가 추가되고 입력 Z에 대해 올바른 결과를 반환한다"처럼 측정 가능하게 작성한다.
|
|
||||||
- **오픈 질문**: 구현 중 발생한 기술적 판단 사항, 외부 확인 필요 항목 등을 기록한다.
|
|
||||||
- **Freeze 섹션**: 모든 태스크 완료 및 로컬 검증 후 담당자가 직접 갱신한다.
|
|
||||||
@@ -1,160 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Implementation: {{IMP_PATH:docs/sdlc/<CYCLE_ID>/4_implementation.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Implementation 인계 요약
|
|
||||||
Implementation에서 완료된 핵심 내용을 요약한다. 원본은 4_implementation.md를 참조하며, 이 섹션은 Verification 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{VER_ISSUE_PURPOSE:Implementation 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 구현 완료 태스크
|
|
||||||
| ID | 태스크 제목 | 변경 파일/함수 | 완료 조건(DoD) |
|
|
||||||
|----|-----------|--------------|--------------|
|
|
||||||
| T-1 | {{VER_TASK_TITLE_1}} | {{VER_TASK_TARGET_1}} | {{VER_TASK_DOD_1}} |
|
|
||||||
| T-2 | {{VER_TASK_TITLE_2}} | {{VER_TASK_TARGET_2}} | {{VER_TASK_DOD_2}} |
|
|
||||||
| T-3 | {{VER_TASK_TITLE_3:필요 없으면 삭제}} | {{VER_TASK_TARGET_3}} | {{VER_TASK_DOD_3}} |
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Implementation에서 `Deferred` 처리되어 Verification 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{VER_DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{VER_DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 검증 계획
|
|
||||||
Discovery `# 7` 성공 기준(S-N)을 기반으로 Verification 항목을 정의한다.
|
|
||||||
|
|
||||||
## 검증 범위
|
|
||||||
- {{VER_SCOPE_1:예. 기능 요구사항(FR) 전체 충족 여부}}
|
|
||||||
- {{VER_SCOPE_2:예. 비기능 요구사항(NFR) 성능 기준 충족 여부}}
|
|
||||||
- {{VER_SCOPE_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 검증 항목
|
|
||||||
| ID | 검증 항목 | 검증 방법 | 성공 기준 | 담당자 |
|
|
||||||
|----|---------|---------|---------|--------|
|
|
||||||
| VC-1 | {{VER_ITEM_1}} | {{VER_METHOD_1:수동\|자동\|혼합}} | {{VER_CRITERIA_1}} | {{VER_OWNER_1:TBD}} |
|
|
||||||
| VC-2 | {{VER_ITEM_2}} | {{VER_METHOD_2:수동\|자동\|혼합}} | {{VER_CRITERIA_2}} | {{VER_OWNER_2:TBD}} |
|
|
||||||
| VC-3 | {{VER_ITEM_3:필요 없으면 삭제}} | {{VER_METHOD_3:수동\|자동\|혼합}} | {{VER_CRITERIA_3}} | {{VER_OWNER_3:TBD}} |
|
|
||||||
| VC-4 | {{VER_ITEM_4:필요 없으면 삭제}} | {{VER_METHOD_4:수동\|자동\|혼합}} | {{VER_CRITERIA_4}} | {{VER_OWNER_4:TBD}} |
|
|
||||||
|
|
||||||
## 성공 기준 연결
|
|
||||||
Discovery의 성공 기준(S-N)과 검증 항목(VC-N)의 연결을 명시한다.
|
|
||||||
|
|
||||||
- S-1 → {{VER_S1_LINK:VC-1, VC-2 등}}
|
|
||||||
- S-2 → {{VER_S2_LINK:VC-3 등}}
|
|
||||||
- S-3 → {{VER_S3_LINK:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 3. 검증 결과
|
|
||||||
검증 수행 후 각 항목의 결과를 기록한다. 초안 생성 시 모두 `미완료`로 초기화한다.
|
|
||||||
|
|
||||||
| ID | 검증 항목 | 결과 | 비고 |
|
|
||||||
|----|---------|------|------|
|
|
||||||
| VC-1 | {{VER_ITEM_1}} | {{VER_RESULT_1:미완료\|통과\|실패\|블로킹}} | {{VER_RESULT_NOTE_1:필요 없으면 삭제}} |
|
|
||||||
| VC-2 | {{VER_ITEM_2}} | {{VER_RESULT_2:미완료\|통과\|실패\|블로킹}} | {{VER_RESULT_NOTE_2:필요 없으면 삭제}} |
|
|
||||||
| VC-3 | {{VER_ITEM_3:필요 없으면 삭제}} | {{VER_RESULT_3:미완료\|통과\|실패\|블로킹}} | {{VER_RESULT_NOTE_3:필요 없으면 삭제}} |
|
|
||||||
|
|
||||||
## 전체 검증 결과
|
|
||||||
- 통과: {{VER_PASS_COUNT:0}} / {{VER_TOTAL_COUNT:0}}
|
|
||||||
- 실패/블로킹: {{VER_FAIL_COUNT:0}}
|
|
||||||
- 검증 완료 여부: {{VER_COMPLETE:false}}
|
|
||||||
|
|
||||||
# 4. 결함 및 재작업 사항
|
|
||||||
검증 중 발견된 결함과 재작업이 필요한 항목을 기록한다.
|
|
||||||
|
|
||||||
- BUG-1: {{BUG_1:없으면 "없음"}}
|
|
||||||
- 심각도: {{BUG_SEVERITY_1:Critical|High|Medium|Low}}
|
|
||||||
- 재작업 내용: {{BUG_FIX_1}}
|
|
||||||
- 상태: {{BUG_STATUS_1:Open|Fixed|Deferred}}
|
|
||||||
- BUG-2: {{BUG_2:필요 없으면 삭제}}
|
|
||||||
- 심각도: {{BUG_SEVERITY_2:Critical|High|Medium|Low}}
|
|
||||||
- 재작업 내용: {{BUG_FIX_2}}
|
|
||||||
- 상태: {{BUG_STATUS_2:Open|Fixed|Deferred}}
|
|
||||||
|
|
||||||
# 5. 리스크 및 오픈 질문
|
|
||||||
Verification 단계에서 새로 식별된 리스크와 오픈 질문을 기록한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{VER_RISK_LEVEL_1:High|Medium|Low}}): {{VER_RISK_1}}
|
|
||||||
- 완화 방안: {{VER_MITIGATION_1}}
|
|
||||||
- R-2 ({{VER_RISK_LEVEL_2:High|Medium|Low}}): {{VER_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{VER_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
- OQ-1: {{VER_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{VER_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{VER_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{VER_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{VER_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{VER_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{VER_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{VER_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 6. Release로 넘기기 전 확인 체크
|
|
||||||
Release 단계로 넘기기 전에 무엇이 완료되어야 하는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 모든 검증 항목(VC-N) 통과
|
|
||||||
- 기준: {{CHECK_ALL_VC:VC 목록의 모든 항목이 "통과" 상태여야 한다}}
|
|
||||||
- [ ] 결함(BUG) `Open` 상태 없음
|
|
||||||
- 기준: {{CHECK_BUGS:BUG 목록에 `Open` 상태 항목이 0개여야 한다. `Deferred`는 근거와 함께 허용}}
|
|
||||||
- [ ] 성공 기준(S-N) 전체 충족
|
|
||||||
- 기준: {{CHECK_SUCCESS_CRITERIA:Discovery에서 정의된 S-N 기준이 모두 VC 항목과 연결되어 통과되었는가}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 7. 파일 처리 결과
|
|
||||||
이 Verification 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{IMP_PATH:docs/sdlc/<CYCLE_ID>/4_implementation.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 8. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 9. Verification Freeze
|
|
||||||
Release 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 검증 계획: [# 2. 검증 계획](#2-검증-계획)
|
|
||||||
- 검증 결과: [# 3. 검증 결과](#3-검증-결과)
|
|
||||||
- 결함/재작업: [# 4. 결함 및 재작업 사항](#4-결함-및-재작업-사항)
|
|
||||||
|
|
||||||
## 확정 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:검증 완료 및 결함 없음 확인 후 Release로 인계}}
|
|
||||||
- Ready for Release: {{READY_FOR_RELEASE:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 10. 작성 가이드
|
|
||||||
*이 섹션은 작성 참고용이다. 문서 완성 후 삭제해도 된다.*
|
|
||||||
|
|
||||||
- **검증 항목(VC-N)**: Discovery 성공 기준(S-N)과 반드시 연결한다. FR/NFR 각 항목이 하나 이상의 VC와 연결되어야 한다.
|
|
||||||
- **검증 방법**: 수동(테스터가 직접 실행), 자동(CI/테스트 코드), 혼합(일부 자동 + 수동 확인) 중 선택한다.
|
|
||||||
- **성공 기준**: "정상 동작"처럼 모호한 표현 대신 "입력 X에 대해 결과 Y를 반환한다"처럼 측정 가능하게 작성한다.
|
|
||||||
- **결함(BUG)**: 검증 중 발견된 모든 문제를 기록한다. `Deferred` 처리 시 근거와 후속 처리 계획을 명시한다.
|
|
||||||
- **Freeze 섹션**: 모든 VC 통과 및 BUG `Open` 없음 확인 후 담당자가 직접 갱신한다.
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Verification: {{VER_PATH:docs/sdlc/<CYCLE_ID>/5_verification.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Verification 인계 요약
|
|
||||||
Verification에서 완료된 핵심 내용을 요약한다. 원본은 5_verification.md를 참조하며, 이 섹션은 Release 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{REL_ISSUE_PURPOSE:Verification 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 검증 결과 요약
|
|
||||||
- 검증 항목 수: {{REL_VC_TOTAL}}개
|
|
||||||
- 전체 통과 여부: {{REL_VC_ALL_PASS:true|false}}
|
|
||||||
- 결함(BUG) 잔여: {{REL_BUG_REMAIN:0}}건
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Verification에서 `Deferred` 처리되어 Release 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{REL_DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{REL_DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 배포 준비
|
|
||||||
배포 환경, 배포 전 체크리스트, 배포 순서를 정의한다.
|
|
||||||
|
|
||||||
## 배포 환경
|
|
||||||
- 대상 환경: {{REL_TARGET_ENV:예. production, staging}}
|
|
||||||
- 배포 방식: {{REL_DEPLOY_METHOD:예. git push, CI/CD 파이프라인, 수동 복사}}
|
|
||||||
- 배포 도구/채널: {{REL_DEPLOY_TOOL:예. GitHub Actions, 수동 SSH, 없음}}
|
|
||||||
|
|
||||||
## 배포 전 체크리스트
|
|
||||||
배포 실행 전에 확인해야 할 항목을 나열한다.
|
|
||||||
|
|
||||||
- [ ] {{REL_PRE_CHECK_1:예. 대상 환경 설정 파일 백업 완료}}
|
|
||||||
- [ ] {{REL_PRE_CHECK_2:예. 롤백 계획 확인 완료}}
|
|
||||||
- [ ] {{REL_PRE_CHECK_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 배포 순서
|
|
||||||
변경 사항의 배포 순서를 적는다. 의존 관계가 있는 경우 순서를 명확히 기술한다.
|
|
||||||
|
|
||||||
1. {{REL_STEP_1:예. 설정 파일 배포}}
|
|
||||||
2. {{REL_STEP_2:예. 코드 변경 배포}}
|
|
||||||
3. {{REL_STEP_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 3. 롤백 계획
|
|
||||||
배포 후 문제가 발생했을 때 이전 상태로 되돌리는 방법을 기술한다.
|
|
||||||
|
|
||||||
## 롤백 조건
|
|
||||||
아래 조건 중 하나라도 충족되면 롤백을 즉시 실행한다.
|
|
||||||
|
|
||||||
- {{REL_ROLLBACK_TRIGGER_1:예. 배포 후 핵심 기능 오류 발생}}
|
|
||||||
- {{REL_ROLLBACK_TRIGGER_2:예. 성능 지표가 임계값 이하로 하락}}
|
|
||||||
- {{REL_ROLLBACK_TRIGGER_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 롤백 절차
|
|
||||||
1. {{REL_ROLLBACK_STEP_1:예. 이전 버전 파일/설정 복원}}
|
|
||||||
2. {{REL_ROLLBACK_STEP_2:예. 배포 채널에서 롤백 실행}}
|
|
||||||
3. {{REL_ROLLBACK_STEP_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 롤백 담당자
|
|
||||||
- {{REL_ROLLBACK_OWNER:TBD}}
|
|
||||||
|
|
||||||
# 4. 배포 후 확인
|
|
||||||
배포 완료 후 정상 동작을 확인하는 방법을 기술한다.
|
|
||||||
|
|
||||||
## 스모크 테스트 항목
|
|
||||||
| 항목 | 확인 방법 | 성공 기준 |
|
|
||||||
|------|---------|---------|
|
|
||||||
| {{REL_SMOKE_ITEM_1}} | {{REL_SMOKE_METHOD_1}} | {{REL_SMOKE_CRITERIA_1}} |
|
|
||||||
| {{REL_SMOKE_ITEM_2}} | {{REL_SMOKE_METHOD_2}} | {{REL_SMOKE_CRITERIA_2}} |
|
|
||||||
| {{REL_SMOKE_ITEM_3:필요 없으면 삭제}} | {{REL_SMOKE_METHOD_3}} | {{REL_SMOKE_CRITERIA_3}} |
|
|
||||||
|
|
||||||
## 모니터링 확인 항목
|
|
||||||
배포 후 일정 시간 동안 모니터링해야 하는 지표나 로그를 기록한다.
|
|
||||||
|
|
||||||
- {{REL_MONITOR_1:예. 오류 로그 발생 여부 확인 (1시간)}}
|
|
||||||
- {{REL_MONITOR_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 5. 리스크 및 오픈 질문
|
|
||||||
Release 단계에서 새로 식별된 리스크와 오픈 질문을 기록한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{REL_RISK_LEVEL_1:High|Medium|Low}}): {{REL_RISK_1}}
|
|
||||||
- 완화 방안: {{REL_MITIGATION_1}}
|
|
||||||
- R-2 ({{REL_RISK_LEVEL_2:High|Medium|Low}}): {{REL_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{REL_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
- OQ-1: {{REL_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{REL_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{REL_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{REL_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{REL_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{REL_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{REL_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{REL_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 6. Operations로 넘기기 전 확인 체크
|
|
||||||
Operations 단계로 넘기기 전에 무엇이 완료되어야 하는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 배포 완료 및 스모크 테스트 통과
|
|
||||||
- 기준: {{CHECK_DEPLOY:배포 절차대로 실행되었고 스모크 테스트 전 항목이 통과되었는가}}
|
|
||||||
- [ ] 롤백 계획 확정
|
|
||||||
- 기준: {{CHECK_ROLLBACK:롤백 조건, 절차, 담당자가 모두 명시되었는가}}
|
|
||||||
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
|
|
||||||
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 7. 파일 처리 결과
|
|
||||||
이 Release 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{VER_PATH:docs/sdlc/<CYCLE_ID>/5_verification.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 8. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 9. Release Freeze
|
|
||||||
Operations 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 배포 준비: [# 2. 배포 준비](#2-배포-준비)
|
|
||||||
- 롤백 계획: [# 3. 롤백 계획](#3-롤백-계획)
|
|
||||||
- 배포 후 확인: [# 4. 배포 후 확인](#4-배포-후-확인)
|
|
||||||
|
|
||||||
## 확정 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:배포 완료 및 스모크 테스트 통과 후 Operations로 인계}}
|
|
||||||
- Ready for Operations: {{READY_FOR_OPERATIONS:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 10. 작성 가이드
|
|
||||||
*이 섹션은 작성 참고용이다. 문서 완성 후 삭제해도 된다.*
|
|
||||||
|
|
||||||
- **배포 방식**: git 기반 프로젝트는 커밋 해시, 브랜치, 태그를 명시하면 롤백이 쉽다.
|
|
||||||
- **롤백 계획**: "문제가 생기면 롤백한다"가 아니라 구체적인 조건, 절차, 담당자를 미리 정의한다.
|
|
||||||
- **스모크 테스트**: 배포 직후 서비스가 최소한 동작하는지 확인하는 핵심 시나리오만 포함한다. 전체 기능 검증은 Verification 단계에서 완료한 것을 전제로 한다.
|
|
||||||
- **모니터링**: 배포 후 지켜봐야 하는 지표(오류율, 응답 시간, 로그 패턴 등)를 구체적으로 기록한다.
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
# 0. 문서 상태
|
|
||||||
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
|
|
||||||
|
|
||||||
- 상태: {{DOC_STATUS:draft|review|confirmed}}
|
|
||||||
- 문서 ID: {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 참조 Release: {{REL_PATH:docs/sdlc/<CYCLE_ID>/6_release.md}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
# 1. Release 인계 요약
|
|
||||||
Release에서 완료된 핵심 내용을 요약한다. 원본은 6_release.md를 참조하며, 이 섹션은 Operations 작업의 입력 기준선이 된다.
|
|
||||||
|
|
||||||
## 이슈 목적
|
|
||||||
- {{OPS_ISSUE_PURPOSE:Release 이슈명과 핵심 목적 1-2줄}}
|
|
||||||
|
|
||||||
## 배포 결과 요약
|
|
||||||
- 배포 환경: {{OPS_DEPLOY_ENV:예. production}}
|
|
||||||
- 배포 완료 시각(KST): {{OPS_DEPLOYED_AT:TBD}}
|
|
||||||
- 스모크 테스트 결과: {{OPS_SMOKE_RESULT:통과|일부 실패|미완료}}
|
|
||||||
|
|
||||||
## 이월된 오픈 질문 / 리스크
|
|
||||||
Release에서 `Deferred` 처리되어 Operations 단계에서 해소해야 하는 항목을 기록한다.
|
|
||||||
|
|
||||||
- {{OPS_DEFERRED_ITEM_1:없으면 "없음"}}
|
|
||||||
- {{OPS_DEFERRED_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 2. 운영 모니터링
|
|
||||||
배포 후 지속적으로 모니터링해야 하는 항목과 기준을 정의한다.
|
|
||||||
|
|
||||||
## 모니터링 항목
|
|
||||||
| 항목 | 확인 방법 | 임계값 / 이상 기준 | 대응 방안 |
|
|
||||||
|------|---------|----------------|---------|
|
|
||||||
| {{OPS_MONITOR_ITEM_1}} | {{OPS_MONITOR_METHOD_1}} | {{OPS_MONITOR_THRESHOLD_1}} | {{OPS_MONITOR_ACTION_1}} |
|
|
||||||
| {{OPS_MONITOR_ITEM_2}} | {{OPS_MONITOR_METHOD_2}} | {{OPS_MONITOR_THRESHOLD_2}} | {{OPS_MONITOR_ACTION_2}} |
|
|
||||||
| {{OPS_MONITOR_ITEM_3:필요 없으면 삭제}} | {{OPS_MONITOR_METHOD_3}} | {{OPS_MONITOR_THRESHOLD_3}} | {{OPS_MONITOR_ACTION_3}} |
|
|
||||||
|
|
||||||
## 모니터링 담당자
|
|
||||||
- {{OPS_MONITOR_OWNER:TBD}}
|
|
||||||
|
|
||||||
# 3. 운영 절차 (런북)
|
|
||||||
이 변경 사항과 관련된 운영 중 발생할 수 있는 상황별 대응 절차를 정의한다.
|
|
||||||
|
|
||||||
## 정상 운영 확인 절차
|
|
||||||
배포 후 일정 주기로 정상 동작을 확인하는 절차를 기술한다.
|
|
||||||
|
|
||||||
1. {{OPS_ROUTINE_STEP_1:예. 오류 로그 확인 (일 1회)}}
|
|
||||||
2. {{OPS_ROUTINE_STEP_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 장애 대응 절차
|
|
||||||
이 변경과 관련된 장애가 발생했을 때의 초기 대응 절차를 기술한다.
|
|
||||||
|
|
||||||
1. {{OPS_INCIDENT_STEP_1:예. 오류 로그에서 관련 스택 트레이스 확인}}
|
|
||||||
2. {{OPS_INCIDENT_STEP_2:예. 롤백 판단 기준 확인 후 롤백 또는 핫픽스 결정}}
|
|
||||||
3. {{OPS_INCIDENT_STEP_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 에스컬레이션 경로
|
|
||||||
장애 대응 중 에스컬레이션이 필요한 경우 연락 대상을 기록한다.
|
|
||||||
|
|
||||||
- {{OPS_ESCALATION_1:TBD}}
|
|
||||||
|
|
||||||
# 4. 운영 중 발생한 이슈
|
|
||||||
운영 중 발견된 이슈를 기록한다. 초안 생성 시 비워 두고 운영 중 갱신한다.
|
|
||||||
|
|
||||||
- {{OPS_ISSUE_1:없음 (운영 중 발견 시 기록)}}
|
|
||||||
|
|
||||||
# 5. 리스크 및 오픈 질문
|
|
||||||
Operations 단계에서 새로 식별된 리스크와 오픈 질문을 기록한다.
|
|
||||||
|
|
||||||
## 리스크
|
|
||||||
- R-1 ({{OPS_RISK_LEVEL_1:High|Medium|Low}}): {{OPS_RISK_1}}
|
|
||||||
- 완화 방안: {{OPS_MITIGATION_1}}
|
|
||||||
- R-2 ({{OPS_RISK_LEVEL_2:High|Medium|Low}}): {{OPS_RISK_2:필요 없으면 삭제}}
|
|
||||||
- 완화 방안: {{OPS_MITIGATION_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 오픈 질문
|
|
||||||
- OQ-1: {{OPS_OPEN_QUESTION_1}}
|
|
||||||
- 상태: {{OPS_OQ_STATUS_1:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{OPS_OQ_ACTION_1}}
|
|
||||||
- 종료 조건: {{OPS_OQ_EXIT_1}}
|
|
||||||
- OQ-2: {{OPS_OPEN_QUESTION_2:필요 없으면 삭제}}
|
|
||||||
- 상태: {{OPS_OQ_STATUS_2:Open|Answered|Deferred|Dropped}}
|
|
||||||
- 처리 방안: {{OPS_OQ_ACTION_2}}
|
|
||||||
- 종료 조건: {{OPS_OQ_EXIT_2}}
|
|
||||||
|
|
||||||
# 6. 다음 Discovery 환류
|
|
||||||
운영 중 발견된 인사이트와 개선 사항을 다음 SDLC Discovery의 입력으로 기록한다.
|
|
||||||
|
|
||||||
- {{OPS_FEEDBACK_1:없으면 "없음"}}
|
|
||||||
- {{OPS_FEEDBACK_2:필요 없으면 삭제}}
|
|
||||||
- {{OPS_FEEDBACK_3:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 7. 확인 체크
|
|
||||||
Operations 문서가 완성되었는지 확인한다.
|
|
||||||
|
|
||||||
- [ ] 모니터링 항목 및 임계값 정의 완료
|
|
||||||
- 기준: {{CHECK_MONITORING:모니터링 항목에 임계값과 대응 방안이 명시되어야 한다}}
|
|
||||||
- [ ] 런북(정상 운영/장애 대응 절차) 정의 완료
|
|
||||||
- 기준: {{CHECK_RUNBOOK:운영 중 발생 가능한 상황에 대한 절차가 1단계 이상 있어야 한다}}
|
|
||||||
- [ ] 에스컬레이션 경로 정의 완료
|
|
||||||
- 기준: {{CHECK_ESCALATION:장애 시 연락할 담당자가 명시되어야 한다}}
|
|
||||||
- [ ] 다음 Discovery 환류 항목 작성 (없으면 "없음" 기재)
|
|
||||||
- 기준: OPS_FEEDBACK 항목이 "없음"이 아닐 경우 구체적으로 기술되었는가
|
|
||||||
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
|
|
||||||
- 기준: {{CHECK_CONFIRMEDBY_CRITERIA:문서 승인 담당자가 명시되어야 한다}}
|
|
||||||
|
|
||||||
# 8. 파일 처리 결과
|
|
||||||
이 Operations 문서 생성/갱신 결과와 참조 문서를 기록한다.
|
|
||||||
|
|
||||||
- 처리 결과: {{FILE_RESULT:생성|갱신|미생성}}
|
|
||||||
- 생성 경로: {{OUTPUT_PATH}}
|
|
||||||
- 참조 문서:
|
|
||||||
- {{REL_PATH:docs/sdlc/<CYCLE_ID>/6_release.md}}
|
|
||||||
- {{REFERENCE_1:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 9. 사용자 결정 필요 항목 요약
|
|
||||||
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다.
|
|
||||||
|
|
||||||
## DECIDE
|
|
||||||
- {{DECIDE_ITEM_1}}
|
|
||||||
- {{DECIDE_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## CONFIRM
|
|
||||||
- {{CONFIRM_ITEM_1}}
|
|
||||||
- {{CONFIRM_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## DATA
|
|
||||||
- {{DATA_ITEM_1}}
|
|
||||||
- {{DATA_ITEM_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
# 10. Operations Freeze
|
|
||||||
이 SDLC 주기의 최종 확정 플래그를 기록한다.
|
|
||||||
|
|
||||||
## 섹션 참조
|
|
||||||
- 운영 모니터링: [# 2. 운영 모니터링](#2-운영-모니터링)
|
|
||||||
- 런북: [# 3. 운영 절차 런북](#3-운영-절차-런북)
|
|
||||||
- 다음 Discovery 환류: [# 6. 다음 Discovery 환류](#6-다음-discovery-환류)
|
|
||||||
|
|
||||||
## 확정 플래그
|
|
||||||
- Handoff Decision: {{FREEZE_HANDOFF_DECISION:보류}}
|
|
||||||
- Handoff Rationale: {{FREEZE_HANDOFF_RATIONALE:모니터링 안정화 및 런북 완비 후 주기 완료}}
|
|
||||||
- SDLC 주기 완료: {{SDLC_CYCLE_COMPLETE:false}}
|
|
||||||
- Confirmed By: {{CONFIRMED_BY:TBD}}
|
|
||||||
- Confirmed At (KST): {{CONFIRMED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# 11. 작성 가이드
|
|
||||||
*이 섹션은 작성 참고용이다. 문서 완성 후 삭제해도 된다.*
|
|
||||||
|
|
||||||
- **모니터링 항목**: "오류가 없는지 확인"처럼 모호한 기준 대신 "5xx 오류율 1% 이상 시 알림" 같이 수치화된 임계값을 명시한다.
|
|
||||||
- **런북**: 실제 운영자가 참고할 수 있도록 구체적인 명령, 경로, 연락처를 기록한다.
|
|
||||||
- **다음 Discovery 환류**: 이 주기에서 발견된 기술 부채, 개선 아이디어, 범위에서 제외된 요구사항 등을 기록한다. 이 항목이 다음 `/new-sdlc` 의 입력이 된다.
|
|
||||||
- **SDLC 주기 완료**: 모니터링 안정화 기간(배포 후 일정 시간 경과, 이상 없음) 확인 후 `true`로 변경한다.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
# {{CYCLE_ID}}
|
|
||||||
|
|
||||||
| 단계 | 문서 | 상태 |
|
|
||||||
|------|------|------|
|
|
||||||
| 1. Discovery | [1_discovery.md](./1_discovery.md) | `draft` |
|
|
||||||
| 2. Planning | [2_planning.md](./2_planning.md) | `-` |
|
|
||||||
| 3. Design | [3_design.md](./3_design.md) | `-` |
|
|
||||||
| 4. Implementation | [4_implementation.md](./4_implementation.md) | `-` |
|
|
||||||
| 5. Verification | [5_verification.md](./5_verification.md) | `-` |
|
|
||||||
| 6. Release | [6_release.md](./6_release.md) | `-` |
|
|
||||||
| 7. Operations | [7_operations.md](./7_operations.md) | `-` |
|
|
||||||
| Summary | [summary.md](./summary.md) | `-` |
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
# Summary - {{CYCLE_ID:sdlc-<3자리>_<YYYYMMDD>_<topic-slug>}}
|
|
||||||
|
|
||||||
- 이슈명: {{ISSUE_NAME:짧은 한글 또는 영문 이슈명}}
|
|
||||||
- 상태: {{SUMMARY_STATUS:draft|review|confirmed}}
|
|
||||||
- 작성 시각(KST): {{CREATED_AT_KST:TBD}}
|
|
||||||
- 마지막 갱신 시각(KST): {{UPDATED_AT_KST:TBD}}
|
|
||||||
|
|
||||||
## 핵심 요약
|
|
||||||
|
|
||||||
- {{SUMMARY_POINT_1}}
|
|
||||||
- {{SUMMARY_POINT_2:필요 없으면 삭제}}
|
|
||||||
|
|
||||||
## 단계별 문서
|
|
||||||
|
|
||||||
- [Discovery](./1_discovery.md)
|
|
||||||
- [Index](./index.md)
|
|
||||||
Reference in New Issue
Block a user