diff --git a/.github/ISSUE_TEMPLATE/implementation-from-approved-req.md b/.github/ISSUE_TEMPLATE/implementation-from-approved-req.md new file mode 100644 index 0000000..42e8832 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/implementation-from-approved-req.md @@ -0,0 +1,72 @@ +--- +name: "Implementation From Approved Requirement" +about: "Create an implementation issue from an Approved SRS requirement" +title: "[REQ-XXX] Implement " +labels: ["implementation", "requirement"] +assignees: [] +--- + + + +## 배경 (Context) +- Requirement ID: +- Requirement Link: +- Status Check: Approved + +## 범위 (Scope) +- In Scope: +- Out of Scope: + +## 구현 전 설계검토 체크리스트 (Pre-Implementation Design Review) +- [ ] Architecture approach is documented and agreed +- [ ] Public interface/API contract changes are identified +- [ ] Data model/schema impact is reviewed +- [ ] Error handling and fallback strategy is defined +- [ ] Security/privacy impact is reviewed +- [ ] Performance/scalability impact is reviewed +- [ ] Test strategy (unit/integration/e2e/manual) is defined +- [ ] Rollback or feature-flag strategy is defined when needed +- [ ] Unknowns, assumptions, and decision owners are recorded +- [ ] Human review sign-off completed (or `No additional design review required.`) + +### 설계 결정 요약 (Design Decisions) +- Decision 1: +- Decision 2: + +### 미해결 항목 / 가정 (Open Items / Assumptions) +- + +## AI Agent 작업 (AI Agent Work) +- [ ] Code change task 1 +- [ ] Code change task 2 +- [ ] Automated validation task + +## 사람 작업 (Human Work) +- [ ] Approve scope or open questions +- [ ] Perform required manual verification + +## Acceptance Criteria Mapping +- REQ AC1 -> Task(s): +- REQ AC2 -> Task(s): + +## AI 검증 요약 (AI Validation Summary) +- Automated tests/checks to run: +- Expected evidence: + +## 사람 확인 체크리스트 (Human Verification Checklist) +- [ ] Verify: +- [ ] Confirm: +- If no human verification is required, write: `No manual verification required.` + +## 열린 질문 (Open Questions) +- + +## 리스크 (Risks) +- + +## 완료 조건 (Definition of Done) +- [ ] All mapped acceptance criteria are satisfied +- [ ] Tests are added or updated +- [ ] AI-completable work is finished and evidence is attached +- [ ] Human-only work is completed or explicitly marked not required +- [ ] Docs or change notes are updated if needed diff --git a/.github/instructions/requirement-scope-decision.instructions.md b/.github/instructions/requirement-scope-decision.instructions.md new file mode 100644 index 0000000..b3df18a --- /dev/null +++ b/.github/instructions/requirement-scope-decision.instructions.md @@ -0,0 +1,52 @@ +--- +description: "Use when evaluating whether a new feature or change request requires a new or updated SRS requirement, a technical spec update only, or needs owner decision. Apply before starting requirement drafting." +applyTo: "docs/SRS/**/*.md" +--- +# Requirement Scope Decision Guidelines + +## 목적 +새 기능 요청이나 변경 사항이 들어왔을 때, SRS에 등록해야 하는지(신규 또는 기존 REQ 수정) 아니면 technical spec / implementation note만 업데이트하면 되는지를 먼저 판정한다. +이 판정을 거침으로써 불필요한 REQ 생성을 방지하고, SRS에 등록돼야 할 변경이 누락되는 것을 예방한다. + +## 판정 결과 분류 (4종) +1. **New SRS requirement needed** — 새 REQ 문서를 작성해야 한다. +2. **Update existing SRS requirement** — 기존 REQ 문서를 수정해야 한다. +3. **Technical spec only** — SRS 변경 없이 technical spec / implementation note만 업데이트한다. +4. **Needs owner decision** — 운영 리스크나 승인 기준이 불명확하여 소유자(Owner) 결정이 필요하다. + +## SRS 대상 판정 기준 (다음 중 하나라도 해당하면 SRS) + +### 외부 계약 변화 +- 사용자 또는 외부 시스템이 관찰하는 계약이 바뀌는 경우 +- API / CLI / UI / Event / Data schema / Config / Deployment / Integration 요구사항이 변경되는 경우 + +### 측정 가능한 Non-Functional 변경 +- 성능, 보안, 가용성, 확장성 등 측정 기준이 추가되거나 변경되는 경우 + +### Acceptance Criteria 및 승인 게이트 필요 +- 변경 사항에 대해 명시적 수락 기준과 승인 이력이 필요한 경우 + +## Technical Spec Only 판정 기준 (다음에 해당하면 SRS 불필요) +- 내부 리팩터링 (외부 계약 변화 없음) +- 라이브러리 교체 (동일한 외부 인터페이스 유지) +- 코드 구조 / 패턴 변경 (기능 동작 동일) +- 외부 계약을 바꾸지 않는 구현 최적화 + +## Borderline / Needs Owner Decision 판정 기준 +- 운영 리스크나 승인 책임이 불명확한 경우 +- 제품 의도가 불분명하거나 범위가 애매한 경우 +- 위 기준만으로 분류가 확정되지 않는 경우 + +## New vs. Update 구분 기준 +- 동일 기능/계약 범위의 변경 → `Update existing SRS requirement` +- 새 기능/계약/인터페이스의 추가 → `New SRS requirement needed` +- 기존 REQ 검색 시 `docs/SRS/index.md`의 Requirement Register를 먼저 확인한다. + +## 판정 출력 형식 +판정 결과는 항상 다음 항목을 포함해야 한다. +1. **Decision** — 위 4종 중 하나 +2. **Why** — 판정 근거 (구체적으로 어떤 기준에 해당하는지) +3. **Recommended Type** — SRS 대상인 경우, 해당 requirement type (Interface / Data / Deployment 등) +4. **Existing REQ candidates** — Update 가능성이 있는 기존 REQ ID 목록 (해당 시) +5. **Next Action** — 판정 결과에 따른 다음 단계 안내 +6. **Open Questions** — 추가 확인이 필요한 사항 (없으면 `없음`) diff --git a/.github/instructions/srs.instructions.md b/.github/instructions/srs.instructions.md new file mode 100644 index 0000000..d2e3533 --- /dev/null +++ b/.github/instructions/srs.instructions.md @@ -0,0 +1,53 @@ +--- +description: "Use when writing or editing SRS documents, requirement files, acceptance criteria, change logs, or impacted area entries under docs/SRS. Ensures requirement quality, traceability, and testable wording." +applyTo: "docs/SRS/**/*.md" +--- +# SRS Document Guidelines + +## Requirement 타입 분류 + +### 분류 의사결정 규칙 (우선순위 순) +1. **Installation**: "시스템 설치, 환경 구성, 초기화 절차를 정의하는가?" → YES면 Installation + - 예: Docker 이미지 빌드, 데이터베이스 마이그레이션, 사전 조건 설정 +2. **Interface**: "사용자가 직접 조작하거나 실행하는 방식을 정의하는가?" → YES면 Interface + - 예: CLI 명령어, API 엔드포인트, 웹 UI 기능, 제어 방식 +3. **Configuration**: "시스템 또는 기능의 설정 옵션, 커스터마이징을 정의하는가?" → YES면 Configuration + - 예: 설정 파라미터, 옵션 항목, 환경 변수, 커스터마이징 포인트 +4. **Data**: "데이터 저장, 로드, 구조, 파일 형식, 스키마를 정의하는가?" → YES면 Data + - 예: 설정 파일 형식, 데이터베이스 스키마, API 요청/응답 구조 +5. **Exception & Error Handling**: "오류 처리, 예외 복구, 재시도 전략을 중심으로 하는가?" → YES면 Exception & Error Handling + - 예: 네트워크 오류 재시도, 데이터 검증 실패 처리, 복구 절차 +6. **Deployment**: "배포 방식, 운영 절차, 배포 환경을 정의하는가?" → YES면 Deployment + - 예: 컨테이너 배포, 스택 관리, 운영 가이드 +7. **Documentation**: "문서 작성, 가이드, 매뉴얼, 안내서를 정의하는가?" → YES면 Documentation + - 예: 사용자 가이드, API 문서, 운영 매뉴얼, 튜토리얼 +8. **Integration**: "외부 시스템 연동, 플러그인, 확장 기능을 정의하는가?" → YES면 Integration + - 예: 3rd party 서비스 연동, 플러그인 인터페이스, 확장 메커니즘 +9. **Migration**: "데이터 이전, 버전 업그레이드, 마이그레이션을 정의하는가?" → YES면 Migration + - 예: 데이터 마이그레이션, 버전 호환성, 업그레이드 절차 +10. **Testing**: "테스트 전략, QA 요구사항, 검증 방식을 정의하는가?" → YES면 Testing + - 예: 테스트 커버리지, 회귀 테스트, 수락 테스트 기준 +11. **Non-Functional**: 위 모든 경우에 해당하지 않으면 → Non-Functional + - 예: 성능 목표, 보안 정책, 확장성, 호환성, 신뢰성 요구사항 + +**주의**: requirement가 여러 분류에 해당하면 주된 제약 또는 목적에 따라 하나로만 선택한다. 예를 들어: +- "Docker Compose로 배포할 수 있어야 한다" → Deployment +- "배포 시 환경 변수로 설정 가능해야 한다" → Configuration +- "배포 전에 다음 점검 항목을 검증해야 한다" → Testing/Documentation + +- `docs/SRS/index.md`는 SRS 운영 기준과 Requirement Register를 관리하는 문서로 유지한다. +- `docs/SRS/REQ-XXX_*.md`는 하나의 requirement만 다루고, 다른 requirement 내용을 섞지 않는다. 파일은 Type별 폴더에 저장한다. 예: `docs/SRS/Deployment/REQ-001_docker-compose-release.md` +- 새 requirement 번호의 source of truth는 `docs/SRS/index.md`의 `Next Requirement ID`다. +- requirement 본문에는 최소한 `Status`, `Type`, `Priority`, `Owner`, `Intent`, `Requirement`, `Acceptance Criteria`, `Impacted Area`, `Change Log`가 포함되어야 한다. +- `Acceptance Criteria`는 관찰 가능하고 test 가능한 문장으로 작성한다. +- 모호한 표현("개선한다", "적절히 처리한다", "최적화한다")은 측정 기준 없이 사용하지 않는다. +- requirement를 수정하면 해당 REQ 파일의 `Change Log`도 함께 갱신한다. +- `Impacted Area`는 `Docs`, `Modules`, `Tests`를 모두 검토한 뒤 작성한다. 해당 항목이 없으면 `없음`으로 명시한다. +- implementation issue/PR를 생성하거나 병합할 때는 `docs/SRS/traceability-matrix.md`에서 해당 REQ 행의 `Issue/PR`, `Tests`, `Status`를 갱신한다. +- 새로운 Type으로 requirement를 추가할 때는 `docs/SRS//` 폴더 하위에 저장한다. 아직 없는 Type 폴더면 생성한다. +- 새로운 requirement를 추가하면 `docs/SRS/index.md`의 Requirement Register에도 같은 ID를 추가한다. +- 새로운 requirement를 추가하거나 Register가 바뀌면 `docs/SRS/index.md`의 `Next Requirement ID`도 함께 갱신한다. +- `docs/SRS/index.md`의 `Recent Change Log Summary`는 최신 5건만 유지하고 최신 항목을 위에 둔다. +- requirement ID와 파일명 prefix는 일치해야 한다. 예: `REQ-002`는 `docs/SRS//REQ-002_.md`. +- requirement 상태를 `Approved` 또는 `Implemented`로 바꿀 때는 acceptance criteria와 change history가 누락되지 않았는지 먼저 검토한다. +- requirement 상태를 전환할 때는 `docs/SRS/index.md`의 `Status Transition Evidence` 기준을 따른다. diff --git a/.github/prompts/approve-requirement.prompt.md b/.github/prompts/approve-requirement.prompt.md new file mode 100644 index 0000000..3bf3267 --- /dev/null +++ b/.github/prompts/approve-requirement.prompt.md @@ -0,0 +1,26 @@ +--- +description: "Use when: decide whether a Proposed requirement is ready to move to Approved and generate the required status-change edits" +name: "Approve Requirement" +argument-hint: "Paste a Proposed REQ file or select requirement text" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 requirement 문서가 `Proposed`에서 `Approved`로 전환 가능한지 검토한다. + +입력: +${input} + +검토 규칙: +- 기준 문서는 [SRS index](../../docs/SRS/index.md) 의 `Status Transition Evidence`와 해당 requirement 문서 구조다. +- `Status`, `Type`, `Priority`, `Owner`, `Intent`, `Requirement`, `Acceptance Criteria`, `Impacted Area`, `Change Log` 존재 여부를 검토한다. +- Type이 SRS index의 분류 도표에 정의된 타입 중 정확하게 하나로 지정되었는지 확인한다. +- `Acceptance Criteria`가 구현 기준으로 충분히 구체적인지 판단한다. +- 중요한 assumption 또는 open question이 남아 있으면 승인 blocker로 본다. +- 승인 가능하면 status 변경과 Change Log 추가 초안을 함께 제안한다. +- 승인 불가하면 blocker를 우선순위 순으로 정리한다. + +출력 형식: +1. Approval Decision: `Approved-ready` 또는 `Not ready` +2. Blockers +3. Suggested Edits +4. Approval Change Log Draft diff --git a/.github/prompts/complete-requirement.prompt.md b/.github/prompts/complete-requirement.prompt.md new file mode 100644 index 0000000..ea0de9a --- /dev/null +++ b/.github/prompts/complete-requirement.prompt.md @@ -0,0 +1,32 @@ +--- +description: "Use when: complete a partial SRS requirement draft into a full REQ file with acceptance criteria and impacted area" +name: "Complete Requirement Draft" +argument-hint: "Paste a partial requirement draft or describe the feature" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 입력을 기반으로 SRS requirement 초안을 완성한다. + +입력: +${input} + +작업 규칙: +- SRS 기준 문서는 [SRS index](../../docs/SRS/index.md) 와 관련 [REQ template](../../docs/SRS/REQ-template.md) 를 따른다. +- 입력에 `REQ-XXX` 형식의 명시적 ID가 없으면, [SRS index](../../docs/SRS/index.md)의 `Next Requirement ID`를 우선 읽어 그 값을 사용한다. `Next Requirement ID`가 없거나 신뢰할 수 없으면 `Requirement Register`와 기존 REQ 파일들 기준의 최고 번호에 1을 더한 값을 사용한다. +- 사용자가 이미 특정 REQ ID를 명시했으면 그 ID를 유지하고 임의로 바꾸지 않는다. +- requirement의 유형을 인식하고 `Type` 필드를 정확하게 지정한다. 분류는 [SRS index](../../docs/SRS/index.md)의 "Requirement 작성 규칙" 또는 [SRS instructions](../../.github/instructions/srs.instructions.md)의 "분류 의사결정 규칙"을 따른다. +- 최종 `Type`과 `REQ ID`를 이용해 추천 파일 경로를 함께 제시한다. 형식은 `docs/SRS//REQ-XXX_.md`를 사용한다. +- ``는 requirement 제목을 기반으로 소문자 kebab-case 영문으로 생성한다. 공백은 `-`로 치환하고, 영문/숫자/`-`만 남긴다. +- 제목이 한글이거나 slug 생성이 불명확하면 의미를 유지하는 짧은 영문 slug를 보수적으로 제안한다. +- 사용자가 제공한 의도와 핵심 동작을 보존한다. +- 빠진 항목은 보수적으로 보완하되, 추정이 필요한 내용은 `Notes`에 assumption으로 분리한다. +- `Acceptance Criteria`는 반드시 test 가능하게 작성한다. +- `Impacted Area`는 Docs, Modules, Tests로 구분한다. +- 새로 할당한 ID를 문서 제목 `# REQ-XXX: ...`에 반영한다. +- 결과는 REQ 파일에 바로 붙여넣을 수 있는 Markdown 형식으로만 출력한다. +- 코드 구현 계획은 포함하지 않는다. + +출력 형식: +1. `Recommended File Path: docs/SRS//REQ-XXX_.md` 한 줄 +2. 실제 할당된 ID가 반영된 `# REQ-XXX: ...` 형식의 전체 문서 본문 +3. `## Change Log` 아래에 초안 생성용 `CHG-YYYYMMDD-01` 항목 1개 포함 diff --git a/.github/prompts/create-implementation-issue.prompt.md b/.github/prompts/create-implementation-issue.prompt.md new file mode 100644 index 0000000..1566340 --- /dev/null +++ b/.github/prompts/create-implementation-issue.prompt.md @@ -0,0 +1,42 @@ +--- +description: "Use when: create an implementation plan and GitHub issue draft from an Approved requirement" +name: "Create Implementation Issue" +argument-hint: "Paste an Approved REQ file" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 `Approved` requirement 문서를 기반으로 implementation issue 초안을 생성한다. + +입력: +${input} + +작업 규칙: +- 기준 문서는 [SRS index](../../docs/SRS/index.md) 와 해당 REQ 문서다. +- 출력 언어는 기본적으로 한국어로 작성한다. +- section 제목, 설명, 작업 지시문은 한국어를 우선 사용하되, 중요한 technical term는 영어를 유지하거나 한국어 뒤 괄호로 병기한다. 예: `AI Agent Work`, `Human Verification Checklist`, `Acceptance Criteria`, `Open Questions`, `Risk`, `Definition of Done`. +- 코드 식별자, 파일 경로, 명령어, API 이름, 테스트 이름, UI 라벨 등 구현 대상과 직접 연결되는 literal은 영어 원문을 유지한다. +- requirement의 `Acceptance Criteria`를 구현 task로 분해한다. +- task는 구현 단위로 나누고, 각 task를 `AI Agent가 완료 가능한 작업`과 `Human이 수행해야 하는 작업`으로 구분한다. +- test task를 반드시 포함한다. +- 각 acceptance criteria 또는 task에 대해 다음을 판단한다: + - AI Agent가 코드 변경과 자동 검증까지 완료할 수 있는가 + - Human이 직접 확인해야 하는 수동 검증이 남는가 +- Human이 직접 확인해야 하는 항목이 있으면 `Human Verification Checklist`에 구체적인 확인 절차와 기대 결과를 작성한다. +- AI Agent가 자체적으로 테스트를 완료할 수 있어 Human 확인이 불필요하면 `Human Verification Checklist`에 `No manual verification required.`를 명시하고 그 근거를 `AI Validation Summary`에 적는다. +- `Impacted Area`를 기반으로 module/docs/test 변경 범위를 제시한다. +- 미해결 가정이나 리스크가 있으면 issue 본문에 `Open Questions`와 `Risks`로 명시한다. +- 출력은 GitHub issue에 바로 붙여 넣을 수 있는 Markdown 형식으로만 작성한다. + +출력 형식: +1. Issue Title +2. 배경 (Context) +3. 범위 (Scope) +4. AI Agent 작업 (AI Agent Work) 체크리스트 +5. 사람 작업 (Human Work) 체크리스트 +6. Acceptance Criteria Mapping (REQ 기준) +7. AI 검증 요약 (AI Validation Summary) +8. 사람 확인 체크리스트 (Human Verification Checklist) +9. 열린 질문 (Open Questions) +10. 리스크 (Risks) +11. 완료 조건 (Definition of Done) +12. GitHub Issue Create Command (`gh issue create`) 예시 diff --git a/.github/prompts/decide-requirement-scope.prompt.md b/.github/prompts/decide-requirement-scope.prompt.md new file mode 100644 index 0000000..4a847ec --- /dev/null +++ b/.github/prompts/decide-requirement-scope.prompt.md @@ -0,0 +1,38 @@ +--- +description: "Use when: evaluate whether a new feature or change request needs a new SRS requirement, an update to an existing one, a technical spec update only, or owner decision — before starting requirement drafting" +name: "Decide Requirement Scope" +argument-hint: "Describe the feature or change request: include feature description, issue body, and/or PR/diff summary" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 입력을 기반으로, 이 변경이 SRS 대상인지 아닌지를 판정한다. + +입력: +${input} + +판정 규칙: +- 기준 문서는 [requirement-scope-decision instructions](../../.github/instructions/requirement-scope-decision.instructions.md) 와 [SRS index](../../docs/SRS/index.md) 의 Requirement Register다. +- 다음 4가지 결과 중 하나를 반드시 반환한다. + 1. `New SRS requirement needed` + 2. `Update existing SRS requirement` + 3. `Technical spec only` + 4. `Needs owner decision` +- 판정 기준을 순서대로 적용한다. + - 사용자/외부 시스템이 관찰하는 계약(API, CLI, UI, Event, Data schema, Config, Deployment, Integration)이 바뀌는가? → YES면 SRS + - 측정 가능한 Non-Functional requirement(성능, 보안, 가용성 등)가 추가/변경되는가? → YES면 SRS + - Acceptance Criteria 및 명시적 승인 게이트가 필요한가? → YES면 SRS + - 위 기준에 모두 해당하지 않으면서 내부 리팩터링·라이브러리 교체·코드 구조 변경·구현 최적화인가? → Technical spec only + - 위 기준만으로 분류가 확정되지 않거나 운영 책임/리스크가 불명확한가? → Needs owner decision +- SRS 대상으로 판정되면, 신규 기능/계약인지 기존 REQ 범위 내 변경인지를 구분한다. + - 기존 REQ에 해당하는 경우 [SRS index](../../docs/SRS/index.md) 의 Requirement Register에서 후보 REQ ID를 찾아 제시한다. +- Technical spec only로 판정되면, 불필요한 REQ 생성을 명시적으로 피하도록 안내한다. +- 결과에는 항상 `Why`와 `Next Action`을 포함한다. +- `Open Questions`가 없으면 `없음`으로 명시한다. + +출력 형식: +1. **Decision**: `New SRS requirement needed` / `Update existing SRS requirement` / `Technical spec only` / `Needs owner decision` 중 하나 +2. **Why**: 판정 근거 — 어떤 기준에 해당하는지 구체적으로 설명 +3. **Recommended Type**: (SRS 대상인 경우만) Interface / Data / Deployment / Configuration 등 해당 requirement type +4. **Existing REQ candidates**: (Update 가능성이 있는 경우만) 관련 REQ ID와 제목 목록. 해당 없으면 생략 +5. **Next Action**: 판정 결과에 따른 다음 단계 안내 +6. **Open Questions**: 추가 확인이 필요한 사항. 없으면 `없음` diff --git a/.github/prompts/mark-requirement-implemented.prompt.md b/.github/prompts/mark-requirement-implemented.prompt.md new file mode 100644 index 0000000..b1567f5 --- /dev/null +++ b/.github/prompts/mark-requirement-implemented.prompt.md @@ -0,0 +1,25 @@ +--- +description: "Use when: decide whether an Approved requirement is ready to move to Implemented and generate the required status-change edits" +name: "Mark Requirement Implemented" +argument-hint: "Paste an Approved REQ file and implementation evidence" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 requirement 문서와 implementation evidence를 검토해 `Approved`에서 `Implemented`로 전환 가능한지 판단한다. + +입력: +${input} + +검토 규칙: +- 기준 문서는 [SRS index](../../docs/SRS/index.md) 의 `Status Transition Evidence`와 해당 requirement 문서 구조다. +- requirement의 `Acceptance Criteria`가 implementation evidence, tests, 또는 manual verification으로 충족되었는지 확인한다. +- 충족되지 않은 acceptance criteria가 있으면 구현 완료로 판정하지 않는다. +- 구현 완료 가능하면 status 변경, 잔여 리스크, Change Log 추가 초안을 함께 제안한다. +- 구현 완료 불가하면 미충족 기준과 필요한 검증 항목을 정리한다. + +출력 형식: +1. Implementation Decision: `Implemented-ready` 또는 `Not ready` +2. Unverified Criteria +3. Suggested Edits +4. Implementation Change Log Draft +5. Residual Risk diff --git a/.github/prompts/sync-srs-index.prompt.md b/.github/prompts/sync-srs-index.prompt.md new file mode 100644 index 0000000..e8ecc03 --- /dev/null +++ b/.github/prompts/sync-srs-index.prompt.md @@ -0,0 +1,28 @@ +--- +description: "Use when: update docs/SRS/index.md Requirement Register or Recent Change Log Summary after adding or editing REQ files" +name: "Sync SRS Index" +argument-hint: "Paste changed REQ files or describe what changed in SRS" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 입력을 기준으로 `docs/SRS/index.md`를 갱신하기 위한 제안을 만든다. + +입력: +${input} + +작업 규칙: +- 기준 문서는 [SRS index](../../docs/SRS/index.md) 이다. +- 새 requirement가 추가되었거나 Register가 바뀌면 `Requirement Register`의 최고 번호를 기준으로 다음 번호를 계산해 `Next Requirement ID`도 함께 갱신한다. +- 새 requirement가 추가되었으면 `Requirement Register`에 들어갈 행을 만든다. +- 기존 requirement가 수정되었으면 `Recent Change Log Summary`에 들어갈 요약 항목을 만든다. +- 기존 구조를 바꾸지 말고, 필요한 행과 요약만 제안한다. +- `Next Requirement ID`는 `Requirement Register`에 있는 가장 큰 REQ 번호보다 정확히 1 큰 값이어야 한다. +- `Recent Change Log Summary`는 최신 변경을 위에 두고, 짧은 요약 1줄로 작성한다. +- `Recent Change Log Summary`는 최신 5건만 유지하도록 제안한다. 5건을 초과하면 제거 또는 대체해야 할 가장 오래된 항목도 함께 설명한다. +- 출력은 사람이 `docs/SRS/index.md`에 바로 반영할 수 있는 Markdown 조각으로만 작성한다. + +출력 형식: +1. `Next Requirement ID`에 반영할 Markdown bullet +2. `Requirement Register`에 추가 또는 수정할 Markdown table row +3. `Recent Change Log Summary`에 추가할 Markdown section +4. 필요한 경우 only, index에서 제거 또는 갱신해야 할 기존 항목 설명 diff --git a/.github/prompts/validate-requirement.prompt.md b/.github/prompts/validate-requirement.prompt.md new file mode 100644 index 0000000..bbb9ba1 --- /dev/null +++ b/.github/prompts/validate-requirement.prompt.md @@ -0,0 +1,24 @@ +--- +description: "Use when: review an SRS requirement for ambiguity, missing acceptance criteria, missing impacted area, and change-log gaps" +name: "Validate Requirement Quality" +argument-hint: "Paste a REQ file or select requirement text" +agent: "agent" +model: "GPT-5 (copilot)" +--- +다음 requirement 문서를 검토한다. + +입력: +${input} + +검토 규칙: +- 기준은 [SRS index](../../docs/SRS/index.md) 와 관련 requirement 문서 구조를 따른다. +- 다음 항목을 우선 검토한다: 모호한 표현, test 불가능한 문장, 누락된 acceptance criteria, 누락된 impacted area, 상태/유형/우선순위/owner 누락, Type이 의사결정 규칙에 따라 정확하게 지정되었는지, Change Log 누락 또는 불일치. + - Type 분류 규칙: 사용자 조작 방식 → Interface, 데이터 저장/구조 → Data, 오류 처리 → Exception & Error Handling, 그 외 → Non-Functional +- 중요한 문제부터 우선순위 순으로 정리한다. +- 문제가 없으면 `No critical findings.` 로 시작한다. +- requirement 본문을 직접 다시 작성하지 말고, 수정 제안 위주로 답한다. + +출력 형식: +1. Findings +2. Open Questions +3. Suggested Edits diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..4af7096 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,24 @@ +## Requirement Traceability + +- Requirement ID: REQ-XXX +- Requirement Link: docs/SRS//REQ-XXX_.md +- Related Issue: # + +## Acceptance Criteria Coverage +- [ ] AC1: +- [ ] AC2: + +## Test Evidence +- Automated: + - +- Manual: + - + - If not required: `No manual verification required.` + +## Impacted Area Check +- Docs: +- Modules: +- Tests: + +## Release Notes Input +- [ ] Added REQ ID to release notes (or tracked release note draft)