diff --git a/.github/ISSUE_TEMPLATE/epic.yml b/.github/ISSUE_TEMPLATE/epic.yml index 4384b21..0ee7b4a 100644 --- a/.github/ISSUE_TEMPLATE/epic.yml +++ b/.github/ISSUE_TEMPLATE/epic.yml @@ -7,6 +7,8 @@ body: value: | Use this form for sprint-sized work that will be broken into multiple tasks. + GitHub assigns the numeric issue number automatically. Enter only the short title after `EPIC- `. + Keep the layered architecture in mind: - `application -> domain -> engine` - `domain` must not depend on Qt UI code diff --git a/.github/ISSUE_TEMPLATE/lightweight-task.yml b/.github/ISSUE_TEMPLATE/lightweight-task.yml new file mode 100644 index 0000000..0ccc766 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/lightweight-task.yml @@ -0,0 +1,85 @@ +name: Lightweight Task +description: Create a small Docs, Chore, or Analysis task without implementation-heavy required fields. +title: "T- " +body: + - type: markdown + attributes: + value: | + Use this form for a small documentation, maintenance, or analysis task. + + GitHub assigns the numeric issue number automatically. Enter only the short title after `T- `. + Keep the issue focused enough that it can usually map to one PR. + - type: textarea + id: summary + attributes: + label: Summary + description: Describe the task in one short paragraph. + placeholder: Add a short guide for how the team should use the GitHub Project board. + validations: + required: true + - type: input + id: parent-issue + attributes: + label: Parent Issue + description: Link the parent epic when this task belongs under one. + placeholder: "#1" + - type: dropdown + id: area + attributes: + label: Area + description: Select the main area this task belongs to. + options: + - Docs + - Chore + - Analysis + validations: + required: true + - type: dropdown + id: sprint + attributes: + label: Target Sprint + description: Choose the sprint that should own this task. + options: + - Sprint 1 + - Sprint 2 + - Sprint 3 + - Later + validations: + required: true + - type: textarea + id: deliverable + attributes: + label: Deliverable + description: State what concrete output or change should exist when the task is done. + placeholder: | + - Add `docs/GitHub Project.md` + - Capture the expected team workflow + validations: + required: true + - type: textarea + id: done-when + attributes: + label: Done When + description: List the simplest completion criteria for this task. + placeholder: | + - The document or maintenance change is merged + - The intended audience can use the result without extra clarification + validations: + required: true + - type: textarea + id: verification + attributes: + label: Verification / Notes + description: Record how the task should be checked, or explain why no build/test validation is needed. + placeholder: | + - Review the markdown in GitHub + - Docs-only change; no build/test run required + - type: checkboxes + id: checks + attributes: + label: Repository Checks + options: + - label: I checked for an existing related issue or epic before creating this task. + required: true + - label: I will keep the issue title aligned with the repository naming convention. + required: true diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml index 56ba35d..00f058a 100644 --- a/.github/ISSUE_TEMPLATE/task.yml +++ b/.github/ISSUE_TEMPLATE/task.yml @@ -1,12 +1,13 @@ -name: Task -description: Create a single implementation, analysis, docs, or maintenance task. +name: Implementation Task +description: Create a scoped code or build task for Engine, Domain, Application, or Build work. title: "T- " body: - type: markdown attributes: value: | - Use this form for a single unit of work. + Use this form for a single implementation or build task. + GitHub assigns the numeric issue number automatically. Enter only the short title after `T- `. Prefer one task per PR, and keep the task scoped tightly enough that it can be reviewed and merged independently. - type: textarea id: summary @@ -31,10 +32,7 @@ body: - Engine - Domain - Application - - Docs - Build - - Analysis - - Chore validations: required: true - type: dropdown diff --git a/AGENTS.md b/AGENTS.md index bedead8..806c5d7 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -55,7 +55,8 @@ - Use GitHub issue forms for new work items; blank issues are disabled. - Issue types currently supported: - `Epic` for larger parent work - - `Task` for single implementation/analysis/docs work + - `Implementation Task` for `Engine` / `Domain` / `Application` / `Build` work + - `Lightweight Task` for `Docs` / `Chore` / `Analysis` work - GitHub Project guidance is documented in `docs/GitHub Project.md`. - PR titles must follow `[Area] short summary`. - Allowed PR areas: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0dfbb92..401730c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,8 +14,10 @@ PR은 작은 단위로 나누고, 어떤 issue를 해결하는지 분명하게 - 새 work item은 GitHub issue form으로 생성합니다. - `Epic`은 여러 task를 묶는 상위 계획에 사용합니다. -- `Task`는 구현, 분석, 문서화 같은 단일 작업 단위에 사용합니다. -- 제목은 저장소 관례에 맞춰 `EPIC-n short title` 또는 `T-xxx short title` 형식을 유지합니다. +- `Implementation Task`는 `Engine`, `Domain`, `Application`, `Build` 같은 코드/빌드 작업에 사용합니다. +- `Lightweight Task`는 `Docs`, `Chore`, `Analysis` 같은 작은 작업에 사용합니다. +- 제목은 저장소 관례에 맞춰 `EPIC- short title` 또는 `T- short title` 형식을 유지합니다. +- GitHub issue 번호(`#12` 같은 값)는 생성 후 자동으로 붙습니다. 제목에는 숫자를 직접 적지 않습니다. - 가능하면 task는 parent epic을 함께 적고, Sprint와 Area를 바로 정합니다. - 구조나 의존성에 영향을 주는 issue는 본문에 계층 영향과 검증 계획을 남깁니다. diff --git a/docs/GitHub Project.md b/docs/GitHub Project.md new file mode 100644 index 0000000..ac34db4 --- /dev/null +++ b/docs/GitHub Project.md @@ -0,0 +1,62 @@ +# SafeCrowd GitHub Project + +## 개요 +- Project: `SafeCrowd Implementation` +- URL: `https://github.com/users/learncold/projects/1` +- Repository: `learncold/cpp-ecs-engine` +- 관리 방식: + - Epic과 Task를 모두 issue로 관리한다. + - Epic-Task 관계는 GitHub native `Parent issue` / `sub-issue`를 사용한다. + - 선행 작업 관계는 GitHub native issue dependency `blocked by`를 사용한다. + +## 현재 필드 +- `Title` +- `Status` + - `In Progress` + - `Done` +- `Area` + - `⚙️Engine` + - `🏃Domain` + - `🖥️Application` + - `🔎Analysis` + - `📄Docs` +- `Sprint` + - `Sprint 1` + - `Sprint 2` + - `Sprint 3` + - `Later` +- `Parent issue` +- `Sub-issues progress` + +## 현재 뷰 +- 뷰 수: 1개 +- 이름: `View 1` +- 형식: `Table` +- 필터: 없음 + +권장 표시 컬럼: +- `Title` +- `Status` +- `Sprint` +- `Area` +- `Parent issue` +- `Sub-issues progress` + +## 현재 구조 +- `Sprint 1` + - Epic: `#1 EPIC-1 Engine Foundation` + - Epic: `#2 EPIC-2 Sprint 1 Demo Vertical Slice` + - Task: `#6 ~ #20` +- `Sprint 2` + - Epic: `#3 EPIC-3 Product Completion for Sprint 2` + - Epic: `#4 EPIC-4 Compare and Presentation Readiness` + - Task: `#21 ~ #30` +- `Sprint 3` + - Epic: `#5 EPIC-5 Finish and Optional Extensions` + - Task: `#31 ~ #35` + +## 메모 +- `Docs`, `Chore`, `Analysis`는 `Lightweight Task` form으로 가볍게 등록한다. +- `Engine`, `Domain`, `Application`, `Build`는 `Implementation Task` form으로 범위와 검증 계획까지 남긴다. +- 세부 작업명, 부모-자식 관계, dependency는 GitHub Project와 issue 자체를 기준으로 관리한다. +- 2026-03-20 기준 현재 `In Progress` 상태인 작업은 `#6 T-001`이다.