lee-spec-kit 0.2.2 → 0.2.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/package.json +1 -1
- package/templates/en/common/agents/constitution.md +4 -2
- package/templates/en/common/agents/git-workflow.md +0 -7
- package/templates/en/common/agents/issue-template.md +20 -4
- package/templates/en/common/agents/pr-template.md +19 -3
- package/templates/en/common/agents/skills/create-feature.md +23 -1
- package/templates/en/common/agents/skills/create-pr.md +6 -6
- package/templates/en/common/agents/skills/execute-task.md +6 -4
- package/templates/en/fullstack/agents/agents.md +9 -4
- package/templates/en/single/agents/agents.md +15 -10
- package/templates/ko/common/agents/constitution.md +2 -0
- package/templates/ko/common/agents/git-workflow.md +0 -7
- package/templates/ko/common/agents/issue-template.md +3 -3
- package/templates/ko/common/agents/pr-template.md +23 -7
- package/templates/ko/common/agents/skills/create-feature.md +23 -1
- package/templates/ko/common/agents/skills/create-pr.md +4 -4
- package/templates/ko/common/agents/skills/execute-task.md +6 -4
- package/templates/ko/fullstack/agents/agents.md +6 -1
- package/templates/ko/single/agents/agents.md +4 -5
package/package.json
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# {{projectName}} Constitution
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
> ⚠️ **Replace `{{projectName}}` and `{{date}}` with actual project name and date.**
|
|
4
|
+
|
|
5
|
+
Core principles and technical decision guidelines for this project.
|
|
6
|
+
All development decisions are based on this document.
|
|
5
7
|
|
|
6
8
|
> **📌 Document Scope**
|
|
7
9
|
>
|
|
@@ -109,13 +109,6 @@ git checkout -b feat/{issue-number}-{feature-name}
|
|
|
109
109
|
|
|
110
110
|
> 💡 **Core Rule**: At task completion, **all changed repositories** must be committed.
|
|
111
111
|
|
|
112
|
-
### Merge Strategy
|
|
113
|
-
|
|
114
|
-
| Situation | Merge Method |
|
|
115
|
-
| -------------- | ---------------- |
|
|
116
|
-
| Normal Feature | Squash and Merge |
|
|
117
|
-
| Urgent Hotfix | Squash and Merge |
|
|
118
|
-
|
|
119
112
|
---
|
|
120
113
|
|
|
121
114
|
## Docs Push Rules
|
|
@@ -36,14 +36,30 @@ 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. **
|
|
39
|
+
3. **Files within project repo**: Use full URL (clickable)
|
|
40
|
+
- **Merged documents/code**: Use `main` branch
|
|
41
|
+
```markdown
|
|
42
|
+
[filename](https://github.com/{owner}/{repo}/blob/main/path/to/file)
|
|
43
|
+
```
|
|
44
|
+
- **In-progress documents** (not merged yet): Use **Feature branch**
|
|
45
|
+
```markdown
|
|
46
|
+
[filename](https://github.com/{owner}/{repo}/blob/{feat-branch}/path/to/file)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
4. **External documents (with public URL)**: Use **absolute URL**
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
[react-i18next](https://react.i18next.com/)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
5. **Local documents** (no URL available): **Path from project root**
|
|
40
56
|
|
|
41
57
|
> 📁 Local documents use paths **from project root**.
|
|
42
58
|
> Format: `- **{Label}**: \`{path}\``
|
|
43
59
|
|
|
44
60
|
```markdown
|
|
45
|
-
- **Spec**: `{
|
|
46
|
-
- **Tasks**: `{
|
|
61
|
+
- **Spec**: `docs/features/{be|fe}/F001-feature-name/spec.md`
|
|
62
|
+
- **Tasks**: `docs/features/{be|fe}/F001-feature-name/tasks.md`
|
|
47
63
|
```
|
|
48
64
|
|
|
49
65
|
> ⚠️ Local documents are not clickable on GitHub, so use **bold label + code block path** format instead of markdown links.
|
|
@@ -69,7 +85,7 @@ In GitHub Issues, use different link formats **based on file location**:
|
|
|
69
85
|
|
|
70
86
|
## Related Documents
|
|
71
87
|
|
|
72
|
-
- **Spec**: `{
|
|
88
|
+
- **Spec**: `docs/features/{be|fe}/F{number}-{feature-name}/spec.md`
|
|
73
89
|
|
|
74
90
|
## Labels
|
|
75
91
|
|
|
@@ -58,8 +58,8 @@ For file links within the repo in PR body, **always use current branch name**:
|
|
|
58
58
|
|
|
59
59
|
## Related Documents
|
|
60
60
|
|
|
61
|
-
- **Spec**: `{
|
|
62
|
-
- **Tasks**: `{
|
|
61
|
+
- **Spec**: `docs/features/{be|fe}/F{number}-{feature-name}/spec.md`
|
|
62
|
+
- **Tasks**: `docs/features/{be|fe}/F{number}-{feature-name}/tasks.md`
|
|
63
63
|
|
|
64
64
|
Closes #{issue-number}
|
|
65
65
|
```
|
|
@@ -85,9 +85,25 @@ gh pr create \
|
|
|
85
85
|
| Situation | Merge Method |
|
|
86
86
|
| -------------- | ---------------- |
|
|
87
87
|
| Normal Feature | Squash and Merge |
|
|
88
|
-
| Urgent Hotfix | Merge
|
|
88
|
+
| Urgent Hotfix | Squash and Merge |
|
|
89
89
|
| Docs update | Squash and Merge |
|
|
90
90
|
|
|
91
|
+
### Merge Execution
|
|
92
|
+
|
|
93
|
+
After all reviews are resolved:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Update main before merge
|
|
97
|
+
git checkout main
|
|
98
|
+
git pull
|
|
99
|
+
|
|
100
|
+
# Squash and Merge
|
|
101
|
+
gh pr merge --squash --delete-branch
|
|
102
|
+
|
|
103
|
+
# Update main after merge
|
|
104
|
+
git pull
|
|
105
|
+
```
|
|
106
|
+
|
|
91
107
|
---
|
|
92
108
|
|
|
93
109
|
## Label Rules
|
|
@@ -37,7 +37,15 @@ Share full spec.md content with user and wait for **explicit approval (OK)**
|
|
|
37
37
|
|
|
38
38
|
→ See `skills/create-issue.md`
|
|
39
39
|
|
|
40
|
-
### 5.
|
|
40
|
+
### 5. Create Branch
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git checkout -b feat/{issue-number}-{feature-name}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> ⚠️ **Do NOT work on main branch.** Always create a branch after issue creation.
|
|
47
|
+
|
|
48
|
+
### 6. Pre-Commit Checklist
|
|
41
49
|
|
|
42
50
|
> ⚠️ **Before committing, verify:**
|
|
43
51
|
|
|
@@ -45,6 +53,20 @@ Share full spec.md content with user and wait for **explicit approval (OK)**
|
|
|
45
53
|
- [ ] Issue number in tasks.md (`- **Issue**: #{issue}`)
|
|
46
54
|
- [ ] Branch name in tasks.md (`feat/{issue-number}-{feature-name}`)
|
|
47
55
|
|
|
56
|
+
### 7. Commit Documents
|
|
57
|
+
|
|
58
|
+
> 🚨 **User Approval Required**
|
|
59
|
+
|
|
60
|
+
After spec/plan/tasks approval, commit the **entire Feature folder**:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git add docs/features/{be|fe}/F{number}-{feature-name}/
|
|
64
|
+
git commit -m "docs(#{issue}): F{number} planning complete"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> 📁 **Included files**: spec.md, plan.md, tasks.md, decisions.md (include even if empty)
|
|
68
|
+
> ⚠️ **Standalone mode**: Switch to Docs repo before committing.
|
|
69
|
+
|
|
48
70
|
---
|
|
49
71
|
|
|
50
72
|
## Reference Documents
|
|
@@ -27,21 +27,21 @@ Guide for creating Pull Requests.
|
|
|
27
27
|
|
|
28
28
|
### 2. Test Verification
|
|
29
29
|
|
|
30
|
-
> 🚨 **
|
|
30
|
+
> 🚨 **PR cannot be created if tests fail**
|
|
31
31
|
|
|
32
|
-
1. Run
|
|
32
|
+
1. Run relevant test commands (e.g., `npm test`, `pnpm test`); if no tests exist, request them from the user
|
|
33
33
|
2. Check results (PASS/FAIL)
|
|
34
|
-
3. Record **execution results** in
|
|
35
|
-
4.
|
|
34
|
+
3. Record **execution results** in the "Tests" section of PR body
|
|
35
|
+
4. All checkboxes must be checked
|
|
36
36
|
|
|
37
37
|
### 3. Request User Approval
|
|
38
38
|
|
|
39
39
|
> 🚨 **User Approval Required**
|
|
40
40
|
|
|
41
|
-
Before creating PR, share and wait for approval
|
|
41
|
+
Before creating PR, share the following **in a code block** and wait for **explicit approval (OK)**:
|
|
42
42
|
|
|
43
43
|
- Title
|
|
44
|
-
-
|
|
44
|
+
- Full body (`pr-template.md` format)
|
|
45
45
|
- Labels
|
|
46
46
|
|
|
47
47
|
### 4. Create PR
|
|
@@ -20,10 +20,12 @@ Share execution plan with user before starting and wait for approval
|
|
|
20
20
|
|
|
21
21
|
### 3. Update Status
|
|
22
22
|
|
|
23
|
-
| Timing
|
|
24
|
-
|
|
|
25
|
-
| On start
|
|
26
|
-
|
|
|
23
|
+
| Timing | Status Transition |
|
|
24
|
+
| ------------------- | -------------------- |
|
|
25
|
+
| On start | `[TODO]` → `[DOING]` |
|
|
26
|
+
| After user approval | `[DOING]` → `[DONE]` |
|
|
27
|
+
|
|
28
|
+
> ⚠️ Even after work is complete, **stay in `[DOING]` until user approval**
|
|
27
29
|
|
|
28
30
|
Record date (YYYY-MM-DD) with each status change
|
|
29
31
|
|
|
@@ -59,11 +59,16 @@ Operating rules for AI code assistants to perform consistent code generation and
|
|
|
59
59
|
docs/
|
|
60
60
|
├── README.md # Documentation guide
|
|
61
61
|
├── agents/ # Agent operating rules
|
|
62
|
-
│ ├── agents.md
|
|
63
|
-
│ ├── constitution.md
|
|
64
|
-
│ ├── git-workflow.md
|
|
62
|
+
│ ├── agents.md # Main rules (this file)
|
|
63
|
+
│ ├── constitution.md # Project principles
|
|
64
|
+
│ ├── git-workflow.md # Git automation
|
|
65
65
|
│ ├── issue-template.md
|
|
66
|
-
│
|
|
66
|
+
│ ├── pr-template.md
|
|
67
|
+
│ └── skills/ # Step-by-step guides
|
|
68
|
+
│ ├── create-feature.md
|
|
69
|
+
│ ├── create-issue.md
|
|
70
|
+
│ ├── create-pr.md
|
|
71
|
+
│ └── execute-task.md
|
|
67
72
|
├── prd/ # Product requirements
|
|
68
73
|
├── features/ # Feature documentation
|
|
69
74
|
│ ├── be/ # Backend Features
|
|
@@ -52,18 +52,23 @@ Operating rules for AI code assistants to perform consistent code generation and
|
|
|
52
52
|
|
|
53
53
|
```
|
|
54
54
|
docs/
|
|
55
|
-
├── README.md
|
|
56
|
-
├── agents/
|
|
57
|
-
│ ├── agents.md
|
|
58
|
-
│ ├── constitution.md
|
|
59
|
-
│ ├── git-workflow.md
|
|
55
|
+
├── README.md # Documentation guide
|
|
56
|
+
├── agents/ # Agent operating rules
|
|
57
|
+
│ ├── agents.md # Main rules (this file)
|
|
58
|
+
│ ├── constitution.md # Project principles
|
|
59
|
+
│ ├── git-workflow.md # Git automation
|
|
60
60
|
│ ├── issue-template.md
|
|
61
|
-
│
|
|
62
|
-
|
|
63
|
-
├──
|
|
64
|
-
│
|
|
61
|
+
│ ├── pr-template.md
|
|
62
|
+
│ └── skills/ # Step-by-step guides
|
|
63
|
+
│ ├── create-feature.md
|
|
64
|
+
│ ├── create-issue.md
|
|
65
|
+
│ ├── create-pr.md
|
|
66
|
+
│ └── execute-task.md
|
|
67
|
+
├── prd/ # Product requirements
|
|
68
|
+
├── features/ # Feature documentation
|
|
69
|
+
│ ├── feature-base/ # Template
|
|
65
70
|
│ └── F00X-{name}/
|
|
66
|
-
└── scripts/
|
|
71
|
+
└── scripts/ # Utilities
|
|
67
72
|
```
|
|
68
73
|
|
|
69
74
|
---
|
|
@@ -109,13 +109,6 @@ git checkout -b feat/{issue-number}-{feature-name}
|
|
|
109
109
|
|
|
110
110
|
> 💡 **Core Rule**: 태스크 완료 시점에는 **변경된 모든 레포지토리**가 커밋되어야 합니다.
|
|
111
111
|
|
|
112
|
-
### 머지 전략
|
|
113
|
-
|
|
114
|
-
| 상황 | 머지 방식 |
|
|
115
|
-
| ------------ | ---------------- |
|
|
116
|
-
| 일반 Feature | Squash and Merge |
|
|
117
|
-
| 긴급 Hotfix | Squash and Merge |
|
|
118
|
-
|
|
119
112
|
---
|
|
120
113
|
|
|
121
114
|
## Docs Push 규칙
|
|
@@ -42,8 +42,8 @@ GitHub Issue에서 링크는 **파일 위치에 따라** 다르게 작성:
|
|
|
42
42
|
> 형식: `- **{레이블}**: \`{경로}\``
|
|
43
43
|
|
|
44
44
|
```markdown
|
|
45
|
-
- **Spec**: `{
|
|
46
|
-
- **Tasks**: `{
|
|
45
|
+
- **Spec**: `docs/features/{be|fe}/F001-feature-name/spec.md`
|
|
46
|
+
- **Tasks**: `docs/features/{be|fe}/F001-feature-name/tasks.md`
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
> ⚠️ 로컬 문서는 GitHub에서 클릭되지 않으므로, 마크다운 링크 대신 **볼드 레이블 + 코드블록 경로** 형식을 사용합니다.
|
|
@@ -69,7 +69,7 @@ GitHub Issue에서 링크는 **파일 위치에 따라** 다르게 작성:
|
|
|
69
69
|
|
|
70
70
|
## 관련 문서
|
|
71
71
|
|
|
72
|
-
- **Spec**: `{
|
|
72
|
+
- **Spec**: `docs/features/{be|fe}/F{번호}-{기능명}/spec.md`
|
|
73
73
|
|
|
74
74
|
## 라벨
|
|
75
75
|
|
|
@@ -56,8 +56,8 @@ PR 본문에서 레포 내 파일 링크는 **반드시 현재 브랜치명을
|
|
|
56
56
|
|
|
57
57
|
## 관련 문서
|
|
58
58
|
|
|
59
|
-
- **Spec**: `{
|
|
60
|
-
- **Tasks**: `{
|
|
59
|
+
- **Spec**: `docs/features/{be|fe}/F{번호}-{기능명}/spec.md`
|
|
60
|
+
- **Tasks**: `docs/features/{be|fe}/F{번호}-{기능명}/tasks.md`
|
|
61
61
|
|
|
62
62
|
Closes #{이슈번호}
|
|
63
63
|
```
|
|
@@ -80,11 +80,27 @@ gh pr create \
|
|
|
80
80
|
|
|
81
81
|
## 머지 규칙
|
|
82
82
|
|
|
83
|
-
| 상황 | 머지 방식
|
|
84
|
-
| ------------ |
|
|
85
|
-
| 일반 Feature | Squash and Merge
|
|
86
|
-
| 긴급 Hotfix |
|
|
87
|
-
| 문서 수정 | Squash and Merge
|
|
83
|
+
| 상황 | 머지 방식 |
|
|
84
|
+
| ------------ | ---------------- |
|
|
85
|
+
| 일반 Feature | Squash and Merge |
|
|
86
|
+
| 긴급 Hotfix | Squash and Merge |
|
|
87
|
+
| 문서 수정 | Squash and Merge |
|
|
88
|
+
|
|
89
|
+
### 머지 실행
|
|
90
|
+
|
|
91
|
+
모든 리뷰 해결 시:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 머지 전 main 최신화
|
|
95
|
+
git checkout main
|
|
96
|
+
git pull
|
|
97
|
+
|
|
98
|
+
# Squash and Merge
|
|
99
|
+
gh pr merge --squash --delete-branch
|
|
100
|
+
|
|
101
|
+
# 머지 후 main 최신화
|
|
102
|
+
git pull
|
|
103
|
+
```
|
|
88
104
|
|
|
89
105
|
---
|
|
90
106
|
|
|
@@ -37,7 +37,15 @@ spec.md 전문을 사용자에게 공유하고 **명시적 승인(OK)** 대기
|
|
|
37
37
|
|
|
38
38
|
→ `skills/create-issue.md` 참조
|
|
39
39
|
|
|
40
|
-
### 5.
|
|
40
|
+
### 5. 브랜치 생성
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git checkout -b feat/{이슈번호}-{기능명}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> ⚠️ **main 브랜치에서 작업하지 마세요.** Issue 생성 후 반드시 브랜치를 생성합니다.
|
|
47
|
+
|
|
48
|
+
### 6. 문서 커밋 전 확인
|
|
41
49
|
|
|
42
50
|
> ⚠️ **커밋 전 체크리스트**
|
|
43
51
|
|
|
@@ -45,6 +53,20 @@ spec.md 전문을 사용자에게 공유하고 **명시적 승인(OK)** 대기
|
|
|
45
53
|
- [ ] tasks.md에 이슈번호 반영 (`- **Issue**: #{이슈번호}`)
|
|
46
54
|
- [ ] tasks.md에 브랜치명 반영 (`feat/{이슈번호}-{기능명}`)
|
|
47
55
|
|
|
56
|
+
### 7. 문서 커밋
|
|
57
|
+
|
|
58
|
+
> 🚨 **사용자 확인 필수**
|
|
59
|
+
|
|
60
|
+
spec/plan/tasks 승인 후 **Feature 폴더 전체**를 커밋:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git add docs/features/{be|fe}/F{번호}-{기능명}/
|
|
64
|
+
git commit -m "docs(#{이슈번호}): F{번호} 계획 완료"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
> 📁 **포함 파일**: spec.md, plan.md, tasks.md, decisions.md (비어있어도 포함)
|
|
68
|
+
> ⚠️ **Standalone 모드**: Docs 레포로 이동 후 커밋하세요.
|
|
69
|
+
|
|
48
70
|
---
|
|
49
71
|
|
|
50
72
|
## 참조 문서
|
|
@@ -29,19 +29,19 @@ Pull Request를 생성할 때 따르는 가이드입니다.
|
|
|
29
29
|
|
|
30
30
|
> 🚨 **테스트 미통과 시 PR 생성 불가**
|
|
31
31
|
|
|
32
|
-
1.
|
|
32
|
+
1. 작업과 관련된 테스트 명령어 실행 (예: `npm test`, `pnpm test`), 테스트가 없는 경우 사용자에게 요청
|
|
33
33
|
2. 결과 확인 (PASS/FAIL)
|
|
34
34
|
3. PR 본문 "테스트" 섹션에 **실행 결과** 기록
|
|
35
|
-
4.
|
|
35
|
+
4. 모든 체크박스가 체크되어야 함
|
|
36
36
|
|
|
37
37
|
### 3. 사용자 확인 요청
|
|
38
38
|
|
|
39
39
|
> 🚨 **사용자 확인 필수**
|
|
40
40
|
|
|
41
|
-
PR 생성 전 다음 내용을 공유하고 승인 대기:
|
|
41
|
+
PR 생성 전 다음 내용을 **코드블록으로** 사용자에게 공유하고 **명시적 승인(OK)** 대기:
|
|
42
42
|
|
|
43
43
|
- 제목
|
|
44
|
-
- 본문 (
|
|
44
|
+
- 본문 전체 (`pr-template.md` 형식)
|
|
45
45
|
- 라벨
|
|
46
46
|
|
|
47
47
|
### 4. PR 생성
|
|
@@ -20,10 +20,12 @@ tasks.md의 태스크를 실행할 때 따르는 가이드입니다.
|
|
|
20
20
|
|
|
21
21
|
### 3. 상태 전환
|
|
22
22
|
|
|
23
|
-
| 시점
|
|
24
|
-
|
|
|
25
|
-
| 시작 시
|
|
26
|
-
|
|
|
23
|
+
| 시점 | 상태 전환 |
|
|
24
|
+
| -------------- | -------------------- |
|
|
25
|
+
| 시작 시 | `[TODO]` → `[DOING]` |
|
|
26
|
+
| 사용자 승인 후 | `[DOING]` → `[DONE]` |
|
|
27
|
+
|
|
28
|
+
> ⚠️ 작업이 완료되어도 **사용자 승인 전까지는 `[DOING]` 상태 유지**
|
|
27
29
|
|
|
28
30
|
상태 전환 시 날짜도 함께 기록 (YYYY-MM-DD)
|
|
29
31
|
|
|
@@ -63,7 +63,12 @@ docs/
|
|
|
63
63
|
│ ├── constitution.md # 프로젝트 원칙
|
|
64
64
|
│ ├── git-workflow.md # Git 자동화
|
|
65
65
|
│ ├── issue-template.md
|
|
66
|
-
│
|
|
66
|
+
│ ├── pr-template.md
|
|
67
|
+
│ └── skills/ # 단계별 가이드
|
|
68
|
+
│ ├── create-feature.md
|
|
69
|
+
│ ├── create-issue.md
|
|
70
|
+
│ ├── create-pr.md
|
|
71
|
+
│ └── execute-task.md
|
|
67
72
|
├── prd/ # 제품 요구사항
|
|
68
73
|
├── features/ # 기능별 문서
|
|
69
74
|
│ ├── be/ # Backend Features
|
|
@@ -58,19 +58,18 @@
|
|
|
58
58
|
docs/
|
|
59
59
|
├── README.md # 문서 안내
|
|
60
60
|
├── agents/ # 에이전트 운영 규칙
|
|
61
|
-
│ ├── agents.md
|
|
62
|
-
│ ├── constitution.md
|
|
63
|
-
│ ├── git-workflow.md
|
|
61
|
+
│ ├── agents.md # 메인 규칙 (이 파일)
|
|
62
|
+
│ ├── constitution.md # 프로젝트 원칙
|
|
63
|
+
│ ├── git-workflow.md # Git 자동화
|
|
64
64
|
│ ├── issue-template.md
|
|
65
65
|
│ ├── pr-template.md
|
|
66
|
-
│ └── skills/ #
|
|
66
|
+
│ └── skills/ # 단계별 가이드
|
|
67
67
|
│ ├── create-feature.md
|
|
68
68
|
│ ├── create-issue.md
|
|
69
69
|
│ ├── create-pr.md
|
|
70
70
|
│ └── execute-task.md
|
|
71
71
|
├── prd/ # 제품 요구사항
|
|
72
72
|
├── features/ # 기능별 문서
|
|
73
|
-
│ ├── feature-base/ # 템플릿
|
|
74
73
|
│ └── F00X-{name}/ # 개별 기능
|
|
75
74
|
└── scripts/ # 유틸리티
|
|
76
75
|
```
|