lee-spec-kit 0.1.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/LICENSE +21 -0
- package/README.md +112 -0
- package/dist/index.js +461 -0
- package/package.json +60 -0
- package/templates/en/fullstack/README.md +12 -0
- package/templates/en/fullstack/agents/agents.md +88 -0
- package/templates/en/fullstack/agents/constitution.md +75 -0
- package/templates/en/fullstack/agents/git-workflow.md +112 -0
- package/templates/en/fullstack/agents/issue-template.md +58 -0
- package/templates/en/fullstack/agents/pr-template.md +57 -0
- package/templates/en/fullstack/features/README.md +76 -0
- package/templates/en/fullstack/features/be/README.md +5 -0
- package/templates/en/fullstack/features/fe/README.md +5 -0
- package/templates/en/fullstack/features/feature-base/decisions.md +15 -0
- package/templates/en/fullstack/features/feature-base/plan.md +49 -0
- package/templates/en/fullstack/features/feature-base/spec.md +55 -0
- package/templates/en/fullstack/features/feature-base/tasks.md +33 -0
- package/templates/en/fullstack/prd/README.md +15 -0
- package/templates/en/single/README.md +11 -0
- package/templates/en/single/agents/agents.md +74 -0
- package/templates/en/single/agents/constitution.md +75 -0
- package/templates/en/single/agents/git-workflow.md +157 -0
- package/templates/en/single/agents/issue-template.md +60 -0
- package/templates/en/single/agents/pr-template.md +71 -0
- package/templates/en/single/features/README.md +56 -0
- package/templates/en/single/features/feature-base/decisions.md +15 -0
- package/templates/en/single/features/feature-base/plan.md +48 -0
- package/templates/en/single/features/feature-base/spec.md +55 -0
- package/templates/en/single/features/feature-base/tasks.md +33 -0
- package/templates/en/single/prd/README.md +15 -0
- package/templates/ko/fullstack/README.md +12 -0
- package/templates/ko/fullstack/agents/agents.md +125 -0
- package/templates/ko/fullstack/agents/constitution.md +75 -0
- package/templates/ko/fullstack/agents/git-workflow.md +157 -0
- package/templates/ko/fullstack/agents/issue-template.md +60 -0
- package/templates/ko/fullstack/agents/pr-template.md +71 -0
- package/templates/ko/fullstack/features/README.md +98 -0
- package/templates/ko/fullstack/features/be/README.md +5 -0
- package/templates/ko/fullstack/features/fe/README.md +5 -0
- package/templates/ko/fullstack/features/feature-base/decisions.md +15 -0
- package/templates/ko/fullstack/features/feature-base/plan.md +49 -0
- package/templates/ko/fullstack/features/feature-base/spec.md +55 -0
- package/templates/ko/fullstack/features/feature-base/tasks.md +33 -0
- package/templates/ko/fullstack/prd/README.md +15 -0
- package/templates/ko/single/README.md +11 -0
- package/templates/ko/single/agents/agents.md +87 -0
- package/templates/ko/single/agents/constitution.md +75 -0
- package/templates/ko/single/agents/git-workflow.md +157 -0
- package/templates/ko/single/agents/issue-template.md +60 -0
- package/templates/ko/single/agents/pr-template.md +71 -0
- package/templates/ko/single/features/README.md +56 -0
- package/templates/ko/single/features/feature-base/decisions.md +15 -0
- package/templates/ko/single/features/feature-base/plan.md +48 -0
- package/templates/ko/single/features/feature-base/spec.md +55 -0
- package/templates/ko/single/features/feature-base/tasks.md +33 -0
- package/templates/ko/single/prd/README.md +15 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Agents Guide
|
|
2
|
+
|
|
3
|
+
Operating rules for AI code assistants to perform consistent code generation and refactoring.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Reference Documents
|
|
8
|
+
|
|
9
|
+
### Core Documents
|
|
10
|
+
|
|
11
|
+
- **Project Principles**: `/docs/agents/constitution.md`
|
|
12
|
+
- **Git Workflow**: `/docs/agents/git-workflow.md`
|
|
13
|
+
- **Issue Template**: `/docs/agents/issue-template.md`
|
|
14
|
+
- **PR Template**: `/docs/agents/pr-template.md`
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **Feature Docs**: `/docs/features/{feature-id}/`
|
|
19
|
+
- **Template (SSOT)**: `/docs/features/feature-base/`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## π Standard docs Structure
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
docs/
|
|
27
|
+
βββ README.md
|
|
28
|
+
βββ agents/
|
|
29
|
+
β βββ agents.md
|
|
30
|
+
β βββ constitution.md
|
|
31
|
+
β βββ git-workflow.md
|
|
32
|
+
β βββ issue-template.md
|
|
33
|
+
β βββ pr-template.md
|
|
34
|
+
βββ prd/
|
|
35
|
+
βββ features/
|
|
36
|
+
β βββ feature-base/
|
|
37
|
+
β βββ F00X-{name}/
|
|
38
|
+
βββ scripts/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Request Type Processes
|
|
44
|
+
|
|
45
|
+
### 1. New Feature Request
|
|
46
|
+
|
|
47
|
+
1. Create feature folder: `lee-spec-kit feature <name>`
|
|
48
|
+
2. Write `spec.md` - what and why
|
|
49
|
+
3. Request spec review
|
|
50
|
+
4. Create GitHub Issue
|
|
51
|
+
|
|
52
|
+
### 2. Task Execution
|
|
53
|
+
|
|
54
|
+
1. Write tasks in `tasks.md`
|
|
55
|
+
2. Execute after approval
|
|
56
|
+
3. Status transition: `[TODO]` β `[DOING]` β `[DONE]`
|
|
57
|
+
4. Commit on task completion
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## π ADR (Architecture Decision Records)
|
|
62
|
+
|
|
63
|
+
> `decisions.md` is a **required** document for recording technical decisions.
|
|
64
|
+
|
|
65
|
+
### Format
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## D{number}: {Decision Title} ({YYYY-MM-DD})
|
|
69
|
+
|
|
70
|
+
- **Context**: Problem situation or background
|
|
71
|
+
- **Options**: Alternatives considered
|
|
72
|
+
- **Decision**: Final choice
|
|
73
|
+
- **Rationale**: Reason for choice
|
|
74
|
+
```
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# {{projectName}} Constitution
|
|
2
|
+
|
|
3
|
+
νλ‘μ νΈμ ν΅μ¬ μμΉκ³Ό κΈ°μ κ²°μ κ°μ΄λλΌμΈμ
λλ€.
|
|
4
|
+
λͺ¨λ κ°λ° κ²°μ μ μ΄ λ¬Έμλ₯Ό κΈ°μ€μΌλ‘ ν©λλ€.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## νλ‘μ νΈ λ―Έμ
|
|
9
|
+
|
|
10
|
+
> (νλ‘μ νΈμ λ―Έμ
μ μμ±νμΈμ)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## κΈ°μ μ€ν
|
|
15
|
+
|
|
16
|
+
### Backend
|
|
17
|
+
|
|
18
|
+
| κΈ°μ | λ²μ | μ΄μ |
|
|
19
|
+
| ------------ | ------ | ----------- |
|
|
20
|
+
| (μ: NestJS) | (λ²μ ) | (μ ν μ΄μ ) |
|
|
21
|
+
|
|
22
|
+
### Frontend
|
|
23
|
+
|
|
24
|
+
| κΈ°μ | λ²μ | μ΄μ |
|
|
25
|
+
| ----------- | ------ | ----------- |
|
|
26
|
+
| (μ: React) | (λ²μ ) | (μ ν μ΄μ ) |
|
|
27
|
+
|
|
28
|
+
### 곡ν΅
|
|
29
|
+
|
|
30
|
+
| κΈ°μ | λ²μ | μ΄μ |
|
|
31
|
+
| ----------------- | ------ | ----------- |
|
|
32
|
+
| TypeScript | strict | νμ
μμ μ± |
|
|
33
|
+
| ESLint + Prettier | - | μ½λ νμ§ |
|
|
34
|
+
| pnpm | - | ν¨ν€μ§ κ΄λ¦¬ |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## μν€ν
μ² μμΉ
|
|
39
|
+
|
|
40
|
+
### 1. Feature μ€μ¬ κ΄λ¦¬
|
|
41
|
+
|
|
42
|
+
- μ κΈ°λ₯μ `docs/features/F00X/` κ΅¬μ‘°λ‘ κ΄λ¦¬
|
|
43
|
+
- FE/BE λΆλ¦¬νμ¬ **κΈ°λ₯ λ¨μ**λ‘ κ°λ°
|
|
44
|
+
- spec β plan β tasks β decisions μν¬νλ‘μ°
|
|
45
|
+
|
|
46
|
+
### 2. (μΆκ° μμΉ)
|
|
47
|
+
|
|
48
|
+
(νλ‘μ νΈλ³ μν€ν
μ² μμΉμ μμ±νμΈμ)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## μ½λ νμ§ κΈ°μ€
|
|
53
|
+
|
|
54
|
+
- TypeScript strict mode νμ
|
|
55
|
+
- ESLint + Prettier νμ
|
|
56
|
+
- μ£Όμ λΉμ¦λμ€ λ‘μ§ ν
μ€νΈ 컀λ²λ¦¬μ§ **80%+**
|
|
57
|
+
- μ»΄ν¬λνΈλ **λ¨μΌ μ±
μ μμΉ**
|
|
58
|
+
- μ€λ³΅ μ½λ μ΅μν
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 보μ μμΉ
|
|
63
|
+
|
|
64
|
+
- νκ²½ λ³μλ‘ μν¬λ¦Ώ κ΄λ¦¬ (μ μ₯μ μ»€λ° κΈμ§)
|
|
65
|
+
- μ¬μ©μ λ°μ΄ν° **μ΅μ μμ§**
|
|
66
|
+
- CORSλ νμ© μ€λ¦¬μ§λ§ μ€μ
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## μΈμ΄/μ½λ κ·μΉ
|
|
71
|
+
|
|
72
|
+
- **λ΅λ³**: νκ΅μ΄
|
|
73
|
+
- **μ½λ/νμΌλͺ
**: μμ΄
|
|
74
|
+
- **μ£Όμ/컀λ°**: νκ΅μ΄
|
|
75
|
+
- **λ μ§/μκ°**: μ¬μ©μ PC μμ€ν
μκ° κΈ°μ€ (μ: `{{date}}`)
|
|
@@ -0,0 +1,157 @@
|
|
|
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
|
+
### νμ
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
{type}(#{issue}): {description}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Type λͺ©λ‘
|
|
56
|
+
|
|
57
|
+
| Type | μ€λͺ
| μμ |
|
|
58
|
+
| ---------- | ----------- | ----------------------------------- |
|
|
59
|
+
| `feat` | μ κΈ°λ₯ | `feat(#123): μ¬μ©μ μΈμ¦ ꡬν` |
|
|
60
|
+
| `fix` | λ²κ·Έ μμ | `fix(#123): λ‘κ·ΈμΈ μ€λ₯ μμ ` |
|
|
61
|
+
| `refactor` | 리ν©ν λ§ | `refactor(#123): μΈμ¦ λ‘μ§ λΆλ¦¬` |
|
|
62
|
+
| `test` | ν
μ€νΈ | `test(#123): μΈμ¦ λ¨μ ν
μ€νΈ μΆκ°` |
|
|
63
|
+
| `docs` | λ¬Έμ | `docs(#123): μ€ν λͺ
νν` |
|
|
64
|
+
| `style` | μ½λ μ€νμΌ | `style(#123): λ¦°νΈ μ€λ₯ μμ ` |
|
|
65
|
+
| `chore` | κΈ°ν | `chore(#123): μμ‘΄μ± μ
λ°μ΄νΈ` |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## μλν μν¬νλ‘μ°
|
|
70
|
+
|
|
71
|
+
### 1. Feature μμ
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# 1. GitHub Issue μμ± (Feature = Issue)
|
|
75
|
+
# 2. λΈλμΉ μμ±
|
|
76
|
+
git checkout -b feat/{issue-number}-{feature-name}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
> `gh`λ‘ μ΄μ/PR μμ±Β·μμ μ μμ±ν μ λͺ©/λ³Έλ¬Έ/λΌλ²¨μ λ¨Όμ 곡μ νκ³ **λ°λμ** μ¬μ©μ νμΈ(OK) ν μ§νν©λλ€.
|
|
80
|
+
|
|
81
|
+
### 2. νμ€ν¬ μλ£ μ μλ 컀λ°
|
|
82
|
+
|
|
83
|
+
νμ€ν¬ νλκ° μλ£λλ©΄:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git add .
|
|
87
|
+
git commit -m "{type}(#{issue}): {task-description}"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
> `git commit` μ€ν μ μ»€λ° λ©μμ§μ ν¬ν¨λ νμΌ λͺ©λ‘μ λ¨Όμ 곡μ νκ³ **λ°λμ** μ¬μ©μ νμΈ(OK) ν μ§νν©λλ€.
|
|
91
|
+
|
|
92
|
+
### 3. Feature μλ£ μ PR μμ±
|
|
93
|
+
|
|
94
|
+
λͺ¨λ νμ€ν¬ μλ£ μ:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
git push origin feat/{issue-number}-{feature-name}
|
|
98
|
+
gh pr create --title "feat(#{issue}): {feature-title}" \
|
|
99
|
+
--body "Closes #{issue}" \
|
|
100
|
+
--base main
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 4. λ¨Έμ§
|
|
104
|
+
|
|
105
|
+
λͺ¨λ 리뷰 ν΄κ²° μ:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# λ¨Έμ§ μ main μ΅μ ν
|
|
109
|
+
git checkout main
|
|
110
|
+
git pull
|
|
111
|
+
|
|
112
|
+
# Squash and Merge
|
|
113
|
+
gh pr merge --squash --delete-branch
|
|
114
|
+
|
|
115
|
+
# λ¨Έμ§ ν main μ΅μ ν
|
|
116
|
+
git pull
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## μμ΄μ νΈ μλν κ·μΉ
|
|
122
|
+
|
|
123
|
+
### νμ€ν¬ μλ£ μ
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
1. μ½λ λ³κ²½ μλ£
|
|
127
|
+
2. tasks.md μν [DOING] β [DONE] μ
λ°μ΄νΈ (docs)
|
|
128
|
+
3. git add .
|
|
129
|
+
4. git commit -m "{type}(#{issue}): {description}"
|
|
130
|
+
5. λ€μ νμ€ν¬ μ§ν
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Feature μλ£ μ
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
1. λͺ¨λ νμ€ν¬ [DONE] νμΈ
|
|
137
|
+
2. git push origin {branch}
|
|
138
|
+
3. gh pr create
|
|
139
|
+
4. 리뷰 λκΈ°
|
|
140
|
+
5. 리뷰 μ½λ©νΈ μμ
|
|
141
|
+
6. gh pr merge --squash
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## GitHub μ€μ μꡬμ¬ν
|
|
147
|
+
|
|
148
|
+
### νμ
|
|
149
|
+
|
|
150
|
+
- [ ] GitHub CLI (`gh`) μ€μΉ λ° μΈμ¦
|
|
151
|
+
- [ ] Branch protection rules (main)
|
|
152
|
+
- Require PR before merging
|
|
153
|
+
|
|
154
|
+
### κΆμ₯
|
|
155
|
+
|
|
156
|
+
- [ ] Auto-delete head branches
|
|
157
|
+
- [ ] Squash merging only
|
|
@@ -0,0 +1,60 @@
|
|
|
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
|
+
## μ΄μ λ³Έλ¬Έ ν
νλ¦Ώ
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
## κ°μ
|
|
25
|
+
|
|
26
|
+
{κΈ°λ₯μ λν κ°λ΅ν μ€λͺ
}
|
|
27
|
+
|
|
28
|
+
## λͺ©ν
|
|
29
|
+
|
|
30
|
+
- {λͺ©ν 1}
|
|
31
|
+
- {λͺ©ν 2}
|
|
32
|
+
|
|
33
|
+
## μλ£ μ‘°κ±΄
|
|
34
|
+
|
|
35
|
+
- [ ] {쑰건 1}
|
|
36
|
+
- [ ] {쑰건 2}
|
|
37
|
+
|
|
38
|
+
## κ΄λ ¨ λ¬Έμ
|
|
39
|
+
|
|
40
|
+
- Spec: `docs/features/{be|fe}/F{λ²νΈ}-{κΈ°λ₯λͺ
}/spec.md`
|
|
41
|
+
|
|
42
|
+
## λΌλ²¨
|
|
43
|
+
|
|
44
|
+
- `enhancement` (μ κΈ°λ₯)
|
|
45
|
+
- `bug` (λ²κ·Έ μμ )
|
|
46
|
+
- `documentation` (λ¬Έμ)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## λΌλ²¨ κ·μΉ
|
|
52
|
+
|
|
53
|
+
| λΌλ²¨ | μ©λ |
|
|
54
|
+
| --------------- | ------------- |
|
|
55
|
+
| `enhancement` | μ κΈ°λ₯ |
|
|
56
|
+
| `bug` | λ²κ·Έ μμ |
|
|
57
|
+
| `documentation` | λ¬Έμ μμ
|
|
|
58
|
+
| `backend` | BE κ΄λ ¨ |
|
|
59
|
+
| `frontend` | FE κ΄λ ¨ |
|
|
60
|
+
| `priority:high` | λμ μ°μ μμ |
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
## κ°μ
|
|
23
|
+
|
|
24
|
+
{λ³κ²½ μ¬νμ λν κ°λ΅ν μ€λͺ
}
|
|
25
|
+
|
|
26
|
+
## λ³κ²½ μ¬ν
|
|
27
|
+
|
|
28
|
+
- {λ³κ²½ 1}
|
|
29
|
+
- {λ³κ²½ 2}
|
|
30
|
+
- {λ³κ²½ 3}
|
|
31
|
+
|
|
32
|
+
## ν
μ€νΈ
|
|
33
|
+
|
|
34
|
+
- [ ] μ λ ν
μ€νΈ ν΅κ³Ό
|
|
35
|
+
- [ ] ν΅ν© ν
μ€νΈ μλ£
|
|
36
|
+
|
|
37
|
+
## μ€ν¬λ¦°μ· (UI λ³κ²½ μ)
|
|
38
|
+
|
|
39
|
+
{μμΌλ©΄ 첨λΆ}
|
|
40
|
+
|
|
41
|
+
## κ΄λ ¨ λ¬Έμ
|
|
42
|
+
|
|
43
|
+
- Spec: `docs/features/{be|fe}/F{λ²νΈ}-{κΈ°λ₯λͺ
}/spec.md`
|
|
44
|
+
- Tasks: `docs/features/{be|fe}/F{λ²νΈ}-{κΈ°λ₯λͺ
}/tasks.md`
|
|
45
|
+
|
|
46
|
+
Closes #{μ΄μλ²νΈ}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## PR μμ± λͺ
λ Ήμ΄
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# νμ¬ λΈλμΉλͺ
νμΈ
|
|
55
|
+
BRANCH=$(git branch --show-current)
|
|
56
|
+
|
|
57
|
+
gh pr create \
|
|
58
|
+
--title "feat(#{issue}): {κΈ°λ₯λͺ
}" \
|
|
59
|
+
--body-file /tmp/pr-body.md \
|
|
60
|
+
--base main
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## λ¨Έμ§ κ·μΉ
|
|
66
|
+
|
|
67
|
+
| μν© | λ¨Έμ§ λ°©μ |
|
|
68
|
+
| ------------ | ----------------- |
|
|
69
|
+
| μΌλ° Feature | Squash and Merge |
|
|
70
|
+
| κΈ΄κΈ Hotfix | Merge λλ Rebase |
|
|
71
|
+
| λ¬Έμ μμ | Squash and Merge |
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Features Guide
|
|
2
|
+
|
|
3
|
+
Folder for managing feature specs, plans, and tasks.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Folder Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
features/
|
|
11
|
+
βββ README.md # This file
|
|
12
|
+
βββ feature-base/ # Shared template
|
|
13
|
+
β βββ spec.md
|
|
14
|
+
β βββ plan.md
|
|
15
|
+
β βββ tasks.md
|
|
16
|
+
β βββ decisions.md
|
|
17
|
+
βββ F00X-{name}/ # Individual features
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Creating New Features
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
lee-spec-kit feature user-auth
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
> π‘ CLI copies templates from `feature-base/` and auto-assigns IDs.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Feature ID Rules
|
|
33
|
+
|
|
34
|
+
- `F{number}-{feature-name}` (e.g., F001-user-auth)
|
|
35
|
+
- Minimum **3-digit padding** for numbers
|
|
36
|
+
- Feature names in kebab-case
|
|
37
|
+
- **Feature = Issue**: Each Feature corresponds to one GitHub Issue
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Status Check
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
lee-spec-kit status
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## File Roles
|
|
50
|
+
|
|
51
|
+
| File | Role | When to Write |
|
|
52
|
+
| -------------- | ------------------------- | ------------------- |
|
|
53
|
+
| `spec.md` | **What and Why** | Feature definition |
|
|
54
|
+
| `plan.md` | **How** (technical) | After spec approval |
|
|
55
|
+
| `tasks.md` | Work items | After plan approval |
|
|
56
|
+
| `decisions.md` | Technical decisions (ADR) | During development |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Decisions Log
|
|
2
|
+
|
|
3
|
+
Record technical decisions and their rationale.
|
|
4
|
+
|
|
5
|
+
> Format: `D{number}: {Decision Title} ({YYYY-MM-DD})`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## D001: {Decision Title} ({YYYY-MM-DD})
|
|
10
|
+
|
|
11
|
+
- **Context**: Problem situation or background
|
|
12
|
+
- **Options**: Alternatives considered
|
|
13
|
+
- **Decision**: Final choice
|
|
14
|
+
- **Rationale**: Reason for choice
|
|
15
|
+
- **Consequences**: Results and impact (optional)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Implementation Plan: {κΈ°λ₯λͺ
}
|
|
2
|
+
|
|
3
|
+
> Write after spec is approved.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
- **Feature ID**: F{λ²νΈ}
|
|
10
|
+
- **Target Repo**: {{projectName}}
|
|
11
|
+
- **Created**: YYYY-MM-DD
|
|
12
|
+
- **Status**: Draft | Review | Approved
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Tech Stack
|
|
17
|
+
|
|
18
|
+
| Category | Choice | Reason |
|
|
19
|
+
| -------- | ------ | ------ |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Architecture
|
|
24
|
+
|
|
25
|
+
(Component structure, data flow)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## File Structure
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
src/
|
|
33
|
+
βββ ...
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Test Strategy
|
|
39
|
+
|
|
40
|
+
- **Unit Tests**:
|
|
41
|
+
- **Integration Tests**:
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Related Documents
|
|
46
|
+
|
|
47
|
+
- Spec: [spec.md](./spec.md)
|
|
48
|
+
- Decisions: [decisions.md](./decisions.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Feature Spec: {κΈ°λ₯λͺ
}
|
|
2
|
+
|
|
3
|
+
> Tech stack is covered in plan.md.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
- **Feature ID**: F{λ²νΈ}
|
|
10
|
+
- **Feature Name**: {κΈ°λ₯λͺ
}
|
|
11
|
+
- **Target Repo**: {{projectName}}
|
|
12
|
+
- **Issue Number**: #{μ΄μλ²νΈ}
|
|
13
|
+
- **Created**: YYYY-MM-DD
|
|
14
|
+
- **Status**: Draft | Review | Approved
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Purpose
|
|
19
|
+
|
|
20
|
+
(Why is this feature needed? What problem does it solve?)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## User Stories
|
|
25
|
+
|
|
26
|
+
### US-1: {Story Title}
|
|
27
|
+
|
|
28
|
+
**As a** {user type}
|
|
29
|
+
**I want** {desired action}
|
|
30
|
+
**So that** {reason/value}
|
|
31
|
+
|
|
32
|
+
**Acceptance Criteria:**
|
|
33
|
+
|
|
34
|
+
- [ ] (verification condition)
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Functional Requirements
|
|
39
|
+
|
|
40
|
+
### FR-1: {Requirement Title}
|
|
41
|
+
|
|
42
|
+
(Detailed description)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Non-Functional Requirements
|
|
47
|
+
|
|
48
|
+
- **Performance**:
|
|
49
|
+
- **Security**:
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Related Documents
|
|
54
|
+
|
|
55
|
+
- PRD: `../../prd/`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Tasks: {κΈ°λ₯λͺ
}
|
|
2
|
+
|
|
3
|
+
## Task Rules
|
|
4
|
+
|
|
5
|
+
- **Status**: `[TODO]` β `[DOING]` β `[DONE]`
|
|
6
|
+
- **Priority**: P0(urgent) > P1(high) > P2(medium) > P3(low)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## GitHub Issue
|
|
11
|
+
|
|
12
|
+
- **Repo**: {{projectName}}
|
|
13
|
+
- **Issue**: #{μ΄μλ²νΈ}
|
|
14
|
+
- **Branch**: `feat/{μ΄μλ²νΈ}-{κΈ°λ₯λͺ
}`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Task List
|
|
19
|
+
|
|
20
|
+
### Phase 1: {Phase Name}
|
|
21
|
+
|
|
22
|
+
- [TODO][P1] T-F{λ²νΈ}-01 {Task Title}
|
|
23
|
+
- Acceptance:
|
|
24
|
+
- (verification condition)
|
|
25
|
+
- Checklist:
|
|
26
|
+
- [ ] (subtask)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Completion Criteria
|
|
31
|
+
|
|
32
|
+
- [ ] All tasks [DONE]
|
|
33
|
+
- [ ] All tests passing
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# PRD (Product Requirements Document)
|
|
2
|
+
|
|
3
|
+
μ΄ ν΄λμλ μ ν μꡬμ¬ν λ¬Έμλ₯Ό μμ±ν©λλ€.
|
|
4
|
+
|
|
5
|
+
## μμ± κ°μ΄λ
|
|
6
|
+
|
|
7
|
+
1. νλ‘μ νΈ κ°μμ λͺ©νλ₯Ό μ μνμΈμ
|
|
8
|
+
2. μ£Όμ κΈ°λ₯κ³Ό μ¬μ©μ μ€ν 리λ₯Ό μμ±νμΈμ
|
|
9
|
+
3. κΈ°μ μν€ν
μ² κ°μλ₯Ό ν¬ν¨νμΈμ
|
|
10
|
+
|
|
11
|
+
## μμ νμΌ
|
|
12
|
+
|
|
13
|
+
- `{project-name}-prd.md` - λ©μΈ PRD λ¬Έμ
|
|
14
|
+
- `backend-overview.md` - λ°±μλ μν€ν
μ² (μ ν)
|
|
15
|
+
- `frontend-overview.md` - νλ‘ νΈμλ μν€ν
μ² (μ ν)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# {{projectName}} λ¬Έμ ꡬ쑰 κ°μ΄λ
|
|
2
|
+
|
|
3
|
+
μμ΄μ νΈκ° νλ‘μ νΈ μ λ°μ λΉ λ₯΄κ² νμ
ν μ μλλ‘ λ¬Έμλ₯Ό κΈ°λ₯λ³λ‘ λΆλ¦¬ν΄ λμμ΅λλ€.
|
|
4
|
+
|
|
5
|
+
## μμ ꡬ쑰 μμ½
|
|
6
|
+
|
|
7
|
+
| κ²½λ‘ | λͺ©μ | ν΅μ¬ λ¬Έμ/μν |
|
|
8
|
+
| ------------------- | -------------------- | ------------------------------------------------------------- |
|
|
9
|
+
| `docs/agents/` | μμ΄μ νΈ μ΄μ κ·μΉ | `agents.md`, `constitution.md`, `git-workflow.md` |
|
|
10
|
+
| `docs/prd/` | μ ν μꡬμ¬ν | νλ‘μ νΈλ³ μμ± |
|
|
11
|
+
| `docs/features/be/` | Backend κΈ°λ₯λ³ λ¬Έμ | `{feature-id}/spec.md`, `plan.md`, `tasks.md`, `decisions.md` |
|
|
12
|
+
| `docs/features/fe/` | Frontend κΈ°λ₯λ³ λ¬Έμ | `{feature-id}/spec.md`, `plan.md`, `tasks.md`, `decisions.md` |
|