lee-spec-kit 0.1.7 → 0.2.0
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/dist/index.js +190 -61
- package/package.json +10 -8
- package/templates/en/common/agents/custom.md +29 -0
- package/templates/en/{fullstack → common}/agents/git-workflow.md +26 -35
- package/templates/en/{single → common}/agents/issue-template.md +10 -5
- package/templates/en/{single → common}/agents/pr-template.md +9 -2
- package/templates/en/common/agents/skills/create-feature.md +53 -0
- package/templates/en/common/agents/skills/create-issue.md +52 -0
- package/templates/en/common/agents/skills/create-pr.md +97 -0
- package/templates/en/common/agents/skills/execute-task.md +86 -0
- package/templates/en/fullstack/agents/agents.md +39 -26
- package/templates/en/single/agents/agents.md +35 -20
- package/templates/ko/common/agents/custom.md +29 -0
- package/templates/ko/{single → common}/agents/git-workflow.md +20 -74
- package/templates/ko/{single → common}/agents/issue-template.md +10 -5
- package/templates/ko/{fullstack → common}/agents/pr-template.md +9 -2
- package/templates/ko/common/agents/skills/create-feature.md +53 -0
- package/templates/ko/common/agents/skills/create-issue.md +52 -0
- package/templates/ko/common/agents/skills/create-pr.md +97 -0
- package/templates/ko/common/agents/skills/execute-task.md +86 -0
- package/templates/ko/fullstack/agents/agents.md +39 -33
- package/templates/ko/single/agents/agents.md +41 -21
- package/templates/en/fullstack/agents/constitution.md +0 -80
- package/templates/en/fullstack/agents/issue-template.md +0 -110
- package/templates/en/fullstack/agents/pr-template.md +0 -96
- package/templates/en/single/agents/git-workflow.md +0 -171
- package/templates/ko/fullstack/agents/git-workflow.md +0 -171
- package/templates/ko/fullstack/agents/issue-template.md +0 -114
- package/templates/ko/single/agents/constitution.md +0 -80
- package/templates/ko/single/agents/pr-template.md +0 -110
- /package/templates/en/{single → common}/agents/constitution.md +0 -0
- /package/templates/ko/{fullstack → common}/agents/constitution.md +0 -0
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# Git Workflow Guide
|
|
2
|
-
|
|
3
|
-
Rules for AI agents to automate Git/GitHub operations.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Core Concepts
|
|
8
|
-
|
|
9
|
-
| Concept | GitHub Mapping | Description |
|
|
10
|
-
| ---------------- | -------------- | ------------------------------- |
|
|
11
|
-
| Feature | GitHub Issue | Feature-level work unit |
|
|
12
|
-
| Task | Commit | Individual implementation unit |
|
|
13
|
-
| Feature Complete | Pull Request | Create PR on feature completion |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Branch Strategy
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
main
|
|
21
|
-
└── feat/123-feature-name # Branch based on Issue #123
|
|
22
|
-
├── commit 1: feat(#123): implement feature
|
|
23
|
-
├── commit 2: test(#123): add tests
|
|
24
|
-
└── commit 3: docs(#123): update docs
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Branch Naming
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
{type}/{issue-number}-{feature-name}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
| Type | Description |
|
|
34
|
-
| ---------- | ------------- |
|
|
35
|
-
| `feat` | New feature |
|
|
36
|
-
| `fix` | Bug fix |
|
|
37
|
-
| `refactor` | Refactoring |
|
|
38
|
-
| `docs` | Documentation |
|
|
39
|
-
|
|
40
|
-
**Examples:**
|
|
41
|
-
|
|
42
|
-
- `feat/123-user-auth`
|
|
43
|
-
- `fix/456-login-error`
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Commit Convention
|
|
48
|
-
|
|
49
|
-
> 📖 Type and Description follow [Udacity Git Commit Message Style Guide](https://udacity.github.io/git-styleguide/).
|
|
50
|
-
|
|
51
|
-
### Format
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
{type}(#{issue}): {description}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Type List
|
|
58
|
-
|
|
59
|
-
| Type | Description | Example |
|
|
60
|
-
| ---------- | ------------- | ------------------------------------- |
|
|
61
|
-
| `feat` | New feature | `feat(#123): implement user auth` |
|
|
62
|
-
| `fix` | Bug fix | `fix(#123): fix login error` |
|
|
63
|
-
| `refactor` | Refactoring | `refactor(#123): separate auth logic` |
|
|
64
|
-
| `test` | Tests | `test(#123): add auth unit tests` |
|
|
65
|
-
| `docs` | Documentation | `docs(#123): clarify spec` |
|
|
66
|
-
| `style` | Code style | `style(#123): fix lint errors` |
|
|
67
|
-
| `chore` | Other | `chore(#123): update dependencies` |
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Automation Workflow
|
|
72
|
-
|
|
73
|
-
### 1. Feature Start
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# 1. Create GitHub Issue (Feature = Issue)
|
|
77
|
-
# 2. Create branch
|
|
78
|
-
git checkout -b feat/{issue-number}-{feature-name}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
> When creating/modifying issues/PRs with `gh`, share the title/body/labels first and **wait for user confirmation (OK)** before proceeding.
|
|
82
|
-
|
|
83
|
-
### 2. Document Writing and Commit
|
|
84
|
-
|
|
85
|
-
| Document | Commit Timing | Commit Message Example |
|
|
86
|
-
| ------------ | ----------------------- | ------------------------------ |
|
|
87
|
-
| spec.md | After user approval | `docs(#123): write spec` |
|
|
88
|
-
| plan.md | After user approval | `docs(#123): write plan` |
|
|
89
|
-
| tasks.md | After user approval | `docs(#123): break down tasks` |
|
|
90
|
-
| decisions.md | Included in task commit | (no separate commit) |
|
|
91
|
-
|
|
92
|
-
> 📌 **Do not commit when creating Feature folder.**
|
|
93
|
-
> Commit each document individually **after user approval**.
|
|
94
|
-
|
|
95
|
-
### 3. Auto Commit on Task Completion
|
|
96
|
-
|
|
97
|
-
When a task is completed:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
git add .
|
|
101
|
-
git commit -m "{type}(#{issue}): {task-description}"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
> Before running `git commit`, share the commit message and file list first and **wait for user confirmation (OK)** before proceeding.
|
|
105
|
-
|
|
106
|
-
### 4. Create PR on Feature Completion
|
|
107
|
-
|
|
108
|
-
When all tasks are completed:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
git push origin feat/{issue-number}-{feature-name}
|
|
112
|
-
gh pr create --title "feat(#{issue}): {feature-title}" \
|
|
113
|
-
--body "Closes #{issue}" \
|
|
114
|
-
--base main
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 5. Merge
|
|
118
|
-
|
|
119
|
-
When all reviews are resolved:
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# Update main before merge
|
|
123
|
-
git checkout main
|
|
124
|
-
git pull
|
|
125
|
-
|
|
126
|
-
# Squash and Merge
|
|
127
|
-
gh pr merge --squash --delete-branch
|
|
128
|
-
|
|
129
|
-
# Update main after merge
|
|
130
|
-
git pull
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Agent Automation Rules
|
|
136
|
-
|
|
137
|
-
### On Task Completion
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
1. Complete code changes
|
|
141
|
-
2. Update tasks.md status [DOING] → [DONE] (docs)
|
|
142
|
-
3. git add .
|
|
143
|
-
4. git commit -m "{type}(#{issue}): {description}"
|
|
144
|
-
5. Proceed to next task
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### On Feature Completion
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
1. Verify all tasks [DONE]
|
|
151
|
-
2. git push origin {branch}
|
|
152
|
-
3. gh pr create
|
|
153
|
-
4. Wait for review
|
|
154
|
-
5. Address review comments
|
|
155
|
-
6. gh pr merge --squash
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## GitHub Setup Requirements
|
|
161
|
-
|
|
162
|
-
### Required
|
|
163
|
-
|
|
164
|
-
- [ ] GitHub CLI (`gh`) installed and authenticated
|
|
165
|
-
- [ ] Branch protection rules (main)
|
|
166
|
-
- Require PR before merging
|
|
167
|
-
|
|
168
|
-
### Recommended
|
|
169
|
-
|
|
170
|
-
- [ ] Auto-delete head branches
|
|
171
|
-
- [ ] Squash merging only
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# Git 워크플로우 가이드
|
|
2
|
-
|
|
3
|
-
에이전트가 Git/GitHub 작업을 자동화하기 위한 규칙입니다.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 핵심 개념
|
|
8
|
-
|
|
9
|
-
| 개념 | GitHub 매핑 | 설명 |
|
|
10
|
-
| --------- | ------------ | ----------------------- |
|
|
11
|
-
| Feature | GitHub Issue | 기능 단위 작업 |
|
|
12
|
-
| 태스크 | Commit | 개별 구현 단위 |
|
|
13
|
-
| 기능 완료 | Pull Request | Feature 완료 시 PR 생성 |
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 브랜치 전략
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
main
|
|
21
|
-
└── feat/123-feature-name # Issue #123 기반 브랜치
|
|
22
|
-
├── commit 1: feat(#123): 기능 구현
|
|
23
|
-
├── commit 2: test(#123): 테스트 작성
|
|
24
|
-
└── commit 3: docs(#123): 문서 업데이트
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### 브랜치 네이밍
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
{type}/{issue-number}-{feature-name}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
| Type | 설명 |
|
|
34
|
-
| ---------- | --------- |
|
|
35
|
-
| `feat` | 새 기능 |
|
|
36
|
-
| `fix` | 버그 수정 |
|
|
37
|
-
| `refactor` | 리팩토링 |
|
|
38
|
-
| `docs` | 문서 |
|
|
39
|
-
|
|
40
|
-
**예시:**
|
|
41
|
-
|
|
42
|
-
- `feat/123-user-auth`
|
|
43
|
-
- `fix/456-login-error`
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 커밋 컨벤션
|
|
48
|
-
|
|
49
|
-
> 📖 Type과 Description은 [Udacity Git Commit Message Style Guide](https://udacity.github.io/git-styleguide/)를 따릅니다.
|
|
50
|
-
|
|
51
|
-
### 형식
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
{type}(#{issue}): {description}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Type 목록
|
|
58
|
-
|
|
59
|
-
| Type | 설명 | 예시 |
|
|
60
|
-
| ---------- | ----------- | ----------------------------------- |
|
|
61
|
-
| `feat` | 새 기능 | `feat(#123): 사용자 인증 구현` |
|
|
62
|
-
| `fix` | 버그 수정 | `fix(#123): 로그인 오류 수정` |
|
|
63
|
-
| `refactor` | 리팩토링 | `refactor(#123): 인증 로직 분리` |
|
|
64
|
-
| `test` | 테스트 | `test(#123): 인증 단위 테스트 추가` |
|
|
65
|
-
| `docs` | 문서 | `docs(#123): 스펙 명확화` |
|
|
66
|
-
| `style` | 코드 스타일 | `style(#123): 린트 오류 수정` |
|
|
67
|
-
| `chore` | 기타 | `chore(#123): 의존성 업데이트` |
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## 자동화 워크플로우
|
|
72
|
-
|
|
73
|
-
### 1. Feature 시작
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# 1. GitHub Issue 생성 (Feature = Issue)
|
|
77
|
-
# 2. 브랜치 생성
|
|
78
|
-
git checkout -b feat/{issue-number}-{feature-name}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
> `gh`로 이슈/PR 생성·수정 시 작성할 제목/본문/라벨을 먼저 공유하고 **반드시** 사용자 확인(OK) 후 진행합니다.
|
|
82
|
-
|
|
83
|
-
### 2. 문서 작성 및 커밋
|
|
84
|
-
|
|
85
|
-
| 문서 | 커밋 시점 | 커밋 메시지 예시 |
|
|
86
|
-
| ------------ | ------------------ | ------------------------ |
|
|
87
|
-
| spec.md | 사용자 승인 후 | `docs(#123): spec 작성` |
|
|
88
|
-
| plan.md | 사용자 승인 후 | `docs(#123): plan 작성` |
|
|
89
|
-
| tasks.md | 사용자 승인 후 | `docs(#123): tasks 분해` |
|
|
90
|
-
| decisions.md | 태스크 커밋에 포함 | (별도 커밋 없음) |
|
|
91
|
-
|
|
92
|
-
> 📌 **Feature 폴더 생성 시점**에는 커밋하지 않습니다.
|
|
93
|
-
> 각 문서가 **사용자 승인**을 받은 후 개별 커밋합니다.
|
|
94
|
-
|
|
95
|
-
### 3. 태스크 완료 시 자동 커밋
|
|
96
|
-
|
|
97
|
-
태스크 하나가 완료되면:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
git add .
|
|
101
|
-
git commit -m "{type}(#{issue}): {task-description}"
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
> `git commit` 실행 전 커밋 메시지와 포함될 파일 목록을 먼저 공유하고 **반드시** 사용자 확인(OK) 후 진행합니다.
|
|
105
|
-
|
|
106
|
-
### 4. Feature 완료 시 PR 생성
|
|
107
|
-
|
|
108
|
-
모든 태스크 완료 시:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
git push origin feat/{issue-number}-{feature-name}
|
|
112
|
-
gh pr create --title "feat(#{issue}): {feature-title}" \
|
|
113
|
-
--body "Closes #{issue}" \
|
|
114
|
-
--base main
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 5. 머지
|
|
118
|
-
|
|
119
|
-
모든 리뷰 해결 시:
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# 머지 전 main 최신화
|
|
123
|
-
git checkout main
|
|
124
|
-
git pull
|
|
125
|
-
|
|
126
|
-
# Squash and Merge
|
|
127
|
-
gh pr merge --squash --delete-branch
|
|
128
|
-
|
|
129
|
-
# 머지 후 main 최신화
|
|
130
|
-
git pull
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## 에이전트 자동화 규칙
|
|
136
|
-
|
|
137
|
-
### 태스크 완료 시
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
1. 코드 변경 완료
|
|
141
|
-
2. tasks.md 상태 [DOING] → [DONE] 업데이트 (docs)
|
|
142
|
-
3. git add .
|
|
143
|
-
4. git commit -m "{type}(#{issue}): {description}"
|
|
144
|
-
5. 다음 태스크 진행
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### Feature 완료 시
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
1. 모든 태스크 [DONE] 확인
|
|
151
|
-
2. git push origin {branch}
|
|
152
|
-
3. gh pr create
|
|
153
|
-
4. 리뷰 대기
|
|
154
|
-
5. 리뷰 코멘트 수정
|
|
155
|
-
6. gh pr merge --squash
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## GitHub 설정 요구사항
|
|
161
|
-
|
|
162
|
-
### 필수
|
|
163
|
-
|
|
164
|
-
- [ ] GitHub CLI (`gh`) 설치 및 인증
|
|
165
|
-
- [ ] Branch protection rules (main)
|
|
166
|
-
- Require PR before merging
|
|
167
|
-
|
|
168
|
-
### 권장
|
|
169
|
-
|
|
170
|
-
- [ ] Auto-delete head branches
|
|
171
|
-
- [ ] Squash merging only
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
# GitHub Issue 템플릿 가이드
|
|
2
|
-
|
|
3
|
-
에이전트가 GitHub Issue를 생성할 때 참조하는 템플릿입니다.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 이슈 생성 규칙
|
|
8
|
-
|
|
9
|
-
### 제목 형식
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
F{번호}: {기능명} ({짧은 설명})
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
예: `F001: user-auth (사용자 인증 기능)`
|
|
16
|
-
|
|
17
|
-
> "짧은 설명"은 한 줄로 의도를 전달할 수 있을 정도로만 작성합니다.
|
|
18
|
-
|
|
19
|
-
### 링크 형식 (중요!)
|
|
20
|
-
|
|
21
|
-
GitHub Issue에서 링크는 **파일 위치에 따라** 다르게 작성:
|
|
22
|
-
|
|
23
|
-
1. **프로젝트 레포 내 파일**: 전체 URL 사용 (클릭 가능)
|
|
24
|
-
- **일반 문서/코드** (이미 머지됨): `main` 브랜치
|
|
25
|
-
```markdown
|
|
26
|
-
[파일명](https://github.com/{owner}/{repo}/blob/main/path/to/file)
|
|
27
|
-
```
|
|
28
|
-
- **개발 중인 문서** (아직 머지 안 됨): **Feature 브랜치**
|
|
29
|
-
```markdown
|
|
30
|
-
[파일명](https://github.com/{owner}/{repo}/blob/{feat-branch}/path/to/file)
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
2. **외부 문서 (공개 URL 있음)**: **절대 URL로 링크**
|
|
34
|
-
|
|
35
|
-
```markdown
|
|
36
|
-
[react-i18next](https://react.i18next.com/)
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
3. **외부/로컬 문서** (docs 레포 등, URL 없음): **상대 경로 텍스트로만 표기**
|
|
40
|
-
```text
|
|
41
|
-
../docs/features/F001-feature-name/spec.md
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
> ⚠️ 로컬 문서는 GitHub에서 클릭되지 않으므로, 링크 대신 경로 텍스트만 제공합니다.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 이슈 본문 템플릿
|
|
49
|
-
|
|
50
|
-
```markdown
|
|
51
|
-
## 개요
|
|
52
|
-
|
|
53
|
-
{기능에 대한 간략한 설명}
|
|
54
|
-
|
|
55
|
-
## 목표
|
|
56
|
-
|
|
57
|
-
- {목표 1}
|
|
58
|
-
- {목표 2}
|
|
59
|
-
|
|
60
|
-
## 완료 조건
|
|
61
|
-
|
|
62
|
-
- [ ] {조건 1}
|
|
63
|
-
- [ ] {조건 2}
|
|
64
|
-
|
|
65
|
-
## 관련 문서
|
|
66
|
-
|
|
67
|
-
- Spec: `docs/features/{be|fe}/F{번호}-{기능명}/spec.md`
|
|
68
|
-
|
|
69
|
-
## 라벨
|
|
70
|
-
|
|
71
|
-
- `enhancement` (새 기능)
|
|
72
|
-
- `bug` (버그 수정)
|
|
73
|
-
- `documentation` (문서)
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 라벨 규칙
|
|
79
|
-
|
|
80
|
-
| 라벨 | 용도 |
|
|
81
|
-
| --------------- | ------------- |
|
|
82
|
-
| `enhancement` | 새 기능 |
|
|
83
|
-
| `bug` | 버그 수정 |
|
|
84
|
-
| `documentation` | 문서 작업 |
|
|
85
|
-
| `backend` | BE 관련 |
|
|
86
|
-
| `frontend` | FE 관련 |
|
|
87
|
-
| `priority:high` | 높은 우선순위 |
|
|
88
|
-
|
|
89
|
-
> ⚠️ 라벨이 존재하지 않으면 먼저 생성합니다:
|
|
90
|
-
>
|
|
91
|
-
> ```bash
|
|
92
|
-
> gh label create "라벨명" --description "설명" --color "색상코드"
|
|
93
|
-
> ```
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Assignee 규칙
|
|
98
|
-
|
|
99
|
-
- 기본값: 본인 할당 (`--assignee @me`)
|
|
100
|
-
- 다른 담당자 지정 시 **사용자에게 확인** 후 진행
|
|
101
|
-
- 예시:
|
|
102
|
-
```bash
|
|
103
|
-
gh issue create --assignee @me ...
|
|
104
|
-
gh issue create --assignee username ...
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## 본문 입력 규칙 (셸 실행 방지)
|
|
110
|
-
|
|
111
|
-
- 이슈 본문은 **`--body-file` 사용을 기본**으로 한다.
|
|
112
|
-
- 백틱(`)이나 `$()`가 포함된 본문을 `"..."`에 직접 넣으면 **셸에서 명령치환**될 수 있다.
|
|
113
|
-
- 여러 줄 본문은 `cat <<'EOF'` 형식의 **싱글 쿼트 heredoc**을 사용하고,
|
|
114
|
-
필요한 변수는 **플레이스홀더 → sed 치환**으로 처리한다.
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# {{projectName}} Constitution
|
|
2
|
-
|
|
3
|
-
프로젝트의 핵심 원칙과 기술 결정 가이드라인입니다.
|
|
4
|
-
모든 개발 결정은 이 문서를 기준으로 합니다.
|
|
5
|
-
|
|
6
|
-
> **📌 문서 범위**
|
|
7
|
-
>
|
|
8
|
-
> - **이 문서**: 기술 스택, 아키텍처 원칙, 코드 품질, 보안 원칙
|
|
9
|
-
> - **PRD**: 제품 요구사항, 비즈니스 로직, 사용자 스토리 → `prd/*.md`
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 프로젝트 미션
|
|
14
|
-
|
|
15
|
-
> (프로젝트의 미션을 작성하세요)
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 기술 스택
|
|
20
|
-
|
|
21
|
-
### Backend
|
|
22
|
-
|
|
23
|
-
| 기술 | 버전 | 이유 |
|
|
24
|
-
| ------------ | ------ | ----------- |
|
|
25
|
-
| (예: NestJS) | (버전) | (선택 이유) |
|
|
26
|
-
|
|
27
|
-
### Frontend
|
|
28
|
-
|
|
29
|
-
| 기술 | 버전 | 이유 |
|
|
30
|
-
| ----------- | ------ | ----------- |
|
|
31
|
-
| (예: React) | (버전) | (선택 이유) |
|
|
32
|
-
|
|
33
|
-
### 공통
|
|
34
|
-
|
|
35
|
-
| 기술 | 버전 | 이유 |
|
|
36
|
-
| ----------------- | ------ | ----------- |
|
|
37
|
-
| TypeScript | strict | 타입 안전성 |
|
|
38
|
-
| ESLint + Prettier | - | 코드 품질 |
|
|
39
|
-
| pnpm | - | 패키지 관리 |
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## 아키텍처 원칙
|
|
44
|
-
|
|
45
|
-
### 1. Feature 중심 관리
|
|
46
|
-
|
|
47
|
-
- 새 기능은 `docs/features/F00X/` 구조로 관리
|
|
48
|
-
- FE/BE 분리하여 **기능 단위**로 개발
|
|
49
|
-
- spec → plan → tasks → decisions 워크플로우
|
|
50
|
-
|
|
51
|
-
### 2. (추가 원칙)
|
|
52
|
-
|
|
53
|
-
(프로젝트별 아키텍처 원칙을 작성하세요)
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 코드 품질 기준
|
|
58
|
-
|
|
59
|
-
- TypeScript strict mode 필수
|
|
60
|
-
- ESLint + Prettier 필수
|
|
61
|
-
- 주요 비즈니스 로직 테스트 커버리지 **80%+**
|
|
62
|
-
- 컴포넌트는 **단일 책임 원칙**
|
|
63
|
-
- 중복 코드 최소화
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## 보안 원칙
|
|
68
|
-
|
|
69
|
-
- 환경 변수로 시크릿 관리 (저장소 커밋 금지)
|
|
70
|
-
- 사용자 데이터 **최소 수집**
|
|
71
|
-
- CORS는 허용 오리진만 설정
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## 언어/코드 규칙
|
|
76
|
-
|
|
77
|
-
- **답변**: 한국어
|
|
78
|
-
- **코드/파일명**: 영어
|
|
79
|
-
- **주석/커밋**: 한국어
|
|
80
|
-
- **날짜/시간**: 사용자 PC 시스템 시간 기준 (예: `{{date}}`)
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# GitHub PR 템플릿 가이드
|
|
2
|
-
|
|
3
|
-
에이전트가 Pull Request를 생성할 때 참조하는 템플릿입니다.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## PR 생성 규칙
|
|
8
|
-
|
|
9
|
-
### 제목 형식
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
feat(#{이슈번호}): {기능명}
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
예: `feat(#1): 사용자 인증 구현`
|
|
16
|
-
|
|
17
|
-
### 링크 형식 (중요!)
|
|
18
|
-
|
|
19
|
-
PR 본문에서 레포 내 파일 링크는 **반드시 현재 브랜치명을 사용**:
|
|
20
|
-
|
|
21
|
-
```markdown
|
|
22
|
-
[파일명](https://github.com/{owner}/{repo}/blob/{브랜치명}/docs/path/to/file.md)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
> ⚠️ `main` 브랜치 링크는 머지 전까지 404가 발생합니다!
|
|
26
|
-
> 반드시 **현재 피처 브랜치명** (예: `feat/5-feature-name`)을 사용하세요.
|
|
27
|
-
|
|
28
|
-
## PR 본문 템플릿
|
|
29
|
-
|
|
30
|
-
```markdown
|
|
31
|
-
## 개요
|
|
32
|
-
|
|
33
|
-
{변경 사항에 대한 간략한 설명}
|
|
34
|
-
|
|
35
|
-
## 변경 사항
|
|
36
|
-
|
|
37
|
-
- {변경 1}
|
|
38
|
-
- {변경 2}
|
|
39
|
-
- {변경 3}
|
|
40
|
-
|
|
41
|
-
## 테스트
|
|
42
|
-
|
|
43
|
-
- [ ] 유닛 테스트 통과
|
|
44
|
-
- [ ] 통합 테스트 완료
|
|
45
|
-
|
|
46
|
-
## 스크린샷 (UI 변경 시)
|
|
47
|
-
|
|
48
|
-
{있으면 첨부}
|
|
49
|
-
|
|
50
|
-
## 관련 문서
|
|
51
|
-
|
|
52
|
-
- Spec: `docs/features/{be|fe}/F{번호}-{기능명}/spec.md`
|
|
53
|
-
- Tasks: `docs/features/{be|fe}/F{번호}-{기능명}/tasks.md`
|
|
54
|
-
|
|
55
|
-
Closes #{이슈번호}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## PR 생성 명령어
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# 현재 브랜치명 확인
|
|
64
|
-
BRANCH=$(git branch --show-current)
|
|
65
|
-
|
|
66
|
-
gh pr create \
|
|
67
|
-
--title "feat(#{issue}): {기능명}" \
|
|
68
|
-
--body-file /tmp/pr-body.md \
|
|
69
|
-
--base main
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## 머지 규칙
|
|
75
|
-
|
|
76
|
-
| 상황 | 머지 방식 |
|
|
77
|
-
| ------------ | ----------------- |
|
|
78
|
-
| 일반 Feature | Squash and Merge |
|
|
79
|
-
| 긴급 Hotfix | Merge 또는 Rebase |
|
|
80
|
-
| 문서 수정 | Squash and Merge |
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 라벨 규칙
|
|
85
|
-
|
|
86
|
-
- PR 생성 시 적절한 라벨 지정 (`--label`)
|
|
87
|
-
- 라벨이 존재하지 않으면 먼저 생성:
|
|
88
|
-
```bash
|
|
89
|
-
gh label create "라벨명" --description "설명" --color "색상코드"
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Assignee 규칙
|
|
95
|
-
|
|
96
|
-
- 기본값: 본인 할당 (`--assignee @me`)
|
|
97
|
-
- 리뷰어 지정 시 `--reviewer` 옵션 사용
|
|
98
|
-
- 예시:
|
|
99
|
-
```bash
|
|
100
|
-
gh pr create --assignee @me --reviewer reviewer-username ...
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
## 본문 입력 규칙 (셸 실행 방지)
|
|
106
|
-
|
|
107
|
-
- PR 본문은 **`--body-file` 사용을 기본**으로 한다.
|
|
108
|
-
- 백틱(`)이나 `$()`가 포함된 본문을 `"..."`에 직접 넣으면 **셸에서 명령치환**될 수 있다.
|
|
109
|
-
- 여러 줄 본문은 `cat <<'EOF'` 형식의 **싱글 쿼트 heredoc**을 사용하고,
|
|
110
|
-
필요한 변수는 **플레이스홀더 → sed 치환**으로 처리한다.
|
|
File without changes
|
|
File without changes
|