@sleighmaster/bmad 1.5.4 → 1.5.6
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/data/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +540 -439
- package/data/_bmad/bmm/workflows/github-setup/instructions.xml +289 -215
- package/data/_bmad/hooks/.gitattributes +5 -0
- package/data/_bmad/hooks/install-hooks.ps1 +89 -86
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +17 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +21 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/services/installer.d.ts +3 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +35 -4
- package/dist/services/installer.js.map +1 -1
- package/dist/utils/prompt-utils.d.ts +6 -0
- package/dist/utils/prompt-utils.d.ts.map +1 -1
- package/dist/utils/prompt-utils.js +20 -0
- package/dist/utils/prompt-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,215 +1,289 @@
|
|
|
1
|
-
<workflow>
|
|
2
|
-
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
|
|
3
|
-
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
|
4
|
-
<critical>Communicate all responses in {communication_language}</critical>
|
|
5
|
-
|
|
6
|
-
<step n="1" goal="환경 확인">
|
|
7
|
-
<critical>🔧 GITHUB SETUP - 프로젝트에 GitHub 설정 적용</critical>
|
|
8
|
-
|
|
9
|
-
<output>📋 **GitHub 설정 초기화**
|
|
10
|
-
|
|
11
|
-
이 워크플로우는 프로젝트에 다음 GitHub 설정을 적용합니다:
|
|
12
|
-
- GitHub Actions 워크플로우 (release-on-tag.yml)
|
|
13
|
-
- Issue 템플릿 (story.md, bug.md)
|
|
14
|
-
- Pull Request 템플릿
|
|
15
|
-
|
|
16
|
-
</output>
|
|
17
|
-
|
|
18
|
-
<action>git repository 확인: git rev-parse --git-dir</action>
|
|
19
|
-
<check if="git repository NOT detected">
|
|
20
|
-
<output>⚠️ Git 저장소가 감지되지 않습니다.</output>
|
|
21
|
-
<ask>Git 저장소를 초기화하시겠습니까? [y/n]</ask>
|
|
22
|
-
<check if="user confirms">
|
|
23
|
-
<action>git init</action>
|
|
24
|
-
<output>✅ Git 저장소 초기화 완료</output>
|
|
25
|
-
</check>
|
|
26
|
-
<check if="user cancels">
|
|
27
|
-
<output>❌ GitHub 설정을 적용하려면 Git 저장소가 필요합니다.</output>
|
|
28
|
-
<action>HALT</action>
|
|
29
|
-
</check>
|
|
30
|
-
</check>
|
|
31
|
-
|
|
32
|
-
<action>gh CLI 확인: gh --version</action>
|
|
33
|
-
<check if="gh CLI not installed">
|
|
34
|
-
<output>⚠️ GitHub CLI(gh)가 설치되지 않았습니다.
|
|
35
|
-
|
|
36
|
-
설치 방법:
|
|
37
|
-
- Windows: winget install GitHub.cli
|
|
38
|
-
- macOS: brew install gh
|
|
39
|
-
- Linux: https://github.com/cli/cli#installation
|
|
40
|
-
|
|
41
|
-
설치 후 `gh auth login`으로 인증해주세요.
|
|
42
|
-
</output>
|
|
43
|
-
<ask>gh CLI 없이 템플릿만 복사하시겠습니까? [y/n]</ask>
|
|
44
|
-
<check if="user cancels">
|
|
45
|
-
<action>HALT</action>
|
|
46
|
-
</check>
|
|
47
|
-
</check>
|
|
48
|
-
|
|
49
|
-
<action>gh CLI 인증 확인: gh auth status</action>
|
|
50
|
-
<check if="gh auth 실패">
|
|
51
|
-
<output>⚠️ GitHub CLI 인증이 필요합니다.</output>
|
|
52
|
-
<ask>`gh auth login`을 실행하시겠습니까? [y/n]</ask>
|
|
53
|
-
<check if="user confirms">
|
|
54
|
-
<action>gh auth login 안내 제공</action>
|
|
55
|
-
</check>
|
|
56
|
-
</check>
|
|
57
|
-
</step>
|
|
58
|
-
|
|
59
|
-
<step n="2" goal="기존 설정 확인">
|
|
60
|
-
<action>기존 .github 디렉토리 확인</action>
|
|
61
|
-
|
|
62
|
-
<check if=".github 디렉토리 존재">
|
|
63
|
-
<output>📁 기존 .github 디렉토리가 발견되었습니다.
|
|
64
|
-
|
|
65
|
-
**기존 파일:**
|
|
66
|
-
{{existing_files}}
|
|
67
|
-
</output>
|
|
68
|
-
|
|
69
|
-
<ask>기존 파일을 어떻게 처리할까요?
|
|
70
|
-
1. 덮어쓰기 (기존 파일 백업)
|
|
71
|
-
2. 병합 (기존 파일 유지, 없는 것만 추가)
|
|
72
|
-
3. 취소
|
|
73
|
-
</ask>
|
|
74
|
-
|
|
75
|
-
<check if="user chooses 1">
|
|
76
|
-
<action>기존 .github 디렉토리 백업: .github.backup.{{timestamp}}</action>
|
|
77
|
-
<action>{{overwrite_mode}} = true</action>
|
|
78
|
-
</check>
|
|
79
|
-
|
|
80
|
-
<check if="user chooses 2">
|
|
81
|
-
<action>{{merge_mode}} = true</action>
|
|
82
|
-
</check>
|
|
83
|
-
|
|
84
|
-
<check if="user chooses 3">
|
|
85
|
-
<output>❌ GitHub 설정 취소됨</output>
|
|
86
|
-
<action>HALT</action>
|
|
87
|
-
</check>
|
|
88
|
-
</check>
|
|
89
|
-
|
|
90
|
-
<check if=".github 디렉토리 없음">
|
|
91
|
-
<output>ℹ️ 새로운 .github 디렉토리를 생성합니다.</output>
|
|
92
|
-
</check>
|
|
93
|
-
</step>
|
|
94
|
-
|
|
95
|
-
<step n="3" goal="GitHub 템플릿 복사">
|
|
96
|
-
<critical>📋 COPY TEMPLATES - GitHub 템플릿 파일 복사</critical>
|
|
97
|
-
|
|
98
|
-
<action>.github/workflows 디렉토리 생성</action>
|
|
99
|
-
<action>.github/ISSUE_TEMPLATE 디렉토리 생성</action>
|
|
100
|
-
|
|
101
|
-
<!-- GitHub Actions 복사 -->
|
|
102
|
-
<check if="{{overwrite_mode}} OR workflows/release-on-tag.yml 없음">
|
|
103
|
-
<action>복사: {{github_templates}}/.github/workflows/release-on-tag.yml
|
|
104
|
-
→ {{target_github_dir}}/workflows/release-on-tag.yml</action>
|
|
105
|
-
<output>✅ GitHub Actions 워크플로우 복사됨: release-on-tag.yml</output>
|
|
106
|
-
</check>
|
|
107
|
-
|
|
108
|
-
<!-- Issue 템플릿 복사 -->
|
|
109
|
-
<check if="{{overwrite_mode}} OR ISSUE_TEMPLATE/story.md 없음">
|
|
110
|
-
<action>복사: {{github_templates}}/.github/ISSUE_TEMPLATE/story.md
|
|
111
|
-
→ {{target_github_dir}}/ISSUE_TEMPLATE/story.md</action>
|
|
112
|
-
<output>✅ Issue 템플릿 복사됨: story.md</output>
|
|
113
|
-
</check>
|
|
114
|
-
|
|
115
|
-
<check if="{{overwrite_mode}} OR ISSUE_TEMPLATE/bug.md 없음">
|
|
116
|
-
<action>복사: {{github_templates}}/.github/ISSUE_TEMPLATE/bug.md
|
|
117
|
-
→ {{target_github_dir}}/ISSUE_TEMPLATE/bug.md</action>
|
|
118
|
-
<output>✅ Issue 템플릿 복사됨: bug.md</output>
|
|
119
|
-
</check>
|
|
120
|
-
|
|
121
|
-
<!-- PR 템플릿 복사 -->
|
|
122
|
-
<check if="{{overwrite_mode}} OR PULL_REQUEST_TEMPLATE.md 없음">
|
|
123
|
-
<action>복사: {{github_templates}}/.github/PULL_REQUEST_TEMPLATE.md
|
|
124
|
-
→ {{target_github_dir}}/PULL_REQUEST_TEMPLATE.md</action>
|
|
125
|
-
<output>✅ PR 템플릿 복사됨: PULL_REQUEST_TEMPLATE.md</output>
|
|
126
|
-
</check>
|
|
127
|
-
</step>
|
|
128
|
-
|
|
129
|
-
<step n="4" goal="원격 저장소 확인">
|
|
130
|
-
<action>원격 저장소 확인: git remote -v</action>
|
|
131
|
-
|
|
132
|
-
<check if="원격 저장소 없음">
|
|
133
|
-
<output>⚠️ 원격 저장소가 설정되지 않았습니다.</output>
|
|
134
|
-
<ask>GitHub 저장소를 생성하시겠습니까? [y/n]</ask>
|
|
135
|
-
|
|
136
|
-
<check if="user confirms">
|
|
137
|
-
<ask>저장소 이름을 입력해주세요:</ask>
|
|
138
|
-
<ask>공개(public) 또는 비공개(private)? [public/private]</ask>
|
|
139
|
-
<action>gh repo create {{repo_name}} --{{visibility}} --source=. --remote=origin</action>
|
|
140
|
-
<output>✅ GitHub 저장소 생성됨: {{repo_url}}</output>
|
|
141
|
-
</check>
|
|
142
|
-
</check>
|
|
143
|
-
|
|
144
|
-
<check if="원격 저장소 존재">
|
|
145
|
-
<action>저장소 정보 추출: {{owner}}/{{repo}}</action>
|
|
146
|
-
<output>✅ 원격 저장소: {{owner}}/{{repo}}</output>
|
|
147
|
-
</check>
|
|
148
|
-
</step>
|
|
149
|
-
|
|
150
|
-
<step n="5" goal="저장소 머지 규칙 설정">
|
|
151
|
-
<critical>⚙️ REPO SETTINGS - 저장소 머지 규칙 설정</critical>
|
|
152
|
-
|
|
153
|
-
<output>📋 **저장소 머지 규칙 설정**
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
<
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
1
|
+
<workflow>
|
|
2
|
+
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
|
|
3
|
+
<critical>You MUST have already loaded and processed: {installed_path}/workflow.yaml</critical>
|
|
4
|
+
<critical>Communicate all responses in {communication_language}</critical>
|
|
5
|
+
|
|
6
|
+
<step n="1" goal="환경 확인">
|
|
7
|
+
<critical>🔧 GITHUB SETUP - 프로젝트에 GitHub 설정 적용</critical>
|
|
8
|
+
|
|
9
|
+
<output>📋 **GitHub 설정 초기화**
|
|
10
|
+
|
|
11
|
+
이 워크플로우는 프로젝트에 다음 GitHub 설정을 적용합니다:
|
|
12
|
+
- GitHub Actions 워크플로우 (release-on-tag.yml)
|
|
13
|
+
- Issue 템플릿 (story.md, bug.md)
|
|
14
|
+
- Pull Request 템플릿
|
|
15
|
+
|
|
16
|
+
</output>
|
|
17
|
+
|
|
18
|
+
<action>git repository 확인: git rev-parse --git-dir</action>
|
|
19
|
+
<check if="git repository NOT detected">
|
|
20
|
+
<output>⚠️ Git 저장소가 감지되지 않습니다.</output>
|
|
21
|
+
<ask>Git 저장소를 초기화하시겠습니까? [y/n]</ask>
|
|
22
|
+
<check if="user confirms">
|
|
23
|
+
<action>git init</action>
|
|
24
|
+
<output>✅ Git 저장소 초기화 완료</output>
|
|
25
|
+
</check>
|
|
26
|
+
<check if="user cancels">
|
|
27
|
+
<output>❌ GitHub 설정을 적용하려면 Git 저장소가 필요합니다.</output>
|
|
28
|
+
<action>HALT</action>
|
|
29
|
+
</check>
|
|
30
|
+
</check>
|
|
31
|
+
|
|
32
|
+
<action>gh CLI 확인: gh --version</action>
|
|
33
|
+
<check if="gh CLI not installed">
|
|
34
|
+
<output>⚠️ GitHub CLI(gh)가 설치되지 않았습니다.
|
|
35
|
+
|
|
36
|
+
설치 방법:
|
|
37
|
+
- Windows: winget install GitHub.cli
|
|
38
|
+
- macOS: brew install gh
|
|
39
|
+
- Linux: https://github.com/cli/cli#installation
|
|
40
|
+
|
|
41
|
+
설치 후 `gh auth login`으로 인증해주세요.
|
|
42
|
+
</output>
|
|
43
|
+
<ask>gh CLI 없이 템플릿만 복사하시겠습니까? [y/n]</ask>
|
|
44
|
+
<check if="user cancels">
|
|
45
|
+
<action>HALT</action>
|
|
46
|
+
</check>
|
|
47
|
+
</check>
|
|
48
|
+
|
|
49
|
+
<action>gh CLI 인증 확인: gh auth status</action>
|
|
50
|
+
<check if="gh auth 실패">
|
|
51
|
+
<output>⚠️ GitHub CLI 인증이 필요합니다.</output>
|
|
52
|
+
<ask>`gh auth login`을 실행하시겠습니까? [y/n]</ask>
|
|
53
|
+
<check if="user confirms">
|
|
54
|
+
<action>gh auth login 안내 제공</action>
|
|
55
|
+
</check>
|
|
56
|
+
</check>
|
|
57
|
+
</step>
|
|
58
|
+
|
|
59
|
+
<step n="2" goal="기존 설정 확인">
|
|
60
|
+
<action>기존 .github 디렉토리 확인</action>
|
|
61
|
+
|
|
62
|
+
<check if=".github 디렉토리 존재">
|
|
63
|
+
<output>📁 기존 .github 디렉토리가 발견되었습니다.
|
|
64
|
+
|
|
65
|
+
**기존 파일:**
|
|
66
|
+
{{existing_files}}
|
|
67
|
+
</output>
|
|
68
|
+
|
|
69
|
+
<ask>기존 파일을 어떻게 처리할까요?
|
|
70
|
+
1. 덮어쓰기 (기존 파일 백업)
|
|
71
|
+
2. 병합 (기존 파일 유지, 없는 것만 추가)
|
|
72
|
+
3. 취소
|
|
73
|
+
</ask>
|
|
74
|
+
|
|
75
|
+
<check if="user chooses 1">
|
|
76
|
+
<action>기존 .github 디렉토리 백업: .github.backup.{{timestamp}}</action>
|
|
77
|
+
<action>{{overwrite_mode}} = true</action>
|
|
78
|
+
</check>
|
|
79
|
+
|
|
80
|
+
<check if="user chooses 2">
|
|
81
|
+
<action>{{merge_mode}} = true</action>
|
|
82
|
+
</check>
|
|
83
|
+
|
|
84
|
+
<check if="user chooses 3">
|
|
85
|
+
<output>❌ GitHub 설정 취소됨</output>
|
|
86
|
+
<action>HALT</action>
|
|
87
|
+
</check>
|
|
88
|
+
</check>
|
|
89
|
+
|
|
90
|
+
<check if=".github 디렉토리 없음">
|
|
91
|
+
<output>ℹ️ 새로운 .github 디렉토리를 생성합니다.</output>
|
|
92
|
+
</check>
|
|
93
|
+
</step>
|
|
94
|
+
|
|
95
|
+
<step n="3" goal="GitHub 템플릿 복사">
|
|
96
|
+
<critical>📋 COPY TEMPLATES - GitHub 템플릿 파일 복사</critical>
|
|
97
|
+
|
|
98
|
+
<action>.github/workflows 디렉토리 생성</action>
|
|
99
|
+
<action>.github/ISSUE_TEMPLATE 디렉토리 생성</action>
|
|
100
|
+
|
|
101
|
+
<!-- GitHub Actions 복사 -->
|
|
102
|
+
<check if="{{overwrite_mode}} OR workflows/release-on-tag.yml 없음">
|
|
103
|
+
<action>복사: {{github_templates}}/.github/workflows/release-on-tag.yml
|
|
104
|
+
→ {{target_github_dir}}/workflows/release-on-tag.yml</action>
|
|
105
|
+
<output>✅ GitHub Actions 워크플로우 복사됨: release-on-tag.yml</output>
|
|
106
|
+
</check>
|
|
107
|
+
|
|
108
|
+
<!-- Issue 템플릿 복사 -->
|
|
109
|
+
<check if="{{overwrite_mode}} OR ISSUE_TEMPLATE/story.md 없음">
|
|
110
|
+
<action>복사: {{github_templates}}/.github/ISSUE_TEMPLATE/story.md
|
|
111
|
+
→ {{target_github_dir}}/ISSUE_TEMPLATE/story.md</action>
|
|
112
|
+
<output>✅ Issue 템플릿 복사됨: story.md</output>
|
|
113
|
+
</check>
|
|
114
|
+
|
|
115
|
+
<check if="{{overwrite_mode}} OR ISSUE_TEMPLATE/bug.md 없음">
|
|
116
|
+
<action>복사: {{github_templates}}/.github/ISSUE_TEMPLATE/bug.md
|
|
117
|
+
→ {{target_github_dir}}/ISSUE_TEMPLATE/bug.md</action>
|
|
118
|
+
<output>✅ Issue 템플릿 복사됨: bug.md</output>
|
|
119
|
+
</check>
|
|
120
|
+
|
|
121
|
+
<!-- PR 템플릿 복사 -->
|
|
122
|
+
<check if="{{overwrite_mode}} OR PULL_REQUEST_TEMPLATE.md 없음">
|
|
123
|
+
<action>복사: {{github_templates}}/.github/PULL_REQUEST_TEMPLATE.md
|
|
124
|
+
→ {{target_github_dir}}/PULL_REQUEST_TEMPLATE.md</action>
|
|
125
|
+
<output>✅ PR 템플릿 복사됨: PULL_REQUEST_TEMPLATE.md</output>
|
|
126
|
+
</check>
|
|
127
|
+
</step>
|
|
128
|
+
|
|
129
|
+
<step n="4" goal="원격 저장소 확인">
|
|
130
|
+
<action>원격 저장소 확인: git remote -v</action>
|
|
131
|
+
|
|
132
|
+
<check if="원격 저장소 없음">
|
|
133
|
+
<output>⚠️ 원격 저장소가 설정되지 않았습니다.</output>
|
|
134
|
+
<ask>GitHub 저장소를 생성하시겠습니까? [y/n]</ask>
|
|
135
|
+
|
|
136
|
+
<check if="user confirms">
|
|
137
|
+
<ask>저장소 이름을 입력해주세요:</ask>
|
|
138
|
+
<ask>공개(public) 또는 비공개(private)? [public/private]</ask>
|
|
139
|
+
<action>gh repo create {{repo_name}} --{{visibility}} --source=. --remote=origin</action>
|
|
140
|
+
<output>✅ GitHub 저장소 생성됨: {{repo_url}}</output>
|
|
141
|
+
</check>
|
|
142
|
+
</check>
|
|
143
|
+
|
|
144
|
+
<check if="원격 저장소 존재">
|
|
145
|
+
<action>저장소 정보 추출: {{owner}}/{{repo}}</action>
|
|
146
|
+
<output>✅ 원격 저장소: {{owner}}/{{repo}}</output>
|
|
147
|
+
</check>
|
|
148
|
+
</step>
|
|
149
|
+
|
|
150
|
+
<step n="5" goal="저장소 머지 규칙 설정">
|
|
151
|
+
<critical>⚙️ REPO SETTINGS - 저장소 머지 규칙 설정</critical>
|
|
152
|
+
|
|
153
|
+
<output>📋 **저장소 머지 규칙 설정**
|
|
154
|
+
|
|
155
|
+
머지 전략을 선택해주세요:
|
|
156
|
+
1. Squash + Merge Commit (권장) — Squash Merge와 Merge Commit 모두 허용
|
|
157
|
+
2. Merge Commit만 — Merge Commit만 허용 (머지 기록 유지)
|
|
158
|
+
3. Squash만 — Squash Merge만 허용
|
|
159
|
+
|
|
160
|
+
모든 전략에 머지 후 브랜치 자동 삭제가 적용됩니다.
|
|
161
|
+
</output>
|
|
162
|
+
|
|
163
|
+
<ask>저장소 머지 규칙을 설정하시겠습니까? [y/n]</ask>
|
|
164
|
+
|
|
165
|
+
<check if="user confirms">
|
|
166
|
+
<ask>머지 전략을 선택해주세요: [1/2/3] (기본: 1)</ask>
|
|
167
|
+
|
|
168
|
+
<check if="user chooses 1 (squash-and-merge)">
|
|
169
|
+
<action>gh repo edit --enable-squash-merge --enable-merge-commit --enable-rebase-merge=false --delete-branch-on-merge</action>
|
|
170
|
+
<output>✅ 저장소 머지 규칙 설정 완료:
|
|
171
|
+
- Squash Merge: 허용
|
|
172
|
+
- Merge Commit: 허용
|
|
173
|
+
- Rebase Merge: 비활성화
|
|
174
|
+
- Delete Branch on Merge: 활성화</output>
|
|
175
|
+
</check>
|
|
176
|
+
|
|
177
|
+
<check if="user chooses 2 (merge-only)">
|
|
178
|
+
<action>gh repo edit --enable-merge-commit --enable-squash-merge=false --enable-rebase-merge=false --delete-branch-on-merge</action>
|
|
179
|
+
<output>✅ 저장소 머지 규칙 설정 완료:
|
|
180
|
+
- Merge Commit: 허용
|
|
181
|
+
- Squash Merge: 비활성화
|
|
182
|
+
- Rebase Merge: 비활성화
|
|
183
|
+
- Delete Branch on Merge: 활성화</output>
|
|
184
|
+
</check>
|
|
185
|
+
|
|
186
|
+
<check if="user chooses 3 (squash-only)">
|
|
187
|
+
<action>gh repo edit --enable-squash-merge --enable-merge-commit=false --enable-rebase-merge=false --delete-branch-on-merge</action>
|
|
188
|
+
<output>✅ 저장소 머지 규칙 설정 완료:
|
|
189
|
+
- Squash Merge: 허용
|
|
190
|
+
- Merge Commit: 비활성화
|
|
191
|
+
- Rebase Merge: 비활성화
|
|
192
|
+
- Delete Branch on Merge: 활성화</output>
|
|
193
|
+
</check>
|
|
194
|
+
</check>
|
|
195
|
+
|
|
196
|
+
<check if="user cancels">
|
|
197
|
+
<output>ℹ️ 저장소 머지 규칙 설정 건너뜀</output>
|
|
198
|
+
</check>
|
|
199
|
+
</step>
|
|
200
|
+
|
|
201
|
+
<step n="6" goal="Git Hooks 설치">
|
|
202
|
+
<critical>🔧 GIT HOOKS - master/main 브랜치 보호 hook 설치</critical>
|
|
203
|
+
|
|
204
|
+
<action>_bmad/hooks/ 디렉토리 확인</action>
|
|
205
|
+
|
|
206
|
+
<check if="_bmad/hooks/ 디렉토리 존재">
|
|
207
|
+
<output>📋 **Git Hooks 설치**
|
|
208
|
+
|
|
209
|
+
_bmad/hooks/ 에서 다음 hook을 .git/hooks/ 에 설치합니다:
|
|
210
|
+
- pre-commit: master/main 브랜치 직접 커밋 차단
|
|
211
|
+
- commit-msg: Conventional Commits 형식 검증
|
|
212
|
+
- pre-push: master/main 직접 푸시 차단 + CHANGELOG 검증
|
|
213
|
+
- post-merge: 삭제된 원격 브랜치 자동 정리
|
|
214
|
+
</output>
|
|
215
|
+
|
|
216
|
+
<ask>Git hooks를 설치하시겠습니까? [y/n]</ask>
|
|
217
|
+
|
|
218
|
+
<check if="user confirms">
|
|
219
|
+
<action>.git/hooks/ 디렉토리 생성 (없는 경우)</action>
|
|
220
|
+
<action>_bmad/hooks/ 내 hook 파일(pre-commit, commit-msg, pre-push, post-merge)을 .git/hooks/ 에 복사
|
|
221
|
+
- .ps1, .sh, .sample 파일은 제외
|
|
222
|
+
- 기존 hook이 있고 BMad6GitHub hook이 아닌 경우 .backup으로 백업
|
|
223
|
+
- 복사 시 CRLF를 LF로 변환 (bash 스크립트 호환성)
|
|
224
|
+
</action>
|
|
225
|
+
<action>설치된 hook 파일 목록 확인: ls -la .git/hooks/ (sample 제외)</action>
|
|
226
|
+
<output>✅ Git Hooks 설치 완료!
|
|
227
|
+
|
|
228
|
+
설치된 Hook:
|
|
229
|
+
- pre-commit: master 브랜치 직접 커밋 차단
|
|
230
|
+
- commit-msg: Conventional Commits 형식 검증
|
|
231
|
+
- pre-push: master 브랜치 직접 푸시 차단
|
|
232
|
+
- post-merge: 삭제된 원격 브랜치 자동 정리
|
|
233
|
+
</output>
|
|
234
|
+
</check>
|
|
235
|
+
|
|
236
|
+
<check if="user cancels">
|
|
237
|
+
<output>ℹ️ Git Hooks 설치 건너뜀
|
|
238
|
+
|
|
239
|
+
나중에 설치하려면:
|
|
240
|
+
- CLI: `npx @sleighmaster/bmad update` (hook 설치 선택)
|
|
241
|
+
- 수동: `_bmad/hooks/install-hooks.ps1` 실행 (Windows)
|
|
242
|
+
</output>
|
|
243
|
+
</check>
|
|
244
|
+
</check>
|
|
245
|
+
|
|
246
|
+
<check if="_bmad/hooks/ 디렉토리 없음">
|
|
247
|
+
<output>⚠️ _bmad/hooks/ 디렉토리가 없습니다. BMAD 설치를 먼저 진행해주세요.</output>
|
|
248
|
+
</check>
|
|
249
|
+
</step>
|
|
250
|
+
|
|
251
|
+
<step n="7" goal="설정 완료 및 안내">
|
|
252
|
+
<output>🎉 **GitHub 설정 완료!**
|
|
253
|
+
|
|
254
|
+
**적용된 설정:**
|
|
255
|
+
✅ .github/workflows/release-on-tag.yml - 태그 push 시 자동 릴리즈
|
|
256
|
+
✅ .github/ISSUE_TEMPLATE/story.md - 스토리 이슈 템플릿
|
|
257
|
+
✅ .github/ISSUE_TEMPLATE/bug.md - 버그 리포트 템플릿
|
|
258
|
+
✅ .github/PULL_REQUEST_TEMPLATE.md - PR 템플릿
|
|
259
|
+
✅ 저장소 머지 규칙 - 선택한 머지 전략 적용, 브랜치 자동 삭제
|
|
260
|
+
✅ Git Hooks - master/main 브랜치 보호 (설치한 경우)
|
|
261
|
+
ℹ️ .gitignore - BMAD 설치 시 자동 적용됨
|
|
262
|
+
|
|
263
|
+
**다음 단계:**
|
|
264
|
+
1. 변경사항 커밋: `git add .github && git commit -m "chore: add GitHub templates"`
|
|
265
|
+
2. 원격 저장소에 Push: `git push origin main`
|
|
266
|
+
3. GitHub Actions 확인: https://github.com/{{owner}}/{{repo}}/actions
|
|
267
|
+
|
|
268
|
+
**사용 방법:**
|
|
269
|
+
- 릴리즈 생성: SM 에이전트에서 `*github-release` 실행
|
|
270
|
+
- 또는 태그 push: `git tag v1.0.0 && git push origin v1.0.0`
|
|
271
|
+
</output>
|
|
272
|
+
|
|
273
|
+
<ask>변경사항을 지금 커밋하고 Push하시겠습니까? [y/n]</ask>
|
|
274
|
+
|
|
275
|
+
<check if="user confirms">
|
|
276
|
+
<action>git add .github</action>
|
|
277
|
+
<action>git commit -m "chore: add GitHub templates and workflows
|
|
278
|
+
|
|
279
|
+
- Add release-on-tag.yml for automatic releases
|
|
280
|
+
- Add issue templates (story, bug)
|
|
281
|
+
- Add pull request template
|
|
282
|
+
|
|
283
|
+
Generated by BMAD Method"</action>
|
|
284
|
+
<action>git push origin {{current_branch}}</action>
|
|
285
|
+
<output>✅ 변경사항 Push 완료!</output>
|
|
286
|
+
</check>
|
|
287
|
+
</step>
|
|
288
|
+
|
|
289
|
+
</workflow>
|