lee-spec-kit 0.1.8 → 0.2.1
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 +285 -57
- package/package.json +1 -1
- package/templates/en/{fullstack → common}/agents/git-workflow.md +39 -29
- 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 +11 -26
- package/templates/en/single/agents/agents.md +8 -21
- package/templates/ko/{fullstack → common}/agents/git-workflow.md +31 -66
- package/templates/ko/{fullstack → 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 +11 -33
- package/templates/ko/single/agents/agents.md +13 -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/custom.md +0 -29
- package/templates/en/single/agents/git-workflow.md +0 -170
- package/templates/ko/single/agents/constitution.md +0 -80
- package/templates/ko/single/agents/custom.md +0 -29
- package/templates/ko/single/agents/git-workflow.md +0 -170
- package/templates/ko/single/agents/issue-template.md +0 -114
- package/templates/ko/single/agents/pr-template.md +0 -110
- /package/templates/en/{single → common}/agents/constitution.md +0 -0
- /package/templates/en/{fullstack → common}/agents/custom.md +0 -0
- /package/templates/ko/{fullstack → common}/agents/constitution.md +0 -0
- /package/templates/ko/{fullstack → common}/agents/custom.md +0 -0
|
@@ -36,12 +36,17 @@ In GitHub Issues, use different link formats **based on file location**:
|
|
|
36
36
|
[react-i18next](https://react.i18next.com/)
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
3. **
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
3. **Local documents** (no URL available): **Path from project root**
|
|
40
|
+
|
|
41
|
+
> 📁 Local documents use paths **from project root**.
|
|
42
|
+
> Format: `- **{Label}**: \`{path}\``
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
- **Spec**: `{{featurePath}}/F001-feature-name/spec.md`
|
|
46
|
+
- **Tasks**: `{{featurePath}}/F001-feature-name/tasks.md`
|
|
42
47
|
```
|
|
43
48
|
|
|
44
|
-
> ⚠️ Local documents are not clickable on GitHub, so
|
|
49
|
+
> ⚠️ Local documents are not clickable on GitHub, so use **bold label + code block path** format instead of markdown links.
|
|
45
50
|
|
|
46
51
|
---
|
|
47
52
|
|
|
@@ -64,7 +69,7 @@ In GitHub Issues, use different link formats **based on file location**:
|
|
|
64
69
|
|
|
65
70
|
## Related Documents
|
|
66
71
|
|
|
67
|
-
- Spec
|
|
72
|
+
- **Spec**: `{{featurePath}}/F{number}-{feature-name}/spec.md`
|
|
68
73
|
|
|
69
74
|
## Labels
|
|
70
75
|
|
|
@@ -42,17 +42,24 @@ For file links within the repo in PR body, **always use current branch name**:
|
|
|
42
42
|
|
|
43
43
|
## Tests
|
|
44
44
|
|
|
45
|
+
> ⚠️ **Check only after running tests. Do NOT check items that were not executed.**
|
|
46
|
+
|
|
45
47
|
- [ ] Unit tests passed
|
|
46
48
|
- [ ] Integration tests completed
|
|
47
49
|
|
|
50
|
+
### Execution Results
|
|
51
|
+
|
|
52
|
+
- Command: `{test command executed}`
|
|
53
|
+
- Result: `{PASS/FAIL summary}`
|
|
54
|
+
|
|
48
55
|
## Screenshots (for UI changes)
|
|
49
56
|
|
|
50
57
|
{Attach if applicable}
|
|
51
58
|
|
|
52
59
|
## Related Documents
|
|
53
60
|
|
|
54
|
-
- Spec
|
|
55
|
-
- Tasks
|
|
61
|
+
- **Spec**: `{{featurePath}}/F{number}-{feature-name}/spec.md`
|
|
62
|
+
- **Tasks**: `{{featurePath}}/F{number}-{feature-name}/tasks.md`
|
|
56
63
|
|
|
57
64
|
Closes #{issue-number}
|
|
58
65
|
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# New Feature Creation Process
|
|
2
|
+
|
|
3
|
+
Step-by-step guide for adding a new Feature.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
### 1. Create Feature Folder
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx lee-spec-kit feature <name> -d "<description>"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `<name>`: Feature name (lowercase, hyphens allowed)
|
|
16
|
+
- `-d`: Feature description (auto-filled in spec.md)
|
|
17
|
+
|
|
18
|
+
**Example:**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx lee-spec-kit feature user-auth -d "User authentication and session management"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. Write spec.md
|
|
25
|
+
|
|
26
|
+
- **What**: Clearly describe what the feature does
|
|
27
|
+
- **Why**: Explain why this feature is needed
|
|
28
|
+
- ❌ Do NOT include tech stack (covered in plan.md)
|
|
29
|
+
|
|
30
|
+
### 3. Request User Approval
|
|
31
|
+
|
|
32
|
+
> 🚨 **User Approval Required**
|
|
33
|
+
|
|
34
|
+
Share full spec.md content with user and wait for **explicit approval (OK)**
|
|
35
|
+
|
|
36
|
+
### 4. Create GitHub Issue
|
|
37
|
+
|
|
38
|
+
→ See `skills/create-issue.md`
|
|
39
|
+
|
|
40
|
+
### 5. Pre-Commit Checklist
|
|
41
|
+
|
|
42
|
+
> ⚠️ **Before committing, verify:**
|
|
43
|
+
|
|
44
|
+
- [ ] Issue number in spec.md (`- **Issue Number**: #{issue}`)
|
|
45
|
+
- [ ] Issue number in tasks.md (`- **Issue**: #{issue}`)
|
|
46
|
+
- [ ] Branch name in tasks.md (`feat/{issue-number}-{feature-name}`)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Reference Documents
|
|
51
|
+
|
|
52
|
+
- **Feature Template**: `features/feature-base/`
|
|
53
|
+
- **Issue Creation Guide**: `skills/create-issue.md`
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# GitHub Issue Creation Process
|
|
2
|
+
|
|
3
|
+
Guide for creating GitHub Issues.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- [ ] `spec.md` completed
|
|
10
|
+
- [ ] User approval received
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
### 1. Prepare Issue Content
|
|
17
|
+
|
|
18
|
+
> 📖 **Always refer to `issue-template.md`**
|
|
19
|
+
|
|
20
|
+
| Item | Format |
|
|
21
|
+
| -------- | ------------------------------------------- |
|
|
22
|
+
| Title | `F{number}: {feature-name} ({description})` |
|
|
23
|
+
| Body | Overview, Goals, Criteria, Related docs |
|
|
24
|
+
| Labels | `enhancement`, `bug`, `documentation`, etc. |
|
|
25
|
+
| Assignee | `@me` (default) |
|
|
26
|
+
|
|
27
|
+
### 2. Request User Approval
|
|
28
|
+
|
|
29
|
+
> 🚨 **User Approval Required**
|
|
30
|
+
|
|
31
|
+
Before creating issue, share and wait for approval:
|
|
32
|
+
|
|
33
|
+
- Title
|
|
34
|
+
- Body
|
|
35
|
+
- Labels
|
|
36
|
+
|
|
37
|
+
### 3. Create Issue
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
gh issue create \
|
|
41
|
+
--title "F{number}: {feature-name} ({description})" \
|
|
42
|
+
--body-file /tmp/issue-body.md \
|
|
43
|
+
--assignee @me \
|
|
44
|
+
--label enhancement
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Reference Documents
|
|
50
|
+
|
|
51
|
+
- **Issue Template**: `issue-template.md`
|
|
52
|
+
- **Link Format Rules**: `issue-template.md` > "Link Format" section
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Pull Request Creation Process
|
|
2
|
+
|
|
3
|
+
Guide for creating Pull Requests.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
- [ ] All tasks in `[DONE]` state
|
|
10
|
+
- [ ] Changes committed
|
|
11
|
+
- [ ] Branch pushed
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
### 1. Prepare PR Content
|
|
18
|
+
|
|
19
|
+
> 📖 **Always refer to `pr-template.md`**
|
|
20
|
+
|
|
21
|
+
| Item | Format |
|
|
22
|
+
| -------- | ---------------------------------- |
|
|
23
|
+
| Title | `feat(#{issue-number}): {feature}` |
|
|
24
|
+
| Body | Overview, Changes, Tests, Docs |
|
|
25
|
+
| Labels | Appropriate labels |
|
|
26
|
+
| Assignee | `@me` (default) |
|
|
27
|
+
|
|
28
|
+
### 2. Test Verification
|
|
29
|
+
|
|
30
|
+
> 🚨 **Cannot create PR if tests fail**
|
|
31
|
+
|
|
32
|
+
1. Run related test commands (e.g., `npm test`, `pnpm test`)
|
|
33
|
+
2. Check results (PASS/FAIL)
|
|
34
|
+
3. Record **execution results** in PR body "Tests" section
|
|
35
|
+
4. Check boxes **only for items that actually passed**
|
|
36
|
+
|
|
37
|
+
### 3. Request User Approval
|
|
38
|
+
|
|
39
|
+
> 🚨 **User Approval Required**
|
|
40
|
+
|
|
41
|
+
Before creating PR, share and wait for approval:
|
|
42
|
+
|
|
43
|
+
- Title
|
|
44
|
+
- Body (including test results)
|
|
45
|
+
- Labels
|
|
46
|
+
|
|
47
|
+
### 4. Create PR
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
gh pr create \
|
|
51
|
+
--title "feat(#{issue-number}): {feature}" \
|
|
52
|
+
--body-file /tmp/pr-body.md \
|
|
53
|
+
--assignee @me \
|
|
54
|
+
--base main
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Important Notes
|
|
60
|
+
|
|
61
|
+
### Link Format
|
|
62
|
+
|
|
63
|
+
Use **current branch name** for file links in PR body:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
[filename](https://github.com/{owner}/{repo}/blob/{branch-name}/path/to/file)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
> ⚠️ `main` branch links will return 404 until merged!
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Code Review Modification Guidelines
|
|
74
|
+
|
|
75
|
+
> 📋 **Criteria for deciding whether to add a task when modifications are needed from review feedback**
|
|
76
|
+
|
|
77
|
+
### No task needed (Minor changes)
|
|
78
|
+
|
|
79
|
+
- Typo/code style fixes
|
|
80
|
+
- Variable/function name changes
|
|
81
|
+
- Comment additions/modifications
|
|
82
|
+
- Lint error fixes
|
|
83
|
+
|
|
84
|
+
### Task needed (Major changes)
|
|
85
|
+
|
|
86
|
+
- Logic/algorithm changes
|
|
87
|
+
- New file/function additions
|
|
88
|
+
- API signature changes
|
|
89
|
+
- Test case additions
|
|
90
|
+
- Requires changes to spec.md or plan.md
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Reference Documents
|
|
95
|
+
|
|
96
|
+
- **PR Template**: `pr-template.md`
|
|
97
|
+
- **Git Workflow**: `git-workflow.md`
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Task Execution Process
|
|
2
|
+
|
|
3
|
+
Guide for executing tasks from tasks.md.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
### 1. Check Task
|
|
10
|
+
|
|
11
|
+
- Find next task in `tasks.md`
|
|
12
|
+
- Select task with `[TODO]` status
|
|
13
|
+
- ⚠️ **Verify current branch matches Feature branch** (`feat/{issue-number}-{feature-name}`)
|
|
14
|
+
|
|
15
|
+
### 2. Share Execution Plan
|
|
16
|
+
|
|
17
|
+
> 🚨 **User Approval Required**
|
|
18
|
+
|
|
19
|
+
Share execution plan with user before starting and wait for approval
|
|
20
|
+
|
|
21
|
+
### 3. Update Status
|
|
22
|
+
|
|
23
|
+
| Timing | Status Transition |
|
|
24
|
+
| ----------- | -------------------- |
|
|
25
|
+
| On start | `[TODO]` → `[DOING]` |
|
|
26
|
+
| On complete | `[DOING]` → `[DONE]` |
|
|
27
|
+
|
|
28
|
+
Record date (YYYY-MM-DD) with each status change
|
|
29
|
+
|
|
30
|
+
### 4. Commit After Task Completion
|
|
31
|
+
|
|
32
|
+
> 🚨 **User Approval Required**
|
|
33
|
+
|
|
34
|
+
Before committing, share and wait for approval:
|
|
35
|
+
|
|
36
|
+
- Commit message
|
|
37
|
+
- Files to be included
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
git add .
|
|
41
|
+
git commit -m "{type}(#{issue-number}): {task description}"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Handling Requests Outside tasks.md
|
|
47
|
+
|
|
48
|
+
When user requests work not in tasks.md:
|
|
49
|
+
|
|
50
|
+
1. Ask if it should be added to tasks.md
|
|
51
|
+
2. If approved: Add to tasks.md then execute
|
|
52
|
+
3. If declined: Proceed as temporary work (still included in commit)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 🚨 Never Modify Completed Tasks
|
|
57
|
+
|
|
58
|
+
> ⚠️ **Tasks in `[DONE]` status must NEVER be modified.**
|
|
59
|
+
|
|
60
|
+
### Principle
|
|
61
|
+
|
|
62
|
+
- Completed tasks are preserved for **history/record purposes**
|
|
63
|
+
- If modifications are needed, **add a new task**
|
|
64
|
+
|
|
65
|
+
### When Modifications Are Needed
|
|
66
|
+
|
|
67
|
+
1. Keep the existing task as-is
|
|
68
|
+
2. Add new task: `T{next-number}: {modification description}`
|
|
69
|
+
3. Perform changes in the new task
|
|
70
|
+
|
|
71
|
+
**Example:**
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
## Tasks
|
|
75
|
+
|
|
76
|
+
- [DONE] T001: Implement user authentication (2026-01-05)
|
|
77
|
+
- [DONE] T002: Create login page (2026-01-06)
|
|
78
|
+
- [TODO] T003: Fix T002 - Add password validation ← New task for modifications
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Reference Documents
|
|
84
|
+
|
|
85
|
+
- **Git Workflow**: `git-workflow.md`
|
|
86
|
+
- **Commit Convention**: `git-workflow.md` > "Commit Convention" section
|
|
@@ -75,35 +75,20 @@ docs/
|
|
|
75
75
|
|
|
76
76
|
## Request Type Processes
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
> 📖 Refer to `skills/` folder for detailed process guides.
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
| Process | Guide |
|
|
81
|
+
| -------------- | -------------------------- |
|
|
82
|
+
| New Feature | `skills/create-feature.md` |
|
|
83
|
+
| GitHub Issue | `skills/create-issue.md` |
|
|
84
|
+
| Pull Request | `skills/create-pr.md` |
|
|
85
|
+
| Task Execution | `skills/execute-task.md` |
|
|
85
86
|
|
|
86
|
-
###
|
|
87
|
+
### Additional Rules (Fullstack)
|
|
87
88
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
4. Decompose into tasks after user approval
|
|
92
|
-
|
|
93
|
-
### 3. Task Execution
|
|
94
|
-
|
|
95
|
-
1. Write tasks in `tasks.md`
|
|
96
|
-
2. Execute after user approval
|
|
97
|
-
3. Transition status: `[TODO]` → `[DOING]` → `[DONE]`
|
|
98
|
-
4. Commit immediately after task completion
|
|
99
|
-
|
|
100
|
-
### 4. Handling Requests Outside Tasks
|
|
101
|
-
|
|
102
|
-
> When user requests **work not in tasks.md**:
|
|
103
|
-
|
|
104
|
-
1. Ask user if this should be **added to tasks.md**
|
|
105
|
-
2. If approved: Add to tasks.md then execute
|
|
106
|
-
3. If declined: Proceed as temporary work (still included in commit)
|
|
89
|
+
- **Identify target repo**: Determine BE or FE before feature creation
|
|
90
|
+
- **Write plan.md**: Tech stack and architecture decisions after spec approval
|
|
91
|
+
- **Record in decisions.md**: Document all major technical decisions
|
|
107
92
|
|
|
108
93
|
---
|
|
109
94
|
|
|
@@ -70,27 +70,14 @@ docs/
|
|
|
70
70
|
|
|
71
71
|
## Request Type Processes
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
1. Write tasks in `tasks.md`
|
|
83
|
-
2. Execute after approval
|
|
84
|
-
3. Status transition: `[TODO]` → `[DOING]` → `[DONE]`
|
|
85
|
-
4. Commit on task completion
|
|
86
|
-
|
|
87
|
-
### 3. Handling Requests Outside Tasks
|
|
88
|
-
|
|
89
|
-
> When user requests **work not in tasks.md**:
|
|
90
|
-
|
|
91
|
-
1. Ask user if this should be **added to tasks.md**
|
|
92
|
-
2. If approved: Add to tasks.md then execute
|
|
93
|
-
3. If declined: Proceed as temporary work (still included in commit)
|
|
73
|
+
> 📖 Refer to `skills/` folder for detailed process guides.
|
|
74
|
+
|
|
75
|
+
| Process | Guide |
|
|
76
|
+
| -------------- | -------------------------- |
|
|
77
|
+
| New Feature | `skills/create-feature.md` |
|
|
78
|
+
| GitHub Issue | `skills/create-issue.md` |
|
|
79
|
+
| Pull Request | `skills/create-pr.md` |
|
|
80
|
+
| Task Execution | `skills/execute-task.md` |
|
|
94
81
|
|
|
95
82
|
---
|
|
96
83
|
|
|
@@ -70,89 +70,54 @@ main
|
|
|
70
70
|
|
|
71
71
|
## 자동화 워크플로우
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
> 📖 단계별 상세 가이드는 `skills/` 폴더를 참조하세요.
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
> `gh`로 이슈/PR 생성·수정 시 작성할 제목/본문/라벨을 먼저 공유하고 **반드시** 사용자 확인(OK) 후 진행합니다.
|
|
82
|
-
|
|
83
|
-
### 2. 문서 커밋 (docs 레포)
|
|
84
|
-
|
|
85
|
-
> 📌 docs 폴더는 별도 git으로 관리되므로 프로젝트와 분리된 커밋 전략을 사용합니다.
|
|
86
|
-
|
|
87
|
-
| # | 커밋 시점 | 포함 문서 | 커밋 메시지 예시 |
|
|
88
|
-
| --- | ------------------------------------------ | ----------------------------- | ------------------------------------ |
|
|
89
|
-
| 1 | **계획 완료 시** (spec+plan+tasks 승인 후) | spec.md, plan.md, tasks.md | `docs(#123): spec, plan, tasks 작성` |
|
|
90
|
-
| 2 | **Feature 완료 시** (모든 태스크 완료 후) | tasks.md (상태), decisions.md | `docs(#123): Feature 완료` |
|
|
91
|
-
|
|
92
|
-
> ⚠️ **Feature 폴더 생성 시점**에는 커밋하지 않습니다.
|
|
93
|
-
|
|
94
|
-
### 3. 태스크 완료 시 자동 커밋
|
|
95
|
-
|
|
96
|
-
태스크 하나가 완료되면:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
git add .
|
|
100
|
-
git commit -m "{type}(#{issue}): {task-description}"
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
> `git commit` 실행 전 커밋 메시지와 포함될 파일 목록을 먼저 공유하고 **반드시** 사용자 확인(OK) 후 진행합니다.
|
|
75
|
+
| 워크플로우 | 가이드 |
|
|
76
|
+
| ------------ | -------------------------- |
|
|
77
|
+
| Feature 시작 | `skills/create-feature.md` |
|
|
78
|
+
| Issue 생성 | `skills/create-issue.md` |
|
|
79
|
+
| 태스크 실행 | `skills/execute-task.md` |
|
|
80
|
+
| PR 생성 | `skills/create-pr.md` |
|
|
104
81
|
|
|
105
|
-
###
|
|
106
|
-
|
|
107
|
-
모든 태스크 완료 시:
|
|
82
|
+
### 브랜치 생성
|
|
108
83
|
|
|
109
84
|
```bash
|
|
110
|
-
git
|
|
111
|
-
gh pr create --title "feat(#{issue}): {feature-title}" \
|
|
112
|
-
--body "Closes #{issue}" \
|
|
113
|
-
--base main
|
|
85
|
+
git checkout -b feat/{issue-number}-{feature-name}
|
|
114
86
|
```
|
|
115
87
|
|
|
116
|
-
###
|
|
88
|
+
### 문서 커밋 시점 (docs 레포)
|
|
117
89
|
|
|
118
|
-
|
|
90
|
+
| 커밋 시점 | 포함 내용 | 커밋 메시지 예시 |
|
|
91
|
+
| -------------------------------------- | ---------------------------------- | ---------------------------------------------- |
|
|
92
|
+
| 계획 완료 시 (spec+plan+tasks 승인 후) | `F{번호}-{기능명}/` 폴더 전체 | `docs(#{이슈번호}): F{번호} spec, plan, tasks` |
|
|
93
|
+
| Feature 완료 시 (모든 태스크 완료 후) | `F{번호}-{기능명}/` 폴더 변경 사항 | `docs(#{이슈번호}): F{번호} Feature 완료` |
|
|
119
94
|
|
|
120
|
-
|
|
121
|
-
# 머지 전 main 최신화
|
|
122
|
-
git checkout main
|
|
123
|
-
git pull
|
|
95
|
+
> ⚠️ Feature 폴더 생성 시점에는 커밋하지 않습니다.
|
|
124
96
|
|
|
125
|
-
|
|
126
|
-
gh pr merge --squash --delete-branch
|
|
97
|
+
### 머지 전략
|
|
127
98
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
99
|
+
| 상황 | 머지 방식 |
|
|
100
|
+
| ------------ | ---------------- |
|
|
101
|
+
| 일반 Feature | Squash and Merge |
|
|
102
|
+
| 긴급 Hotfix | Squash and Merge |
|
|
131
103
|
|
|
132
104
|
---
|
|
133
105
|
|
|
134
|
-
##
|
|
106
|
+
## Docs Push 규칙
|
|
135
107
|
|
|
136
|
-
|
|
108
|
+
> `.lee-spec-kit.json`의 `docsRepo` 설정을 참조합니다.
|
|
137
109
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
5. 다음 태스크 진행
|
|
144
|
-
```
|
|
110
|
+
| 설정 | 동작 |
|
|
111
|
+
| -------------------------------------------- | --------------------------------- |
|
|
112
|
+
| `docsRepo: "embedded"` | 프로젝트 push 시 docs도 함께 포함 |
|
|
113
|
+
| `docsRepo: "standalone"` + `pushDocs: false` | docs는 커밋만, push 안 함 |
|
|
114
|
+
| `docsRepo: "standalone"` + `pushDocs: true` | docs 변경 시 별도 push 진행 |
|
|
145
115
|
|
|
146
|
-
###
|
|
116
|
+
### Standalone 모드 주의사항
|
|
147
117
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
3. gh pr create
|
|
152
|
-
4. 리뷰 대기
|
|
153
|
-
5. 리뷰 코멘트 수정
|
|
154
|
-
6. gh pr merge --squash
|
|
155
|
-
```
|
|
118
|
+
- `pushDocs: false`인 경우 docs 변경사항은 **로컬에만 커밋**
|
|
119
|
+
- `pushDocs: true`인 경우 docs 변경 후 **별도로 push** 필요
|
|
120
|
+
- 프로젝트 레포와 docs 레포가 분리되어 있으므로 **각각 관리**
|
|
156
121
|
|
|
157
122
|
---
|
|
158
123
|
|
|
@@ -36,12 +36,17 @@ GitHub Issue에서 링크는 **파일 위치에 따라** 다르게 작성:
|
|
|
36
36
|
[react-i18next](https://react.i18next.com/)
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
3.
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
3. **로컬 문서** (docs 레포 등, URL 없음): **프로젝트 루트 기준 경로**
|
|
40
|
+
|
|
41
|
+
> 📁 로컬 문서는 **프로젝트 루트 기준** 경로로 작성합니다.
|
|
42
|
+
> 형식: `- **{레이블}**: \`{경로}\``
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
- **Spec**: `{{featurePath}}/F001-feature-name/spec.md`
|
|
46
|
+
- **Tasks**: `{{featurePath}}/F001-feature-name/tasks.md`
|
|
42
47
|
```
|
|
43
48
|
|
|
44
|
-
> ⚠️ 로컬 문서는 GitHub에서 클릭되지 않으므로, 링크 대신
|
|
49
|
+
> ⚠️ 로컬 문서는 GitHub에서 클릭되지 않으므로, 마크다운 링크 대신 **볼드 레이블 + 코드블록 경로** 형식을 사용합니다.
|
|
45
50
|
|
|
46
51
|
---
|
|
47
52
|
|
|
@@ -64,7 +69,7 @@ GitHub Issue에서 링크는 **파일 위치에 따라** 다르게 작성:
|
|
|
64
69
|
|
|
65
70
|
## 관련 문서
|
|
66
71
|
|
|
67
|
-
- Spec
|
|
72
|
+
- **Spec**: `{{featurePath}}/F{번호}-{기능명}/spec.md`
|
|
68
73
|
|
|
69
74
|
## 라벨
|
|
70
75
|
|
|
@@ -40,17 +40,24 @@ PR 본문에서 레포 내 파일 링크는 **반드시 현재 브랜치명을
|
|
|
40
40
|
|
|
41
41
|
## 테스트
|
|
42
42
|
|
|
43
|
+
> ⚠️ **실제 테스트 실행 후 체크하세요. 미실행 항목은 체크하지 마세요.**
|
|
44
|
+
|
|
43
45
|
- [ ] 유닛 테스트 통과
|
|
44
46
|
- [ ] 통합 테스트 완료
|
|
45
47
|
|
|
48
|
+
### 실행 결과
|
|
49
|
+
|
|
50
|
+
- 명령어: `{실행한 테스트 명령어}`
|
|
51
|
+
- 결과: `{PASS/FAIL 요약}`
|
|
52
|
+
|
|
46
53
|
## 스크린샷 (UI 변경 시)
|
|
47
54
|
|
|
48
55
|
{있으면 첨부}
|
|
49
56
|
|
|
50
57
|
## 관련 문서
|
|
51
58
|
|
|
52
|
-
- Spec
|
|
53
|
-
- Tasks
|
|
59
|
+
- **Spec**: `{{featurePath}}/F{번호}-{기능명}/spec.md`
|
|
60
|
+
- **Tasks**: `{{featurePath}}/F{번호}-{기능명}/tasks.md`
|
|
54
61
|
|
|
55
62
|
Closes #{이슈번호}
|
|
56
63
|
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 새 기능 추가 프로세스
|
|
2
|
+
|
|
3
|
+
새 기능(Feature)을 추가할 때 따르는 단계별 가이드입니다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 단계
|
|
8
|
+
|
|
9
|
+
### 1. Feature 폴더 생성
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx lee-spec-kit feature <name> -d "<설명>"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `<name>`: 기능 이름 (영문, 하이픈 사용)
|
|
16
|
+
- `-d`: 기능 설명 (spec.md에 자동 반영)
|
|
17
|
+
|
|
18
|
+
**예시:**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx lee-spec-kit feature user-auth -d "사용자 인증 및 세션 관리"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 2. spec.md 작성
|
|
25
|
+
|
|
26
|
+
- **무엇을**: 기능이 무엇인지 명확히 기술
|
|
27
|
+
- **왜**: 이 기능이 필요한 이유
|
|
28
|
+
- ❌ 기술 스택은 작성하지 않음 (plan.md에서 다룸)
|
|
29
|
+
|
|
30
|
+
### 3. 사용자 확인 요청
|
|
31
|
+
|
|
32
|
+
> 🚨 **사용자 확인 필수**
|
|
33
|
+
|
|
34
|
+
spec.md 전문을 사용자에게 공유하고 **명시적 승인(OK)** 대기
|
|
35
|
+
|
|
36
|
+
### 4. GitHub Issue 생성
|
|
37
|
+
|
|
38
|
+
→ `skills/create-issue.md` 참조
|
|
39
|
+
|
|
40
|
+
### 5. 문서 커밋 전 확인
|
|
41
|
+
|
|
42
|
+
> ⚠️ **커밋 전 체크리스트**
|
|
43
|
+
|
|
44
|
+
- [ ] spec.md에 이슈번호 반영 (`- **이슈 번호**: #{이슈번호}`)
|
|
45
|
+
- [ ] tasks.md에 이슈번호 반영 (`- **Issue**: #{이슈번호}`)
|
|
46
|
+
- [ ] tasks.md에 브랜치명 반영 (`feat/{이슈번호}-{기능명}`)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 참조 문서
|
|
51
|
+
|
|
52
|
+
- **Feature 템플릿**: `features/feature-base/`
|
|
53
|
+
- **Issue 생성 가이드**: `skills/create-issue.md`
|