@sduck/sduck-cli 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sduck/sduck-assets/agent-rules/antigravity.md +4 -0
- package/.sduck/sduck-assets/agent-rules/claude-code.md +18 -0
- package/.sduck/sduck-assets/agent-rules/codex.md +18 -0
- package/.sduck/sduck-assets/agent-rules/core.md +79 -0
- package/.sduck/sduck-assets/agent-rules/cursor.mdc +11 -0
- package/.sduck/sduck-assets/agent-rules/gemini-cli.md +18 -0
- package/.sduck/sduck-assets/agent-rules/opencode.md +18 -0
- package/.sduck/sduck-assets/eval/plan.yml +31 -0
- package/.sduck/sduck-assets/eval/spec.yml +31 -0
- package/.sduck/sduck-assets/eval/task.yml +31 -0
- package/.sduck/sduck-assets/types/build.md +194 -0
- package/.sduck/sduck-assets/types/chore.md +164 -0
- package/.sduck/sduck-assets/types/feature.md +187 -0
- package/.sduck/sduck-assets/types/fix.md +174 -0
- package/.sduck/sduck-assets/types/refactor.md +174 -0
- package/README.md +66 -2
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
이 프로젝트는 **Spec-Driven Development(SDD)** 워크플로우를 따른다.
|
|
2
|
+
`sduck` CLI가 없으므로 Claude가 직접 파일을 생성하고 상태를 관리한다.
|
|
3
|
+
워크플로우 구조와 규칙은 `sduck` CLI와 동일하다.
|
|
4
|
+
|
|
5
|
+
## 절대 규칙
|
|
6
|
+
|
|
7
|
+
다음 두 가지 승인은 절대 Claude가 직접 처리하지 않는다.
|
|
8
|
+
|
|
9
|
+
- **스펙 승인**은 사용자가 명시적으로 승인해야 한다
|
|
10
|
+
- **플랜 승인**은 사용자가 명시적으로 승인해야 한다
|
|
11
|
+
|
|
12
|
+
승인 전에는 어떤 코드도 작성하지 않는다.
|
|
13
|
+
|
|
14
|
+
## Claude Code Instructions
|
|
15
|
+
|
|
16
|
+
- Follow the repository SDD workflow exactly.
|
|
17
|
+
- Use `CLAUDE.md` as project-level instruction context.
|
|
18
|
+
- Keep plans highly detailed: list exact file paths, likely functions or sections to edit, concrete change intent, and verification commands.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
이 프로젝트는 **Spec-Driven Development(SDD)** 워크플로우를 따른다.
|
|
2
|
+
생성된 `AGENT.md`는 codex 계열 도구가 참고할 project-level instruction context다.
|
|
3
|
+
워크플로우 구조와 규칙은 `sduck` CLI와 동일하다.
|
|
4
|
+
|
|
5
|
+
## 절대 규칙
|
|
6
|
+
|
|
7
|
+
다음 두 가지 승인은 에이전트가 직접 처리하지 않는다.
|
|
8
|
+
|
|
9
|
+
- **스펙 승인**은 사용자가 명시적으로 승인해야 한다
|
|
10
|
+
- **플랜 승인**은 사용자가 명시적으로 승인해야 한다
|
|
11
|
+
|
|
12
|
+
승인 전에는 어떤 코드도 작성하지 않는다.
|
|
13
|
+
|
|
14
|
+
## Codex Instructions
|
|
15
|
+
|
|
16
|
+
- Follow the repository SDD workflow exactly.
|
|
17
|
+
- Use `AGENT.md` as project-level instruction context.
|
|
18
|
+
- Keep plans highly detailed: list exact file paths, likely functions or sections to edit, concrete change intent, and verification commands.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# SDD Workflow Rules
|
|
2
|
+
|
|
3
|
+
## 디렉토리 구조
|
|
4
|
+
|
|
5
|
+
에이전트는 아래 경로를 기준으로 `sduck` 상태를 읽고 쓴다.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
프로젝트 루트/
|
|
9
|
+
├── .sduck/sduck-assets/
|
|
10
|
+
│ ├── eval/
|
|
11
|
+
│ │ ├── plan.yml
|
|
12
|
+
│ │ ├── spec.yml
|
|
13
|
+
│ │ └── task.yml
|
|
14
|
+
│ ├── types/
|
|
15
|
+
│ │ ├── build.md
|
|
16
|
+
│ │ ├── chore.md
|
|
17
|
+
│ │ ├── feature.md
|
|
18
|
+
│ │ ├── fix.md
|
|
19
|
+
│ │ └── refactor.md
|
|
20
|
+
│ └── agent-rules/
|
|
21
|
+
│
|
|
22
|
+
└── .sduck/sduck-workspace/
|
|
23
|
+
└── {timestamp}-{type}-{slug}/
|
|
24
|
+
├── meta.yml
|
|
25
|
+
├── spec.md
|
|
26
|
+
└── plan.md
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 세션 시작 시 필수 확인
|
|
30
|
+
|
|
31
|
+
작업을 시작하기 전에 반드시 아래를 확인한다.
|
|
32
|
+
|
|
33
|
+
1. `.sduck/sduck-workspace/` 디렉토리가 있는지 확인
|
|
34
|
+
2. 진행 중인 작업(`IN_PROGRESS`, `PENDING_*`)이 있는지 확인
|
|
35
|
+
3. 있다면 해당 작업의 `meta.yml`을 읽고 현재 상태를 파악한 뒤 이어서 진행
|
|
36
|
+
|
|
37
|
+
## 사용자 메모 규칙
|
|
38
|
+
|
|
39
|
+
사용자가 `spec.md`, `plan.md` 같은 문서의 특정 라인 끝에 `<-` 형식으로 메모를 추가할 수 있다.
|
|
40
|
+
|
|
41
|
+
- `<-` 뒤의 내용은 사용자 메모로 간주한다
|
|
42
|
+
- 에이전트는 문서를 읽을 때 본문과 함께 이 메모도 반드시 반영한다
|
|
43
|
+
- 사용자 메모가 기존 본문과 충돌하면, 사용자 메모를 최신 지시사항으로 우선 해석한다
|
|
44
|
+
- 메모는 가능하면 해당 문장을 수정하거나 정식 섹션에 흡수해 문서 본문에 반영한다
|
|
45
|
+
- 여러 줄에 메모가 흩어져 있어도 무시하지 말고 작업 전 확인한다
|
|
46
|
+
|
|
47
|
+
## 워크플로우 규칙
|
|
48
|
+
|
|
49
|
+
- Use the shipped CLI commands for workflow operations: `sduck init`, `sduck start <type> <slug>`, `sduck fast-track <type> <slug>`, `sduck spec approve [target]`, and `sduck plan approve [target]`.
|
|
50
|
+
- Do not write implementation code before spec approval.
|
|
51
|
+
- Do not start implementation before plan approval.
|
|
52
|
+
- Follow the workflow order: `spec -> approval -> plan -> approval -> implementation`.
|
|
53
|
+
- Respect `meta.yml` state transitions and update step completion immediately.
|
|
54
|
+
- Write `plan.md` in detailed implementation units: include target files, the functions/sections or rough line ranges to inspect, the exact change intent for each file, and the tests or commands to verify the step.
|
|
55
|
+
|
|
56
|
+
## fast-track 규칙
|
|
57
|
+
|
|
58
|
+
- `sduck fast-track <type> <slug>`는 `spec.md`를 생략하지 않고 minimal spec + minimal plan을 생성하는 빠른 경로다.
|
|
59
|
+
- fast-track은 반복적이거나 범위가 작고 명확한 작업에서만 사용한다.
|
|
60
|
+
- 범위가 크거나 요구사항이 불확실한 작업에는 fast-track 대신 일반 `start -> spec -> plan` 흐름을 사용한다.
|
|
61
|
+
- fast-track은 사용자 승인 자체를 우회하지 않는다.
|
|
62
|
+
- interactive 환경에서만 확인 1회로 spec/plan 승인을 묶을 수 있다.
|
|
63
|
+
- 비대화형 환경에서는 문서 생성만 수행하고, 이후 `sduck spec approve`, `sduck plan approve`로 이어간다.
|
|
64
|
+
|
|
65
|
+
## 승인 규칙
|
|
66
|
+
|
|
67
|
+
- 스펙 승인은 반드시 사용자가 직접 승인 의사를 전달해야 한다
|
|
68
|
+
- 플랜 승인도 반드시 사용자가 직접 승인 의사를 전달해야 한다
|
|
69
|
+
- `PENDING_SPEC_APPROVAL` 상태에서는 spec.md 작성/수정만 가능하고 코드 작성은 금지한다
|
|
70
|
+
- `PENDING_PLAN_APPROVAL` 상태에서는 plan.md 작성/수정만 가능하고 코드 작성은 금지한다
|
|
71
|
+
- `IN_PROGRESS` 상태에서만 구현과 step 완료 기록을 진행한다
|
|
72
|
+
- Do not mark a task `DONE` until all completion criteria are satisfied.
|
|
73
|
+
|
|
74
|
+
## 평가 규칙
|
|
75
|
+
|
|
76
|
+
- spec을 새로 작성하거나 수정한 직후, 반드시 `.sduck/sduck-assets/eval/spec.yml`을 읽고 그 기준으로 자체 평가 점수를 남긴다
|
|
77
|
+
- plan을 새로 작성하거나 수정한 직후, 반드시 `.sduck/sduck-assets/eval/plan.yml`을 읽고 그 기준으로 자체 평가 점수를 남긴다
|
|
78
|
+
- 모든 Step 완료 후 `spec.md`의 완료 조건 체크리스트를 검증하고, `.sduck/sduck-assets/eval/task.yml`을 읽어 task 평가를 수행한다
|
|
79
|
+
- After implementation is complete, run task evaluation, show the results, and only then move to completion processing.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
이 프로젝트는 **Spec-Driven Development(SDD)** 워크플로우를 따른다.
|
|
2
|
+
`GEMINI.md`는 Gemini CLI가 직접 파일을 생성하고 상태를 관리할 때 참고하는 project-level instruction context다.
|
|
3
|
+
워크플로우 구조와 규칙은 `sduck` CLI와 동일하다.
|
|
4
|
+
|
|
5
|
+
## 절대 규칙
|
|
6
|
+
|
|
7
|
+
다음 두 가지 승인은 절대 에이전트가 직접 처리하지 않는다.
|
|
8
|
+
|
|
9
|
+
- **스펙 승인**은 사용자가 명시적으로 승인해야 한다
|
|
10
|
+
- **플랜 승인**은 사용자가 명시적으로 승인해야 한다
|
|
11
|
+
|
|
12
|
+
승인 전에는 어떤 코드도 작성하지 않는다.
|
|
13
|
+
|
|
14
|
+
## Gemini CLI Instructions
|
|
15
|
+
|
|
16
|
+
- Follow the repository SDD workflow exactly.
|
|
17
|
+
- Use `GEMINI.md` as project-level instruction context.
|
|
18
|
+
- Keep plans highly detailed: list exact file paths, likely functions or sections to edit, concrete change intent, and verification commands.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
이 프로젝트는 **Spec-Driven Development(SDD)** 워크플로우를 따른다.
|
|
2
|
+
`sduck` CLI가 없으므로 opencode가 직접 파일을 생성하고 상태를 관리한다.
|
|
3
|
+
워크플로우 구조와 규칙은 `sduck` CLI와 동일하다.
|
|
4
|
+
|
|
5
|
+
## 절대 규칙
|
|
6
|
+
|
|
7
|
+
다음 두 가지 승인은 절대 opencode가 직접 처리하지 않는다.
|
|
8
|
+
|
|
9
|
+
- **스펙 승인**은 사용자가 명시적으로 승인해야 한다
|
|
10
|
+
- **플랜 승인**은 사용자가 명시적으로 승인해야 한다
|
|
11
|
+
|
|
12
|
+
승인 전에는 어떤 코드도 작성하지 않는다.
|
|
13
|
+
|
|
14
|
+
## OpenCode Instructions
|
|
15
|
+
|
|
16
|
+
- Follow the repository SDD workflow exactly.
|
|
17
|
+
- Use `AGENT.md` as project-level instruction context.
|
|
18
|
+
- Keep plans highly detailed: list exact file paths, likely functions or sections to edit, concrete change intent, and verification commands.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
|
|
3
|
+
plan_evaluation:
|
|
4
|
+
scale:
|
|
5
|
+
min: 1
|
|
6
|
+
max: 5
|
|
7
|
+
|
|
8
|
+
criteria:
|
|
9
|
+
- key: semantic_clarity
|
|
10
|
+
label: semantic clarity
|
|
11
|
+
question: 의미가 분명한가
|
|
12
|
+
|
|
13
|
+
- key: abstraction
|
|
14
|
+
label: abstraction
|
|
15
|
+
question: 추상화 수준이 적절한가
|
|
16
|
+
|
|
17
|
+
- key: typing
|
|
18
|
+
label: typing
|
|
19
|
+
question: 타입 안정성을 충분히 고려했는가
|
|
20
|
+
|
|
21
|
+
- key: security
|
|
22
|
+
label: security
|
|
23
|
+
question: 보안상 문제 가능성을 줄였는가
|
|
24
|
+
|
|
25
|
+
- key: maintainability
|
|
26
|
+
label: maintainability
|
|
27
|
+
question: 유지보수하기 쉬운 구조인가
|
|
28
|
+
|
|
29
|
+
- key: testability
|
|
30
|
+
label: testability
|
|
31
|
+
question: 테스트하기 쉬운가
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
|
|
3
|
+
spec_evaluation:
|
|
4
|
+
scale:
|
|
5
|
+
min: 1
|
|
6
|
+
max: 5
|
|
7
|
+
|
|
8
|
+
criteria:
|
|
9
|
+
- key: problem_clarity
|
|
10
|
+
label: problem clarity
|
|
11
|
+
question: 문제와 목표가 분명한가
|
|
12
|
+
|
|
13
|
+
- key: scope_definition
|
|
14
|
+
label: scope definition
|
|
15
|
+
question: 범위와 제외 범위가 명확한가
|
|
16
|
+
|
|
17
|
+
- key: completion_criteria
|
|
18
|
+
label: completion criteria
|
|
19
|
+
question: 완료 조건이 검증 가능하게 정의되었는가
|
|
20
|
+
|
|
21
|
+
- key: feasibility
|
|
22
|
+
label: feasibility
|
|
23
|
+
question: 현재 시스템 기준으로 실행 가능한가
|
|
24
|
+
|
|
25
|
+
- key: risk_coverage
|
|
26
|
+
label: risk coverage
|
|
27
|
+
question: 엣지 케이스와 영향 범위를 충분히 고려했는가
|
|
28
|
+
|
|
29
|
+
- key: testability
|
|
30
|
+
label: testability
|
|
31
|
+
question: 테스트 및 검증 방법이 드러나는가
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
|
|
3
|
+
task_evaluation:
|
|
4
|
+
scale:
|
|
5
|
+
min: 1
|
|
6
|
+
max: 5
|
|
7
|
+
|
|
8
|
+
criteria:
|
|
9
|
+
- key: spec_alignment
|
|
10
|
+
label: spec alignment
|
|
11
|
+
question: 구현 결과가 승인된 spec과 일치하는가
|
|
12
|
+
|
|
13
|
+
- key: plan_alignment
|
|
14
|
+
label: plan alignment
|
|
15
|
+
question: 구현 결과가 승인된 plan의 단계와 의도를 충실히 반영하는가
|
|
16
|
+
|
|
17
|
+
- key: implementation_quality
|
|
18
|
+
label: implementation quality
|
|
19
|
+
question: 구현 품질과 구조가 충분히 명확하고 견고한가
|
|
20
|
+
|
|
21
|
+
- key: test_completeness
|
|
22
|
+
label: test completeness
|
|
23
|
+
question: 테스트가 핵심 동작과 회귀 위험을 충분히 검증하는가
|
|
24
|
+
|
|
25
|
+
- key: documentation_quality
|
|
26
|
+
label: documentation quality
|
|
27
|
+
question: 필요한 문서와 사용 흐름이 구현과 일치하게 정리되었는가
|
|
28
|
+
|
|
29
|
+
- key: maintainability
|
|
30
|
+
label: maintainability
|
|
31
|
+
question: 이후 수정과 확장이 쉬운 상태로 정리되었는가
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# [build] {프로젝트명} — 프로젝트 초기 설정
|
|
2
|
+
|
|
3
|
+
> **작업 타입:** `build` (Project Init/Build)
|
|
4
|
+
> **작성자:**
|
|
5
|
+
> **작성일:** YYYY-MM-DD
|
|
6
|
+
> **연관 티켓:**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. 프로젝트 개요
|
|
11
|
+
|
|
12
|
+
### 목적 및 배경
|
|
13
|
+
|
|
14
|
+
<!-- 이 프로젝트가 왜 존재하는지, 어떤 문제를 해결하는지 서술 -->
|
|
15
|
+
|
|
16
|
+
### 핵심 목표
|
|
17
|
+
|
|
18
|
+
<!-- 이 빌드 작업을 통해 달성하고자 하는 구체적인 결과물을 나열 -->
|
|
19
|
+
|
|
20
|
+
- [ ]
|
|
21
|
+
- [ ]
|
|
22
|
+
- [ ]
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. 기술 스택
|
|
27
|
+
|
|
28
|
+
| 구분 | 선택 | 버전 | 선택 이유 |
|
|
29
|
+
| ------------------- | ---- | ---- | --------- |
|
|
30
|
+
| 언어 | | | |
|
|
31
|
+
| 런타임 | | | |
|
|
32
|
+
| 프레임워크 | | | |
|
|
33
|
+
| DB | | | |
|
|
34
|
+
| ORM / Query Builder | | | |
|
|
35
|
+
| 상태 관리 | | | |
|
|
36
|
+
| 테스트 프레임워크 | | | |
|
|
37
|
+
| CI/CD | | | |
|
|
38
|
+
| 컨테이너 | | | |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. 아키텍처
|
|
43
|
+
|
|
44
|
+
### 전체 구조
|
|
45
|
+
|
|
46
|
+
<!-- 디렉토리 구조 및 레이어 분리 방식 기술 (예: Clean Architecture, MVC 등) -->
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
{project-root}/
|
|
50
|
+
├── src/
|
|
51
|
+
│ ├── ...
|
|
52
|
+
├── tests/
|
|
53
|
+
│ ├── ...
|
|
54
|
+
└── ...
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 계층 및 의존성 규칙
|
|
58
|
+
|
|
59
|
+
<!-- 각 계층(Layer)의 역할과 의존 방향을 명시 -->
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 4. 코드 컨벤션
|
|
64
|
+
|
|
65
|
+
### 네이밍 규칙
|
|
66
|
+
|
|
67
|
+
| 대상 | 규칙 | 예시 |
|
|
68
|
+
| ----------------- | ---- | ---- |
|
|
69
|
+
| 파일명 | | |
|
|
70
|
+
| 클래스 / 컴포넌트 | | |
|
|
71
|
+
| 함수 / 메서드 | | |
|
|
72
|
+
| 변수 | | |
|
|
73
|
+
| 상수 | | |
|
|
74
|
+
| 타입 / 인터페이스 | | |
|
|
75
|
+
|
|
76
|
+
### 포맷팅
|
|
77
|
+
|
|
78
|
+
<!-- 들여쓰기, 줄 길이, 세미콜론 등 -->
|
|
79
|
+
|
|
80
|
+
- 들여쓰기:
|
|
81
|
+
- 최대 줄 길이:
|
|
82
|
+
- 기타:
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 5. 린팅 및 타입 검사
|
|
87
|
+
|
|
88
|
+
| 도구 | 설정 파일 | 주요 규칙 |
|
|
89
|
+
| ------------ | --------- | --------- |
|
|
90
|
+
| Linter | | |
|
|
91
|
+
| Formatter | | |
|
|
92
|
+
| Type Checker | | |
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
<!-- 핵심 설정 값 또는 extends/plugins 목록 -->
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 6. 테스트 전략
|
|
101
|
+
|
|
102
|
+
### 목표 커버리지
|
|
103
|
+
|
|
104
|
+
- 전체: **80%** 이상 (기본값)
|
|
105
|
+
- 비즈니스 로직 (Unit): **%** 이상
|
|
106
|
+
- API / 통합 (Integration): **%** 이상
|
|
107
|
+
|
|
108
|
+
### 테스트 레벨별 전략
|
|
109
|
+
|
|
110
|
+
| 레벨 | 도구 | 대상 범위 | 비고 |
|
|
111
|
+
| ----------- | ---- | --------- | ---- |
|
|
112
|
+
| Unit | | | |
|
|
113
|
+
| Integration | | | |
|
|
114
|
+
| E2E | | | |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 7. 환경 구성
|
|
119
|
+
|
|
120
|
+
### 환경 목록
|
|
121
|
+
|
|
122
|
+
| 환경 | 목적 | 배포 방식 |
|
|
123
|
+
| ------------ | ----------- | --------- |
|
|
124
|
+
| `local` | 개발자 로컬 | 수동 |
|
|
125
|
+
| `dev` | 통합 개발 | CI 자동 |
|
|
126
|
+
| `staging` | QA / 검증 | 수동 승인 |
|
|
127
|
+
| `production` | 운영 | 수동 승인 |
|
|
128
|
+
|
|
129
|
+
### 환경 변수
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
# 필수 환경 변수 목록 (값 제외, 키만 명시)
|
|
133
|
+
APP_ENV=
|
|
134
|
+
DATABASE_URL=
|
|
135
|
+
SECRET_KEY=
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 8. Git 전략
|
|
141
|
+
|
|
142
|
+
### 브랜치 모델
|
|
143
|
+
|
|
144
|
+
<!-- 예: Git Flow / GitHub Flow / Trunk-based 중 선택 및 이유 -->
|
|
145
|
+
|
|
146
|
+
### 커밋 메시지 컨벤션
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
<type>(<scope>): <subject>
|
|
150
|
+
|
|
151
|
+
예) feat(auth): add JWT refresh token logic
|
|
152
|
+
fix(api): resolve null pointer on user fetch
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### PR / MR 규칙
|
|
156
|
+
|
|
157
|
+
- 최소 리뷰어 수:
|
|
158
|
+
- 머지 방식: (Squash / Rebase / Merge Commit)
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 9. CI/CD 파이프라인
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
Push → Lint & Type Check → Unit Test → Build → (Integration Test) → Deploy
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
- **Lint / Type Check:** 실패 시 파이프라인 즉시 중단
|
|
169
|
+
- **테스트 커버리지 임계값:** 미달 시 배포 차단
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 10. 제약 조건 및 비기능 요구사항
|
|
174
|
+
|
|
175
|
+
| 항목 | 요구사항 | 측정 기준 |
|
|
176
|
+
| ----------------------- | -------- | --------- |
|
|
177
|
+
| 성능 | | |
|
|
178
|
+
| 보안 | | |
|
|
179
|
+
| 접근성 | | |
|
|
180
|
+
| 브라우저 / OS 지원 범위 | | |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 11. 미결 사항 (Open Questions)
|
|
185
|
+
|
|
186
|
+
<!-- 아직 결정되지 않았거나 추가 논의가 필요한 항목 -->
|
|
187
|
+
|
|
188
|
+
- [ ]
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 12. 참고 자료
|
|
193
|
+
|
|
194
|
+
-
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# [chore] {작업 내용 요약}
|
|
2
|
+
|
|
3
|
+
> **작업 타입:** `chore` (Chore)
|
|
4
|
+
> **세부 분류:** `dependency-update` / `build-config` / `ci-cd` / `documentation` / `infra` / `기타`
|
|
5
|
+
> **작성자:**
|
|
6
|
+
> **작성일:** YYYY-MM-DD
|
|
7
|
+
> **연관 티켓:**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. 작업 개요
|
|
12
|
+
|
|
13
|
+
### 작업 목적
|
|
14
|
+
|
|
15
|
+
<!-- 왜 이 작업이 필요한지 간략히 기술 -->
|
|
16
|
+
|
|
17
|
+
### 작업 범위
|
|
18
|
+
|
|
19
|
+
- [ ] 패키지 / 의존성 업데이트
|
|
20
|
+
- [ ] 빌드 스크립트 / 설정 변경
|
|
21
|
+
- [ ] CI/CD 파이프라인 수정
|
|
22
|
+
- [ ] 문서 작성 / 수정
|
|
23
|
+
- [ ] 환경 설정 변경
|
|
24
|
+
- [ ] 기타:
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. 변경 상세
|
|
29
|
+
|
|
30
|
+
### 현재 상태 (As-Is)
|
|
31
|
+
|
|
32
|
+
<!-- 현재 버전, 설정, 문서 내용 등 -->
|
|
33
|
+
|
|
34
|
+
### 변경 후 상태 (To-Be)
|
|
35
|
+
|
|
36
|
+
<!-- 변경 후 버전, 설정, 문서 내용 등 -->
|
|
37
|
+
|
|
38
|
+
### 변경 파일 목록
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
target_paths:
|
|
42
|
+
- package.json
|
|
43
|
+
- .github/workflows/...
|
|
44
|
+
- docs/...
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. 의존성 변경 (해당 시)
|
|
50
|
+
|
|
51
|
+
### 업데이트 목록
|
|
52
|
+
|
|
53
|
+
| 패키지 | 현재 버전 | 변경 버전 | 변경 유형 | 변경 이유 |
|
|
54
|
+
| ------ | --------- | --------- | --------------------- | --------- |
|
|
55
|
+
| | | | major / minor / patch | |
|
|
56
|
+
| | | | major / minor / patch | |
|
|
57
|
+
|
|
58
|
+
### 주요 Breaking Changes 검토 (Major 업데이트 시)
|
|
59
|
+
|
|
60
|
+
| 패키지 | Breaking Change 내용 | 대응 방안 |
|
|
61
|
+
| ------ | -------------------- | --------- |
|
|
62
|
+
| | | |
|
|
63
|
+
|
|
64
|
+
### 제거 패키지
|
|
65
|
+
|
|
66
|
+
| 패키지 | 제거 이유 | 대체 패키지 |
|
|
67
|
+
| ------ | --------- | ----------- |
|
|
68
|
+
| | | |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4. CI/CD 변경 (해당 시)
|
|
73
|
+
|
|
74
|
+
### 변경 전 파이프라인
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
(기존 파이프라인 흐름 또는 설정)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 변경 후 파이프라인
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
(변경된 파이프라인 흐름 또는 설정)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 변경 이유
|
|
87
|
+
|
|
88
|
+
<!-- 성능, 보안, 유지보수성 등 -->
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 5. 문서 변경 (해당 시)
|
|
93
|
+
|
|
94
|
+
| 문서 | 변경 내용 요약 | 변경 이유 |
|
|
95
|
+
| --------------- | -------------- | --------- |
|
|
96
|
+
| README.md | | |
|
|
97
|
+
| CONTRIBUTING.md | | |
|
|
98
|
+
| docs/... | | |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 6. 검증 계획
|
|
103
|
+
|
|
104
|
+
> chore 작업은 기능 변경이 없으므로 기존 테스트 통과 + 빌드 성공이 핵심 기준이다.
|
|
105
|
+
|
|
106
|
+
### 검증 체크리스트
|
|
107
|
+
|
|
108
|
+
- [ ] `lint` 통과
|
|
109
|
+
- [ ] `build` 성공
|
|
110
|
+
- [ ] 기존 단위 테스트 전체 통과
|
|
111
|
+
- [ ] 기존 통합 테스트 전체 통과 (해당 시)
|
|
112
|
+
- [ ] CI/CD 파이프라인 전체 동작 확인 (해당 시)
|
|
113
|
+
- [ ] 로컬 개발 환경 정상 동작 확인
|
|
114
|
+
- [ ] 스테이징 배포 및 동작 확인 (해당 시)
|
|
115
|
+
|
|
116
|
+
### 검증 방법
|
|
117
|
+
|
|
118
|
+
<!-- 특이사항이 있다면 구체적인 검증 명령어나 절차 기술 -->
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# 예시
|
|
122
|
+
npm install
|
|
123
|
+
npm run lint
|
|
124
|
+
npm run build
|
|
125
|
+
npm test
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 7. 영향 범위
|
|
131
|
+
|
|
132
|
+
### 런타임 영향
|
|
133
|
+
|
|
134
|
+
- [ ] 런타임 코드 변경 없음
|
|
135
|
+
- [ ] 런타임에 영향 있음 (내용 명시):
|
|
136
|
+
|
|
137
|
+
### 개발자 환경 영향
|
|
138
|
+
|
|
139
|
+
<!-- 팀원들이 로컬 환경을 어떻게 업데이트해야 하는지 -->
|
|
140
|
+
|
|
141
|
+
- [ ] `npm install` 재실행 필요
|
|
142
|
+
- [ ] `.env` 파일 업데이트 필요: _(추가/변경 키 명시)_
|
|
143
|
+
- [ ] 별도 마이그레이션 절차 필요:
|
|
144
|
+
- [ ] 변경 없음
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 8. 롤백 계획
|
|
149
|
+
|
|
150
|
+
- 롤백 방법: Git 스펙 단위 커밋 되돌리기
|
|
151
|
+
- 특이사항: (예: 패키지 lock 파일 함께 롤백 필요)
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 9. 공지 사항
|
|
156
|
+
|
|
157
|
+
<!-- 팀원들에게 공유해야 할 내용 (로컬 환경 업데이트 방법, 변경된 명령어 등) -->
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 10. 참고 자료
|
|
162
|
+
|
|
163
|
+
- Changelog / Release Notes:
|
|
164
|
+
- 관련 이슈:
|