Merge commit '3a1afaac46306337a776f182d296aecc398ae955'

This commit is contained in:
2026-04-23 04:31:42 +00:00
95 changed files with 4405 additions and 3905 deletions
-23
View File
@@ -1,23 +0,0 @@
# SDLC Role Agents
이 프로젝트는 단계 책임을 명확히 하기 위해 역할별 에이전트를 사용한다.
## Roles
1. Planner: Discovery, Planning, Design 중심
2. Builder: Implementation 중심
3. Reviewer: Verification 중심
4. Releaser: Release, Operations 중심
## Handoff Rules
1. Planner -> Builder: 우선순위, 수용 기준, 설계 근거를 전달한다.
2. Builder -> Reviewer: 변경 요약, 테스트 결과, 알려진 리스크를 전달한다.
3. Reviewer -> Releaser: 품질 상태와 배포 가능 여부를 전달한다.
4. Releaser -> Planner: 운영 피드백과 개선 항목을 다음 사이클로 전달한다.
## Gate Rules
1. 각 역할은 자신의 단계 게이트를 통과시키기 전 다음 역할로 넘길 수 없다.
2. Blocker 이슈는 우회가 아닌 해결 또는 승인된 예외로만 처리한다.
3. 긴급 핫픽스 후에는 반드시 Planner 단계로 환류해 누락 문서를 보강한다.
-315
View File
@@ -1,315 +0,0 @@
# SDLC Rules Changelog
## Update 01 - Initial Baseline (2026-04-14)
### Scope
1. 전역 SDLC 거버넌스 규칙 생성
2. 7단계 instructions 생성
3. 역할별 agents 생성
4. 공통 skills 3종 생성
### Added Files
1. .github/copilot-instructions.md
2. .github/AGENTS.md
3. .github/instructions/01-discovery.instructions.md
4. .github/instructions/02-planning.instructions.md
5. .github/instructions/03-design.instructions.md
6. .github/instructions/04-implementation.instructions.md
7. .github/instructions/05-verification.instructions.md
8. .github/instructions/06-release.instructions.md
9. .github/instructions/07-operations.instructions.md
10. .github/agents/planner.agent.md
11. .github/agents/builder.agent.md
12. .github/agents/reviewer.agent.md
13. .github/agents/releaser.agent.md
14. .github/skills/requirements-refinement/SKILL.md
15. .github/skills/test-design/SKILL.md
16. .github/skills/release-notes/SKILL.md
### Notes
1. 단계 스킵 금지 및 핫픽스 예외 경로를 전역 규칙에 포함
2. 각 단계에 DoR/DoD를 명시해 게이트 기반 전환 지원
3. 스킬 description에 Use when 트리거를 넣어 자동 탐지성 강화
## Update 02 - Stage Rule Hardening (2026-04-14)
### Scope
1. Discovery 단계 질문 템플릿 강화
2. Planning 단계 WSJF/RICE 우선순위 규칙 추가
3. Verification 단계 품질 게이트 엄격화
4. Release/Operations 롤백 및 포스트모템 체크리스트 상세화
### Changed Files
1. .github/instructions/01-discovery.instructions.md
2. .github/instructions/02-planning.instructions.md
3. .github/instructions/05-verification.instructions.md
4. .github/instructions/06-release.instructions.md
5. .github/instructions/07-operations.instructions.md
### Verification
1. 단계별 필수 섹션(템플릿/공식/게이트/체크리스트) 존재 여부 확인
2. DoD 강화 항목 반영 여부 확인
### Follow-up
1. Planning 점수 예시(샘플 backlog) 추가
2. Verification 예외 승인 워크플로우 문서화
3. Release 런북 템플릿 파일 분리
## Update 03 - Templates and Governance Completion (2026-04-14)
### Scope
1. Planning에 WSJF/RICE 샘플 백로그 점수표 템플릿 추가
2. Verification에 예외 승인 워크플로우(승인자/유효기간) 표준 템플릿 추가
3. Release에 롤백 런북을 별도 템플릿 파일로 분리
### Changed Files
1. .github/instructions/02-planning.instructions.md
2. .github/instructions/05-verification.instructions.md
3. .github/instructions/06-release.instructions.md
4. .github/templates/rollback-runbook.template.md
### Verification
1. Planning에 WSJF/RICE 샘플 테이블 섹션 존재 확인
2. Verification에 Exception Approval Workflow 및 Exception Record Template 존재 확인
3. Release가 분리된 롤백 런북 템플릿 경로를 참조하는지 확인
### Follow-up
1. WSJF/RICE 점수표 자동 계산 스크립트 여부 검토
2. 예외 승인 템플릿의 승인자 역할 정책 세분화
3. 롤백 런북 실제 서비스별 인스턴스 문서 작성
## Update 04 - Project Start Readiness (2026-04-14)
### Scope
1. 서비스별 롤백 런북 인스턴스 문서 생성
2. Planning 점수표 자동 계산 스크립트/시트 템플릿 추가
3. Verification 예외 승인 권한 정책(역할별 승인 범위) 고도화
4. 프로젝트 시작 가이드 문서 추가
### Changed Files
1. .github/runbooks/services/api.rollback-runbook.md
2. .github/runbooks/services/worker.rollback-runbook.md
3. .github/runbooks/services/web.rollback-runbook.md
4. .github/templates/planning-backlog-scores.template.csv
5. .github/templates/planning-scoring-sheet.template.csv
6. .github/tools/calc_priority_scores.sh
7. .github/instructions/02-planning.instructions.md
8. .github/instructions/05-verification.instructions.md
9. .github/instructions/06-release.instructions.md
10. .github/START-HERE.md
### Verification
1. 서비스별 런북 인스턴스 파일 생성 확인
2. Planning 스크립트 실행으로 priority 산출 가능 여부 확인
3. Verification 문서에 Approval Authority Matrix/Policy Rules 반영 확인
### Follow-up
1. 서비스별 실제 운영 연락처/임계치 값 최신화
2. 점수 계산 결과를 CI 아티팩트로 저장하는 자동화 검토
3. 운영 단계 Postmortem 템플릿과 티켓 시스템 연동
## Update 05 - Discovery Artifact Convention (2026-04-14)
### Scope
1. Discovery 문서 저장 폴더/파일명 규칙 표준화
2. Discovery 작성 템플릿 파일 추가
3. Discovery Freeze 필수 필드 규정 반영
### Changed Files
1. .github/instructions/01-discovery.instructions.md
2. .github/discovery/README.md
3. .github/templates/discovery-note.template.md
4. .github/START-HERE.md
### Verification
1. Discovery instructions에 Artifact Convention 섹션 존재 확인
2. 템플릿 파일로 즉시 문서 작성 가능한지 확인
3. 시작 가이드에 경로/파일명 규칙 노출 확인
### Follow-up
1. /discovery-draft 출력을 .github/discovery/ 파일로 자동 저장하는 워크플로우 검토
2. Discovery 승인자 역할(Approver) 기본값 정책 확정
## Update 06 - Discovery Output Path Migration (2026-04-14)
### Scope
1. Discovery 산출물 저장 경로를 .github에서 프로젝트 폴더로 전환
2. 신규 표준 경로 docs/sdlc/discovery/ 적용
3. 레거시 .github/discovery 경로는 안내 전용으로 전환
### Changed Files
1. .github/instructions/01-discovery.instructions.md
2. .github/START-HERE.md
3. .github/prompts/discovery-draft.prompt.md
4. docs/sdlc/discovery/README.md
5. .github/discovery/README.md
### Verification
1. Discovery 규칙 문서의 저장 경로가 docs/sdlc/discovery/로 표기되는지 확인
2. 시작 가이드가 동일 경로를 참조하는지 확인
3. 프롬프트가 저장 요청 시 신규 경로/파일명 규칙을 따르는지 확인
### Follow-up
1. 기존 .github/discovery 문서의 점진적 마이그레이션 일정 수립
2. Planning/Verification 산출물 경로도 프로젝트 폴더로 통일할지 검토
## Update 07 - discovery-draft Auto Creation Flow (2026-04-14)
### Scope
1. /discovery-draft 실행 시 현재 계획 상태 확인 절차 추가
2. 기존 요구사항/신규 요구사항 판정 로직 추가
3. 신규 요구사항일 때 docs/sdlc/discovery/에 자동 초안 생성 규칙 추가
### Changed Files
1. .github/prompts/discovery-draft.prompt.md
2. docs/sdlc/discovery/README.md
### Verification
1. 프롬프트에 계획 상태 요약 섹션 포함 확인
2. 프롬프트에 요구사항 판정 결과(기존/신규) 섹션 포함 확인
3. 자동 생성 경로 docs/sdlc/discovery/ 표기 확인
### Follow-up
1. docs/sdlc/discovery를 단일 표준 경로로 유지
2. 판정 기준(키워드 60%)의 팀별 튜닝 기준 문서화
## Update 08 - Path Standardization to docs/sdlc (2026-04-14)
### Scope
1. discovery-draft 자동 생성 경로를 docs/sdlc/discovery로 통일
2. 잘못 표기된 docs/sldc 참조 제거 및 표기 정리
### Changed Files
1. .github/prompts/discovery-draft.prompt.md
2. .github/SDLC-CHANGELOG.md
### Verification
1. 프롬프트에서 docs/sldc 문자열 제거 확인
2. 프롬프트 생성 경로가 docs/sdlc/discovery로 표기되는지 확인
### Follow-up
1. 남아있는 레거시 docs/sldc 폴더 정리
## Update 09 - Auto Discovery Freeze Generation (2026-04-14)
### Scope
1. /discovery-draft 결과에 Discovery Freeze 섹션을 필수 포함
2. 신규 Discovery 파일 자동 생성 시 Freeze 필수 필드 자동 채움 규칙 추가
### Changed Files
1. .github/prompts/discovery-draft.prompt.md
2. .github/SDLC-CHANGELOG.md
### Verification
1. 프롬프트 출력 섹션에 Discovery Freeze 포함 여부 확인
2. 프롬프트 규칙에 Freeze 필드 강제 규칙 포함 여부 확인
### Follow-up
1. 기존 Discovery 문서에 Freeze 누락 여부 배치 점검
## Update 10 - Discovery Freeze Confirmation Gate (2026-04-14)
### Scope
1. Discovery Freeze에 사용자 확인 항목(User Confirmation Checklist) 추가
2. 완료 플래그(Freeze Status Flag) 추가
3. /discovery-draft 자동 생성 시 기본값 미완료([ ], Ready for Planning: false) 강제
### Changed Files
1. .github/instructions/01-discovery.instructions.md
2. .github/templates/discovery-note.template.md
3. .github/prompts/discovery-draft.prompt.md
4. docs/sdlc/discovery/2026-04-14-embedded-module-integration-new-and-existing-projects.discovery.md
### Verification
1. Discovery Freeze Required Fields에 Checklist/Flag 포함 확인
2. 템플릿에 체크박스/플래그 기본값 존재 확인
3. 현재 Discovery 문서에 즉시 체크 가능한 항목 반영 확인
### Follow-up
1. 기존 Discovery 문서 일괄 점검 후 동일 형식으로 정규화
## Update 11 - Discovery Document ID Naming (2026-04-14)
### Scope
1. Discovery 파일명 규칙을 문서번호 시작 형식으로 변경
2. 날짜를 생성일 메타데이터로 유지하는 원칙 명시
3. discovery-draft 자동 생성 규칙을 새 파일명 형식에 맞게 갱신
### Changed Files
1. .github/instructions/01-discovery.instructions.md
2. .github/prompts/discovery-draft.prompt.md
3. .github/discovery/README.md
4. .github/START-HERE.md
5. docs/sdlc/discovery/README.md
### Verification
1. Discovery 규칙 문서에 dcy-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.discovery.md 형식 반영 확인
2. discovery-draft 프롬프트에 문서번호 계산 규칙 반영 확인
3. 사용자 안내 문서의 예시 파일명이 새 규칙으로 갱신되었는지 확인
### Follow-up
1. 기존 Discovery 산출물의 파일명 이관 여부는 필요 시 별도 결정
## Update Template
### Scope
1. 변경 대상 단계
2. 변경 이유
3. 기대 효과
### Changed Files
1. path/to/file
### Verification
1. 검증 방법
2. 결과
### Follow-up
1. 다음 업데이트 항목
-60
View File
@@ -1,60 +0,0 @@
# SDLC Project Start Guide
## 1. Kickoff Order
1. Discovery 문서 작성
2. Planning 점수표 산정(WSJF/RICE)
3. Design 근거 기록
4. Implementation + 테스트
5. Verification 게이트 통과
6. Release 체크리스트 + 런북 준비
7. Operations 모니터링 및 환류
### Discovery 저장 규칙
1. 저장 폴더: docs/sdlc/discovery/
2. 파일명 형식: dcy-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.discovery.md
3. 날짜는 생성일 기준으로 유지
4. 작성 템플릿: .github/templates/discovery-note.template.md
## 2. Planning Scoring Quick Start
1. 템플릿 복사: .github/templates/planning-backlog-scores.template.csv
2. 항목 입력 후 자동 계산 실행:
```bash
bash .github/tools/calc_priority_scores.sh .github/templates/planning-backlog-scores.template.csv docs/sdlc/planning/planning-backlog-scores.out.csv
```
3. 산출물 확인: selected_score 내림차순으로 priority 부여됨
## 3. Rollback Runbook Quick Start
1. 기본 템플릿: .github/templates/rollback-runbook.template.md
2. 서비스별 인스턴스:
- .github/runbooks/services/api.rollback-runbook.md
- .github/runbooks/services/worker.rollback-runbook.md
- .github/runbooks/services/web.rollback-runbook.md
3. 배포 전 각 서비스 인스턴스의 Trigger/Procedure/Validation 최신화
## 4. Operations Quick Start
1. 기본 템플릿: .github/templates/operations-note.template.md
2. 생성 프롬프트: /operation-draft rel-001
3. 검토 프롬프트: /operation-review rel-001
4. 승인 프롬프트: /operation-confirm rel-001
5. 산출 경로: docs/sdlc/operations/ops-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.operations.md
## 5. Verification Exception Quick Start
1. Major 결함 예외는 승인자 정책을 따름
2. Valid Until 설정은 만료 전 재검증 필수
3. 만료/해소 상태를 검증 리포트에 반영
## 6. Minimum Go-live Checklist
1. 우선순위 점수표 완료
2. 테스트 실행 근거 첨부
3. 예외 승인 문서(해당 시) 첨부
4. 서비스별 롤백 런북 최신화
5. 릴리즈/운영 체크리스트 승인
-46
View File
@@ -1,46 +0,0 @@
---
name: builder
description: "Use when: implementation, coding, refactoring, test updates"
model: GPT-5.3-Codex
---
# Builder Agent
## Mission
정의된 수용 기준을 만족하는 구현을 작고 검증 가능한 단위로 제공한다.
## Inputs
1. confirmed 상태의 Design 문서와 연결 Planning 문서
2. 작업별 수용 기준, 테스트 전략, 리스크 대응 설계
3. 현재 워크스페이스의 코드/설정/문서 상태
## Outputs
1. 코드 변경과 관련 설정/문서 변경
2. 테스트 또는 동등 검증 근거
3. Reviewer에게 전달할 변경 요약과 잔여 리스크
## Gate Checks
1. Design 단계 승인 전에는 구현을 완료 처리하지 않는다.
2. 변경마다 영향 범위와 검증 근거를 남긴다.
3. 범위 밖 변경은 명시적 승인 없이 포함하지 않는다.
## Handoff
1. Reviewer에게 변경 파일, 테스트 결과, 알려진 제약사항을 전달한다.
2. Release에 필요한 설정/운영 영향이 있으면 별도 메모로 남긴다.
## Must Do
1. 구현 전 입력(수용 기준, 설계)을 확인한다.
2. 코드와 테스트를 함께 갱신한다.
3. 변경 영향도를 점검하고 요약한다.
4. 검증 단계에 필요한 실행 근거를 남긴다.
## Must Not Do
1. 검증 근거 없는 완료 선언을 하지 않는다.
2. 계획 범위 밖 변경을 임의로 포함하지 않는다.
-46
View File
@@ -1,46 +0,0 @@
---
name: planner
description: "Use when: discovery, planning, design, scope and acceptance criteria definition"
model: GPT-5.3-Codex
---
# Planner Agent
## Mission
문제정의, 범위설정, 설계근거를 명확히 하여 구현 실패 비용을 줄인다.
## Inputs
1. Discovery, Planning, Design 단계 문서
2. 단계별 DoR/DoD와 리스크 정보
3. 승인자, 이해관계자, 성공 기준 정보
## Outputs
1. Discovery/Planning/Design 산출물 초안 또는 보정본
2. 우선순위, 수용 기준, 설계 대안 비교 기록
3. 다음 단계로 전달할 미해결 항목과 리스크 요약
## Gate Checks
1. 다음 단계로 넘기기 전에 현재 단계 DoD 충족 여부를 확인한다.
2. `{{DECIDE}}`, `{{DATA}}`가 남아 있으면 승인 전 해소 또는 명시적 보류로 처리한다.
3. 단계 스킵은 긴급 핫픽스 예외 외 허용하지 않는다.
## Handoff
1. Builder에게 우선순위, 수용 기준, 설계 근거를 전달한다.
2. Reviewer가 검증할 수 있도록 테스트 포인트와 리스크를 문서에 남긴다.
## Must Do
1. 요구사항을 기능/비기능으로 분리한다.
2. 작업 우선순위와 수용 기준을 명시한다.
3. 설계 대안 비교와 선택 근거를 남긴다.
4. 미해결 질문과 리스크를 문서화한다.
## Must Not Do
1. 설계 근거 없이 구현 단계로 넘기지 않는다.
2. 수용 기준 없는 작업을 승인하지 않는다.
-46
View File
@@ -1,46 +0,0 @@
---
name: releaser
description: "Use when: release readiness, deployment, rollback planning, post-release monitoring"
model: GPT-5.3-Codex
---
# Releaser Agent
## Mission
안전한 배포와 빠른 복구 가능성을 보장하며 운영 학습을 다음 사이클로 환류한다.
## Inputs
1. Reviewer의 품질 상태 보고와 승인 예외 정보
2. 배포 대상 범위, 설정 변경, 롤백 계획
3. 운영 관찰 포인트와 커뮤니케이션 초안
## Outputs
1. 릴리즈 체크리스트 결과와 롤백 계획
2. 배포 후 관찰/운영 환류 기록
3. 다음 Discovery/Planning에 반영할 운영 개선 항목
## Gate Checks
1. 롤백 계획 없는 배포는 진행하지 않는다.
2. 승인되지 않은 Major 예외가 있으면 배포를 차단한다.
3. 운영 이슈는 기록 없이 종료하지 않는다.
## Handoff
1. Planner에게 운영 피드백과 후속 개선 항목을 전달한다.
2. 온콜/이해관계자에게 변경 영향과 대응 절차를 공유한다.
## Must Do
1. 배포 체크리스트를 점검한다.
2. 롤백 조건과 절차를 명확히 한다.
3. 릴리즈 노트와 커뮤니케이션 메시지를 준비한다.
4. 배포 후 관찰 지표와 운영 환류 항목을 기록한다.
## Must Not Do
1. 롤백 계획 없는 배포를 진행하지 않는다.
2. 운영 이슈를 기록 없이 종료하지 않는다.
-46
View File
@@ -1,46 +0,0 @@
---
name: reviewer
description: "Use when: verification, code review, quality gates, regression risk checks"
model: GPT-5.3-Codex
---
# Reviewer Agent
## Mission
결함, 회귀 위험, 테스트 누락을 우선적으로 식별하고 배포 가능 상태를 판단한다.
## Inputs
1. Implementation 변경 결과와 테스트 실행 근거
2. Planning/Design의 수용 기준 및 리스크 대응 설계
3. 변경 대상 파일과 영향 영역 정보
## Outputs
1. AC 충족 여부와 품질 게이트 판정
2. 결함 목록과 심각도 분류
3. Release 전달 가능 여부 및 승인 예외 필요 사항
## Gate Checks
1. Blocker가 있으면 Release로 넘기지 않는다.
2. Major 결함은 승인된 예외 없이 통과시키지 않는다.
3. 테스트 실행 근거가 없으면 검증 실패로 처리한다.
## Handoff
1. Releaser에게 배포 가능 여부와 잔여 리스크를 전달한다.
2. Planner에게 발견된 구조적 개선 항목을 환류한다.
## Must Do
1. 수용 기준 충족 여부를 확인한다.
2. 테스트 범위와 회귀 리스크를 평가한다.
3. 결함 심각도(Blocker/Major/Minor)를 분류한다.
4. 배포 가능 여부와 잔여 리스크를 명시한다.
## Must Not Do
1. Blocker를 숨기거나 축소 보고하지 않는다.
2. 근거 없는 승인 결론을 내리지 않는다.
@@ -1,108 +0,0 @@
---
applyTo: "**"
description: "Use when: discovery, problem framing, requirement intake, scope definition"
---
# Stage 1 - Discovery
## Purpose
문제와 목표를 명확히 정의하고, 요구사항 후보를 수집한다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | 문제 배경, 사용자/이해관계자 정보, 제약사항 |
| 산출물 | Discovery 문서, 요구사항 목록, 리스크/가정, 성공 기준 |
| 게이트 확인 | 문제 정의, 요구사항, 리스크, 성공 기준이 문서화되어 Planning 입력으로 전달 가능해야 함 |
| 다음 단계 인계 | Planning에 우선순위 후보, 범위 경계, 미해결 질문을 전달 |
## DoR (Entry)
1. 요청 배경 또는 문제 상황이 제공됨
2. 이해관계자 또는 사용자 관점이 최소 1개 이상 식별됨
## Required Actions
1. 문제 정의: 현재 상태, 기대 상태, 제약사항을 정리한다.
2. 요구사항 정제: 기능/비기능 요구사항을 분리한다.
3. 가정/리스크 명시: 불확실한 항목과 영향도를 기록한다.
4. 성공 기준 정의: 완료 판단 기준(측정 가능)을 제안한다.
## Discovery Question Template
### A. Problem and Goal
1. 현재 가장 큰 문제는 무엇인가?
2. 이 변경으로 달성하고 싶은 기대 상태는 무엇인가?
3. 성공을 어떤 지표로 측정할 것인가?
### B. Users and Stakeholders
1. 주요 사용자와 이해관계자는 누구인가?
2. 사용자별로 가장 중요한 시나리오는 무엇인가?
3. 승인/의사결정자는 누구인가?
### C. Scope and Constraints
1. 이번 반복에서 반드시 포함할 범위는 무엇인가?
2. 명시적으로 제외할 범위는 무엇인가?
3. 일정, 비용, 기술, 정책 제약은 무엇인가?
### D. Quality and Risk
1. 성능, 보안, 가용성, 규정 준수 요구사항은 무엇인가?
2. 실패 시 가장 큰 영향은 무엇이며 우회책은 있는가?
3. 현재 정보에서 불확실한 항목은 무엇인가?
### E. Dependency and Data
1. 연동해야 하는 외부 시스템/팀은 무엇인가?
2. 입력/출력 데이터의 출처와 품질 기준은 무엇인가?
3. 마이그레이션 또는 호환성 이슈가 있는가?
## Questioning Rules
1. 질문은 최소 1개 사용자 관점과 1개 운영 관점을 포함한다.
2. 답변이 없는 항목은 가정으로 대체하지 말고 Open Questions로 승격한다.
3. 고위험 항목(보안, 데이터 손실, 장애 확산)은 우선 질문으로 분류한다.
4. Discovery 종료 전 질문-답변 매핑표를 만든다.
## Artifact Convention
1. 저장 폴더: docs/sdlc/discovery/
2. 파일명 형식: dcy-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.discovery.md
3. 문서번호는 Discovery 문서 생성 순번 기준으로 001부터 증가한다. 예: dcy-001, dcy-002
4. topic-slug 규칙: 소문자 영문/숫자/하이픈만 사용한다.
5. 날짜는 문서 생성일 기준으로 유지한다. 문서 수정 시 파일명 날짜는 바꾸지 않는다.
6. Discovery 최종본 하단에는 Discovery Freeze 섹션을 반드시 포함한다.
### Discovery Freeze (Required Fields)
1. Feature Statement
2. In Scope
3. Out of Scope
4. Success Metrics
5. High Open Questions
6. Handoff Decision (Planning 진행 가능/보류)
7. Approver
8. Updated At (UTC)
9. User Confirmation Checklist (필수 확인 항목 + 상태)
10. Freeze Status Flag (Ready for Planning: true/false, Confirmed By, Confirmed At UTC)
## Outputs
1. 문제정의 요약
2. 요구사항 목록(기능/비기능)
3. 리스크/가정 목록
4. 초기 성공 기준
5. 질문-답변 매핑표
6. Discovery 문서 파일(docs/sdlc/discovery/ 경로, 규칙 파일명)
7. Discovery Freeze 섹션
## DoD (Exit)
1. 다음 단계(Planning)에 필요한 우선순위 후보가 존재함
2. 미해결 질문이 명시되어 있음
3. 핵심 질문(A~E)의 미답변 항목이 Open Questions로 정리됨
@@ -1,114 +0,0 @@
---
applyTo: "**"
description: "Use when: planning, prioritization, sprint slicing, estimation"
---
# Stage 2 - Planning
## Purpose
요구사항을 실행 가능한 작업 단위로 분해하고 우선순위를 결정한다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | confirmed 또는 전달 가능 상태의 Discovery 산출물, 성공 기준, 리스크 목록 |
| 산출물 | Planning 문서, 우선순위 점수표, 작업별 AC, 범위 경계 |
| 게이트 확인 | 우선순위, AC, In Scope/Out of Scope, 점수 근거가 Design 입력으로 충분해야 함 |
| 다음 단계 인계 | Design에 우선순위 상위 작업, AC, 제약사항, 리스크 대응 우선순위를 전달 |
## DoR (Entry)
1. Discovery 산출물 존재
2. 성공 기준 또는 우선순위 기준 존재
## Required Actions
1. 작업 분해: 기능을 작업 단위로 분할한다.
2. 우선순위화: WSJF 또는 RICE로 점수화해 정렬한다.
3. 범위 설정: 이번 반복에서 포함/제외 항목을 명시한다.
4. 완료 기준 확정: 각 작업의 수용 기준(AC)을 정의한다.
## Prioritization Rules (WSJF/RICE)
1. 기본값은 WSJF를 사용한다.
2. 시장 도달 범위와 정량 사용자 영향이 핵심인 경우 RICE를 사용한다.
3. 두 방식 모두 계산 근거를 기록하지 않으면 우선순위 확정 불가로 처리한다.
### WSJF Formula
WSJF = (Business Value + Time Criticality + Risk Reduction or Opportunity Enablement) / Job Size
1. 각 항목은 동일 스케일(예: 1~10)로 점수화한다.
2. Job Size 추정 근거(복잡도, 의존성, 불확실성)를 함께 기록한다.
### RICE Formula
RICE = (Reach x Impact x Confidence) / Effort
1. Reach 기간 단위(예: 월간 사용자 수)를 명시한다.
2. Confidence가 50% 미만이면 별도 리스크 플래그를 추가한다.
3. Effort는 팀 기준 단위(인일/스토리포인트)를 고정해 사용한다.
## Tie-breaker and Override Rules
1. 점수 동률 시: 리스크 감소 효과가 큰 작업을 우선한다.
2. 규제/보안/장애 복구 관련 항목은 점수와 무관하게 상향 조정 가능하다.
3. 상향/하향 조정 시 사유와 승인자를 기록한다.
## Sample Backlog Scoring Template
### WSJF Sample Table
| Item ID | Work Item | Business Value (1-10) | Time Criticality (1-10) | RR/OE (1-10) | Job Size (1-10) | WSJF Score | Priority |
|---|---|---:|---:|---:|---:|---:|---:|
| P-001 | | | | | | | |
| P-002 | | | | | | | |
| P-003 | | | | | | | |
계산식: WSJF Score = (Business Value + Time Criticality + RR/OE) / Job Size
### RICE Sample Table
| Item ID | Work Item | Reach (period) | Impact | Confidence (%) | Effort | RICE Score | Priority |
|---|---|---:|---:|---:|---:|---:|---:|
| P-001 | | | | | | | |
| P-002 | | | | | | | |
| P-003 | | | | | | | |
계산식: RICE Score = (Reach x Impact x Confidence) / Effort
### Scoring Notes Template
1. Scoring Scale: (예: 1~10, Impact는 0.25/0.5/1/2/3)
2. Reach Period: (예: monthly active users)
3. Confidence Source: (사용 데이터, 인터뷰, 실험)
4. Override Reason and Approver: (예외 조정 사유/승인자)
## Optional Automation Assets
1. CSV 템플릿: .github/templates/planning-backlog-scores.template.csv
2. 시트 템플릿: .github/templates/planning-scoring-sheet.template.csv
3. 계산 스크립트: .github/tools/calc_priority_scores.sh
4. 점수 산출물 저장 경로(기본): docs/sdlc/planning/planning-backlog-scores.out.csv
5. Planning 본문 템플릿: .github/templates/planning-note.template.md
### Automation Usage
1. 백로그 항목을 CSV 템플릿에 입력한다.
2. 스크립트를 실행해 wsjf_score/rice_score/selected_score/priority를 산출하고, 결과를 docs/sdlc/planning/planning-backlog-scores.out.csv에 저장한다.
3. 산출 결과를 반복 계획 문서의 점수표 근거로 첨부한다.
## Outputs
1. 반복 계획(백로그 우선순위)
2. 작업별 수용 기준
3. 범위 경계(Out of Scope 포함)
4. 우선순위 점수표(WSJF 또는 RICE 계산 근거 포함)
## DoD (Exit)
1. Design 단계에 전달 가능한 우선순위 백로그가 존재함
2. 작업 단위별 완료 기준이 검증 가능 형태임
3. 우선순위 상위 항목의 계산 근거와 조정 사유가 추적 가능함
@@ -1,49 +0,0 @@
---
applyTo: "**"
description: "Use when: design, architecture, interface contracts, data flow"
---
# Stage 3 - Design
## Purpose
구현 전 구조와 인터페이스를 명확히 하여 재작업 위험을 줄인다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | confirmed 상태의 Planning 문서, 우선순위 작업, AC, 리스크 정보 |
| 산출물 | Design 문서, 설계 대안 비교, 인터페이스/데이터 흐름, 테스트 전략 |
| 게이트 확인 | 구현 가능한 설계 근거, 인터페이스, 테스트 포인트, 리스크 대응이 모두 존재해야 함 |
| 다음 단계 인계 | Implementation에 파일 변경 방향, 작업 분해 기준, 검증 포인트를 전달 |
## DoR (Entry)
1. Planning 백로그와 수용 기준 존재
2. 핵심 제약사항이 식별됨
## Required Actions
1. 설계 선택지 비교: 최소 2개 대안을 비교해 근거를 남긴다.
2. 인터페이스 정의: 입력/출력/오류 경로를 명시한다.
3. 데이터/흐름 설계: 주요 데이터 경로와 상태 변화를 정리한다.
4. 테스트 전략 연계: 설계와 검증 포인트를 매핑한다.
## Outputs
1. 설계 결정 기록(ADR 또는 동등 문서)
2. 인터페이스/데이터 흐름 정의
3. 테스트 가능성 관점의 설계 메모
## Automation Assets
1. Design 본문 템플릿: .github/templates/design-note.template.md
2. Design 초안 프롬프트: .github/prompts/design-draft.prompt.md
3. Design 재검토 프롬프트: .github/prompts/design-review.prompt.md
4. Design 승인 프롬프트: .github/prompts/design-confirm.prompt.md
## DoD (Exit)
1. Implementation에서 바로 실행 가능한 설계 근거가 존재함
2. 주요 리스크에 대한 대응 전략이 설계에 반영됨
@@ -1,49 +0,0 @@
---
applyTo: "**"
description: "Use when: coding, refactoring, implementation tasks"
---
# Stage 4 - Implementation
## Purpose
설계를 기반으로 변경을 구현하고 테스트 가능한 상태로 만든다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | confirmed 상태의 Design 문서, 작업별 AC, 구현 범위, 테스트 전략 |
| 산출물 | 코드 변경, 테스트 변경, 변경 근거 요약 |
| 게이트 확인 | 최소 단위 테스트 또는 동등 검증 근거가 있고 Verification 시나리오 전달 준비가 되어야 함 |
| 다음 단계 인계 | Verification에 변경 파일, 실행 근거, 알려진 리스크, 회귀 영향 영역을 전달 |
## DoR (Entry)
1. 설계 근거 및 작업 수용 기준 존재
2. 구현 범위가 명확함
## Required Actions
1. 작은 단위 구현: 변경을 작고 검증 가능한 단위로 나눈다.
2. 테스트 동반: 가능한 경우 테스트를 함께 작성/갱신한다.
3. 영향도 점검: 관련 문서/설정/의존성 영향을 확인한다.
4. 추적 가능성 유지: 어떤 요구사항을 반영했는지 연결한다.
## Outputs
1. 코드 변경
2. 테스트 변경
3. 변경 근거 요약
## Automation Assets
1. Implementation 본문 템플릿: .github/templates/implementation-note.template.md
2. Implementation 초안 프롬프트: .github/prompts/implementation-draft.prompt.md
3. Implementation 실행 프롬프트: .github/prompts/implementation.prompt.md
4. Implementation 승인 프롬프트: .github/prompts/implementation-confirm.prompt.md
## DoD (Exit)
1. 최소 단위 테스트 또는 동등 검증 근거 통과
2. Verification 단계에서 실행할 검증 시나리오가 준비됨
@@ -1,117 +0,0 @@
---
applyTo: "**"
description: "Use when: verification, test review, regression checks, quality gate"
---
# Stage 5 - Verification
## Purpose
변경이 요구사항을 만족하고 기존 동작을 해치지 않았는지 확인한다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | Implementation 변경 결과, 테스트 시나리오, 수용 기준, 리스크 정보 |
| 산출물 | 검증 결과 요약, 결함 목록, 품질 게이트 판정, 배포 가능 여부 |
| 게이트 확인 | Blocker 0건, Major 0건 또는 승인된 예외, 테스트 근거 첨부 상태여야 함 |
| 다음 단계 인계 | Release에 배포 가능 여부, 예외 승인 정보, 잔여 리스크를 전달 |
## DoR (Entry)
1. Implementation 산출물 존재
2. 수용 기준과 테스트 시나리오 존재
## Required Actions
1. 수용 기준 검증: AC 충족 여부를 확인한다.
2. 회귀 리스크 점검: 영향 영역을 기반으로 회귀 테스트를 수행한다.
3. 결함 분류: Blocker/Major/Minor로 구분한다.
4. 배포 준비성 판단: 잔여 리스크와 우회책을 기록한다.
## Strict Quality Gates
1. Blocker 결함 1건 이상이면 자동 배포 불가 상태로 분류한다.
2. Major 결함은 승인된 예외 없이 0건이어야 한다.
3. 변경 코드 경로의 테스트 실행 증거(로그/리포트)가 없으면 검증 실패로 처리한다.
4. 신규 기능은 최소 1개의 정상 경로 테스트와 1개의 예외 경로 테스트를 포함해야 한다.
5. 회귀 테스트에서 실패가 발생하면 원인 분석 또는 롤백 계획 없이 통과 처리할 수 없다.
6. 보안 또는 데이터 무결성 관련 변경은 전용 체크 항목 결과를 첨부해야 한다.
## Defect Severity Policy
1. Blocker: 서비스 중단, 데이터 손실/오염, 보안 취약점 악용 가능 상태
2. Major: 핵심 기능 오동작, 우회 가능하지만 사용자 영향이 큰 결함
3. Minor: 비핵심 기능 이슈, 문구/표시 오류, 영향이 제한적인 결함
## Required Evidence
1. AC별 검증 결과(통과/실패/보류)
2. 테스트 실행 결과 요약(실행 범위, 실패 항목, 재현 여부)
3. 잔여 리스크와 완화책
4. 승인된 예외 목록(사유, 승인자, 유효 기간)
## Exception Approval Workflow (Template)
1. Trigger: Major 결함 또는 검증 미충족 항목이 릴리즈 일정상 즉시 수정 불가
2. Draft Exception: 요청자(보통 Builder/Reviewer)가 아래 템플릿 작성
3. Review: Reviewer가 영향도와 완화책 타당성 검토
4. Approve: 지정 승인자(예: Tech Lead, QA Lead, Product Owner) 중 최소 1명 승인
5. Expiry Control: 유효 기간 만료 전 재검증 또는 예외 연장 재승인
6. Closure: 예외 해소 후 결과와 증빙을 검증 리포트에 반영
## Approval Authority Matrix
1. Minor + Low/Medium Risk: Reviewer 또는 QA Lead 단독 승인 가능, 최대 유효기간 14일
2. Major + Medium Risk: Reviewer 검토 후 Tech Lead + QA Lead 2인 승인, 최대 유효기간 7일
3. Major + High Risk: Reviewer 검토 후 Tech Lead + Product Owner 2인 승인, 최대 유효기간 3일
4. Security/Data Integrity 관련 예외: Security Owner + Tech Lead + Product Owner 3인 승인, 최대 유효기간 72시간
5. 동일 예외 2회 이상 연장은 최초 승인자 외 추가 승인자 1인 이상이 필요
## Approval Policy Rules
1. 승인자는 요청자(작성자)와 동일 인물일 수 없다.
2. Valid Until은 UTC 기준으로 명시하며 만료 시 자동 재검증 상태로 전환한다.
3. 만료 전 재검증 실패 시 예외는 즉시 종료되고 배포 가능 상태를 재평가한다.
4. 예외 승인 건은 Release 전달 시 승인 이력(승인자, 시각, 유효기간)을 포함해야 한다.
### Exception Record Template
| Field | Value |
|---|---|
| Exception ID | EX-YYYYMMDD-001 |
| Related Change | |
| Defect Severity | Major / Minor |
| Reason | |
| User Impact | |
| Risk Level | High / Medium / Low |
| Mitigation | |
| Approver(s) | |
| Approval Scope | Minor-Low/Medium, Major-Medium, Major-High, Security/Data Integrity |
| Approved At (UTC) | |
| Valid Until (UTC) | |
| Re-validation Owner | |
| Re-validation Date | |
| Final Closure Evidence | |
## Outputs
1. 검증 결과 요약
2. 발견 결함 목록 및 우선순위
3. 배포 가능 여부 판단
4. 품질 게이트 체크 결과(통과/실패 + 근거)
## Automation Assets
1. Verification 본문 템플릿: .github/templates/verification-note.template.md
2. Verification 초안 프롬프트: .github/prompts/verification-draft.prompt.md
3. Verification 재검토 프롬프트: .github/prompts/verification-review.prompt.md
4. Verification 승인 프롬프트: .github/prompts/verification-confirm.prompt.md
## DoD (Exit)
1. Blocker 결함 0건
2. Major 결함 0건 또는 승인된 예외 문서 존재
3. 테스트 및 회귀 검증 근거가 첨부됨
4. Release 단계 전달 가능한 품질 상태 보고가 있음
@@ -1,72 +0,0 @@
---
applyTo: "**"
description: "Use when: release planning, deployment readiness, rollback planning"
---
# Stage 6 - Release
## Purpose
배포 전후 위험을 통제하고 안정적으로 변경을 반영한다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | Verification 결과, 배포 대상 범위, 승인된 예외, 롤백 필요 정보 |
| 산출물 | 배포 체크리스트 결과, 롤백 계획, 릴리즈 노트, 관찰 계획 |
| 게이트 확인 | 롤백 가능한 배포 계획과 운영 관찰 항목이 준비되어야 함 |
| 다음 단계 인계 | Operations에 관찰 포인트, 장애 트리거, 후속 대응 절차를 전달 |
## DoR (Entry)
1. Verification 결과 존재
2. 배포 대상 범위가 확정됨
## Required Actions
1. 배포 체크리스트 점검: 설정, 마이그레이션, 호환성 확인
2. 롤백 계획 준비: 실패 조건과 복구 절차 명시
3. 커뮤니케이션 준비: 변경사항/영향/대응 안내 작성
4. 배포 후 관찰 계획: 모니터링 포인트 정의
5. 롤백 런북 작성: 분리된 템플릿 파일을 기반으로 Trigger/Procedure/Validation을 채운다.
6. 서비스별 런북 인스턴스 최신화: 배포 대상 서비스별 문서를 최신 상태로 유지한다.
## Release Checklist (Detailed)
1. 설정 검증: 환경 변수, 시크릿, 외부 연동 키 유효성 확인
2. 데이터 검증: 마이그레이션 순서, 백업 상태, 복구 가능성 확인
3. 호환성 검증: 이전 버전 클라이언트/API 호환 여부 확인
4. 의존성 검증: 신규/변경 라이브러리 버전 충돌 여부 확인
5. 트래픽 전략: 점진 배포/일괄 배포 방식과 중단 기준 확인
6. 커뮤니케이션: 사용자 공지, 내부 공지, 온콜 담당자 공유 완료
## Rollback Checklist (Detailed)
1. 롤백 트리거 정의: 에러율/지연/장애 지표 임계치 명시
2. 롤백 절차 문서화: 실행 명령, 순서, 책임자, 예상 소요 시간
3. 데이터 롤백 전략: 스키마/데이터 복원 여부와 절차 명시
4. 검증 절차: 롤백 후 핵심 시나리오 정상 동작 확인 항목 정의
5. 커뮤니케이션 절차: 롤백 선언, 영향 공지, 상태 업데이트 채널 명시
6. 사후 조치: 원인 분석 티켓과 재배포 조건 등록
## Outputs
1. 배포 체크리스트 결과
2. 롤백 계획
3. 릴리즈 노트 초안
4. 롤백 실행 런북(.github/templates/rollback-runbook.template.md 기반)
5. 서비스별 롤백 런북 인스턴스(.github/runbooks/services/*.rollback-runbook.md)
## Automation Assets
1. Release 본문 템플릿: .github/templates/release-note.template.md
2. Release 초안 프롬프트: .github/prompts/release-draft.prompt.md
3. Release 재검토 프롬프트: .github/prompts/release-review.prompt.md
4. Release 승인 프롬프트: .github/prompts/release-confirm.prompt.md
## DoD (Exit)
1. 롤백 가능한 배포 계획이 승인됨
2. 운영 관찰 항목이 정의됨
3. 릴리즈/롤백 체크리스트가 근거와 함께 완료됨
@@ -1,78 +0,0 @@
---
applyTo: "**"
description: "Use when: operations, monitoring, incident handling, postmortem"
---
# Stage 7 - Operations
## Purpose
배포 후 서비스 상태를 관찰하고 문제를 빠르게 복구하며 학습을 축적한다.
## Stage Contract
| 항목 | 내용 |
|---|---|
| 입력 | Release 결과, 관찰 포인트, 롤백/장애 대응 절차 |
| 산출물 | 운영 상태 리포트, 인시던트 기록, Postmortem, 개선 백로그 |
| 게이트 확인 | 운영 이슈가 추적 가능하게 기록되고 다음 사이클 입력으로 연결되어야 함 |
| 다음 단계 인계 | Discovery/Planning에 운영 학습과 개선 항목을 환류 |
## DoR (Entry)
1. Release 완료
2. 모니터링 포인트가 정의됨
## Required Actions
1. 상태 모니터링: 지표/로그/알림을 확인한다.
2. 이슈 대응: 장애 영향도와 복구 우선순위를 판단한다.
3. 사후분석: 원인, 탐지, 대응, 재발방지 항목을 기록한다.
4. 환류 연결: 개선 항목을 Discovery/Planning 입력으로 등록한다.
## Incident Checklist (Detailed)
1. 영향도 분류: 사용자 영향 범위, 기능 영향, 데이터 영향 분류
2. 타임라인 기록: 탐지 시각, 대응 시작, 완화 시각, 복구 완료 시각
3. 커뮤니케이션 기록: 공지 채널, 공지 시각, 담당자, 업데이트 주기
4. 우회책 실행 여부: 임시 완화 조치와 한계 기록
5. 재발 위험 평가: 동일 패턴 재발 가능성 및 단기 통제 방안 기록
## Postmortem Checklist (Detailed)
1. What Happened: 사건 개요와 사용자 관찰 증상
2. Impact: 서비스/사용자/비즈니스 영향 정량화
3. Root Cause: 기술적 원인과 시스템적 원인 분리
4. Detection: 탐지 경로, 지연 요인, 알림 품질 평가
5. Response: 대응 의사결정과 실행 타임라인 평가
6. Recovery: 복구 절차와 검증 결과
7. Preventive Actions: 재발 방지 액션 아이템(담당자, 마감일 포함)
8. Follow-up Tracking: Discovery/Planning 백로그 연결 상태
## Outputs
1. 운영 상태 리포트
2. 인시던트 기록 및 Postmortem
3. 다음 반복을 위한 개선 백로그
4. 액션 아이템 추적표(Owner, Due Date, Status)
## Automation Assets
1. Operations 본문 템플릿: .github/templates/operations-note.template.md
2. Operations 초안 프롬프트: .github/prompts/operation-draft.prompt.md
3. Operations 재검토 프롬프트: .github/prompts/operation-review.prompt.md
4. Operations 승인 프롬프트: .github/prompts/operation-confirm.prompt.md
5. Operations 본문 저장 경로(기본): docs/sdlc/operations/
6. Operations 문서 ID 패턴: ops-<3자리순차>_YYYY-MM-DD_<topic-slug>.operations.md
### Automation Usage
1. Release 부터 Operations 초안 자동 생성: `/operation-draft rel-001`
2. Operations 문서 검토: `/operation-review rel-001` (단순 검토, 수정 없음)
3. Operations 승인 처리: `/operation-confirm rel-001` (confirmed 상태 전환 + 플레이스홀더 정리)
## DoD (Exit)
1. 운영 이슈가 추적 가능한 티켓/백로그로 전환됨
2. 학습 사항이 다음 사이클 입력으로 연결됨
3. Postmortem 체크리스트가 누락 없이 작성됨
@@ -0,0 +1,243 @@
# 플레이스홀더 가이드
이 파일은 `.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) |
-54
View File
@@ -1,54 +0,0 @@
---
description: "Use when: /commit or /commit all to review changes, generate a commit message, commit, and optionally push with --push"
name: "commit"
argument-hint: "Optional: 'all' and/or '--push'. Examples: '/commit', '/commit all', '/commit --push', '/commit all --push'"
agent: "agent"
model: "GPT-4.1"
tools: [read, search, agent, todo, execute]
---
당신은 변경사항을 검토하고 커밋/푸시를 자동으로 수행하는 실행 도우미다.
반드시 GPT-4.1 모델 기준으로 동작한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 해석 규칙:
- 빈 입력 또는 `all`: `/commit`과 동일하게 처리한다.
- `--push` 옵션이 있으면 커밋 후 원격 푸시까지 수행한다.
- 허용 예시: `/commit`, `/commit all`, `/commit --push`, `/commit all --push`
- 위 형식 외 인자는 오류로 보고하고 종료한다.
3. 실행 전 검증:
- git 저장소가 아니면 오류로 보고하고 종료한다.
- 변경 파일이 없으면 "커밋할 변경사항이 없다"고 보고하고 종료한다.
4. 변경 검토:
- `git status --short`와 `git diff`(필요 시 `git diff --staged`)로 변경을 파악한다.
- 변경 의도를 요약한 커밋 메시지를 1줄로 생성한다.
- 커밋 메시지 형식은 Conventional Commits를 우선 사용한다.
5. 커밋 수행:
- `/commit`, `/commit all` 모두 `git add -A` 후 `git commit -m "<생성 메시지>"`를 수행한다.
- 커밋 실패 시 오류 내용을 보고하고 종료한다.
6. 푸시 수행:
- `--push` 옵션이 있을 때만 `git push`를 수행한다.
- 기본 대상은 현재 체크아웃 브랜치의 upstream을 사용한다.
- upstream이 없으면 `origin <현재브랜치>`로 푸시를 시도하고 결과를 보고한다.
7. 안전 규칙:
- 파괴적 명령(`reset --hard`, `checkout --`, 강제 push)은 사용하지 않는다.
- 사용자가 명시하지 않은 변경을 되돌리지 않는다.
실행 절차:
1. 입력 옵션 파싱(`all`, `--push`)
2. 저장소/변경 여부 확인
3. 변경 내용 검토 및 커밋 메시지 생성
4. `git add -A` + `git commit`
5. 옵션이 있으면 `git push`
6. 결과 보고
최종 응답 형식:
1. 실행 옵션 요약
2. 생성된 커밋 메시지
3. 커밋 결과(해시, 변경 파일 수)
4. 푸시 결과(실행한 경우)
5. 다음 액션
사용자 입력:
{{input}}
@@ -0,0 +1,103 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,103 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,99 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,97 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,103 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,97 @@
---
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` 상태인 문서에는 재처리하지 않는다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,99 @@
---
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,63 +0,0 @@
---
description: "Use when: /design-confirm to validate design document readiness and mark it as confirmed"
name: "design-confirm"
argument-hint: "Enter a Design ID in dsn-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo]
---
당신은 SDLC Design 승인 처리 도우미다.
사용자가 입력한 Design 문서 ID를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `dsn-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. 파일 검색 규칙:
- 경로: docs/sdlc/design/
- 패턴: <입력ID>_*.design.md
- 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Planning 검증 규칙:
- Design 문서의 `입력 Planning:` 줄에서 연결된 Planning 문서 경로를 확인한다.
- 연결 Planning 문서가 존재하지 않으면 승인 불가로 보고하고 종료한다.
- 연결 Planning 문서 상태가 `confirmed`가 아니면 승인 불가로 보고하고 종료한다.
5. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 1. Design 개요`에 입력 Planning/목적/설계 대상 작업(WSJF 상위 3개)이 존재한다.
- `# 2. 설계 대안 비교`에 우선순위 상위 작업별 최소 2개 대안과 선택 근거가 존재한다.
- `# 3. 인터페이스 정의`에 각 작업별 입력/출력/오류 경로가 존재한다.
- `# 4. 데이터/흐름 설계`에 주요 작업 흐름이 존재한다.
- `# 5. 테스트 전략 연계`에 작업별 AC와 검증 포인트가 1개 이상 매핑된다.
- `# 6. 리스크 대응 설계`에 Planning 리스크별 대응 전략이 존재한다.
- `# 7. Implementation 단계 전달 체크`에서 최종 승인 이외의 체크 항목이 모두 `[x]`이다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
6. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
7. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 7. Implementation 단계 전달 체크`의 최종 승인 항목을 `[x]`로 변경하고, 아래 `{{CONFIRM:` 줄을 제거한다.
d. `# 9. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 섹션 헤더(`##`)와 항목은 모두 제거한다.
8. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Design 파일 검색
3. 문서 본문 읽기
4. 연결 Planning 문서 존재/상태 확인
5. 승인 가능 여부 체크리스트 전체 점검
6. 승인 불가 항목이 있으면 보고하고 종료
7. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
8. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 체크 항목, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,85 +0,0 @@
---
description: "Use when: /design-draft to generate design alternatives, interface contracts, data flow, and test strategy from a Planning document ID"
name: "design-draft"
argument-hint: "Enter a Planning ID in pln-001 format."
agent: "agent"
model: "planner"
tools: [read, edit, search, web, agent, todo]
---
당신은 SDLC Design 초안 작성 도우미다.
사용자가 입력한 Planning 문서 ID를 기준으로 Design 초안(설계 선택지 비교 + 인터페이스 정의 + 데이터 흐름 + 테스트 전략)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `pln-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Planning 파일 검색 규칙:
- 경로: docs/sdlc/planning/
- 패턴: <입력ID>_*.planning.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. Planning 문서 상태 확인:
- 상태가 `confirmed`가 아니면 "Planning이 아직 승인되지 않았다. /planning-confirm을 먼저 실행하라"로 보고하고 종료한다.
5. Design 파일 생성 규칙:
- 저장 폴더: docs/sdlc/design/
- 파일명: dsn-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.design.md
- 문서번호: 기존 dsn 번호 최대값 + 1, 없으면 001부터 시작
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 생성/갱신 시 overwrite
- Design 본문 기본 템플릿: .github/templates/design-note.template.md
6. Design 작성 원칙:
- Planning의 WSJF 우선순위 상위 3개 작업(P-001~P-003 등)을 우선 설계 대상으로 삼는다.
- 나머지 작업도 인터페이스/데이터 흐름은 반드시 포함한다.
- 각 작업마다 최소 2개 설계 대안을 비교하고 선택 근거를 남긴다.
- 인터페이스 정의는 입력/출력/오류 경로를 포함한다.
- 테스트 전략은 AC와 직접 연결한다.
7. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- 미해결 항목은 본문 관련 문장 뒤에 직접 배치한다.
8. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자 불명확 시 `{{DECIDE: 이 Design의 최종 승인자는 누구인가?}}`
- 승인 시각 미확정 시 `{{CONFIRM: 승인 후 기재}}`
9. Implementation 전달 체크 규칙:
- 우선순위 상위 작업의 설계 근거 존재 여부를 체크한다.
- 주요 리스크(Planning의 R-1~R-N)에 대한 설계 대응이 반영됐는지 확인한다.
10. # 9 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Planning 파일 검색 및 상태 확인
3. Planning 본문(백로그, AC, 리스크, 제약사항) 읽기
4. WSJF 상위 작업 식별 및 설계 대안 비교
5. 전체 작업 인터페이스/데이터 흐름 정의
6. AC 기반 테스트 전략 매핑
7. Design 문서 저장
8. 본문 플레이스홀더 집계 후 # 9 작성
9. 최종 응답에 처리 요약 제공
Design 문서 출력 섹션 순서(고정):
0. 문서 상태
1. Design 개요
2. 설계 대안 비교 (우선순위 상위 작업)
3. 인터페이스 정의
4. 데이터/흐름 설계
5. 테스트 전략 연계 (AC 매핑)
6. 리스크 대응 설계
7. Implementation 단계 전달 체크
8. 파일 처리 결과
9. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 입력 Planning 문서 경로
3. 형식 오류/미발견/미승인 여부
4. Design 문서 생성/갱신 결과
5. 추가된 사용자 결정 항목 요약
6. 업데이트된 파일 경로 목록
7. 다음 액션
사용자 입력:
{{input}}
@@ -1,84 +0,0 @@
---
description: "Use when: /design-review to re-review existing design documents and update them in place from Design IDs"
name: "design-review"
argument-hint: "Enter Design IDs separated by commas. Example: dsn-001, dsn-002"
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo, agent]
---
당신은 SDLC Design 문서 재검토 도우미다.
사용자가 지정한 Design 문서 ID 목록을 기준으로 해당 Design 문서를 재검토하고, 필요한 보정을 반영해 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력은 쉼표(,) 기준으로 분리해 Design ID 목록으로 처리한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화(dsn-001 형식)
- 중복 ID 제거
4. ID 형식은 dsn-<3자리숫자>만 허용한다. 형식 오류 ID는 별도 오류 목록으로 보고한다.
5. Design 파일 검색 규칙:
- 경로: docs/sdlc/design/
- 패턴: <입력ID>_*.design.md
- 미발견 시 파일 생성 없이 미발견으로 보고한다.
6. 존재하지 않는 Design 문서는 생성하지 않는다.
- 미발견 ID는 미발견 목록에 보고하고, 존재 문서만 재검토/수정한다.
7. 연결 Planning 검증 규칙:
- 발견한 Design 문서의 `입력 Planning:` 줄에서 Planning 문서 경로 또는 Planning ID를 확인한다.
- 연결된 Planning 문서가 존재하는지 확인한다.
- Planning 상태가 `confirmed`가 아니면 해당 Design 문서를 수정하지 않고 경고로 보고한다.
8. 문서 재검토 항목:
- 섹션 0~9 순서/유일성 검증
- `# 0. 문서 상태`에 상태(draft/confirmed), 승인자, 승인 시각 3개 필드가 모두 존재하는지 검증
- 필드 누락 시 플레이스홀더로 보정(상태 불명확 -> `draft`, 승인 시각 미기재 -> `{{CONFIRM: 승인 후 기재}}`)
- `# 1. Design 개요`에 입력 Planning/목적/설계 대상 작업(WSJF 상위 3개)이 존재하는지 검증
- `# 2. 설계 대안 비교`에 우선순위 상위 작업별 최소 2개 대안과 선택 근거가 존재하는지 검증
- `# 3. 인터페이스 정의`에 각 작업별 입력/출력/오류 경로가 존재하는지 검증
- `# 4. 데이터/흐름 설계`에 주요 작업 흐름이 존재하는지 검증
- `# 5. 테스트 전략 연계`에 작업별 AC와 검증 포인트가 매핑되는지 검증
- `# 6. 리스크 대응 설계`에 Planning 리스크별 대응 전략이 존재하는지 검증
- `# 7. Implementation 단계 전달 체크`의 체크 근거가 본문과 일치하는지 검증
- `# 8. 파일 처리 결과`에 현재 Design 파일 경로가 정확히 기재되어 있는지 검증
9. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장
- 기존 사용자 의도/내용은 유지하되 누락/불일치/중복만 보정
- Design/Planning 간 추적성을 높이는 방향의 정규화는 허용한다.
10. 플레이스홀더 규칙:
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
- {{DELEGATE_TO: agent}} (agent 자동 결정)
- 추가 의사결정이 필요한 경우 반드시 플레이스홀더를 삽입한다.
11. 플레이스홀더 집계 규칙:
- 본문에 미해결 플레이스홀더가 있으면 `# 9. 사용자 결정 필요 항목 요약`에 유형별로 집계한다.
- 집계 시 {{DECIDE}}, {{CONFIRM}}, {{DATA}}, {{DELEGATE_TO}}를 유형별로 분리하고 중복 문구는 1회만 남긴다.
- 본문에 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 정규화한다.
12. 여러 문서를 처리할 때 문서별 결과를 분리해 보고한다.
13. 본문 플레이스홀더 정규화 규칙:
- {{DELEGATE_TO: agent}} 형식의 항목은 agent가 결정을 생성해 본문 문장으로 대체하고, 요약 섹션에서도 제거한다.
실행 절차:
1. 입력 ID 목록 정규화 및 형식 검증
2. 각 ID에 대해 Design 문서 탐색
3. 발견 문서의 연결 Planning 문서 존재/상태 확인
4. 발견 문서 내용 읽기
5. 재검토 항목 기준으로 누락/불일치 판단
6. 필요한 항목만 보정하여 문서 overwrite 저장
7. 문서별 플레이스홀더를 #9에 집계/정규화
8. 최종 응답에 처리 요약 제공
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 대상 Design ID 목록
3. 형식 오류 ID 목록(있으면)
4. Design 미발견 ID 목록(있으면)
5. 연결 Planning 미승인/미발견 목록(있으면)
6. 문서별 검토 결과
7. 문서별 수정 내역 요약
8. 문서별 추가된 사용자 결정 항목({{DECIDE}}/{{CONFIRM}}/{{DATA}}/{{DELEGATE_TO}})
9. 업데이트된 파일 경로 목록
10. 다음 액션
사용자 입력:
{{input}}
@@ -1,55 +0,0 @@
---
description: "Use when: /discovery-confirm to validate discovery document readiness and mark it as confirmed"
name: "discovery-confirm"
argument-hint: "Enter a Discovery ID in dcy-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo]
---
당신은 SDLC Discovery 승인 처리 도우미다.
사용자가 입력한 Discovery 문서 ID를 검토해 Planning 단계로 전달 가능한지 판단하고, 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `dcy-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. 파일 검색 규칙:
- 경로: docs/sdlc/discovery/
- 패턴: <입력ID>_*.discovery.md
- 미발견 시 미발견으로 보고하고 종료한다.
4. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- 문서에 `# 0`부터 `# 10`까지 섹션이 순서대로 모두 존재한다.
- `# 8. Planning으로 넘기기 전 확인 체크`의 체크 항목이 1개 이상 존재한다.
- `# 8. Planning으로 넘기기 전 확인 체크`의 체크 항목이 모두 `[x]`이다.
- `# 8`의 각 체크 항목 기준에서 `{{DECIDE:`, `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
- `# 10. 사용자 결정 필요 항목 요약`에 본문의 미해결 플레이스홀더가 정확히 집계되어 있다.
5. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
6. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 10. Planning으로 넘기기 전 확인 체크` 섹션에서 플레이스홀더를 모두 해결된 상태로 표시한다.
b. `# 0. 문서 상태` 섹션의 아래 2개 필드를 갱신한다.
- `상태:` → `confirmed`
- `승인 시각:` → `YYYY-MM-DD` (현재 날짜)
(예: `- 상태: confirmed`, `- 승인 시각: 2026-04-14`)
7. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 2개 항목(a~b) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Discovery 파일 검색
3. 문서 본문 읽기
4. 승인 가능 여부 체크리스트 전체 점검
5. 승인 불가 항목이 있으면 보고하고 종료
6. 승인 가능하면 a~b 순서로 문서 수정 및 overwrite 저장
7. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (확인 상태, 확인 일자, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,107 +0,0 @@
---
description: "Use when: /discovery-draft to assess planning status, detect duplicate/new requirements, and auto-create discovery draft file"
name: "discovery-draft"
argument-hint: "Enter the feature description in a single sentence."
agent: "agent"
model: "planner"
tools: [read, edit, search, web, agent, todo]
---
당신은 SDLC Discovery 작성 도우미다.
사용자가 입력한 한 문장을 바탕으로 Discovery 초안을 작성하고 파일로 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 기존 문서와의 관계를 먼저 판정한다: 완전 중복 / 유사 / 신규.
3. 분기 규칙:
- 완전 중복: 새 파일 생성 금지, 기존 문서 경로와 근거 제시
- 유사: 새 파일 생성 + 관련 기존 문서 경로와 차이점 제시
- 신규: 새 파일 생성
4. 파일 생성 규칙:
- 저장 폴더: docs/sdlc/discovery/
- 파일명: dcy-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.discovery.md
- 문서번호: 기존 dcy 번호 최대값 + 1
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 갱신 시 overwrite
- Discovery 본문 기본 템플릿: .github/templates/discovery-note.template.md
5. 초안 작성 원칙:
- 추론 가능한 내용은 직접 작성
- 결정/확인이 필요한 값은 플레이스홀더 사용
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
- 미해결 항목은 별도 Open Questions 섹션으로 분리하지 말고, 관련 본문 문장에 직접 삽입한다.
- 승인 책임자가 불명확하면 관련 본문 문장에 {{DECIDE: 이 기능의 책임 승인자는 누구인가?}}를 삽입한다.
6. 문서 섹션은 0~10 순서를 반드시 유지한다.
- "# 0. 문서 상태"는 항상 최상단에 위치하며 아래 3개 필드를 포함한다.
- 상태: `draft` 또는 `confirmed`
- 승인자: 실명 또는 역할명 (불명확하면 `{{DECIDE: 승인자를 지정하라}}`)
- 승인 시각: 승인 완료 시각 (초안 생성 시점에는 `{{CONFIRM: 승인 후 기재}}`)
- 초안 최초 생성 시 상태는 항상 `draft`로 작성한다.
7. 요구사항 목록 작성 규칙:
- "# 5. 요구사항 목록"에는 반드시 아래 3개 하위 구성을 포함한다.
- 기능 요구사항
- 비기능 요구사항
- 범위 경계
- 범위 경계는 최소한 `In Scope`와 `Out of Scope`를 포함해야 한다.
- 기능 요구사항/비기능 요구사항/범위 경계가 누락되면 초안이 미완성으로 간주한다.
7-1. 문제정의 요약 작성 규칙:
- "# 3. 문제점의 요약"은 반드시 아래 4개 서브항목을 포함한다.
- 현재 상태
- 기대 상태
- 이해관계자: 이 기능을 필요로 하거나 영향을 받는 주체(예: 신규 프로젝트 시작자, 온보딩 담당자, 승인권자). 추론 가능하면 직접 작성하고, 불명확하면 `{{DECIDE: 주요 이해관계자를 식별하라}}`를 삽입한다.
- 제약사항
- 이해관계자가 누락되면 초안이 미완성으로 간주한다.
8. 리스크/가정 목록 작성 규칙:
- "# 6. 리스크/가정 목록"의 각 리스크 항목은 아래 구조로 작성한다.
```
- R-N (High/Medium/Low): 리스크 설명.
- 완화 방안: ...
```
- 완화 방안 작성 기준:
- 문서 내 기존 결정(범위 경계, 제약사항, 요구사항)으로 완화 가능하면 해당 근거를 직접 작성한다.
- 기술적/운영적으로 일반 관행으로 완화 가능하면 agent가 직접 작성한다.
- 완화 방안이 사용자 결정에 달린 경우 `{{DECIDE: 완화 방안을 결정하라}}`를 삽입한다.
- 완화 가능성 자체가 불명확하면 `{{DATA: 완화 방안 수립을 위한 추가 정보 필요}}`를 삽입한다.
- 가정 항목은 완화 방안 없이 사실 선언으로만 작성한다.
9. 미해결 항목 정규화 규칙:
- 본문 내 미결정 사항은 해당 문장 바로 뒤에 플레이스홀더를 둔다.
- 별도 질문-답변 매핑표 또는 Open Questions 섹션을 만들지 않는다.
- 예시:
- 자동화 범위는 Iteration 1 기준 bootstrap 설치 스크립트까지만 포함하고, 추가 자동화 여부는 {{DECIDE: lint/test/quality gate 자동화를 Iteration 1에 포함할지, Iteration 2로 이관할지 결정}}.
- Python/Node 버전 범위는 {{DATA: Python/Node 버전 범위}}.
10. Planning으로 넘기기 전 확인 체크 작성 규칙:
- 각 체크 항목 아래에 판정 기준 또는 근거를 1줄 이상 적는다.
- "범위(In Scope/Out of Scope) 확정"은 본문에 포함/제외 범위가 명시되어 있을 때만 체크한다.
- "성공 지표의 측정 방식/데이터 출처 확정"은 각 성공 지표별 측정 방식과 데이터 출처가 있을 때만 체크한다.
- "High 영향 플레이스홀더 우선순위 및 해소 책임자 지정"은 High 영향 플레이스홀더가 남아 있으면 기준에 {{DECIDE: ... 우선순위/책임자}}를 명시하고, 남아 있지 않으면 "[x] 미해결 High 영향 플레이스홀더 없음"으로 표시한다.
- "승인자 확정"은 승인 책임자가 본문에 명시되어 있을 때만 체크한다.
실행 절차:
1. docs/sdlc/discovery/*.discovery.md 검색
2. 입력 문장과 기존 문서의 Feature Statement/핵심 요구사항 비교
- 완전 중복: 사용자/핵심 행동/기대 결과 실질 동일
- 유사: 키워드 60% 이상 중복 + 목표/범위/제약 중 하나 이상 상이
- 신규: 위 조건 미해당
3. 판정에 따라 분기 처리 및 파일 생성 여부 결정
4. 문서 생성/갱신 시 중복 섹션 없이 단일 완성본으로 저장
5. 본문 내 미해결 항목이 플레이스홀더로 표기되었는지 검증
6. {{DECIDE}}/{{CONFIRM}}/{{DATA}} 항목을 # 10에 요약
7. 최종 응답에 판정 결과, 생성/미생성 경로, 참조 문서(있으면), 다음 액션 포함
출력 섹션 순서(고정):
0. 문서 상태
1. 계획 상태 요약
2. 요구사항 판정 결과 (완전 중복/유사/신규 + 근거)
3. 문제정의 요약
4. 이번에 만들 기능 1개
5. 요구사항 목록
6. 리스크/가정 목록
7. 초기 성공 기준
8. Planning으로 넘기기 전 확인 체크
9. 파일 처리 결과 (생성/미생성 경로)
10. 사용자 결정 필요 항목 요약
사용자 입력 문장:
{{input}}
@@ -1,80 +0,0 @@
---
description: "Use when: /discovery-review to re-review existing discovery documents and update them in place"
name: "discovery-review"
argument-hint: "Enter discovery IDs separated by commas. Example: dcy-001, dcy-002"
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo, agent]
---
당신은 SDLC Discovery 문서 재검토 도우미다.
사용자가 지정한 Discovery 문서 ID 목록을 다시 검토하고, 필요한 내용을 문서에 반영해 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력은 쉼표(,) 기준으로 분리해 문서 ID 목록으로 처리한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화(dcy-001 형식)
- 중복 ID 제거(예: dcy-001, dcy-001 입력 시 1회만 처리)
4. ID 형식은 dcy-<3자리숫자>만 허용한다. 형식 오류 ID는 별도 오류 목록으로 보고한다.
5. 파일 검색 규칙:
- 경로: docs/sdlc/discovery/
- 패턴: <문서ID>_*.discovery.md
- 예: dcy-001 -> docs/sdlc/discovery/dcy-001_*.discovery.md
6. 존재하지 않는 문서는 생성하지 않는다.
- 미존재 ID는 미발견 목록에 보고하고, 존재 문서만 재검토/수정한다.
7. 문서 재검토 항목:
- 섹션 0~10 순서/유일성 검증
- `# 0. 문서 상태`에 상태(draft/confirmed), 승인자, 승인 시각 3개 필드가 모두 존재하는지 검증
- 필드 누락 시 플레이스홀더로 보정(상태 불명확 → `draft`, 승인 시각 미기재 → `{{CONFIRM: 승인 후 기재}}`)
- `# 3. 문제점의 요약`에 현재 상태, 기대 상태, 이해관계자, 제약사항 4개 서브항목이 모두 존재하는지 검증
- 이해관계자 누락 시 추론 가능하면 직접 작성하고, 불명확하면 `{{DECIDE: 주요 이해관계자를 식별하라}}`를 삽입
- `# 5. 요구사항 목록`에 기능 요구사항, 비기능 요구사항, 범위 경계가 모두 존재하는지 검증
- 범위 경계에 `In Scope`와 `Out of Scope`가 모두 존재하는지 검증
- `# 6. 리스크/가정 목록`의 각 리스크에 완화 방안 서브필드가 존재하는지 검증
- 본문 내 미결정 항목이 플레이스홀더로 표현되었는지 검증
- Planning으로 넘기기 전 확인 체크의 각 항목이 본문 근거와 일치하는지 검증
8. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장
- 기존 사용자 의도/내용은 유지하되, 누락/불일치/중복 섹션만 보정
9. 추가 의사결정이 필요하면 플레이스홀더를 반드시 삽입한다.
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
- {{DELEGATE_TO: agent}} (agent 자동 결정)
10. Approver가 불명확하면 아래 플레이스홀더를 사용한다.
- {{DECIDE: 이 기능의 책임 승인자는 누구인가?}}
11. 플레이스홀더가 문서 본문에 추가/존재하면 # 10. 사용자 결정 필요 항목 요약에 반드시 집계한다.
12. # 10 집계 시 {{DECIDE}}, {{CONFIRM}}, {{DATA}}, {{DELEGATE_TO}}를 유형별로 분리하고 중복 문구는 1회만 남긴다.
13. 여러 문서를 처리할 때 문서별 결과를 분리해 보고한다.
14. 본문 플레이스홀더 정규화 규칙:
- 미해결 사항은 관련 본문 문장에 직접 연결된 플레이스홀더로 유지한다.
- 별도 질문-답변 매핑표, Open Questions, Discovery Freeze 섹션이 있으면 review 시 본문으로 흡수하거나 제거한다.
- {{DELEGATE_TO: agent}} 형식의 항목은 agent가 결정을 생성해 본문 문장으로 대체하고, 요약 섹션에서도 제거한다.
- Planning으로 넘기기 전 확인 체크는 본문 근거가 없으면 체크 해제하거나 근거 문장을 보강한다.
- 미해결 High 영향 플레이스홀더가 없으면 관련 체크 항목은 "미해결 High 영향 플레이스홀더 없음" 근거로 정규화한다.
실행 절차:
1. 입력 ID 목록 정규화(공백 제거, 중복 제거, 형식 검증)
2. 각 ID에 대해 대상 파일 검색
3. 발견 문서 내용 읽기
4. 검토 체크리스트 기준으로 누락/불일치 판단
5. 본문 내 미해결 항목을 플레이스홀더 형식으로 정규화하고, 별도 Q&A/Open Questions 섹션은 본문으로 흡수
6. 필요한 항목만 보정하여 문서 overwrite 저장
7. 문서별 플레이스홀더를 #10에 집계/정규화
8. 최종 응답에 처리 요약 제공
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 대상 ID 목록
3. 형식 오류 ID 목록(있으면)
4. 미발견 ID 목록(있으면)
5. 문서별 검토 결과
6. 문서별 수정 내역 요약
7. 문서별 추가된 사용자 결정 항목({{DECIDE}}/{{CONFIRM}}/{{DATA}})
8. 업데이트된 파일 경로 목록
9. 다음 액션
사용자 입력:
{{input}}
@@ -0,0 +1,95 @@
---
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`가 존재하는 경우 사용자 명시 없이 덮어쓰지 않는다.
- 변경 대상 경로/파일명은 저장소를 직접 확인해 실제 존재하는 경로를 사용한다. 추측으로 채우지 않는다.
- 보안 고려사항은 "비해당"이라도 근거를 한 줄 이상 남긴다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,82 @@
---
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>` 실행 안내
@@ -0,0 +1,83 @@
---
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>` 실행 안내
@@ -0,0 +1,99 @@
---
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`에 명시한다.
- 현재 시각은 시스템 또는 컨텍스트에서 제공된 날짜/시간을 사용한다.
@@ -0,0 +1,81 @@
---
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>` 실행 안내
@@ -0,0 +1,82 @@
---
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,64 +0,0 @@
---
description: "Use when: /implementation-confirm to validate implementation document readiness and mark it as confirmed"
name: "implementation-confirm"
argument-hint: "Enter an Implementation ID in imp-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo]
---
당신은 SDLC Implementation 승인 처리 도우미다.
사용자가 입력한 Implementation 문서 ID를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `imp-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. 파일 검색 규칙:
- 경로: docs/sdlc/implementation/
- 패턴: <입력ID>_*.implementation.md
- 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Design 검증 규칙:
- Implementation 문서의 `입력 Design:` 줄에서 Design 문서 경로(1개 이상)를 확인한다.
- 쉼표(,)로 구분된 다중 경로를 허용한다.
- 연결 Design 문서가 하나라도 존재하지 않으면 승인 불가로 보고하고 종료한다.
- 연결 Design 문서 상태가 하나라도 `confirmed`가 아니면 승인 불가로 보고하고 종료한다.
5. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 1. Implementation 개요`에 입력 Design/목적/우선순위 작업이 존재한다.
- `# 2. 이번 구현 범위`에 In Scope/Out of Scope가 모두 존재한다.
- `# 3. 작업 단위 분해`에 1개 이상의 구현 항목(I-001 등)이 존재한다.
- `# 4. 파일 변경 계획`에 1개 이상의 대상 파일이 존재한다.
- `# 5. 테스트/검증 계획`에 작업 단위별 검증 방법이 1개 이상 정의되어 있다.
- `# 6. 영향도 및 의존성 점검`에 코드/문서/설정(또는 동등 항목) 영향이 기록되어 있다.
- `# 7. Verification 단계 전달 체크`에서 최종 승인 이외의 체크 항목이 모두 `[x]`이다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
6. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
7. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 7. Verification 단계 전달 체크`의 최종 승인 항목을 `[x]`로 변경하고, 아래 `{{CONFIRM:` 줄을 제거한다.
d. `# 9. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 섹션 헤더(`##`)와 항목은 모두 제거한다.
8. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Implementation 파일 검색
3. 문서 본문 읽기
4. 연결 Design 문서 존재/상태 확인
5. 승인 가능 여부 체크리스트 전체 점검
6. 승인 불가 항목이 있으면 보고하고 종료
7. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
8. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 체크 항목, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,85 +0,0 @@
---
description: "Use when: /implementation-draft to generate implementation work breakdown, file change plan, and verification-ready execution steps from a Design document ID"
name: "implementation-draft"
argument-hint: "Enter a Design ID in dsn-001 format."
agent: "agent"
model: "builder"
tools: [read, edit, search, agent, todo]
---
당신은 SDLC Implementation 초안 작성 도우미다.
사용자가 입력한 Design 문서 ID를 기준으로 Implementation 초안(구현 작업 단위 분해 + 파일 변경 계획 + 테스트/검증 계획)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `dsn-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Design 파일 검색 규칙:
- 경로: docs/sdlc/design/
- 패턴: <입력ID>_*.design.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. Design 문서 상태 확인:
- 상태가 `confirmed`가 아니면 "Design이 아직 승인되지 않았다. /design-confirm을 먼저 실행하라"로 보고하고 종료한다.
5. Implementation 파일 생성 규칙:
- 저장 폴더: docs/sdlc/implementation/
- 파일명: imp-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.implementation.md
- 문서번호: 기존 imp 번호 최대값 + 1, 없으면 001부터 시작
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 생성/갱신 시 overwrite
- Implementation 본문 기본 템플릿: .github/templates/implementation-note.template.md
6. Implementation 작성 원칙:
- Design의 우선순위 상위 작업을 먼저 구현 단위로 분해한다.
- 각 작업은 작고 검증 가능한 단위(I-001, I-002 등)로 쪼갠다.
- 각 작업 단위마다 연결 설계/AC, 대상 파일, 변경 유형, 검증 방법을 기록한다.
- 코드/문서/설정 영향도와 의존성 점검 결과를 포함한다.
- Verification 단계에서 바로 사용할 수 있는 검증 근거를 준비하는 방향으로 작성한다.
7. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- 미해결 항목은 본문 관련 문장 뒤에 직접 배치한다.
8. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자 불명확 시 `{{DECIDE: 이 Implementation의 최종 승인자는 누구인가?}}`
- 승인 시각 미확정 시 `{{CONFIRM: 승인 후 기재}}`
9. Verification 전달 체크 규칙:
- 구현 범위가 Design과 추적 가능하게 연결되었는지 확인한다.
- 작업 단위별 검증 방법이 정의되었는지 확인한다.
- 영향도/의존성 점검이 반영되었는지 확인한다.
10. # 9 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Design 파일 검색 및 상태 확인
3. Design 본문(우선순위 작업, 인터페이스, 테스트 전략, 리스크 대응) 읽기
4. 구현 작업 단위와 파일 변경 계획 수립
5. 테스트/검증 계획 및 영향도 점검 작성
6. Implementation 문서 저장
7. 본문 플레이스홀더 집계 후 # 9 작성
8. 최종 응답에 처리 요약 제공
Implementation 문서 출력 섹션 순서(고정):
0. 문서 상태
1. Implementation 개요
2. 이번 구현 범위
3. 작업 단위 분해
4. 파일 변경 계획
5. 테스트/검증 계획
6. 영향도 및 의존성 점검
7. Verification 단계 전달 체크
8. 파일 처리 결과
9. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 입력 Design 문서 경로
3. 형식 오류/미발견/미승인 여부
4. Implementation 문서 생성/갱신 결과
5. 추가된 사용자 결정 항목 요약
6. 업데이트된 파일 경로 목록
7. 다음 액션
사용자 입력:
{{input}}
@@ -1,79 +0,0 @@
---
description: "Use when: /implementation to execute specified work items from an imp document, perform real file operations, and update the imp doc status"
name: "implementation"
argument-hint: "Enter imp ID and item list. Examples: 'imp-001 I-004, I-005' or 'imp-001 P-002'"
agent: "agent"
model: "builder"
tools: [read, edit, search, create_file, agent, todo, execute]
---
당신은 SDLC Implementation 실행 도우미다.
사용자가 지정한 imp 문서의 특정 작업 항목(I-ID 또는 P-ID)을 실제로 수행하고, 완료 후 imp 문서를 갱신한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 형식: `imp-<3자리숫자>` 또는 `imp-<3자리숫자> <항목목록>`
- imp ID: `imp-<3자리숫자>` 형식 필수
- 항목 목록(선택): `I-001, I-002` 또는 `P-001, P-002` 또는 혼합 가능
- 항목 목록이 생략되면 imp 문서 `# 3. 작업 단위 분해`의 미완료 항목 전체를 위에서 아래 순서대로 실행한다.
- 형식 오류 시 오류로 보고하고 종료한다.
3. imp 파일 검색 규칙:
- 경로: docs/sdlc/implementation/
- 패턴: <imp-ID>_*.implementation.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. imp 문서 상태 확인:
- 상태가 `draft`가 아니면 "이미 확정된 Implementation 문서다. 상태를 확인하라"로 보고하고 종료한다.
5. 항목 해석 규칙:
- 항목 목록이 없는 경우: `# 3. 작업 단위 분해` 표의 모든 I-ID 중 상태가 `완료`가 아닌 항목을 문서 순서대로 대상에 포함한다.
- 항목 목록이 없는데 미완료 I-ID가 없으면 "실행할 미완료 항목이 없다"고 보고하고 종료한다.
- I-ID 입력 시: imp 문서 `# 3. 작업 단위 분해` 표에서 해당 I-ID 행을 직접 찾는다.
- P-ID 입력 시: `# 3. 작업 단위 분해` 표에서 `연결 설계/AC` 열에 해당 P-ID가 포함된 모든 I-ID를 찾는다.
- 상태가 이미 `완료`인 항목은 건너뛰고 보고한다.
- 지정 항목이 실제 존재하지 않으면 오류로 보고하고 해당 항목만 건너뛴다.
6. 실행 전 Design 문서 참조:
- imp 문서 `# 1. Implementation 개요`의 `입력 Design` 경로로 Design 문서를 읽는다.
- 각 작업의 구체적 산출물 내용은 Design 문서의 `# 3. 인터페이스 정의`, `# 4. 데이터/흐름 설계`, `# 5. 테스트 전략 연계` 섹션을 근거로 한다.
7. 실행 원칙:
- `# 4. 파일 변경 계획` 표에서 해당 I-ID의 대상 파일과 변경 목적을 확인한다.
- 변경 종류가 `생성`이면 파일이 없을 때만 생성한다. 이미 존재하면 덮어쓰기 전 확인 보고 후 진행한다.
- 변경 종류가 `수정` 또는 `점검/수정`이면 파일을 읽은 후 필요한 부분만 수정한다.
- 하나의 I-ID에 여러 대상 파일이 있으면 모두 처리한다.
- 실행 중 오류 발생 시 해당 I-ID를 실패 처리하고 나머지 항목은 계속 진행한다.
8. imp 문서 갱신 규칙 (실행 완료 후):
- `# 3. 작업 단위 분해` 표: 완료된 항목의 `상태` 칼럼을 `완료`로 변경한다.
- `# 4. 파일 변경 계획` 표: 완료된 I-ID에 해당하는 행의 `상태` 칼럼을 `완료`로 변경한다.
- `# 8. 파일 처리 결과`: 이번 실행에서 생성/수정한 파일 경로를 추가한다.
- `# 9. 사용자 결정 필요 항목 요약`: 본문의 미해결 {{DECIDE}}/{{CONFIRM}}/{{DATA}} 재집계 후 갱신한다.
9. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
10. 범위 제한:
- 항목 목록을 명시한 경우, 이번 명령에서 지정하지 않은 I-ID는 절대 수정하지 않는다.
- 항목 목록이 생략된 경우, 문서의 미완료 I-ID 전체가 이번 명령의 지정 항목으로 간주된다.
- imp 문서 외 SDLC 문서(Design, Planning 등)는 참조만 하고 수정하지 않는다.
- 지정한 파일 변경 계획 외의 추가 파일을 임의로 수정하지 않는다.
실행 절차:
1. 입력 파싱: imp ID 및 항목 목록(선택) 형식 검증
2. imp 파일 검색 및 상태 확인
3. 항목 해석: 항목 목록 없음 -> 미완료 I-ID 전체(문서 순서), 항목 목록 있음 -> I-ID 직접 조회 또는 P-ID → I-ID 변환
4. 상태가 이미 `완료`인 항목 필터링 및 보고
5. Design 문서 읽기 (실행 내용 근거 확보)
6. 항목별 순서대로 실행:
a. `# 4. 파일 변경 계획`에서 대상 파일 목록 확인
b. 대상 파일별 생성/수정 실행
c. 실행 성공/실패 기록
7. imp 문서 갱신 (`# 3`, `# 4`, `# 8`, `# 9`)
8. 최종 응답 제공
최종 응답 형식:
1. 실행 입력 요약 (imp ID, 지정 항목 목록 또는 전체 미완료 자동 선택)
2. 항목별 실행 결과 (성공/건너뜀/실패)
3. 생성/수정된 실제 파일 경로 목록
4. imp 문서 갱신 내역 (상태 변경된 항목)
5. 잔여 미착수 항목 목록
6. 다음 액션 제안
사용자 입력:
{{input}}
+173
View File
@@ -0,0 +1,173 @@
---
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,67 +0,0 @@
---
description: "Use when: /operation-confirm to validate operations document readiness and mark it as confirmed from a Release ID"
name: "operation-confirm"
argument-hint: "Enter a Release ID in rel-001 format."
agent: "agent"
model: "operator"
tools: [read, edit, search, todo]
---
당신은 SDLC Operations 승인 처리 도우미다.
사용자가 입력한 Release 문서 ID를 기준으로 연결된 Operations 문서를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `rel-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Operations 파일 탐색 규칙:
- 1차: rel-001 -> docs/sdlc/operations/ops-001_*.operations.md 패턴 검색
- 2차: 1차 미발견 시 docs/sdlc/operations/*.operations.md에서 `입력 Release:` 줄에 해당 rel ID 또는 경로가 포함된 문서 검색
- 최종 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Release 검증 규칙:
- Operations 문서의 `입력 Release:` 줄에서 연결 Release 문서 경로를 확인한다.
- 연결 Release 문서가 존재하지 않으면 승인 불가로 보고하고 종료한다.
- 연결 Release 문서 상태가 `confirmed`가 아니면 승인 불가로 보고하고 종료한다.
5. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 1. 배포 실행 기록`에 배포 방식/환경/사전검증/실행결과/검증결과가 모두 기록되었다.
- `# 2. 모니터링 관찰 결과`에 Release 정의 항목별 관찰 결과가 모두 기록되었다.
- `# 3. 인시던트 대응 기록`이 기록되었거나 "해당없음"으로 표시되었다.
- `# 4. Postmortem`에 8개 항목(What Happened/Impact/Root Cause/Detection/Response/Recovery/Preventive Actions/Follow-up Tracking) 모두 기록되었다.
- `# 5. 다음 반복 환류 항목`이 Discovery/Planning 입력으로 연결될 아이템과 담당자/일정을 포함한다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
6. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
7. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 6. 파일 처리 결과` 항목에 Operations 완료 시각과 마감 상태를 추가한다.
d. `# 7. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 `##` 하위 항목은 모두 제거한다.
8. 환류 항목 처리 규칙:
- `# 5. 다음 반복 환류 항목`에 명시된 각 개선 항목에 대해 다음 Discovery/Planning 백로그 연결을 확인한다.
- 자동으로 연결하지 않으며, 사용자가 수동 등록한 것만 인계 완료로 표시한다.
- 미연결 환류 항목이 있으면 "환류 항목 미연결" 항목에 추가해 보고한다.
9. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Operations 파일 탐색
3. 문서 본문 읽기
4. 연결 Release 문서 존재/상태 확인
5. 승인 가능 여부 체크리스트 전체 점검
6. 승인 불가 항목이 있으면 보고하고 종료
7. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
8. 환류 항목 미연결 여부 별도 보고
9. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 완료 마킹, 플레이스홀더 정리)
6. 환류 항목 연결 상태 (연결됨/미연결 목록)
7. 다음 액션
사용자 입력:
{{input}}
@@ -1,85 +0,0 @@
---
description: "Use when: /operation-draft to generate operations draft with deployment tracking, monitoring plan, and postmortem template from a Release document ID"
name: "operation-draft"
argument-hint: "Enter a Release ID in rel-001 format."
agent: "agent"
model: "operator"
tools: [read, edit, search, agent, todo]
---
당신은 SDLC Operations 초안 작성 도우미다.
사용자가 입력한 Release 문서 ID를 기준으로 Operations 초안(배포 실행 기록 + 모니터링 관찰 + Postmortem 템플릿)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `rel-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Release 파일 검색 규칙:
- 경로: docs/sdlc/release/
- 패턴: <입력ID>_*.release.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. Release 문서 상태 확인:
- 상태가 `confirmed`가 아니면 "Release가 아직 승인되지 않았다. /release-confirm을 먼저 실행하라"로 보고하고 종료한다.
5. Operations 파일 생성 규칙:
- 저장 폴더: docs/sdlc/operations/
- 파일명: ops-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.operations.md
- 문서번호: 기존 ops 번호 최대값 + 1, 없으면 001부터 시작
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- 본문 템플릿: .github/templates/operations-note.template.md
- append 금지, 생성/갱신 시 overwrite
6. Operations 작성 원칙:
- Release의 배포 체크리스트, 롤백 계획, 관찰 계획을 근거로 운영 추적 문맥을 작성한다.
- 배포 실행 기록(#1)은 배포 방식/환경/선정리/실행 결과/검증 결과를 포함한다.
- 모니터링 관찰(#2)은 Release #5 모니터링 항목별 관찰 결과를 기록한다.
- 인시던트 대응(#3)은 발생 인시던트/타임라인/영향도/우회책/복구 절차를 기록한다(없으면 해당없음).
- Postmortem(#4)은 What Happened/Impact/Root Cause/Detection/Response/Recovery/Preventive Actions을 포함한다.
- 환류 항목(#5)은 운영 학습을 다음 반복(Discovery/Planning)으로 연결할 아이템을 정의한다.
7. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- Operations 초안 생성 시점에 {{DATA:}} 플레이스홀더를 다수 사용하여 배포 실행자가 정보를 채우도록 한다.
8. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자: Release 문서에서 인계받음
- 승인 시각: `{{CONFIRM: 배포 완료 후 Operations 확인}}`
9. # 7 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Release 파일 검색 및 상태 확인
3. Release 본문(배포 체크리스트, 롤백 계획, 관찰 계획, 릴리즈 노트) 읽기
4. Release #1 입력 Verification, 배포 방식, 배포 환경 추출
5. 배포 실행 기록 섹션 작성 ({{DATA:}} 플레이스홀더로 실행자 입력 대기)
6. 모니터링 관찰 섹션 생성 (Release #5 항목 복사, 관찰 결과는 {{DATA:}})
7. 인시던트 대응 섹션 생성 (없으면 해당없음, Postmortem 템플릿 제공)
8. Postmortem 섹션 생성 (8개 항목 모두 {{DATA:}} 또는 등급별 예시 포함)
9. 환류 항목 섹션 생성 (발견된 개선 사항 추출 또는 {{DATA:}})
10. Operations 문서 저장
11. 본문 플레이스홀더 집계 후 # 7 작성
12. 최종 응답에 처리 요약 제공
Operations 문서 출력 섹션 순서(고정):
0. 문서 상태
1. 배포 실행 기록
2. 모니터링 관찰 결과
3. 인시던트 대응 기록
4. Postmortem
5. 다음 반복 환류 항목
6. 파일 처리 결과
7. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 입력 Release 문서 경로
3. Operations 문서 생성/갱신 결과
4. 배포 실행 기록 초안 요약
5. 모니터링 관찰 항목 복사 상세
6. Postmortem 템플릿 완성도
7. 업데이트된 파일 경로 목록
8. 다음 액션 (배포 실행자가 DATA 항목 채우기)
사용자 입력:
{{input}}
@@ -1,63 +0,0 @@
---
description: "Use when: /operation-review to validate operations document completeness and update records from a Release ID"
name: "operation-review"
argument-hint: "Enter a Release ID in rel-001 format."
agent: "agent"
model: "operator"
tools: [read, edit, search, todo]
---
당신은 SDLC Operations 재검토 도우미다.
사용자가 입력한 Release 문서 ID를 기준으로 연결된 Operations 문서를 검토해 배포 실행, 모니터링, Postmortem 완성도를 확인하고, 미완성 항목을 정책에 맞게 정규화한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `rel-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Operations 파일 탐색 규칙:
- 1차: rel-001 -> docs/sdlc/operations/ops-001_*.operations.md 패턴 검색
- 2차: 1차 미발견 시 docs/sdlc/operations/*.operations.md에서 `입력 Release:` 줄에 해당 rel ID 또는 경로가 포함된 문서 검색
- 최종 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Release 검증 규칙:
- Operations 문서의 `입력 Release:` 줄에서 연결 Release 문서 경로를 확인한다.
- 연결 Release 문서가 존재하지 않으면 검토 불가로 보고하고 종료한다.
- 연결 Release 문서 상태가 `confirmed`가 아니면 검토 불가로 보고하고 종료한다.
5. 검토 항목(모두 충족 여부 점검, 불만족해도 진행):
- `# 1. 배포 실행 기록`: 배포 방식/환경/사전검증/실행결과/검증결과가 모두 기록되었는가?
- `# 2. 모니터링 관찰 결과`: Release #5 정의된 모니터링 항목별 관찰 결과가 모두 기록되었는가?
- `# 3. 인시던트 대응 기록`: 발생한 인시던트가 있으면 타임라인/영향도/우회책/복구 절차가 기록되었는가? (없으면 해당없음으로 표시)
- `# 4. Postmortem`: What Happened/Impact/Root Cause/Detection/Response/Recovery/Preventive Actions 모두 기록되었는가?
- `# 5. 다음 반복 환류 항목`: 운영 학습을 기반한 개선 항목과 담당자/일정이 명시되었는가?
- 본문에 `{{DATA:` 플레이스홀더가 남아 있으면 미완성으로 표시한다.
6. 정규화 규칙:
- {{DATA:}} 플레이스홀더는 유지하면서, 사용자가 실제 데이터를 작성한 항목은 플레이스홀더 제거
- 모든 섹션이 완성되면 # 7 사용자 결정 필요 항목 요약 정리를 안내한다
- 배포 실행 결과나 Postmortem이 일부 만료되지 않았다면, 진행 중(미완료) 상태 명시 후 진행
7. 응답 규칙:
- 검토 결과를 미충족 항목 목록으로 보고한다 (별도 수정 없음)
- 사용자가 문서를 갱신한 후 다시 실행하도록 안내한다
8. 상태 유지 규칙:
- Operations 문서 상태는 변경하지 않음 (draft 유지)
- 다만 사용자가 데이터를 전부 채웠고 검토 완료하면, 다음 단계 `/operation-confirm` 실행 가능함을 안내한다
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Operations 파일 탐색
3. 문서 본문 읽기
4. 연결 Release 문서 존재/상태 확인
5. 배포 실행/모니터링/인시던트/Postmortem/환류 5개 섹션 각각 검토
6. 각 섹션별 미완성 항목 확인
7. {{DATA:}} 플레이스홀더 목록 추출
8. 검토 결과 요약
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 검토 결과 (완료/미완료)
4. 미완성 항목 목록:
- 섹션별 미충족 항목
- 남은 {{DATA:}} 플레이스홀더 목록
5. 완성도 진척율 (예: 배포 실행 기록 80%, 모니터링 관찰 100% ...)
6. 다음 액션 (미완성 항목 보충 또는 /operation-confirm 실행)
사용자 입력:
{{input}}
@@ -1,56 +0,0 @@
---
description: "Use when: /planning-confirm to validate planning document readiness and mark it as confirmed"
name: "planning-confirm"
argument-hint: "Enter a Planning ID in pln-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo]
---
당신은 SDLC Planning 승인 처리 도우미다.
사용자가 입력한 Planning 문서 ID를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `pln-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. 파일 검색 규칙:
- 경로: docs/sdlc/planning/
- 패턴: <입력ID>_*.planning.md
- 미발견 시 미발견으로 보고하고 종료한다.
4. 승인 가능 여부 판断 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 2. 이번 반복 범위 경계`에 In Scope/Out of Scope가 모두 존재한다.
- `# 3. 백로그 작업 분해`에 1개 이상의 작업 항목이 존재한다.
- `# 4. WSJF 점수표`에 1개 이상의 항목과 Priority가 존재한다.
- `# 5. 작업별 수용 기준 (AC)`에 각 작업별 AC가 최소 2개 이상 존재한다.
- `# 7. Design 단계 전달 체크`에서 최종 승인 이외의 체크 항목이 모두 `[x]`이다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
5. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
6. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 7. Design 단계 전달 체크`의 최종 승인 항목을 `[x]`로 변경하고, 아래 `{{CONFIRM:` 줄을 제거한다.
d. `# 9. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 섹션 헤더(`##`)와 항목은 모두 제거한다.
7. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Planning 파일 검색
3. 문서 본문 읽기
4. 승인 가능 여부 체크리스트 전체 점검
5. 승인 불가 항목이 있으면 보고하고 종료
6. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
7. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 체크 항목, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,95 +0,0 @@
---
description: "Use when: /planning-draft to generate planning backlog, WSJF scoring table, and acceptance criteria from a Discovery document ID"
name: "planning-draft"
argument-hint: "Enter a Discovery ID in dcy-001 format."
agent: "agent"
model: "planner"
tools: [read, edit, search, web, agent, todo]
---
당신은 SDLC Planning 초안 작성 도우미다.
사용자가 입력한 Discovery 문서 ID를 기준으로 Planning 초안(백로그 + WSJF 표 + AC)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `dcy-<3자리숫자>` 형식만 허용한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화
- 중복 입력 제거
4. Discovery 파일 검색 규칙:
- 경로: docs/sdlc/discovery/
- 패턴: <입력ID>_*.discovery.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
5. Planning 파일 생성 규칙:
- 저장 폴더: docs/sdlc/planning/
- 파일명: pln-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.planning.md
- 문서번호: 기존 pln 번호 최대값 + 1
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 생성/갱신 시 overwrite
- Planning 본문 기본 템플릿: .github/templates/planning-note.template.md
6. 점수 산출물 규칙:
- 점수 CSV 결과 파일 경로: docs/sdlc/planning/planning-backlog-scores.out.csv
- 템플릿 파일 경로: .github/templates/planning-backlog-scores.template.csv
- 생성/갱신된 Planning 문서와 점수 CSV의 작업 항목/우선순위가 일치해야 한다.
7. Planning 작성 원칙:
- Discovery의 FR/NFR/리스크/성공기준을 작업 단위로 분해한다.
- 기본 우선순위 방식은 WSJF를 사용한다.
- WSJF 계산 근거(BV/TC/RR-OE/Job Size)는 항목별로 설명한다.
- 작업마다 수용 기준(AC)을 최소 2개 이상 정의한다.
8. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- 미해결 항목은 본문 관련 문장 뒤에 직접 배치한다.
9. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자 불명확 시 `{{DECIDE: 이 Planning의 최종 승인자는 누구인가?}}`
- 승인 시각 미확정 시 `{{CONFIRM: 승인 후 기재}}`
10. 범위/우선순위 규칙:
- In Scope/Out of Scope를 명시한다.
- WSJF 동률 시 RR/OE가 큰 항목을 우선한다.
- 동률이 계속되면 Job Size가 작은 항목을 우선한다.
11. DoD 체크 규칙:
- Design 단계 전달 가능 여부를 문서 내 체크리스트로 표시한다.
- 상위 우선순위 항목의 AC 검증 가능성을 확인한다.
12. # 9 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 본문에 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Discovery 파일 검색 및 본문 읽기
3. FR/NFR/리스크/성공지표를 작업 항목으로 분해
4. WSJF 점수 계산 및 우선순위 정렬
5. 작업별 AC 작성
6. Planning 문서 저장
7. 점수 CSV 저장(또는 갱신)
8. 본문 플레이스홀더 집계 후 # 9 작성
9. 최종 응답에 처리 요약 제공
Planning 문서 출력 섹션 순서(고정):
0. 문서 상태
1. Planning 개요
2. 이번 반복 범위 경계
3. 백로그 작업 분해
4. WSJF 점수표
5. 작업별 수용 기준 (AC)
6. 우선순위 조정/예외
7. Design 단계 전달 체크
8. 파일 처리 결과
9. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 Discovery ID
3. 형식 오류/미발견 여부
4. Planning 문서 생성/갱신 결과
5. 점수 CSV 생성/갱신 결과
6. 추가된 사용자 결정 항목 요약
7. 업데이트된 파일 경로 목록
8. 다음 액션
사용자 입력:
{{input}}
@@ -1,83 +0,0 @@
---
description: "Use when: /planning-review to re-review existing planning documents and update them in place from Planning IDs"
name: "planning-review"
argument-hint: "Enter Planning IDs separated by commas. Example: pln-001, pln-002"
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo, agent]
---
당신은 SDLC Planning 문서 재검토 도우미다.
사용자가 지정한 Planning 문서 ID 목록을 기준으로 Planning 문서를 재검토하고, 필요한 보정을 반영해 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력은 쉼표(,) 기준으로 분리해 Planning ID 목록으로 처리한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화(pln-001 형식)
- 중복 ID 제거
4. ID 형식은 pln-<3자리숫자>만 허용한다. 형식 오류 ID는 별도 오류 목록으로 보고한다.
5. Planning 파일 검색 규칙:
- 1차: pln-001 -> docs/sdlc/planning/pln-001_*.planning.md 패턴 검색
- 2차: 1차 미발견 시 docs/sdlc/planning/*.planning.md에서 파일명에 pln-001 토큰이 포함된 문서만 후보로 수집한다.
- 후보 문서는 `입력 Planning ID:` 필드 값이 pln-001과 정확히 일치할 때만 매칭한다. 필드가 없거나 불일치하면 매칭하지 않는다.
- 본문 단순 포함(contains) 검색만으로는 매칭하지 않는다.
6. 존재하지 않는 Planning 문서는 생성하지 않는다.
- 미발견 ID는 미발견 목록에 보고하고, 존재 문서만 재검토/수정한다.
7. 점수 산출물 정책:
- 산출물 경로는 docs/sdlc/planning/planning-backlog-scores.out.csv를 기본으로 사용한다.
- .github는 템플릿/스크립트 자산 위치이며, out.csv 생성물 경로로 사용하지 않는다.
8. 문서 재검토 항목:
- 섹션 0~9 순서/유일성 검증
- `# 0. 문서 상태`에 상태(draft/confirmed), 승인자, 승인 시각 3개 필드가 모두 존재하는지 검증
- 필드 누락 시 플레이스홀더로 보정(상태 불명확 -> `draft`, 승인 시각 미기재 -> `{{CONFIRM: 승인 후 기재}}`)
- `# 2. 이번 반복 범위 경계`에 In Scope/Out of Scope가 모두 존재하는지 검증
- `# 3. 백로그 작업 분해`에 Item ID, Work Item, 연결 요구사항, 연결 리스크, 담당 컬럼이 존재하는지 검증
- `# 4. 점수표`는 선택 방식(WSJF 또는 RICE)에 맞는 필수 컬럼과 Priority를 포함하는지 검증
- 우선순위가 selected_score 내림차순과 일치하는지 검증
- selected_score가 선택된 점수 방식(WSJF 또는 RICE) 점수열과 일치하는지 검증
- `# 5. 작업별 수용 기준 (AC)`에서 각 작업별 AC가 최소 2개 이상인지 검증
- `# 7. Design 단계 전달 체크`의 체크 근거가 본문과 일치하는지 검증
- `# 8. 파일 처리 결과`의 점수 파일 경로가 docs/sdlc/planning/planning-backlog-scores.out.csv인지 검증
9. CSV 정합성 검증:
- docs/sdlc/planning/planning-backlog-scores.out.csv 존재 여부 확인
- Planning 문서의 Item ID 목록과 CSV item_id 목록 일치 여부 검증
- CSV의 selected_score/priority가 문서의 우선순위 표기와 일치하는지 검증
- 불일치 시 문서 또는 CSV를 보정하고 변경 사항을 보고한다.
10. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장
- 기존 사용자 의도/내용은 유지하되 누락/불일치/중복만 보정
11. 플레이스홀더 규칙:
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
- 추가 의사결정이 필요한 경우 반드시 플레이스홀더를 삽입한다.
12. 플레이스홀더 집계 규칙:
- 본문에 미해결 플레이스홀더가 있으면 `# 9. 사용자 결정 필요 항목 요약`에 유형별로 집계한다.
- 본문에 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 정규화한다.
13. 여러 문서를 처리할 때 문서별 결과를 분리해 보고한다.
실행 절차:
1. 입력 ID 목록 정규화 및 형식 검증
2. 각 ID에 대해 Planning 문서 탐색(1차/2차 규칙 적용, 2차는 입력 Planning ID 필드 일치 필수)
3. 발견 문서 내용 읽기
4. 재검토 항목 기준으로 누락/불일치 판단
5. 필요한 항목만 보정하여 문서 overwrite 저장
6. 점수 CSV와 Item ID/우선순위 정합성 검증 및 필요 시 보정
7. 문서별 플레이스홀더를 #9에 집계/정규화
8. 최종 응답에 처리 요약 제공
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 대상 Planning ID 목록
3. 형식 오류 ID 목록(있으면)
4. 미발견 ID 목록(있으면)
5. 문서별 검토 결과
6. 문서별 수정 내역 요약
7. 문서별 추가된 사용자 결정 항목({{DECIDE}}/{{CONFIRM}}/{{DATA}})
8. 업데이트된 파일 경로 목록
9. 다음 액션
사용자 입력:
{{input}}
@@ -1,63 +0,0 @@
---
description: "Use when: /release-confirm to validate release document readiness and mark it as confirmed from a Verification ID"
name: "release-confirm"
argument-hint: "Enter a Verification ID in ver-001 format."
agent: "agent"
model: "releaser"
tools: [read, edit, search, todo]
---
당신은 SDLC Release 승인 처리 도우미다.
사용자가 입력한 Verification 문서 ID를 기준으로 연결된 Release 문서를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `ver-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Release 파일 탐색 규칙:
- 1차: ver-001 -> docs/sdlc/release/rel-001_*.release.md 패턴 검색
- 2차: 1차 미발견 시 docs/sdlc/release/*.release.md에서 `입력 Verification:` 줄에 해당 ver ID 또는 경로가 포함된 문서 검색
- 최종 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Verification 검증 규칙:
- Release 문서의 `입력 Verification:` 줄에서 연결 Verification 문서 경로를 확인한다.
- 연결 Verification 문서가 존재하지 않으면 승인 불가로 보고하고 종료한다.
- 연결 Verification 문서 상태가 `confirmed`가 아니면 승인 불가로 보고하고 종료한다.
5. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 1. Release 개요`에 입력 Verification/배포 대상 범위/배포 방식/배포 환경이 존재한다.
- `# 2. 배포 체크리스트`의 필수 6개 항목 결과가 모두 `완료` 또는 `해당없음`이다.
- `# 3. 롤백 계획`에 롤백 트리거/절차/데이터 롤백 전략/롤백 후 검증/롤백 커뮤니케이션이 모두 존재한다.
- `# 4. 릴리즈 노트 초안`에 변경 요약/주요 변경 내용/영향 범위/알려진 제한 사항이 존재한다.
- `# 5. 배포 후 관찰 계획`에 모니터링 항목 1개 이상과 관찰 기간이 존재한다.
- `# 6. 승인된 예외 인계 목록`이 존재한다(예외 없음은 "해당 없음" 허용).
- `# 7. Operations 단계 전달 체크`에서 최종 승인 이외의 체크 항목이 모두 `[x]`이다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
6. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
7. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 7. Operations 단계 전달 체크`의 최종 승인 항목을 `[x]`로 변경하고, 아래 `{{CONFIRM:` 줄을 제거한다.
d. `# 9. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 `##` 하위 항목은 모두 제거한다.
8. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Release 파일 탐색
3. 문서 본문 읽기
4. 연결 Verification 문서 존재/상태 확인
5. 승인 가능 여부 체크리스트 전체 점검
6. 승인 불가 항목이 있으면 보고하고 종료
7. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
8. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 체크 항목, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,85 +0,0 @@
---
description: "Use when: /release-draft to generate release draft, rollback plan, and operations handoff from a Verification document ID"
name: "release-draft"
argument-hint: "Enter a Verification ID in ver-001 format."
agent: "agent"
model: "releaser"
tools: [read, edit, search, agent, todo]
---
당신은 SDLC Release 초안 작성 도우미다.
사용자가 입력한 Verification 문서 ID를 기준으로 Release 초안(배포 체크리스트 + 롤백 계획 + 릴리즈 노트 + 관찰 계획)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `ver-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Verification 파일 검색 규칙:
- 경로: docs/sdlc/verification/
- 패턴: <입력ID>_*.verification.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. Verification 문서 상태 확인:
- 상태가 `confirmed`가 아니면 "Verification이 아직 승인되지 않았다. /verification-confirm을 먼저 실행하라"로 보고하고 종료한다.
5. Release 파일 생성 규칙:
- 저장 폴더: docs/sdlc/release/
- 파일명: rel-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.release.md
- 문서번호: 기존 rel 번호 최대값 + 1, 없으면 001부터 시작
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 생성/갱신 시 overwrite
- Release 본문 기본 템플릿: .github/templates/release-note.template.md
6. Release 작성 원칙:
- Verification의 품질 게이트 판정, 결함/예외, 회귀 결과를 근거로 배포 가능성 문맥을 작성한다.
- 배포 체크리스트(#2)는 항목별 결과(완료/미완료/해당없음)와 근거를 남긴다.
- 롤백 계획(#3)은 트리거/절차/데이터 롤백/검증/커뮤니케이션을 모두 포함한다.
- 릴리즈 노트(#4)는 변경 요약/영향 범위/알려진 제한 사항을 포함한다.
- 관찰 계획(#5)은 모니터링 지표/임계치/담당자를 포함한다.
- 승인된 예외 인계(#6)는 Verification 예외와 연결해 기록한다(없으면 해당 없음).
7. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- 미해결 항목은 본문 관련 문장 뒤에 직접 배치한다.
8. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자 불명확 시 `{{DECIDE: 이 Release의 최종 승인자는 누구인가?}}`
- 승인 시각 미확정 시 `{{CONFIRM: 승인 후 기재}}`
9. Operations 전달 체크 규칙:
- 롤백 가능한 배포 계획과 배포 체크리스트 근거가 있어야 한다.
- 관찰 포인트/장애 트리거/후속 대응 절차가 정의되어야 한다.
- 승인된 예외가 있으면 인계 이력이 포함되어야 한다.
10. # 9 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Verification 파일 검색 및 상태 확인
3. Verification 본문(품질 게이트, 결함/예외, 회귀 결과, Release 전달 체크) 읽기
4. 배포 체크리스트/롤백 계획/릴리즈 노트/관찰 계획 작성
5. Release 문서 저장
6. 본문 플레이스홀더 집계 후 # 9 작성
7. 최종 응답에 처리 요약 제공
Release 문서 출력 섹션 순서(고정):
0. 문서 상태
1. Release 개요
2. 배포 체크리스트
3. 롤백 계획
4. 릴리즈 노트 초안
5. 배포 후 관찰 계획
6. 승인된 예외 인계 목록
7. Operations 단계 전달 체크
8. 파일 처리 결과
9. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 입력 Verification 문서 경로
3. 형식 오류/미발견/미승인 여부
4. Release 문서 생성/갱신 결과
5. 추가된 사용자 결정 항목 요약
6. 업데이트된 파일 경로 목록
7. 다음 액션
사용자 입력:
{{input}}
@@ -1,80 +0,0 @@
---
description: "Use when: /release-review to re-review existing release documents and update them in place from Verification IDs"
name: "release-review"
argument-hint: "Enter Verification IDs separated by commas. Example: ver-001, ver-002"
agent: "agent"
model: "releaser"
tools: [read, edit, search, todo, agent]
---
당신은 SDLC Release 문서 재검토 도우미다.
사용자가 지정한 Verification 문서 ID 목록을 기준으로 해당 Release 문서를 재검토하고, 필요한 보정을 반영해 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력은 쉼표(,) 기준으로 분리해 Verification ID 목록으로 처리한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화(ver-001 형식)
- 중복 ID 제거
4. ID 형식은 `ver-<3자리숫자>`만 허용한다. 형식 오류 ID는 별도 오류 목록으로 보고한다.
5. Release 파일 탐색 규칙:
- 1차: ver-001 -> docs/sdlc/release/rel-001_*.release.md 패턴 검색
- 2차: 1차 미발견 시 docs/sdlc/release/*.release.md에서 `입력 Verification:` 줄에 해당 ver ID 또는 경로가 포함된 문서 검색
6. 존재하지 않는 Release 문서는 생성하지 않는다.
- 미발견 ID는 미발견 목록에 보고하고, 존재 문서만 재검토/수정한다.
7. 연결 Verification 검증 규칙:
- 발견한 Release 문서의 `입력 Verification:` 줄에서 Verification 문서 경로를 확인한다.
- 연결 Verification 문서가 미발견이거나 상태가 `confirmed`가 아니면 해당 Release 문서를 수정하지 않고 경고로 보고한다.
8. 문서 재검토 항목:
- 섹션 0~9 순서/유일성 검증
- `# 0. 문서 상태`에 상태(draft/confirmed), 승인자, 승인 시각 3개 필드 존재 여부 검증
- 필드 누락 시 플레이스홀더로 보정(상태 불명확 -> `draft`, 승인 시각 미기재 -> `{{CONFIRM: 승인 후 기재}}`)
- `# 1. Release 개요`에 입력 Verification/배포 대상 범위/배포 방식/배포 환경 존재 여부 검증
- `# 2. 배포 체크리스트`에 6개 필수 항목(설정/데이터/호환성/의존성/트래픽/커뮤니케이션) 존재 여부 검증
- `# 3. 롤백 계획`에 트리거/절차/데이터 롤백/검증/커뮤니케이션/참조 런북 존재 여부 검증
- `# 4. 릴리즈 노트 초안`에 변경 요약/주요 변경/영향 범위/제한 사항 존재 여부 검증
- `# 5. 배포 후 관찰 계획`에 모니터링 표 1개 이상과 관찰 기간 존재 여부 검증
- `# 6. 승인된 예외 인계 목록` 존재 여부 검증(예외 없음은 `해당 없음` 허용)
- `# 7. Operations 단계 전달 체크`의 체크 항목 수/문구/근거 일치성 검증
- `# 8. 파일 처리 결과` 경로가 현재 문서 경로와 일치하는지 검증
9. 체크 정규화 규칙:
- `# 7. Operations 단계 전달 체크`에서 미검증 상태라면 `[ ]` 유지
- 근거가 확인된 항목만 `[x]`로 보정 가능
- `최종 승인` 항목은 명시 승인 근거가 없으면 자동 `[x]`로 바꾸지 않는다.
10. 플레이스홀더 규칙:
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
11. 플레이스홀더 집계 규칙:
- 본문의 미해결 플레이스홀더를 `# 9. 사용자 결정 필요 항목 요약`에 유형별 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 정규화한다.
12. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장
- 기존 사용자 의도/근거를 유지하면서 누락/불일치/중복만 보정
13. 여러 문서를 처리할 때 문서별 결과를 분리해 보고한다.
실행 절차:
1. 입력 ID 목록 정규화 및 형식 검증
2. 각 ID에 대해 Release 문서 탐색(1차/2차 규칙 적용)
3. 발견 문서의 연결 Verification 존재/상태 확인
4. 발견 문서 내용 읽기
5. 재검토 항목 기준으로 누락/불일치 판단
6. 필요한 항목만 보정하여 문서 overwrite 저장
7. 문서별 플레이스홀더를 #9에 집계/정규화
8. 최종 응답에 처리 요약 제공
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 대상 Verification ID 목록
3. 형식 오류 ID 목록(있으면)
4. Release 미발견 ID 목록(있으면)
5. 연결 Verification 미승인/미발견 목록(있으면)
6. 문서별 검토 결과
7. 문서별 수정 내역 요약
8. 문서별 추가된 사용자 결정 항목({{DECIDE}}/{{CONFIRM}}/{{DATA}})
9. 업데이트된 파일 경로 목록
10. 다음 액션
사용자 입력:
{{input}}
@@ -0,0 +1,148 @@
---
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}}` → 담당자 지정 필요로 유지)
- **수정 사항 목록** (적용된 변경)
- **최종 판단**
- 승인 가능 / 조건부 / 보류
- 근거 및 남은 작업 사항
@@ -0,0 +1,87 @@
---
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 판단으로 치환한 항목은 합리적 근거를 함께 설명한다.
- 의도적으로 플레이스홀더를 유지한 이유도 명시한다.
- 승인 판단은 객관적 기준(섹션 완성도, 형식 준수, 범위 명확성)을 우선으로 한다.
@@ -0,0 +1,111 @@
---
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}}` → 담당자 지정 필요로 유지)
- **수정 사항 목록** (적용된 변경)
- **최종 판단**
- 승인 가능 / 조건부 / 보류
- 근거 및 남은 작업 사항
@@ -0,0 +1,110 @@
---
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}}` → 담당자 지정 필요로 유지)
- **수정 사항 목록** (적용된 변경)
- **최종 판단**
- 승인 가능 / 조건부 / 보류
- 근거 및 남은 작업 사항
@@ -0,0 +1,127 @@
---
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`를 직접 읽어서 수행한다. 기억이나 추론에 의존하지 않는다.
@@ -0,0 +1,110 @@
---
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}}` → 담당자 지정 필요로 유지)
- **수정 사항 목록** (적용된 변경)
- **최종 판단**
- 승인 가능 / 조건부 / 보류
- 근거 및 남은 작업 사항
@@ -0,0 +1,114 @@
---
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}}` → 검증 담당자 지정 필요로 유지)
- **수정 사항 목록** (적용된 변경)
- **최종 판단**
- 승인 가능 / 조건부 / 보류
- 근거 및 남은 작업 사항
@@ -0,0 +1,99 @@
---
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` 상태에서만 허용한다.
+257
View File
@@ -0,0 +1,257 @@
---
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` 실행 시: 검토 결과가 **보류(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,63 +0,0 @@
---
description: "Use when: /verification-confirm to validate verification document readiness and mark it as confirmed"
name: "verification-confirm"
argument-hint: "Enter a Verification ID in ver-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo]
---
당신은 SDLC Verification 승인 처리 도우미다.
사용자가 입력한 Verification 문서 ID를 검토해 승인 가능 여부를 판단하고, 승인 가능하면 문서를 confirmed 상태로 전환한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `ver-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. 파일 검색 규칙:
- 경로: docs/sdlc/verification/
- 패턴: <입력ID>_*.verification.md
- 미발견 시 미발견으로 보고하고 종료한다.
4. 연결 Implementation 검증 규칙:
- Verification 문서의 `입력 Implementation:` 줄에서 연결된 Implementation 문서 경로를 확인한다.
- 연결 Implementation 문서가 존재하지 않으면 승인 불가로 보고하고 종료한다.
- 연결 Implementation 문서 상태가 `confirmed`가 아니면 승인 불가로 보고하고 종료한다.
5. 승인 가능 여부 판단 기준(모두 충족해야 승인 가능):
- `# 0. 문서 상태`의 상태가 `draft`인지 확인한다. 이미 `confirmed`이면 "이미 승인된 문서"로 보고하고 종료한다.
- `# 1. Verification 개요`에 입력 Implementation/목적/검증 대상 작업이 존재한다.
- `# 2. 검증 범위`에 In Scope/Out of Scope가 모두 존재한다.
- `# 3. AC별 검증 결과`에 1개 이상의 검증 항목이 존재한다.
- `# 4. 결함 목록`과 심각도 기준이 존재한다.
- `# 5. 회귀 테스트 결과`에 1개 이상의 테스트 항목이 존재한다.
- `# 6. 예외 승인 목록`이 존재한다(예외 없음은 "해당 없음" 허용).
- `# 7. Release 단계 전달 체크`에서 최종 승인 이외의 체크 항목이 모두 `[x]`이다.
- 본문에 `{{DECIDE:` 또는 `{{DATA:` 형태의 미해결 플레이스홀더가 없다.
6. 승인 불가 조건에 해당하면 해당 항목을 목록으로 보고하고 종료한다. 문서를 수정하지 않는다.
7. 승인 가능 시 아래 순서로 문서를 수정한다:
a. `# 0. 문서 상태`의 상태를 `confirmed`로 변경한다.
b. `# 0. 문서 상태`의 승인 시각을 현재 날짜(YYYY-MM-DD)로 기재한다. `{{CONFIRM:` 형식이 남아 있으면 현재 날짜로 대체한다.
c. `# 7. Release 단계 전달 체크`의 최종 승인 항목을 `[x]`로 변경하고, 아래 `{{CONFIRM:` 줄을 제거한다.
d. `# 9. 사용자 결정 필요 항목 요약`의 내용을 `현재 미해결 플레이스홀더 없음`으로 대체한다. 기존 섹션 헤더(`##`)와 항목은 모두 제거한다.
8. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장한다.
- 위의 4개 항목(a~d) 외에는 기존 내용을 변경하지 않는다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Verification 파일 검색
3. 문서 본문 읽기
4. 연결 Implementation 문서 존재/상태 확인
5. 승인 가능 여부 체크리스트 전체 점검
6. 승인 불가 항목이 있으면 보고하고 종료
7. 승인 가능하면 a~d 순서로 문서 수정 및 overwrite 저장
8. 최종 응답에 처리 결과 제공
최종 응답 형식:
1. 실행 입력 요약
2. 대상 파일 경로
3. 승인 가능 여부 (가능/불가)
4. 승인 불가 시: 미충족 항목 목록
5. 승인 완료 시: 수정 내역 요약 (상태 변경, 승인 시각, 체크 항목, 플레이스홀더 정리)
6. 다음 액션
사용자 입력:
{{input}}
@@ -1,84 +0,0 @@
---
description: "Use when: /verification-draft to generate verification draft, quality-gate checks, and defect tracking plan from an Implementation document ID"
name: "verification-draft"
argument-hint: "Enter an Implementation ID in imp-001 format."
agent: "agent"
model: "reviewer"
tools: [read, edit, search, agent, todo]
---
당신은 SDLC Verification 초안 작성 도우미다.
사용자가 입력한 Implementation 문서 ID를 기준으로 Verification 초안(AC 검증 결과 구조 + 결함 분류 + 품질 게이트 판정 + Release 전달 준비)을 작성하고 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력 ID는 `imp-<3자리숫자>` 형식만 허용한다. 형식 오류 시 오류로 보고하고 종료한다.
3. Implementation 파일 검색 규칙:
- 경로: docs/sdlc/implementation/
- 패턴: <입력ID>_*.implementation.md
- 미발견 시 파일 생성 없이 미발견으로 보고하고 종료한다.
4. Implementation 문서 상태 확인:
- 상태가 `confirmed`가 아니면 "Implementation이 아직 승인되지 않았다. /implementation-confirm을 먼저 실행하라"로 보고하고 종료한다.
5. Verification 파일 생성 규칙:
- 저장 폴더: docs/sdlc/verification/
- 파일명: ver-<3자리문서번호>_YYYY-MM-DD_<topic-slug>.verification.md
- 문서번호: 기존 ver 번호 최대값 + 1, 없으면 001부터 시작
- 날짜: 생성일 기준, 이후 수정 시 파일명 날짜 유지
- append 금지, 생성/갱신 시 overwrite
- Verification 본문 기본 템플릿: .github/templates/verification-note.template.md
6. Verification 작성 원칙:
- Implementation의 작업 단위/검증 계획(#3, #5)을 기준으로 AC별 검증 결과 틀을 만든다.
- 결함 분류는 Blocker/Major/Minor 기준을 유지한다.
- 품질 게이트 판정(Blocker 0, Major 0 또는 승인 예외)을 명시한다.
- Release로 전달할 배포 가능 여부/예외 목록/잔여 리스크를 포함한다.
7. 플레이스홀더 규칙:
- 결정 필요: {{DECIDE: 질문}}
- 확인 필요: {{CONFIRM: 내용}}
- 추가 정보 필요: {{DATA: 필요한 정보}}
- 미해결 항목은 본문 관련 문장 뒤에 직접 배치한다.
8. 문서 상태 규칙:
- 최상단 `# 0. 문서 상태` 필수
- 상태: 초안 생성 시 `draft`
- 승인자 불명확 시 `{{DECIDE: 이 Verification의 최종 승인자는 누구인가?}}`
- 승인 시각 미확정 시 `{{CONFIRM: 승인 후 기재}}`
9. Release 전달 체크 규칙:
- Blocker/Major 및 예외 승인 상태가 점검 가능해야 한다.
- 테스트 실행 근거가 문서에 연결되어야 한다.
- Release 전달 항목(배포 가능 여부, 잔여 리스크, 승인 예외)이 정리되어야 한다.
10. # 9 사용자 결정 필요 항목 요약 규칙:
- 본문의 {{DECIDE}}/{{CONFIRM}}/{{DATA}}를 유형별로 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 작성한다.
실행 절차:
1. 입력 ID 정규화 및 형식 검증
2. Implementation 파일 검색 및 상태 확인
3. Implementation 본문(작업 단위, 검증 계획, 영향도) 읽기
4. AC별 검증 결과/결함/회귀/예외 구조 작성
5. Release 전달 체크 항목 작성
6. Verification 문서 저장
7. 본문 플레이스홀더 집계 후 # 9 작성
8. 최종 응답에 처리 요약 제공
Verification 문서 출력 섹션 순서(고정):
0. 문서 상태
1. Verification 개요
2. 검증 범위
3. AC별 검증 결과
4. 결함 목록
5. 회귀 테스트 결과
6. 예외 승인 목록
7. Release 단계 전달 체크
8. 파일 처리 결과
9. 사용자 결정 필요 항목 요약
최종 응답 형식:
1. 실행 입력 요약
2. 입력 Implementation 문서 경로
3. 형식 오류/미발견/미승인 여부
4. Verification 문서 생성/갱신 결과
5. 추가된 사용자 결정 항목 요약
6. 업데이트된 파일 경로 목록
7. 다음 액션
사용자 입력:
{{input}}
@@ -1,83 +0,0 @@
---
description: "Use when: /verification-review to re-review existing verification documents and update them in place from Verification IDs"
name: "verification-review"
argument-hint: "Enter Verification IDs separated by commas. Example: ver-001, ver-002"
agent: "agent"
model: "reviewer"
tools: [read, edit, search, todo, agent]
---
당신은 SDLC Verification 문서 재검토 도우미다.
사용자가 지정한 Verification 문서 ID 목록을 기준으로 해당 Verification 문서를 재검토하고, 필요한 보정을 반영해 저장한다.
반드시 아래 규칙을 지켜라.
1. 출력은 한국어로 작성한다.
2. 입력은 쉼표(,) 기준으로 분리해 Verification ID 목록으로 처리한다.
3. 입력 정규화 규칙:
- 공백 제거
- 소문자 정규화(ver-001 형식)
- 중복 ID 제거
4. ID 형식은 `ver-<3자리숫자>`만 허용한다. 형식 오류 ID는 별도 오류 목록으로 보고한다.
5. Verification 파일 검색 규칙:
- 경로: `docs/sdlc/verification/`
- 패턴: `<입력ID>_*.verification.md`
- 미발견 ID는 미발견 목록으로 보고하고, 존재 문서만 재검토한다.
6. 존재하지 않는 Verification 문서는 생성하지 않는다.
7. 연결 Implementation 검증 규칙:
- 발견한 Verification 문서의 `입력 Implementation:` 줄에서 연결 경로를 확인한다.
- 연결된 Implementation 문서가 미발견이거나 상태가 `confirmed`가 아니면 해당 Verification 문서를 수정하지 않고 경고로 보고한다.
8. 문서 재검토 항목:
- 섹션 0~9 순서/유일성 검증
- `# 0. 문서 상태`에 상태(draft/confirmed), 승인자, 승인 시각 3개 필드 존재 여부 검증
- 상태가 누락/비정상 값이면 `draft`로 보정
- 승인자 누락 시 `{{DECIDE: 이 Verification의 최종 승인자는 누구인가?}}`로 보정
- 승인 시각 누락 시 `{{CONFIRM: 승인 후 기재}}`로 보정
- `# 1. Verification 개요`에 입력 Implementation/목적/검증 대상 작업 존재 여부 검증
- `# 2. 검증 범위`에 In Scope/Out of Scope 존재 여부 검증
- `# 3. AC별 검증 결과`에 1개 이상의 검증 항목과 품질 게이트 판정 존재 여부 검증
- `# 4. 결함 목록`과 심각도 기준 존재 여부 검증
- `# 5. 회귀 테스트 결과`와 회귀 리스크 평가 존재 여부 검증
- `# 6. 예외 승인 목록` 존재 여부 검증(예외 없음은 `해당 없음` 허용)
- `# 7. Release 단계 전달 체크`의 체크 항목 수/문구/근거 일치성 검증
- `# 8. 파일 처리 결과`의 경로가 현재 문서 경로와 일치하는지 검증
9. 체크 정규화 규칙:
- `# 7. Release 단계 전달 체크`에서 미검증 상태라면 `[ ]` 유지
- 품질 게이트와 근거가 충족된 항목은 `[x]`로 보정 가능
- `최종 승인` 항목은 명시 승인 근거가 없으면 자동 `[x]`로 바꾸지 않는다.
10. 플레이스홀더 규칙:
- {{DECIDE: 질문}}
- {{CONFIRM: 내용}}
- {{DATA: 필요한 정보}}
- 추가 의사결정/확인/데이터가 필요한 경우 본문 관련 위치에 삽입한다.
11. 플레이스홀더 집계 규칙:
- 본문의 미해결 플레이스홀더를 `# 9. 사용자 결정 필요 항목 요약`에 유형별 집계한다.
- 미해결 플레이스홀더가 없으면 `현재 미해결 플레이스홀더 없음`으로 정규화한다.
12. 수정 규칙:
- append 금지, 단일 완성본으로 overwrite 저장
- 기존 사용자 의도/근거를 유지하면서 누락/불일치/중복만 보정
13. 여러 문서를 처리할 때 문서별 결과를 분리해 보고한다.
실행 절차:
1. 입력 ID 목록 정규화 및 형식 검증
2. 각 ID에 대해 Verification 문서 탐색
3. 발견 문서의 연결 Implementation 존재/상태 확인
4. 발견 문서 내용 읽기
5. 재검토 항목 기준으로 누락/불일치 판단
6. 필요한 항목만 보정하여 문서 overwrite 저장
7. 문서별 플레이스홀더를 #9에 집계/정규화
8. 최종 응답에 처리 요약 제공
최종 응답 형식:
1. 실행 입력 요약
2. 정규화된 대상 Verification ID 목록
3. 형식 오류 ID 목록(있으면)
4. Verification 미발견 ID 목록(있으면)
5. 연결 Implementation 미승인/미발견 목록(있으면)
6. 문서별 검토 결과
7. 문서별 수정 내역 요약
8. 문서별 추가된 사용자 결정 항목({{DECIDE}}/{{CONFIRM}}/{{DATA}})
9. 업데이트된 파일 경로 목록
10. 다음 액션
사용자 입력:
{{input}}
@@ -1,60 +0,0 @@
# API Service Rollback Runbook
## Metadata
1. Service: api
2. Runtime: uvicorn direct run
3. Environment: production
4. Owner: backend team
5. On-call Contact: backend-oncall
6. Last Updated (UTC): 2026-04-14
## Trigger Conditions
1. Error Rate Threshold: 5xx > 2% for 5 minutes
2. Latency Threshold: p95 > 1200ms for 10 minutes
3. Availability Threshold: successful request rate < 99.5%
4. Data Integrity Alarm: write/read mismatch alerts > 0
5. Business Impact Trigger: 결제/주문 API 실패 다수 발생
## Pre-rollback Checks
1. 장애 범위 확인(엔드포인트/사용자/데이터)
2. 최근 릴리즈 커밋과 변경 DB 스크립트 확인
3. 직전 안정 배포 아티팩트 식별
4. 공지 채널(내부/외부) 준비
## Rollback Procedure
1. 신규 배포 트래픽 중단
2. 안정 버전 코드로 교체
3. uvicorn 프로세스 재기동
4. 헬스체크와 핵심 API 호출 검증
## Data Recovery Plan
1. 복원 대상 데이터 범위: 최근 배포 이후 변경분
2. 복원 방법: 백업 스냅샷 + 트랜잭션 로그 검증
3. 데이터 무결성 검증 방법: 주문/결제 집계 대조
4. 복원 예상 시간: 20~40분
## Validation After Rollback
1. /health, /ready 정상
2. 로그인/주문/결제 정상 시나리오 통과
3. 5xx 비율 0.5% 이하 복귀
4. p95 지연 700ms 이하 복귀
## Communication Plan
1. 내부: 롤백 시작/완료 시점 공유
2. 외부: 사용자 영향 공지(필요 시)
3. 상태 업데이트 주기: 15분
4. 종료 공지 조건: 핵심 지표 30분 안정화
## Post-rollback Follow-up
1. 원인 분석 티켓: INC-API-YYYYMMDD
2. 재배포 조건: 회귀 테스트 + 성능 검증 통과
3. 임시 완화책 제거 계획: 48시간 내 정리
4. Postmortem 일정: 24시간 내
@@ -1,58 +0,0 @@
# Web Service Rollback Runbook
## Metadata
1. Service: web
2. Environment: production
3. Owner: frontend team
4. On-call Contact: frontend-oncall
5. Last Updated (UTC): 2026-04-14
## Trigger Conditions
1. JS Error Threshold: 신규 릴리즈 후 오류율 2배 이상
2. Page Load Threshold: p75 LCP > 4.0s for 10 minutes
3. Availability Threshold: 주요 페이지 성공률 < 99.0%
4. Business Impact Trigger: 로그인/결제 전환율 급락
## Pre-rollback Checks
1. 영향 페이지 및 브라우저 범위 확인
2. CDN 캐시 정책 확인
3. 직전 안정 빌드 해시 확인
4. 공지 채널 준비
## Rollback Procedure
1. CDN 라우팅을 이전 빌드로 전환
2. 신규 정적 자산 캐시 무효화
3. 핵심 사용자 플로우 스모크 테스트 실행
4. 오류/성능 지표 확인
## Data Recovery Plan
1. 복원 대상 데이터 범위: 클라이언트 이벤트 손실 구간
2. 복원 방법: 서버 로그 기반 보정 집계
3. 데이터 무결성 검증 방법: 퍼널 단계별 이벤트 대조
4. 복원 예상 시간: 15~30분
## Validation After Rollback
1. 로그인/탐색/결제 플로우 정상
2. JS 오류율 기준치 복귀
3. LCP 및 API 오류율 정상화
4. 사용자 CS 급증 여부 확인
## Communication Plan
1. 내부: 배포 채널 및 온콜 채널 공지
2. 외부: 장애 공지 페이지 업데이트(필요 시)
3. 상태 업데이트 주기: 15분
4. 종료 공지 조건: 30분 이상 안정화
## Post-rollback Follow-up
1. 원인 분석 티켓: INC-WEB-YYYYMMDD
2. 재배포 조건: 크로스브라우저 회귀 테스트 통과
3. 임시 완화책 제거 계획: 48시간 내
4. Postmortem 일정: 24시간 내
@@ -1,58 +0,0 @@
# Worker Service Rollback Runbook
## Metadata
1. Service: worker
2. Environment: production
3. Owner: platform team
4. On-call Contact: platform-oncall
5. Last Updated (UTC): 2026-04-14
## Trigger Conditions
1. Queue Backlog Threshold: 대기 작업 10,000건 초과 10분 지속
2. Failure Threshold: 작업 실패율 > 3% for 10 minutes
3. Processing Delay Threshold: 평균 처리 지연 > 2x baseline
4. Data Integrity Alarm: 중복 처리 또는 누락 처리 감지
5. Business Impact Trigger: 정산/알림 지연 사용자 영향 확대
## Pre-rollback Checks
1. 실패 작업 샘플링 및 영향 범위 확인
2. 재처리 가능 여부 확인
3. 직전 안정 버전 아티팩트 확인
4. 공지 채널 준비
## Rollback Procedure
1. 신규 작업 소비 일시 중단
2. 안정 버전으로 워커 교체
3. 단계적 소비 재개(10% -> 50% -> 100%)
4. 실패/처리율 지표 확인
## Data Recovery Plan
1. 복원 대상 데이터 범위: 누락/중복 처리된 이벤트
2. 복원 방법: dead-letter queue 재처리 + idempotency 검증
3. 데이터 무결성 검증 방법: 이벤트 카운트/체크섬 대조
4. 복원 예상 시간: 30~60분
## Validation After Rollback
1. backlog 감소 추세 확인
2. 실패율 1% 이하 복귀
3. 중복 처리 경보 해제
4. 핵심 배치 완료 시간 정상화
## Communication Plan
1. 내부: 대응 진행 상황 15분 주기 공유
2. 외부: SLA 영향 시 사전 공지
3. 종료 공지 조건: backlog 정상화 및 실패율 안정화
## Post-rollback Follow-up
1. 원인 분석 티켓: INC-WORKER-YYYYMMDD
2. 재배포 조건: 부하 테스트 재통과
3. 임시 완화책 제거 계획: 72시간 내
4. Postmortem 일정: 24시간 내
-102
View File
@@ -1,102 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
log() {
printf '[bootstrap] %s\n' "$*"
}
fail() {
printf '[bootstrap] ERROR: %s\n' "$*" >&2
exit 1
}
require_linux() {
if [ "$(uname -s)" != "Linux" ]; then
fail "This bootstrap script supports Linux only."
fi
}
ensure_repo_structure() {
local dirs=(
".github/agents"
".github/instructions"
".github/prompts"
".github/runbooks/services"
".github/scripts"
".github/templates"
"docs/sdlc/discovery"
"docs/sdlc/planning"
"docs/sdlc/design"
"docs/sdlc/verification"
"docs/sdlc/release"
"docs/sdlc/operations"
)
for dir in "${dirs[@]}"; do
mkdir -p "${REPO_ROOT}/${dir}"
done
}
report_github_structure() {
log "Current .github structure:"
if command -v find >/dev/null 2>&1; then
find "${REPO_ROOT}/.github" -maxdepth 2 -mindepth 1 | sed "s#${REPO_ROOT}/##" | sort
else
log "find command not available; skipping structure scan."
fi
}
has_python_311_or_higher() {
command -v python3 >/dev/null 2>&1 \
&& python3 -c 'import sys; raise SystemExit(0 if sys.version_info >= (3, 11) else 1)'
}
install_python_311() {
if has_python_311_or_higher; then
return 0
fi
if command -v apt-get >/dev/null 2>&1 && command -v sudo >/dev/null 2>&1; then
log "Installing Python 3.11 via apt-get (minimum required: 3.11)."
sudo apt-get update
sudo apt-get install -y python3.11
else
fail "Python 3.11+ is required. Install it manually or provide apt-get + sudo."
fi
has_python_311_or_higher || fail "Python 3.11+ installation check failed."
}
has_node_20() {
command -v node >/dev/null 2>&1 \
&& node -e 'const [major] = process.versions.node.split(".").map(Number); process.exit(major >= 20 ? 0 : 1);'
}
install_node_20() {
if has_node_20; then
return 0
fi
if command -v apt-get >/dev/null 2>&1 && command -v sudo >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then
log "Installing Node.js 20 LTS via NodeSource (minimum required: v20)."
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
else
fail "Node.js v20+ is required. Install it manually or provide apt-get + sudo + curl."
fi
has_node_20 || fail "Node.js v20+ installation check failed."
}
main() {
require_linux
log "Repository root: ${REPO_ROOT}"
ensure_repo_structure
install_python_311
install_node_20
report_github_structure
log "python3: $(python3 --version 2>&1)"
log "node: $(node --version 2>&1)"
log "Bootstrap completed successfully."
}
main "$@"
@@ -1,26 +0,0 @@
---
name: release-notes
description: "Use when: release note drafting, deployment communication, change impact summary"
---
# Release Notes Skill
## Goal
배포 변경사항과 사용자 영향을 이해하기 쉬운 형식으로 전달한다.
## Workflow
1. 변경사항을 사용자 영향 기준으로 분류한다.
2. 주의사항/호환성/알려진 이슈를 정리한다.
3. 롤백 또는 대응 가이드를 포함한다.
4. 배포 후 모니터링 포인트를 함께 제공한다.
## Output Template
1. Summary
2. What Changed
3. User Impact
4. Migration or Compatibility Notes
5. Known Issues and Workarounds
6. Rollback and Monitoring Notes
@@ -1,26 +0,0 @@
---
name: requirements-refinement
description: "Use when: vague request, requirement clarification, acceptance criteria drafting"
---
# Requirements Refinement Skill
## Goal
모호한 요청을 실행 가능한 요구사항과 수용 기준으로 변환한다.
## Workflow
1. 문제/목표/제약을 분리해 질문 목록을 만든다.
2. 기능/비기능 요구사항을 구조화한다.
3. 각 요구사항에 수용 기준(AC)을 붙인다.
4. 범위 밖 항목(Out of Scope)을 명시한다.
## Output Template
1. Problem Statement
2. Functional Requirements
3. Non-Functional Requirements
4. Acceptance Criteria
5. Out of Scope
6. Open Questions
-26
View File
@@ -1,26 +0,0 @@
---
name: test-design
description: "Use when: test case design, verification planning, regression risk assessment"
---
# Test Design Skill
## Goal
요구사항과 변경 영향도 기반으로 누락 없는 테스트 시나리오를 만든다.
## Workflow
1. 수용 기준을 테스트 관점으로 분해한다.
2. 정상/경계/예외 시나리오를 도출한다.
3. 회귀 영향 영역을 식별한다.
4. 우선순위 기반 실행 순서를 제안한다.
## Output Template
1. Test Scope
2. Positive Cases
3. Boundary Cases
4. Negative Cases
5. Regression Targets
6. Execution Priority
@@ -1,71 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Design의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. Design 개요
- 입력 Planning:
- 목적:
- 설계 대상 작업 (WSJF 상위 3개):
- 1순위:
- 2순위:
- 3순위:
# 2. 설계 대안 비교 (우선순위 상위 작업)
## <작업 ID>: <작업명>
### 대안 A
- 설명:
- 장점:
- 단점:
### 대안 B
- 설명:
- 장점:
- 단점:
### 선택 결정
- 선택: 대안 A / 대안 B
- 근거:
# 3. 인터페이스 정의
## <작업 ID>: <작업명>
- 입력:
- 출력:
- 오류 경로:
# 4. 데이터/흐름 설계
## <작업 ID>: <작업명>
- 주요 데이터 경로:
- 상태 변화:
# 5. 테스트 전략 연계 (AC 매핑)
| 작업 ID | AC | 검증 방법 | 검증 포인트 |
|---|---|---|---|
| P-001 | AC-1 | | |
| P-001 | AC-2 | | |
# 6. 리스크 대응 설계
| 리스크 ID | 리스크 내용 | 설계 대응 전략 |
|---|---|---|
| R-1 | | |
# 7. Implementation 단계 전달 체크
- [ ] 우선순위 상위 작업의 설계 근거(대안 비교 + 선택 이유)가 존재함
- [ ] 전체 작업의 인터페이스(입력/출력/오류 경로)가 정의됨
- [ ] AC와 검증 포인트가 매핑됨
- [ ] Planning 리스크에 대한 설계 대응이 반영됨
- [ ] 최종 승인
- {{CONFIRM: Design 초안 승인 여부를 확인하라}}
# 8. 파일 처리 결과
- 생성/갱신 경로:
# 9. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- Design 초안 승인 여부를 확인하라. (위치: #7)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,90 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 승인자를 지정하라}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. 계획 상태 요약
- Discovery 문서 현황:
- Planning 점수 파일 현황: docs/sdlc/planning/planning-backlog-scores.out.csv
- 해석:
# 2. 요구사항 판정 결과 (완전 중복/유사/신규 + 근거)
- 판정: {{DECIDE: 완전 중복/유사/신규 중 하나를 선택하라}}
- 근거
-
-
# 3. 문제점의 요약
- 현재 상태
-
- 기대 상태
-
- 이해관계자
-
- 제약사항
-
# 4. 이번에 만들 기능 1개
-
# 5. 요구사항 목록
## 기능 요구사항
- FR-1:
- FR-2:
## 비기능 요구사항
- NFR-1:
- NFR-2:
## 범위 경계
- In Scope
-
- Out of Scope
-
# 6. 리스크/가정 목록
## 리스크
- R-1 (High/Medium/Low):
- 완화 방안:
- R-2 (High/Medium/Low):
- 완화 방안:
## 가정
- A-1:
- A-2:
# 7. 초기 성공 기준
- S-1:
- S-2:
## 측정 방식 및 데이터 출처
- S-1 측정 방식: / 데이터 출처:
- S-2 측정 방식: / 데이터 출처:
# 8. Planning으로 넘기기 전 확인 체크
- Planning 시작 시점은 {{DECIDE: 즉시 가능/보류 중 선택하라}}.
- [ ] 범위(In Scope/Out of Scope) 확정
- 기준:
- [ ] 성공 지표의 측정 방식/데이터 출처 확정
- 기준:
- [ ] High 영향 플레이스홀더 우선순위 및 해소 책임자 지정
- 기준:
- [ ] 승인자 확정
- 기준:
# 9. 파일 처리 결과 (생성/미생성 경로)
- 처리 결과:
- 생성 경로:
- 재검토:
- 참조 문서:
# 10. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- (없으면 이 섹션 제거)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,62 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Implementation의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. Implementation 개요
- 입력 Design:
- 목적:
- 이번 구현 우선순위 작업:
- 1순위:
- 2순위:
- 3순위:
# 2. 이번 구현 범위
## In Scope
-
## Out of Scope
-
# 3. 작업 단위 분해
| Impl ID | 작업명 | 연결 설계/AC | 변경 유형 | 우선순위 |
|---|---|---|---|---|
| I-001 | | | | |
# 4. 파일 변경 계획
| Impl ID | 대상 파일 | 변경 목적 | 변경 종류(생성/수정) |
|---|---|---|---|
| I-001 | | | |
# 5. 테스트/검증 계획
| Impl ID | 검증 방법 | 성공 기준 | 근거 |
|---|---|---|---|
| I-001 | | | |
# 6. 영향도 및 의존성 점검
| 항목 | 영향 내용 | 대응 방안 |
|---|---|---|
| 코드 | | |
| 문서 | | |
| 설정/의존성 | | |
# 7. Verification 단계 전달 체크
- [ ] 구현 범위가 설계 문서와 연결됨
- [ ] 작업 단위별 검증 방법이 정의됨
- [ ] 영향 파일과 의존성 점검 결과가 기록됨
- [ ] Verification에 전달할 실행/검증 근거가 정의됨
- [ ] 최종 승인
- {{CONFIRM: Implementation 초안 승인 여부를 확인하라}}
# 8. 파일 처리 결과
- 생성/갱신 경로:
# 9. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- Implementation 초안 승인 여부를 확인하라. (위치: #7)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,80 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Operations의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 배포 완료 후 Operations 확인}}
# 1. 배포 실행 기록
- 입력 Release: {{DATA: docs/sdlc/release/rel-XXX_YYYY-MM-DD_topic.release.md}}
- 배포 방식: {{DATA: 점진 배포/일괄 배포}}
- 배포 환경: {{DATA: production/staging 등}}
- 배포 창(UTC): {{DATA: 시작/종료 시각}}
## 사전 검증
- 체크리스트 점검 결과: {{DATA: 완료/미완료 항목}}
- 롤백 준비 상태: {{DATA: 준비됨/미준비 + 근거}}
## 실행 결과
- 실행 명령/절차 요약: {{DATA: 실행 로그 요약}}
- 결과: {{DATA: 성공/부분성공/실패}}
- 영향 범위: {{DATA: 사용자/시스템 영향}}
## 배포 직후 검증 결과
- 핵심 시나리오 검증: {{DATA: 통과/실패 + 근거}}
- 예외/알림 발생 여부: {{DATA: 있음/없음 + 내용}}
# 2. 모니터링 관찰 결과
| 모니터링 항목 | 측정 지표 | 정상 범위 | 이상 감지 기준 | 관찰 결과 | 비고 |
|---|---|---|---|---|---|
| {{DATA: 항목명}} | {{DATA: 지표}} | {{DATA: 정상 범위}} | {{DATA: 임계치}} | {{DATA: 결과}} | |
## 관찰 기간
- 집중 관찰 기간: {{DATA: 시작~종료}}
- 일반 관찰 기간: {{DATA: 시작~종료}}
# 3. 인시던트 대응 기록
- 인시던트 발생 여부: {{DATA: 발생/해당없음}}
## 발생한 경우 기록
- 영향도 분류: {{DATA: 사용자/기능/데이터 영향}}
- 타임라인:
- 탐지 시각(UTC): {{DATA: 시각}}
- 대응 시작(UTC): {{DATA: 시각}}
- 완화 시각(UTC): {{DATA: 시각}}
- 복구 완료(UTC): {{DATA: 시각}}
- 커뮤니케이션:
- 채널: {{DATA: 채널}}
- 공지 시각(UTC): {{DATA: 시각}}
- 업데이트 주기: {{DATA: 주기}}
- 우회책 실행 여부: {{DATA: 실행/미실행 + 내용}}
- 복구 절차 요약: {{DATA: 복구 단계}}
# 4. Postmortem
- What Happened: {{DATA: 사건 개요와 사용자 관찰 증상}}
- Impact: {{DATA: 서비스/사용자/비즈니스 영향}}
- Root Cause: {{DATA: 기술적 원인 + 시스템적 원인}}
- Detection: {{DATA: 탐지 경로/지연 요인/알림 품질}}
- Response: {{DATA: 대응 의사결정 및 실행 평가}}
- Recovery: {{DATA: 복구 절차와 검증 결과}}
- Preventive Actions: {{DATA: 재발 방지 액션(담당자/기한 포함)}}
- Follow-up Tracking: {{DATA: Discovery/Planning 백로그 연결 상태}}
# 5. 다음 반복 환류 항목
| 환류 ID | 개선 항목 | 연결 대상(Discovery/Planning) | 담당자 | 목표일 | 상태 |
|---|---|---|---|---|---|
| FB-001 | {{DATA: 개선 항목}} | {{DATA: dcy/pln 문서 또는 티켓}} | {{DATA: 담당자}} | {{DATA: YYYY-MM-DD}} | {{DATA: 등록됨/대기}} |
# 6. 파일 처리 결과
- 생성/갱신 경로: {{DATA: docs/sdlc/operations/ops-XXX_YYYY-MM-DD_topic.operations.md}}
- 입력 Release 경로: {{DATA: docs/sdlc/release/rel-XXX_YYYY-MM-DD_topic.release.md}}
- 처리 결과: {{DATA: 생성/갱신/검토}}
- 비고: {{DATA: 특이사항}}
# 7. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- (없으면 이 섹션 제거)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,4 +0,0 @@
item_id,work_item,business_value,time_criticality,rr_oe,job_size,reach,impact,confidence,effort,method,notes
P-001,Example work item A,8,7,6,5,1000,2,80,8,WSJF,baseline sample
P-002,Example work item B,6,8,5,3,3000,1,70,10,RICE,marketing-facing change
P-003,Example work item C,9,6,8,8,500,3,90,5,WSJF,risk reduction heavy
1 item_id work_item business_value time_criticality rr_oe job_size reach impact confidence effort method notes
2 P-001 Example work item A 8 7 6 5 1000 2 80 8 WSJF baseline sample
3 P-002 Example work item B 6 8 5 3 3000 1 70 10 RICE marketing-facing change
4 P-003 Example work item C 9 6 8 8 500 3 90 5 WSJF risk reduction heavy
@@ -1,63 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Planning의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. Planning 개요
- 입력 Discovery:
- 목적:
- 우선순위 방법: WSJF
- 점수 스케일: Business Value/Time Criticality/RR-OE/Job Size 모두 1~10
# 2. 이번 반복 범위 경계
## In Scope
-
## Out of Scope
-
# 3. 백로그 작업 분해
| Item ID | Work Item | 연결 요구사항 | 연결 리스크 | 담당 |
|---|---|---|---|---|
| P-001 | | | | |
# 4. WSJF 점수표
| Item ID | Work Item | Business Value | Time Criticality | RR/OE | Job Size | WSJF Score | Priority |
|---|---:|---:|---:|---:|---:|---:|---:|
| P-001 | | | | | | | |
계산식: WSJF = (Business Value + Time Criticality + RR/OE) / Job Size
## 점수 근거 메모
- P-001:
# 5. 작업별 수용 기준 (AC)
## P-001 AC
- AC-1:
- AC-2:
# 6. 우선순위 조정/예외
- 동률 처리:
- Override:
- 승인자:
# 7. Design 단계 전달 체크
- [ ] 우선순위 상위 백로그의 AC가 검증 가능한 문장으로 정의됨
- [ ] WSJF 계산 근거 기록 완료
- [ ] 이번 반복 In Scope/Out of Scope 확정
- [ ] 최종 승인
- {{CONFIRM: Planning 초안 승인 여부를 확인하라}}
# 8. 파일 처리 결과
- 생성/갱신 경로:
- 점수 파일 갱신: docs/sdlc/planning/planning-backlog-scores.out.csv
# 9. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- Planning 초안 승인 여부를 확인하라. (위치: #7)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,4 +0,0 @@
item_id,work_item,business_value,time_criticality,rr_oe,job_size,reach,impact,confidence,effort,method,wsjf_score,rice_score,selected_score,priority
P-001,Example work item A,8,7,6,5,1000,2,80,8,WSJF,=(C2+D2+E2)/F2,=(G2*H2*I2)/J2,=IF(K2="WSJF",L2,M2),=
P-002,Example work item B,6,8,5,3,3000,1,70,10,RICE,=(C3+D3+E3)/F3,=(G3*H3*I3)/J3,=IF(K3="WSJF",L3,M3),=
P-003,Example work item C,9,6,8,8,500,3,90,5,WSJF,=(C4+D4+E4)/F4,=(G4*H4*I4)/J4,=IF(K4="WSJF",L4,M4),=
Can't render this file because it contains an unexpected character in line 2 and column 89.
@@ -1,105 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Release의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. Release 개요
- 입력 Verification:
- 배포 대상 범위:
- 배포 방식: {{DECIDE: 점진 배포/일괄 배포 중 선택하라}}
- 배포 환경:
# 2. 배포 체크리스트
| 항목 | 확인 내용 | 결과 (완료/미완료/해당없음) | 비고 |
|---|---|---|---|
| 설정 검증 | 환경 변수, 시크릿, 외부 연동 키 유효성 확인 | | |
| 데이터 검증 | 마이그레이션 순서, 백업 상태, 복구 가능성 확인 | | |
| 호환성 검증 | 이전 버전 클라이언트/API 호환 여부 확인 | | |
| 의존성 검증 | 신규/변경 라이브러리 버전 충돌 여부 확인 | | |
| 트래픽 전략 | 점진/일괄 배포 방식과 중단 기준 확인 | | |
| 커뮤니케이션 | 사용자 공지, 내부 공지, 온콜 담당자 공유 완료 | | |
# 3. 롤백 계획
## 롤백 트리거
- 에러율 임계치:
- 지연 임계치:
- 장애 지표:
## 롤백 절차
1.
2.
3.
## 데이터 롤백 전략
- 스키마/데이터 복원 여부:
- 절차:
## 롤백 후 검증
- 핵심 시나리오 확인 항목:
-
## 롤백 커뮤니케이션
- 공지 채널:
- 공지 시각:
- 상태 업데이트 주기:
## 참조 런북
- 롤백 런북: .github/templates/rollback-runbook.template.md
# 4. 릴리즈 노트 초안
## 변경 요약
-
## 주요 변경 내용
-
## 영향 범위
- 사용자 영향:
- 시스템 영향:
## 알려진 제한 사항
-
# 5. 배포 후 관찰 계획
| 모니터링 항목 | 측정 지표 | 정상 범위 | 이상 감지 기준 | 담당자 |
|---|---|---|---|---|
| | | | | |
## 관찰 기간
- 집중 관찰 기간:
- 일반 관찰 기간:
# 6. 승인된 예외 인계 목록
| 예외 ID | 출처 (Verification) | 심각도 | 완화책 | 유효 기간 (UTC) | Operations 후속 조치 |
|---|---|---|---|---|---|
| | | | | | |
> 예외 없음 시 이 섹션을 "해당 없음"으로 처리한다.
# 7. Operations 단계 전달 체크
- [ ] 롤백 가능한 배포 계획 승인됨
- [ ] 배포 체크리스트 항목 전체 "완료" 또는 "해당없음" 처리됨
- [ ] 릴리즈/롤백 체크리스트가 근거와 함께 완료됨
- [ ] 배포 후 관찰 항목이 정의됨
- [ ] Operations에 전달할 관찰 포인트, 장애 트리거, 후속 대응 절차 준비됨
- [ ] 승인된 예외 이력 인계됨
- [ ] 최종 승인
- {{CONFIRM: Release 초안 승인 여부를 확인하라}}
# 8. 파일 처리 결과
- 생성/갱신 경로:
# 9. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- Release 초안 승인 여부를 확인하라. (위치: #7)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,62 +0,0 @@
# Rollback Runbook Template
## Metadata
1. Change ID:
2. Release Version:
3. Environment:
4. Owner:
5. On-call Contact:
6. Last Updated (UTC):
## Trigger Conditions
1. Error Rate Threshold:
2. Latency Threshold:
3. Availability Threshold:
4. Data Integrity Alarm:
5. Business Impact Trigger:
## Pre-rollback Checks
1. 장애 범위 확인(기능/사용자/데이터)
2. 최근 배포 변경점 확인
3. 백업/스냅샷 가용성 확인
4. 커뮤니케이션 채널 준비
## Rollback Procedure
1. 트래픽 차단 또는 점진 축소
2. 이전 안정 버전으로 아티팩트 전환
3. 마이그레이션 롤백 또는 안전 모드 전환
4. 캐시/큐/비동기 작업 상태 정리
5. 서비스 재기동 및 헬스체크 확인
## Data Recovery Plan
1. 복원 대상 데이터 범위:
2. 복원 방법(백업/스냅샷/리플레이):
3. 데이터 무결성 검증 방법:
4. 복원 예상 시간:
## Validation After Rollback
1. 핵심 사용자 시나리오 통과 여부
2. API 오류율 정상화 여부
3. 지연 시간 정상화 여부
4. 데이터 정합성 점검 결과
5. 모니터링 알림 해소 여부
## Communication Plan
1. 롤백 선언 메시지(내부)
2. 영향 공지 메시지(외부)
3. 상태 업데이트 주기
4. 종료 공지 조건
## Post-rollback Follow-up
1. 원인 분석 티켓:
2. 재배포 조건:
3. 임시 완화책 제거 계획:
4. Postmortem 일정:
@@ -0,0 +1,219 @@
# 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는 문서 하단에 반드시 유지한다.
+205
View File
@@ -0,0 +1,205 @@
# 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는 문서 하단에 반드시 유지한다.
+187
View File
@@ -0,0 +1,187 @@
# 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는 문서 하단에 반드시 유지한다.
@@ -0,0 +1,155 @@
# 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 섹션**: 모든 태스크 완료 및 로컬 검증 후 담당자가 직접 갱신한다.
@@ -0,0 +1,160 @@
# 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` 없음 확인 후 담당자가 직접 갱신한다.
+162
View File
@@ -0,0 +1,162 @@
# 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 단계에서 완료한 것을 전제로 한다.
- **모니터링**: 배포 후 지켜봐야 하는 지표(오류율, 응답 시간, 로그 패턴 등)를 구체적으로 기록한다.
@@ -0,0 +1,154 @@
# 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`로 변경한다.
+12
View File
@@ -0,0 +1,12 @@
# {{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) | `-` |
+16
View File
@@ -0,0 +1,16 @@
# 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)
@@ -1,83 +0,0 @@
# 0. 문서 상태
- 상태: draft
- 승인자: {{DECIDE: 이 Verification의 최종 승인자는 누구인가?}}
- 승인 시각: {{CONFIRM: 승인 후 기재}}
# 1. Verification 개요
- 입력 Implementation:
- 목적:
- 검증 대상 작업:
- 1순위:
- 2순위:
- 3순위:
# 2. 검증 범위
## In Scope
-
## Out of Scope
-
# 3. AC별 검증 결과
| Impl ID | AC | 검증 방법 | 결과 (통과/실패/보류) | 비고 |
|---|---|---|---|---|
| I-001 | | | | |
## 품질 게이트 판정
- Blocker 결함 수:
- Major 결함 수:
- 승인된 예외 건수:
- 배포 가능 여부: {{DECIDE: 배포 가능/불가 중 선택하라}}
# 4. 결함 목록
| 결함 ID | 연결 Impl ID | 심각도 (Blocker/Major/Minor) | 증상 | 재현 여부 | 처리 상태 |
|---|---|---|---|---|---|
| D-001 | | | | | |
## 심각도 기준
- Blocker: 서비스 중단, 데이터 손실/오염, 보안 취약점 악용 가능 상태
- Major: 핵심 기능 오동작, 우회 가능하지만 사용자 영향이 큰 결함
- Minor: 비핵심 기능 이슈, 문구/표시 오류, 영향이 제한적인 결함
# 5. 회귀 테스트 결과
| 테스트 항목 | 영향 영역 | 실행 결과 | 실패 시 원인 |
|---|---|---|---|
| | | | |
## 회귀 리스크 평가
- 영향 영역:
- 롤백 조건:
# 6. 예외 승인 목록
| 예외 ID | 연결 결함 | 심각도 | 완화책 | 승인자 | 승인 시각 (UTC) | 유효 기간 (UTC) |
|---|---|---|---|---|---|---|
| | | | | | | |
> 예외 없음 시 이 섹션을 "해당 없음"으로 처리한다.
# 7. Release 단계 전달 체크
- [ ] Blocker 결함 0건 확인
- [ ] Major 결함 0건 또는 승인된 예외 존재
- [ ] 변경 코드 경로의 테스트 실행 증거(로그/리포트) 첨부
- [ ] 신규 기능의 정상 경로 테스트 1개 이상 및 예외 경로 테스트 1개 이상 확인
- [ ] 회귀 테스트 실패 없음 또는 원인 분석/롤백 계획 존재
- [ ] Release에 전달할 배포 가능 여부, 예외 승인 정보, 잔여 리스크 준비됨
- [ ] 최종 승인
- {{CONFIRM: Verification 초안 승인 여부를 확인하라}}
# 8. 파일 처리 결과
- 생성/갱신 경로:
# 9. 사용자 결정 필요 항목 요약
## {{DECIDE}}
- (없으면 이 섹션 제거)
## {{CONFIRM}}
- Verification 초안 승인 여부를 확인하라. (위치: #7)
## {{DATA}}
- (없으면 이 섹션 제거)
@@ -1,56 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <input_csv> [output_csv]"
exit 1
fi
infile="$1"
outfile="${2:-}"
tmp_scored="$(mktemp)"
tmp_sorted="$(mktemp)"
trap 'rm -f "$tmp_scored" "$tmp_sorted"' EXIT
awk -F',' 'BEGIN { OFS="," }
NR==1 {
print "item_id","work_item","method","wsjf_score","rice_score","selected_score","notes"
next
}
{
item=$1
work=$2
bv=$3+0
tc=$4+0
rroe=$5+0
js=$6+0
reach=$7+0
impact=$8+0
conf=$9+0
effort=$10+0
method=toupper($11)
notes=$12
wsjf=(js==0)?0:((bv+tc+rroe)/js)
rice=(effort==0)?0:((reach*impact*conf)/effort)
selected=(method=="RICE")?rice:wsjf
printf "%s,%s,%s,%.4f,%.4f,%.4f,%s\n", item, work, method, wsjf, rice, selected, notes
}
' "$infile" > "$tmp_scored"
{
head -n 1 "$tmp_scored"
tail -n +2 "$tmp_scored" | sort -t',' -k6,6gr
} > "$tmp_sorted"
awk -F',' 'BEGIN { OFS="," }
NR==1 {
print $0, "priority"
next
}
{
print $0, NR-1
}
' "$tmp_sorted" > "${outfile:-/dev/stdout}"
+2 -1
View File
@@ -1 +1,2 @@
.vscode/
.vscode/
temp/
+70 -27
View File
@@ -19,6 +19,9 @@ bash .vendor/stage-pilot/bootstrap/install.sh .
# 원격이 등록된 경우(stage-pilot remote 우선 사용)
bash .vendor/stage-pilot/bootstrap/update.sh .
# 충돌 파일을 보존하고 싶을 때(덮어쓰기 비활성화)
bash .vendor/stage-pilot/bootstrap/update.sh --no-overwrite .
# 원격 없이 URL로 직접 업데이트
bash .vendor/stage-pilot/bootstrap/update.sh --repo-url https://github.com/genichin/stage-pilot.git .
@@ -30,6 +33,24 @@ bash .vendor/stage-pilot/bootstrap/update.sh --skip-install .
`.github/prompts/`에 단계별 프롬프트가 정의되어 있으며, Copilot Chat에서 `/프롬프트이름 인자` 형태로 실행한다.
### 빠른 시작
처음부터 전체 SDLC 초안 세트를 만들고 싶다면 아래 명령으로 같은 번호의 draft 문서 세트를 한 번에 생성할 수 있다.
```text
/new-sdlc 결제 실패 알림 정책을 도입한다
```
이 명령은 `dcy/pln/dsn/imp/ver/rel/ops` 문서를 같은 번호로 모두 `draft` 상태로 만든다. 다만 승인 작업은 Discovery부터 순차적으로 진행해야 한다.
초안 생성 후 순차 검토/승인을 자동 실행하려면 아래 명령을 사용한다.
```text
/run-sdlc dcy-001 홍길동
```
이 명령은 Discovery부터 Operations까지 순서대로 검토/승인을 시도한다. 이미 승인된 단계는 건너뛰며, 중간 단계에서 승인 불가면 해당 단계에서 멈추고 미충족 항목과 추가 결정사항을 알려준다.
### 기본 실행 순서
1. Discovery
@@ -44,49 +65,69 @@ bash .vendor/stage-pilot/bootstrap/update.sh --skip-install .
```text
# Discovery
/discovery-draft 결제 실패 알림 정책을 도입한다
/discovery-review dcy-001
/discovery-confirm dcy-001
/new-sdlc 결제 실패 알림 정책을 도입한다
/review-discovery sdlc-001
/confirm-discovery sdlc-001
# Planning
/planning-draft dcy-001
/planning-review dcy-001
/planning-confirm pln-001
/draft-planning sdlc-001
/review-planning sdlc-001
/confirm-planning sdlc-001
# Design
/design-draft pln-001
/design-review dsn-001
/design-confirm dsn-001
/draft-design sdlc-001
/review-design sdlc-001
/confirm-design sdlc-001
# Implementation
/implementation-draft dsn-001
/implementation imp-001 I-001, I-002
/implementation-confirm imp-001
/draft-implementation sdlc-001
/run-implementation sdlc-001
/review-implementation sdlc-001
/confirm-implementation sdlc-001
# Verification
/verification-draft imp-001
/verification-review ver-001
/verification-confirm ver-001
/draft-verification sdlc-001
/review-verification sdlc-001
/confirm-verification sdlc-001
# Release
/release-draft ver-001
/release-review ver-001
/release-confirm ver-001
/draft-release sdlc-001
/review-release sdlc-001
/confirm-release sdlc-001
# Operations
/operation-draft rel-001
/operation-review rel-001
/operation-confirm rel-001
/draft-operation sdlc-001
/review-operation sdlc-001
/confirm-operation sdlc-001
/operation-triage 문제: 로그인 후 세션 만료 시 특정 브라우저에서 무한 리다이렉트가 발생한다. 증상: 만료된 세션으로 접근하면 /login 과 /callback 사이를 반복 이동한다. 기대 동작: 세션 만료 시 로그인 페이지로 1회 이동하고 재로그인 안내를 보여야 한다. 영향도: Safari 사용자 일부가 서비스 재진입 불가. 재현 조건: Safari 17, 기존 세션 쿠키 보유, rel-001 배포 이후. 관련 문서: rel-001 ops-001
```
### 문서 ID 규칙
1. Discovery: `dcy-001`
2. Planning: `pln-001`
3. Design: `dsn-001`
4. Implementation: `imp-001`
5. Verification: `ver-001`
6. Release: `rel-001`
모든 단계 문서는 동일한 CYCLE_ID를 공유한다.
- CYCLE_ID 형식: `sdlc-<3자리>_<YYYYMMDD>_<topic-slug>` (예: `sdlc-001_20260417_stage-pilot`)
- 각 단계 파일: `1_discovery.md` ~ `7_operation.md`
### 언제 새 Discovery를 만드는가
운영 중 문제를 발견했을 때는 먼저 `/operation-triage`로 분류한 뒤 아래 기준으로 판단한다.
| operation-triage 판정 결과 | 상황 | 새 Discovery 필요 여부 | 권장 처리 |
|---|---|---:|---|
| 구현 문제 | 기존 요구사항/설계/검증 기준은 있었는데 구현이 어긋남, 그리고 관련 문서가 `confirmed` 이후 상태임 | 필요 | corrective change용 Discovery를 새로 만들고 Planning부터 다시 진행 |
| 구현 문제 | 관련 문서가 모두 `draft`이고 기존 범위 안에서 수정 가능 | 불필요 | 기존 Discovery/Design/Implementation/Verification 문서에 흡수 |
| 설계·요구사항 누락 | 기능은 있었지만 예외 시나리오, 비기능 요구, 운영 리스크가 빠짐 | 필요 | 누락 요구를 위한 새 Discovery 생성 |
| 신규 범위 | 기존 SDLC 문서에 실질적으로 없는 기능/정책/요구 | 필요 | 새 Discovery 생성 |
| 운영 보완만 필요 | 코드/요구 변경 없이 모니터링, 런북, 공지, 절차만 보완 | 불필요 | Operations 문서 보강 |
| 판단 보류 | 관련 문서 부족, 근거 상충, 재현 불충분 | 보류 | 정보 보강 후 `/operation-triage` 재실행 |
| Hotfix 필요 | 서비스 중단, 데이터 손실, 보안 영향 등 긴급 대응 우선 | 필요 | Hotfix로 즉시 대응 후 후속 Discovery 생성 및 Postmortem 환류 |
짧은 판단 기준:
1. 완료된 SDLC 결과물을 바꾸는 수정이면 새 Discovery를 만든다.
2. 아직 draft 단계 문서 보정이면 기존 문서에 흡수한다.
3. 운영 문서 보완만 하면 되면 새 Discovery는 만들지 않는다.
### 참고 파일
@@ -95,3 +136,5 @@ bash .vendor/stage-pilot/bootstrap/update.sh --skip-install .
3. 프롬프트 정의: `.github/prompts/`
4. 템플릿: `.github/templates/`
5. Operations 템플릿: `.github/templates/operations-note.template.md`
6. 플레이스홀더 가이드: `.github/instructions/placeholder-guide.md`
+1 -7
View File
@@ -26,13 +26,7 @@ ensure_host_structure() {
".github/runbooks/services"
".github/scripts"
".github/templates"
"docs/sdlc/discovery"
"docs/sdlc/planning"
"docs/sdlc/design"
"docs/sdlc/implementation"
"docs/sdlc/verification"
"docs/sdlc/release"
"docs/sdlc/operations"
"docs/sdlc"
)
for dir in "${dirs[@]}"; do
+11 -2
View File
@@ -13,8 +13,11 @@ Options:
(default: https://github.com/genichin/stage-pilot.git)
--branch <name> Upstream branch to sync (default: main)
--prefix <path> Subtree prefix path (default: .vendor/stage-pilot)
--overwrite Overwrite conflicts during install (same as --policy replace).
(default behavior)
--no-overwrite Preserve host files on conflicts (same as --policy preserve).
--policy <name> install.sh conflict policy: replace|preserve|fail
(default: preserve)
(default: replace)
--skip-install Only update subtree. Do not run install.sh.
-h, --help Show this help message.
@@ -45,7 +48,7 @@ REMOTE_NAME="stage-pilot"
REPO_URL="https://github.com/genichin/stage-pilot.git"
BRANCH="main"
PREFIX=".vendor/stage-pilot"
POLICY="preserve"
POLICY="replace"
SKIP_INSTALL=0
ARGS=()
@@ -74,6 +77,12 @@ while [ "$#" -gt 0 ]; do
PREFIX="$2"
shift
;;
--overwrite)
POLICY="replace"
;;
--no-overwrite)
POLICY="preserve"
;;
--policy)
[ "$#" -ge 2 ] || fail "--policy requires a value"
POLICY="$2"
+21
View File
@@ -0,0 +1,21 @@
# SDLC 전체 주기 인덱스
<!-- 아래 테이블은 /new-sdlc 실행 시 자동 갱신된다. 수동 편집 금지. -->
## 주기 목록
| ID | 날짜 | 이슈명 | Discovery | 상태 |
|---|---|---|---|---|
| sdlc-001_20260417_stage-pilot | 20260417 | stage-pilot 프로젝트의 사용 설명서 작성 | [Discovery](./sdlc-001_20260417_stage-pilot/1_discovery.md) | draft |
## 단계별 횡단 조회
| 단계 | 문서 목록 |
|---|---|
| Discovery | [sdlc-001_20260417_stage-pilot](./sdlc-001_20260417_stage-pilot/1_discovery.md) |
| Planning | |
| Design | |
| Implementation | |
| Verification | |
| Release | |
| Operations | |
@@ -0,0 +1,202 @@
# 0. 문서 상태
이 문서의 현재 상태와 식별 정보를 기록한다. 문서 추적과 승인 흐름에 필요한 최소 메타데이터를 적는다.
- 상태: draft
- 문서 ID: sdlc-001_20260417_stage-pilot
- 이슈명: stage-pilot 프로젝트의 사용 설명서 작성
- 작성 시각(KST): 2026-04-17 13:45:58 KST
- 마지막 갱신 시각(KST): 2026-04-17 14:12:00 KST
# 1. 계획 상태 요약
현재 Discovery가 어떤 배경에서 작성되고 있는지, 연계 문서가 있는지, 지금 시점의 해석이 무엇인지 짧게 요약한다.
- 연계 문서 현황:
- Planning 점수 파일: 미생성
- 관련 TODO/메모: 없음
- 해석:
- stage-pilot 저장소를 처음 도입하거나 업데이트하려는 사용자가 설치, 업데이트, SDLC 프롬프트 사용법을 빠르게 이해할 수 있도록 공식 사용 설명서가 필요하다.
- 이번 Discovery에서는 README 중심의 사용 설명서를 어떤 범위와 수준으로 작성할지 정의하고, 설치 절차와 운영성 정보를 문서 구조에 반영할 기준을 정해야 한다.
# 2. 요구사항 판정 결과
이번 요청이 기존 요구사항과 비교해 신규인지, 유사한지, 중복인지 판단하고 그 근거를 남긴다.
- 판정: 신규
- 근거
- 현재 저장소에는 기본 사용방법과 SDLC 프롬프트 요약은 있으나, 프로젝트 전체 사용 설명서를 별도 산출물로 정의한 SDLC 주기나 관련 문서 세트가 존재하지 않는다.
- 요청은 기존 README 보완 수준을 넘어 설치, 업데이트, 프롬프트 사용 흐름을 체계화하는 신규 문서 작업으로 해석하는 것이 합리적이다.
# 3. 문제점의 요약
문제의 현재 상태, 기대 상태, 관련 이해관계자, 제약사항을 정리한다. Discovery의 핵심 맥락을 가장 먼저 이해할 수 있어야 한다.
- 현재 상태
- README에 최초 등록, 업데이트, SDLC 프롬프트 사용법이 간단히 정리되어 있지만, 사용자의 목표별 진입 경로와 단계별 설명이 충분히 구조화되어 있지 않다.
- 설치 스크립트와 운영 흐름은 존재하지만 어떤 순서로 실행해야 하는지, 어떤 상황에서 어떤 명령을 선택해야 하는지에 대한 사용 설명서가 부족하다.
- 기대 상태
- 신규 사용자가 저장소 도입부터 업데이트, SDLC 프롬프트 실행까지를 하나의 사용 설명서만 읽고 재현 가능하게 따라갈 수 있어야 한다.
- 사용 설명서의 위치(README 확장 또는 별도 문서)가 확정된 후, 사용자가 해당 위치에서 설치/업데이트 절차와 참고 문서를 빠르게 찾을 수 있어야 한다.
- 이해관계자
- 문서 작성자(AI agent 또는 프로젝트 유지보수자)
- 저장소를 도입하는 개발자 또는 팀
- stage-pilot 운영/관리 담당자
- 제약사항
- 현재 확인 가능한 근거 문서는 README와 bootstrap 스크립트, 프롬프트/템플릿 구조로 제한되므로 세부 운영 정책은 추후 확인이 필요할 수 있다.
- 사용 설명서는 실제 저장소 구조와 스크립트 동작을 기준으로 작성해야 하며, 존재하지 않는 자동화나 미확인 절차를 단정적으로 문서화하면 안 된다.
## 주요 사용자 시나리오
사용자 또는 운영자가 실제로 어떤 상황에서 이 변경을 필요로 하는지 대표 시나리오를 적는다.
- 신규 팀원이 stage-pilot을 기존 저장소에 연결하고 bootstrap 설치를 적용하기 위해 공식 사용 설명서를 따라 최초 설정을 수행한다.
- 기존 사용자가 stage-pilot subtree를 최신 상태로 갱신하면서 `--no-overwrite`, `--skip-install` 같은 옵션 차이를 확인한다.
- Copilot Chat 사용자가 어떤 프롬프트를 어떤 순서로 실행해야 하는지 이해하기 위해 SDLC 실행 흐름과 예시 명령을 참조한다.
# 4. 이번에 정의할 변경
이번 Discovery에서 다루는 핵심 변경 항목을 목록으로 적는다. 기능, 구조, 규칙 변경을 함께 포함해도 된다.
- stage-pilot의 설치, 업데이트, SDLC 프롬프트 사용 흐름을 설명하는 공식 사용 설명서의 초안 범위를 정의한다.
- 기존 README와 bootstrap 스크립트 기준으로 사용자 관점의 작업 절차와 주요 명령 예시를 문서 구조에 반영한다.
- 향후 Planning에서 문서 위치, 섹션 구성, 검증 방법을 세분화할 수 있도록 문서 산출물과 성공 기준의 기준선을 세운다.
## 영향 범위
변경이 미칠 코드/문서/운영 범위를 명시해 Planning에서 추정 누락을 줄인다.
- 코드 영향:
- 코드 변경 자체는 제한적이거나 없을 가능성이 높지만, 문서 경로를 README에서 연결하거나 프롬프트 안내 문구를 조정하는 변경이 필요할 수 있다.
- bootstrap 스크립트 사용 예시와 실제 옵션 동작의 일치 여부를 확인하기 위한 점검이 필요하다.
- 문서 영향:
- README 또는 별도 사용 설명서 문서가 새로 작성되거나 대폭 보강될 수 있다.
- SDLC 관련 안내 문서와 시작 가이드에서 사용 설명서 링크를 추가해야 할 수 있다.
- 운영 영향:
- 배포/운영 절차 변경은 없으나, 문서가 최신 상태로 유지되도록 이후 업데이트 시 문서 동기화 책임이 필요하다.
- 사용자 문의 대응 시 참조 기준 문서가 새로 생기므로 운영 커뮤니케이션 비용이 줄어들 수 있다.
# 5. 요구사항 목록
실제로 구현과 검증으로 이어질 요구사항을 기능/비기능으로 나누어 정리하고, 범위 경계를 명확히 적는다.
## 기능 요구사항
- FR-1: 사용 설명서는 stage-pilot의 최초 등록 절차를 리모트 등록, subtree 추가, bootstrap 설치 순서대로 설명해야 한다.
- FR-2: 사용 설명서는 업데이트 절차를 기본 업데이트, 덮어쓰기 방지, 원격 URL 직접 사용, 설치 생략 옵션으로 구분해 설명해야 한다.
- FR-3: 사용 설명서는 Copilot Chat 기반 SDLC 프롬프트의 기본 실행 순서와 대표 명령 예시를 포함해야 한다.
- FR-4: 사용 설명서는 사용자가 추가 참고 문서를 찾을 수 있도록 관련 파일 또는 디렉터리 위치를 명시해야 한다.
## 비기능 요구사항
성능, 운영성, 일관성, 자동화 안정성 등 기능 외 요구사항을 적는다.
- NFR-1: 문서 내용은 현재 저장소에 실제 존재하는 파일, 스크립트, 명령만 기준으로 작성되어야 한다.
- NFR-2: 문서는 신규 사용자가 한 번에 읽을 수 있도록 작업 흐름 중심으로 구조화되어야 하며, 명령 예시는 복사 가능한 형태로 제공되어야 한다.
- NFR-3: README 및 관련 가이드와 용어가 일관되어야 하며, 단계 명칭과 문서 ID 규칙이 서로 충돌하지 않아야 한다.
## 범위 경계
이번 반복에서 반드시 포함할 범위와 명시적으로 제외할 범위를 구분한다.
- In Scope
- stage-pilot 저장소 사용 설명서의 목적, 주요 섹션, 포함할 명령/예시 범위 정의
- 설치, 업데이트, SDLC 프롬프트 사용 흐름에 대한 초안 수준의 문서 요구사항 정리
- Out of Scope
- bootstrap 스크립트의 기능 변경 또는 신규 자동화 추가
- README 외 별도 웹 문서 사이트 구축이나 다국어 번역 지원 (후속 반복에서 검토)
# 6. 리스크/가정 목록
불확실성과 전제 조건을 분리해서 적는다. 리스크는 영향과 완화 방안을, 가정은 현재 판단의 전제를 기록한다.
## 리스크
- R-1 (Medium): 사용 설명서가 README의 현재 내용만 재서술하고 실제 사용자 질문에 필요한 맥락을 충분히 추가하지 못할 수 있다.
- 완화 방안: Planning 단계에서 사용자 작업 시나리오 기준의 섹션 구조와 예시 수준을 명확히 정의한다.
- R-2 (Medium): 스크립트 옵션이나 프롬프트 예시가 실제 최신 동작과 어긋나면 문서 신뢰도가 떨어질 수 있다.
- 완화 방안: 문서 작성 전에 bootstrap 스크립트와 프롬프트 정의 파일을 대조해 명령과 옵션을 검증한다.
- R-3 (Low): 문서 위치가 README 확장인지 별도 가이드 문서인지 결정되지 않으면 이후 링크 구조가 바뀔 수 있다.
- 완화 방안: 사용자 결정 필요 항목으로 위치 정책을 확인하고, 확정 전까지는 문서 산출물 형태를 초안 수준으로 유지한다.
## 가정
아직 확정되지 않았지만 현재 문서 작성의 기반이 되는 전제를 적는다.
- A-1: 이번 작업의 1차 산출물은 개발자 중심의 사용 설명서이며, 운영자/리뷰어 안내까지 포함하는 범위는 Planning 이후 반복에서 검토한다.
- A-2: 설치 및 업데이트 절차의 정본은 현재 README와 bootstrap 스크립트이며, 사용 설명서는 이를 재구성해 설명하는 형태가 된다.
- A-3: 문서 초안은 우선 한국어 기준으로 작성해도 무방하며, 영문 병행 여부는 후속 결정 사항이다.
## 오픈 질문
답을 아직 모르는 항목을 적는다. 추정으로 덮지 말고 Planning 이전에 확인할 질문으로 남긴다.
- OQ-1: 사용 설명서를 README 확장으로 작성할지, 별도 문서 파일로 분리할지 최종 산출물 위치를 어디로 할 것인가?
- 상태: Open
- 처리 방안: 사용자 또는 승인자가 문서 배치 정책을 결정한다.
- 종료 조건: Planning 시작 전 최종 산출물 경로가 확정된다.
- OQ-2: 사용 설명서에 포함할 대상 독자 범위를 개발자 전용으로 제한할지, 운영자/리뷰어 안내까지 포함할지 확정할 필요가 있는가?
- 상태: Open
- 처리 방안: 사용자와 범위 경계를 확인해 In Scope를 확정한다.
- 종료 조건: 대상 독자와 제외 범위가 승인된다.
### 오픈 질문 처리 기준
- `Open`: 아직 답이 없고 다음 단계 진행에 영향이 있는 상태다. 문서에 유지한다.
- `Answered`: 답이 확정된 상태다. 관련 본문/요구사항에 반영한 뒤 오픈 질문 목록에서는 제거하거나 resolved 기록으로 이동한다.
- `Deferred`: 지금 단계에서 결정하지 않고 다음 단계 또는 후속 이슈로 넘기는 상태다. 넘길 대상과 이유를 반드시 적는다.
- `Dropped`: 더 이상 유효하지 않은 질문이다. 삭제 사유를 짧게 남기고 목록에서 제거한다.
- 처리 원칙 1: 질문만 남기지 말고 반드시 `상태`, `처리 방안`, `종료 조건`을 함께 적는다.
- 처리 원칙 2: 답이 나온 질문은 본문 반영 없이 단순 삭제하지 않는다. 반영 위치를 먼저 갱신한다.
- 처리 원칙 3: High 영향 질문은 `Deferred` 처리 후 처리 방안에 Planning 인계 추적 방식을 명시한다.
# 7. 초기 성공 기준
이 변경이 성공했다고 판단할 기준을 측정 가능하게 정의한다. 가능하면 데이터 출처까지 연결한다.
- S-1: 사용 설명서 초안에 최초 등록, 업데이트, SDLC 프롬프트 사용 흐름이 모두 포함되어 있다.
- S-2: 사용 설명서 초안의 각 주요 절차에 대해 사용자가 실행 가능한 명령 예시 또는 참조 경로를 확인할 수 있다.
- S-3: 문서 검토 시 실제 저장소 구조와 맞지 않는 경로 또는 존재하지 않는 명령이 발견되지 않는다.
## 측정 방식 및 데이터 출처
각 성공 기준을 어떻게 측정할지와 어떤 데이터나 문서를 근거로 쓸지 적는다.
- S-1 측정 방식: 문서 섹션 체크리스트로 포함 여부 검토 / 데이터 출처: README, bootstrap 스크립트, 프롬프트 정의 파일
- S-2 측정 방식: 절차별 예시 명령과 링크 존재 여부 수동 검토 / 데이터 출처: 사용 설명서 초안, README
- S-3 측정 방식: 경로/명령 대조 검토 또는 샘플 실행 검토 / 데이터 출처: 저장소 파일 구조, bootstrap/*.sh, .github/prompts/
# 8. Planning으로 넘기기 전 확인 체크
Planning 단계로 넘기기 전에 무엇이 확정되어야 하는지 확인한다. 미완료 항목은 후속 결정이 필요함을 뜻한다.
- [ ] 범위(In Scope/Out of Scope) 확정
- 기준: 최종 독자와 포함 대상 문서 범위가 승인되어야 한다.
- [ ] 성공 지표의 측정 방식/데이터 출처 확정
- 기준: 샘플 실행 여부와 문서 검토 체크리스트의 적용 방법이 정리되어야 한다.
- [ ] High 영향 리스크 우선순위 및 해소 책임자 지정
- 기준: 문서 정확성 검증 책임자 또는 검토 방식이 지정되어야 한다.
- [ ] 모든 오픈 질문(OQ) `Open` 상태 없음 확인
- 기준: OQ 목록에 `Open` 상태 항목이 0개이거나, 잔여 항목 전부 `Deferred` 처리 완료
- [ ] Freeze 확정 담당자(CONFIRMED_BY) 지정
- 기준: 문서 승인 또는 인계 결정을 내릴 담당자가 명시되어야 한다.
# 9. 파일 처리 결과
이 Discovery 문서 생성/갱신 결과와 참조 문서를 기록한다. 이후 추적과 리뷰 시 근거로 사용한다.
- 처리 결과: 생성
- 생성 경로: docs/sdlc/sdlc-001_20260417_stage-pilot/1_discovery.md
- 참조 문서:
- README.md
- 없음
# 10. 사용자 결정 필요 항목 요약
사용자나 승인자가 결정해야 하는 항목만 모아 정리한다. 결정, 확인, 데이터 요청을 구분해서 적는다.
## DECIDE
- 사용 설명서 최종 산출물을 README 확장으로 할지, 별도 문서 파일로 분리할지 결정
## CONFIRM
- 대상 독자 범위를 개발자 전용으로 한정할지, 운영자/리뷰어 역할까지 포함할지 확인
- 승인 및 Freeze 확정 책임자 지정 (섹션 11의 CONFIRMED_BY에 입력)
## DATA
- 성공 기준 #S-3 검증 시 샘플 실행 환경 및 검증 기록 방식 확인
# 11. Discovery Freeze
Planning 인계 시점의 확정 플래그와 섹션 참조만 기록한다. 내용 재작성 없이 원본 섹션을 링크로 대신한다.
## 섹션 참조
- 범위: [# 5. 요구사항 목록 > 범위 경계](#5-요구사항-목록)
- 리스크/오픈 질문: [# 6. 리스크/가정 목록](#6-리스크가정-목록)
- 성공 기준: [# 7. 초기 성공 기준](#7-초기-성공-기준)
- 인계 전 확인: [# 8. Planning으로 넘기기 전 확인 체크](#8-planning으로-넘기기-전-확인-체크)
- 사용자 결정 필요: [# 10. 사용자 결정 필요 항목 요약](#10-사용자-결정-필요-항목-요약)
## Freeze 플래그
- Handoff Decision: 보류
- Handoff Rationale: 초기 Discovery 초안 생성 완료, Planning 인계 전 사용자 확인 필요
- Ready for Planning: false
- Confirmed By: TBD
- Confirmed At (KST): TBD
@@ -0,0 +1,12 @@
# sdlc-001_20260417_stage-pilot
| 단계 | 문서 | 상태 |
|------|------|------|
| 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) | `-` |
@@ -0,0 +1,14 @@
# Summary - sdlc-001_20260417_stage-pilot
- 이슈명: stage-pilot 프로젝트의 사용 설명서 작성
- 상태: draft
- 작성 시각(KST): 2026-04-17 13:45:58 KST
- 마지막 갱신 시각(KST): 2026-04-17 13:45:58 KST
## 핵심 요약
- stage-pilot의 설치, 업데이트, SDLC 프롬프트 흐름을 설명하는 사용 설명서 작성 필요성이 Discovery 초안으로 정리되었다.
- 최종 문서 위치와 대상 독자 범위는 사용자 확인이 필요해 Planning 인계 전 결정이 남아 있다.
## 단계별 문서
- [Discovery](./1_discovery.md)
- [Index](./index.md)