@sleighmaster/bmad 1.5.3 → 1.5.5

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.
@@ -38,6 +38,14 @@ so that {{benefit}}.
38
38
  - Source tree components to touch
39
39
  - Testing standards summary
40
40
 
41
+ ### Retrospective Learnings
42
+
43
+ <!-- Auto-populated from previous epic retrospectives when available -->
44
+
45
+ - Relevant action items from previous retrospectives
46
+ - Recurring code review patterns to watch for
47
+ - Team agreements applicable to this story
48
+
41
49
  ### Project Structure Notes
42
50
 
43
51
  - Alignment with unified project structure (paths, modules, naming)
@@ -15,6 +15,7 @@ architecture_artifacts: "{config_source}:architecture_artifacts"
15
15
  implementation_artifacts: "{config_source}:implementation_artifacts"
16
16
  output_folder: "{implementation_artifacts}"
17
17
  story_dir: "{stories_artifacts}"
18
+ retrospectives_folder: "{implementation_artifacts}/retrospectives"
18
19
 
19
20
  # Workflow components
20
21
  installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/create-story"
@@ -61,5 +62,9 @@ input_file_patterns:
61
62
  whole: "{epics_artifacts}/*epic*.md"
62
63
  sharded: "{epics_artifacts}/*epic*/*.md"
63
64
  load_strategy: "SELECTIVE_LOAD" # Only load needed epic
65
+ retrospective:
66
+ description: "Previous epic retrospectives for lessons learned and action items"
67
+ pattern: "{retrospectives_folder}/epic-*-retro-*.md"
68
+ load_strategy: "SELECTIVE_LOAD" # Load most recent retrospective(s)
64
69
 
65
70
  standalone: true
@@ -175,7 +175,57 @@
175
175
  </check>
176
176
  </step>
177
177
 
178
- <step n="6" goal="설정 완료 및 안내">
178
+ <step n="6" goal="Git Hooks 설치">
179
+ <critical>🔧 GIT HOOKS - master/main 브랜치 보호 hook 설치</critical>
180
+
181
+ <action>_bmad/hooks/ 디렉토리 확인</action>
182
+
183
+ <check if="_bmad/hooks/ 디렉토리 존재">
184
+ <output>📋 **Git Hooks 설치**
185
+
186
+ _bmad/hooks/ 에서 다음 hook을 .git/hooks/ 에 설치합니다:
187
+ - pre-commit: master/main 브랜치 직접 커밋 차단
188
+ - commit-msg: Conventional Commits 형식 검증
189
+ - pre-push: master/main 직접 푸시 차단 + CHANGELOG 검증
190
+ - post-merge: 삭제된 원격 브랜치 자동 정리
191
+ </output>
192
+
193
+ <ask>Git hooks를 설치하시겠습니까? [y/n]</ask>
194
+
195
+ <check if="user confirms">
196
+ <action>.git/hooks/ 디렉토리 생성 (없는 경우)</action>
197
+ <action>_bmad/hooks/ 내 hook 파일(pre-commit, commit-msg, pre-push, post-merge)을 .git/hooks/ 에 복사
198
+ - .ps1, .sh, .sample 파일은 제외
199
+ - 기존 hook이 있고 BMad6GitHub hook이 아닌 경우 .backup으로 백업
200
+ - 복사 시 CRLF를 LF로 변환 (bash 스크립트 호환성)
201
+ </action>
202
+ <action>설치된 hook 파일 목록 확인: ls -la .git/hooks/ (sample 제외)</action>
203
+ <output>✅ Git Hooks 설치 완료!
204
+
205
+ 설치된 Hook:
206
+ - pre-commit: master 브랜치 직접 커밋 차단
207
+ - commit-msg: Conventional Commits 형식 검증
208
+ - pre-push: master 브랜치 직접 푸시 차단
209
+ - post-merge: 삭제된 원격 브랜치 자동 정리
210
+ </output>
211
+ </check>
212
+
213
+ <check if="user cancels">
214
+ <output>ℹ️ Git Hooks 설치 건너뜀
215
+
216
+ 나중에 설치하려면:
217
+ - CLI: `npx @sleighmaster/bmad update` (hook 설치 선택)
218
+ - 수동: `_bmad/hooks/install-hooks.ps1` 실행 (Windows)
219
+ </output>
220
+ </check>
221
+ </check>
222
+
223
+ <check if="_bmad/hooks/ 디렉토리 없음">
224
+ <output>⚠️ _bmad/hooks/ 디렉토리가 없습니다. BMAD 설치를 먼저 진행해주세요.</output>
225
+ </check>
226
+ </step>
227
+
228
+ <step n="7" goal="설정 완료 및 안내">
179
229
  <output>🎉 **GitHub 설정 완료!**
180
230
 
181
231
  **적용된 설정:**
@@ -184,6 +234,7 @@
184
234
  ✅ .github/ISSUE_TEMPLATE/bug.md - 버그 리포트 템플릿
185
235
  ✅ .github/PULL_REQUEST_TEMPLATE.md - PR 템플릿
186
236
  ✅ 저장소 머지 규칙 - Merge Commit만 허용, 브랜치 자동 삭제
237
+ ✅ Git Hooks - master/main 브랜치 보호 (설치한 경우)
187
238
  ℹ️ .gitignore - BMAD 설치 시 자동 적용됨
188
239
 
189
240
  **다음 단계:**
@@ -0,0 +1,167 @@
1
+ # {project_name} — Developer Onboarding Guide
2
+
3
+ > Generated: {date}
4
+
5
+ ---
6
+
7
+ ## 1. Project Overview
8
+
9
+ <!-- PLACEHOLDER: project_overview -->
10
+ <!-- Fill with: project name, description/purpose, version, license -->
11
+ <!-- Include a tech stack summary table:
12
+ | Category | Technology |
13
+ |----------|-----------|
14
+ | Language | ... |
15
+ | Framework | ... |
16
+ | Database | ... |
17
+ | Test Framework | ... |
18
+ | Build Tool | ... |
19
+ -->
20
+
21
+ ---
22
+
23
+ ## 2. Project Structure
24
+
25
+ <!-- PLACEHOLDER: project_structure -->
26
+ <!-- Fill with: 2-level directory tree with descriptions -->
27
+ <!-- Example format:
28
+ ```
29
+ project-root/
30
+ ├── src/ — Source code
31
+ ├── tests/ — Test suites
32
+ └── docs/ — Documentation
33
+ ```
34
+ -->
35
+
36
+ ---
37
+
38
+ ## 3. Development Environment Setup
39
+
40
+ ### Prerequisites
41
+
42
+ <!-- PLACEHOLDER: prerequisites -->
43
+ <!-- Fill with: required tools and versions (Node.js, Python, Docker, etc.) -->
44
+
45
+ ### Getting Started
46
+
47
+ <!-- PLACEHOLDER: getting_started -->
48
+ <!-- Fill with: step-by-step commands to set up and run the project -->
49
+ <!-- Example format:
50
+ ```bash
51
+ # Clone the repository
52
+ git clone <repo-url>
53
+ cd <project-name>
54
+
55
+ # Install dependencies
56
+ npm install
57
+
58
+ # Run development server
59
+ npm run dev
60
+
61
+ # Run tests
62
+ npm test
63
+ ```
64
+ -->
65
+
66
+ ---
67
+
68
+ ## 4. Development Workflow
69
+
70
+ ### Git Workflow
71
+
72
+ <!-- PLACEHOLDER: git_workflow -->
73
+ <!-- Fill with: branch strategy, commit conventions, PR process -->
74
+
75
+ ### Code Standards
76
+
77
+ <!-- PLACEHOLDER: code_standards -->
78
+ <!-- Fill with: linter/formatter config, key coding rules from CLAUDE.md -->
79
+
80
+ ### Testing
81
+
82
+ <!-- PLACEHOLDER: testing -->
83
+ <!-- Fill with: test framework, how to run tests, coverage requirements -->
84
+
85
+ ### CI/CD
86
+
87
+ <!-- PLACEHOLDER: cicd -->
88
+ <!-- Fill with: pipeline descriptions, deployment process -->
89
+
90
+ ---
91
+
92
+ ## 5. Current Project Status
93
+
94
+ ### Planning Documents
95
+
96
+ <!-- PLACEHOLDER: planning_documents -->
97
+ <!-- Fill with: list of existing planning artifacts (PRD, Architecture, UX, etc.) with file paths -->
98
+
99
+ ### Epic & Story Progress
100
+
101
+ <!-- PLACEHOLDER: epic_story_progress -->
102
+ <!-- Fill with: sprint status summary — epic/story counts, completion rates, current focus -->
103
+ <!-- If no epics exist, note that the project is in pre-implementation or uses a different tracking method -->
104
+
105
+ ---
106
+
107
+ ## 6. BMAD Workflow Guide
108
+
109
+ <!-- PLACEHOLDER: bmad_section -->
110
+ <!-- If BMAD is not installed, replace this entire section with a note that BMAD is not configured for this project -->
111
+
112
+ ### What is BMAD?
113
+
114
+ <!-- PLACEHOLDER: bmad_intro -->
115
+ <!-- Brief 2-3 sentence explanation of BMAD Method and what it provides -->
116
+
117
+ ### Daily Commands (Top 6)
118
+
119
+ <!-- PLACEHOLDER: bmad_daily_commands -->
120
+ <!-- Fill with table:
121
+ | Command | Description |
122
+ |---------|-----------|
123
+ | `/bmad-help` | Get unstuck — shows next steps and answers questions |
124
+ | `/bmad-bmm-quick-dev` | Quick one-off tasks without full planning |
125
+ | `/bmad-bmm-sprint-status` | View current sprint progress |
126
+ | `/bmad-bmm-dev-story` | Execute the next story implementation |
127
+ | `/bmad-bmm-document-project` | Generate project documentation |
128
+ | `/bmad-bmm-onboarding` | Regenerate this onboarding guide |
129
+ -->
130
+
131
+ ### Full Workflow Phases
132
+
133
+ <!-- PLACEHOLDER: bmad_workflow_phases -->
134
+ <!-- Fill with the phase-ordered workflow from bmad-help.csv:
135
+ 1. Analysis — Brainstorm, Research, Create Brief
136
+ 2. Planning — PRD, UX Design
137
+ 3. Solutioning — Architecture, Epics & Stories, Readiness Check
138
+ 4. Implementation — Sprint Planning, Create Story, Dev Story, Code Review
139
+ -->
140
+
141
+ ---
142
+
143
+ ## 7. Reference Documents
144
+
145
+ <!-- PLACEHOLDER: reference_documents -->
146
+ <!-- Fill with: links to existing documentation files -->
147
+ <!-- Example format:
148
+ - [Project Overview](./project-overview.md)
149
+ - [Source Tree](./source-tree.md)
150
+ - [Architecture](./architecture.md)
151
+ -->
152
+ <!-- If no documents exist, note that documentation can be generated with `/bmad-bmm-document-project` -->
153
+
154
+ ---
155
+
156
+ ## 8. Quick Start Checklist
157
+
158
+ <!-- PLACEHOLDER: quick_start_checklist -->
159
+ <!-- Fill with actionable checklist. Example:
160
+ - [ ] Clone repo and install dependencies
161
+ - [ ] Run the project locally
162
+ - [ ] Run the test suite
163
+ - [ ] Read CLAUDE.md for project rules
164
+ - [ ] Check sprint status: `/bmad-bmm-sprint-status`
165
+ - [ ] Review current epic/story assignments
166
+ - [ ] Pick up your first story: `/bmad-bmm-create-story`
167
+ -->
@@ -0,0 +1,226 @@
1
+ ---
2
+ name: onboarding
3
+ description: 'Generate a comprehensive onboarding document for new developers joining this project.'
4
+ ---
5
+
6
+ # Developer Onboarding Document Generator
7
+
8
+ **Goal:** Automatically scan the project and generate a single, comprehensive onboarding guide for new developers joining the team.
9
+
10
+ **Your Role:** You are a technical writer creating a human-readable onboarding document. Scan project metadata, structure, and configuration — do NOT deep-dive into source code. Produce a clear, actionable guide that helps a new developer get productive quickly.
11
+
12
+ ---
13
+
14
+ ## INITIALIZATION
15
+
16
+ ### Configuration Loading
17
+
18
+ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
19
+
20
+ - `project_name`, `user_name`, `communication_language`, `document_output_language`
21
+ - `output_folder`, `planning_artifacts`, `implementation_artifacts`, `epics_artifacts`
22
+ - `date` = current date
23
+
24
+ ### Path Variables
25
+
26
+ - `installed_path` = `{project-root}/_bmad/bmm/workflows/onboarding`
27
+ - `template_path` = `{installed_path}/onboarding-template.md`
28
+ - `output_path` = `{output_folder}/onboarding-guide.md`
29
+ - `bmad_config_path` = `{project-root}/_bmad/_config`
30
+
31
+ ### Critical Rules
32
+
33
+ - **ALL output text** (section headings, descriptions, explanations) MUST be written in `{document_output_language}`
34
+ - Translate template section titles and placeholder text to `{document_output_language}`
35
+ - If `onboarding-guide.md` already exists at `output_path`, overwrite it (re-run = refresh)
36
+ - Do NOT deep-scan source code files — focus on metadata, config, and structure
37
+
38
+ ---
39
+
40
+ ## PHASE 1: PROJECT FUNDAMENTALS
41
+
42
+ ### 1.1 Repository Basics
43
+
44
+ Scan and collect:
45
+
46
+ - **README.md** — extract project name, description, purpose (first ~50 lines)
47
+ - **package.json** / **pyproject.toml** / **Cargo.toml** / equivalent — name, version, description, scripts
48
+ - **LICENSE** — license type
49
+ - **Git info** — default branch, remote URL
50
+
51
+ ### 1.2 Tech Stack Detection
52
+
53
+ From dependency files (package.json, requirements.txt, go.mod, etc.):
54
+
55
+ - **Languages** — primary language(s) and versions
56
+ - **Frameworks** — web framework, UI library, test framework
57
+ - **Key Dependencies** — database, ORM, auth, API client, etc.
58
+ - **Dev Tools** — linter, formatter, bundler, task runner
59
+
60
+ ### 1.3 Project Structure
61
+
62
+ Generate a **2-level directory tree** of the project root with brief descriptions:
63
+
64
+ ```
65
+ project-root/
66
+ ├── src/ — Source code
67
+ ├── tests/ — Test suites
68
+ ├── docs/ — Documentation
69
+ ├── _bmad/ — BMAD Method configuration
70
+ └── ...
71
+ ```
72
+
73
+ ### 1.4 Development Environment Setup
74
+
75
+ Extract from README, package.json scripts, Makefile, docker-compose, etc.:
76
+
77
+ - **Prerequisites** — Node.js version, Python version, Docker, etc.
78
+ - **Install command** — `npm install`, `pip install`, etc.
79
+ - **Run command** — `npm run dev`, `python manage.py runserver`, etc.
80
+ - **Test command** — `npm test`, `pytest`, etc.
81
+ - **Build command** — if applicable
82
+
83
+ ---
84
+
85
+ ## PHASE 2: DEVELOPMENT WORKFLOW
86
+
87
+ ### 2.1 Git Workflow
88
+
89
+ Scan for:
90
+
91
+ - **Git hooks** — `.husky/`, `_bmad/hooks/`, `.git/hooks/` — list active hooks and what they do
92
+ - **Branch strategy** — from CONTRIBUTING.md, CLAUDE.md, or PR templates
93
+ - **PR templates** — `.github/pull_request_template.md`
94
+ - **CI/CD** — `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile` — list pipelines and their purpose
95
+
96
+ ### 2.2 Code Standards
97
+
98
+ Scan for:
99
+
100
+ - **Linter config** — `.eslintrc`, `ruff.toml`, `.golangci.yml`, etc.
101
+ - **Formatter config** — `.prettierrc`, `black`, `gofmt`, etc.
102
+ - **CLAUDE.md rules** — extract key development rules from CLAUDE.md if it exists
103
+ - **EditorConfig** — `.editorconfig` settings
104
+
105
+ ### 2.3 Test Strategy
106
+
107
+ Detect:
108
+
109
+ - **Test framework** — Jest, Vitest, Pytest, Go test, etc.
110
+ - **Test directory** — where tests live
111
+ - **Test run command** — how to execute tests
112
+ - **Coverage** — coverage tool and thresholds if configured
113
+
114
+ ### 2.4 Build & Deploy
115
+
116
+ Detect:
117
+
118
+ - **Build system** — webpack, vite, turbo, make, etc.
119
+ - **Build command** — primary build command
120
+ - **Environments** — dev, staging, production indicators
121
+ - **Deployment** — Dockerfile, Vercel config, AWS config, etc.
122
+
123
+ ---
124
+
125
+ ## PHASE 3: BMAD WORKFLOW (Conditional)
126
+
127
+ > **If `{project-root}/_bmad/` directory does NOT exist, skip this entire phase and note in the output that BMAD is not installed.**
128
+
129
+ ### 3.1 BMAD Installation Detection
130
+
131
+ - Confirm `_bmad/` exists
132
+ - Load `_bmad/bmm/config.yaml` if present (already loaded in INIT)
133
+ - Detect installed modules: check for `_bmad/core/`, `_bmad/bmm/`
134
+
135
+ ### 3.2 Available Commands
136
+
137
+ Scan `{project-root}/.claude/commands/bmad-*.md`:
138
+
139
+ - List each command with its name and description (from frontmatter)
140
+ - Group by category if possible (analysis, planning, implementation, anytime)
141
+
142
+ ### 3.3 Workflow Guide
143
+
144
+ Load `{bmad_config_path}/bmad-help.csv`:
145
+
146
+ - Extract the **phase-ordered workflow sequence** (phase 1 → 2 → 3 → 4)
147
+ - For the `anytime` group, highlight the **top daily-use commands**:
148
+ - `/bmad-help` — Get unstuck
149
+ - `/bmad-bmm-quick-dev` — Quick tasks
150
+ - `/bmad-bmm-sprint-status` — Sprint overview
151
+ - `/bmad-bmm-document-project` — Generate docs
152
+ - `/bmad-bmm-onboarding` — Refresh this guide
153
+ - Create a simple "your first day" command sequence recommendation
154
+
155
+ ---
156
+
157
+ ## PHASE 4: PROJECT STATUS
158
+
159
+ ### 4.1 Planning Artifacts
160
+
161
+ Check for existence of key documents in `{planning_artifacts}`:
162
+
163
+ - PRD (`*prd*`, `*product-requirements*`)
164
+ - Architecture doc (`*architecture*`, `*arch*`)
165
+ - UX design (`*ux*`, `*design*`)
166
+ - Product brief (`*brief*`)
167
+ - List found documents with relative paths
168
+
169
+ ### 4.2 Epic & Story Status
170
+
171
+ If `{epics_artifacts}` exists:
172
+
173
+ - List epic files found (`epic-*.md`)
174
+ - If `sprint-status.yaml` exists in `{implementation_artifacts}`, parse and summarize:
175
+ - Total epics, stories
176
+ - Completion status (done / in-progress / pending counts)
177
+ - Current sprint focus
178
+
179
+ ### 4.3 Existing Documentation
180
+
181
+ Check `{output_folder}` for document-project outputs:
182
+
183
+ - `project-overview.md`
184
+ - `source-tree.md`
185
+ - `*-deep-dive.md`
186
+ - Any `index.md` files
187
+ - List found documents as reference links (do NOT duplicate content)
188
+
189
+ ---
190
+
191
+ ## PHASE 5: DOCUMENT GENERATION
192
+
193
+ ### 5.1 Load Template
194
+
195
+ Read the full template from `{template_path}`.
196
+
197
+ ### 5.2 Fill Template
198
+
199
+ Replace all placeholder sections with the data collected in Phases 1-4:
200
+
201
+ - Every `<!-- PLACEHOLDER: ... -->` must be replaced with actual content
202
+ - Remove any placeholder comments that have no data (section stays but shows "Not detected" or equivalent in `{document_output_language}`)
203
+ - Translate ALL fixed text (section titles, labels, descriptions) to `{document_output_language}`
204
+ - Keep code blocks, file paths, and command names in their original form
205
+
206
+ ### 5.3 Write Output
207
+
208
+ Save the completed document to `{output_path}`.
209
+
210
+ ### 5.4 Completion Summary
211
+
212
+ Output to the user:
213
+
214
+ ```
215
+ ✅ Onboarding guide generated: {output_path}
216
+
217
+ Sections included:
218
+ - Project Overview
219
+ - Project Structure
220
+ - Dev Environment Setup
221
+ - Development Workflow
222
+ - [BMAD Workflow — if applicable]
223
+ - Project Status
224
+ - Reference Documents
225
+ - Quick Start Checklist
226
+ ```
@@ -0,0 +1,5 @@
1
+ # Git hooks are bash scripts - must use LF line endings
2
+ pre-commit text eol=lf
3
+ commit-msg text eol=lf
4
+ pre-push text eol=lf
5
+ post-merge text eol=lf
@@ -1,86 +1,89 @@
1
- <#
2
- .SYNOPSIS
3
- BMad6GitHub Git Hooks 설치 스크립트
4
- .DESCRIPTION
5
- pre-commit, commit-msg hook을 .git/hooks에 설치합니다.
6
- .PARAMETER Uninstall
7
- hook 제거
8
- .EXAMPLE
9
- .\install-hooks.ps1
10
- .\install-hooks.ps1 -Uninstall
11
- #>
12
-
13
- param(
14
- [switch]$Uninstall
15
- )
16
-
17
- $ErrorActionPreference = "Stop"
18
-
19
- # 색상 출력 함수
20
- function Write-Info { param($msg) Write-Host "[INFO] $msg" -ForegroundColor Cyan }
21
- function Write-Success { param($msg) Write-Host "[OK] $msg" -ForegroundColor Green }
22
- function Write-Warn { param($msg) Write-Host "[WARN] $msg" -ForegroundColor Yellow }
23
- function Write-Err { param($msg) Write-Host "[ERROR] $msg" -ForegroundColor Red }
24
-
25
- # Git 저장소 확인
26
- $gitDir = git rev-parse --git-dir 2>$null
27
- if (-not $gitDir) {
28
- Write-Err "Git 저장소가 아닙니다."
29
- exit 1
30
- }
31
-
32
- $hooksDir = Join-Path $gitDir "hooks"
33
- $sourceDir = Split-Path -Parent $MyInvocation.MyCommand.Path
34
-
35
- $hooks = @("pre-commit", "commit-msg", "pre-push")
36
-
37
- if ($Uninstall) {
38
- Write-Info "Git Hooks 제거 중..."
39
- foreach ($hook in $hooks) {
40
- $target = Join-Path $hooksDir $hook
41
- if (Test-Path $target) {
42
- Remove-Item $target -Force
43
- Write-Success "$hook 제거됨"
44
- }
45
- }
46
- Write-Success "Git Hooks 제거 완료"
47
- exit 0
48
- }
49
-
50
- Write-Info "BMad6GitHub Git Hooks 설치 중..."
51
-
52
- # hooks 폴더 생성
53
- if (-not (Test-Path $hooksDir)) {
54
- New-Item -ItemType Directory -Path $hooksDir | Out-Null
55
- }
56
-
57
- foreach ($hook in $hooks) {
58
- $source = Join-Path $sourceDir $hook
59
- $target = Join-Path $hooksDir $hook
60
-
61
- if (-not (Test-Path $source)) {
62
- Write-Warn "$hook 소스 파일 없음: $source"
63
- continue
64
- }
65
-
66
- # 기존 hook 백업
67
- if (Test-Path $target) {
68
- $backup = "$target.backup"
69
- Copy-Item $target $backup -Force
70
- Write-Warn "기존 $hook 백업됨: $backup"
71
- }
72
-
73
- # hook 복사
74
- Copy-Item $source $target -Force
75
- Write-Success "$hook 설치됨"
76
- }
77
-
78
- Write-Host ""
79
- Write-Success "Git Hooks 설치 완료!"
80
- Write-Host ""
81
- Write-Info "설치된 Hook:"
82
- Write-Host " - pre-commit: master 브랜치 직접 커밋 차단" -ForegroundColor White
83
- Write-Host " - commit-msg: Conventional Commits 형식 검증" -ForegroundColor White
84
- Write-Host " - pre-push: master 브랜치 직접 푸시 차단" -ForegroundColor White
85
- Write-Host ""
86
- Write-Info "Hook 제거: .\install-hooks.ps1 -Uninstall"
1
+ <#
2
+ .SYNOPSIS
3
+ BMad6GitHub Git Hooks 설치 스크립트
4
+ .DESCRIPTION
5
+ pre-commit, commit-msg hook을 .git/hooks에 설치합니다.
6
+ .PARAMETER Uninstall
7
+ hook 제거
8
+ .EXAMPLE
9
+ .\install-hooks.ps1
10
+ .\install-hooks.ps1 -Uninstall
11
+ #>
12
+
13
+ param(
14
+ [switch]$Uninstall
15
+ )
16
+
17
+ $ErrorActionPreference = "Stop"
18
+
19
+ # 색상 출력 함수
20
+ function Write-Info { param($msg) Write-Host "[INFO] $msg" -ForegroundColor Cyan }
21
+ function Write-Success { param($msg) Write-Host "[OK] $msg" -ForegroundColor Green }
22
+ function Write-Warn { param($msg) Write-Host "[WARN] $msg" -ForegroundColor Yellow }
23
+ function Write-Err { param($msg) Write-Host "[ERROR] $msg" -ForegroundColor Red }
24
+
25
+ # Git 저장소 확인
26
+ $gitDir = git rev-parse --git-dir 2>$null
27
+ if (-not $gitDir) {
28
+ Write-Err "Git 저장소가 아닙니다."
29
+ exit 1
30
+ }
31
+
32
+ $hooksDir = Join-Path $gitDir "hooks"
33
+ $sourceDir = Split-Path -Parent $MyInvocation.MyCommand.Path
34
+
35
+ $hooks = @("pre-commit", "commit-msg", "pre-push", "post-merge")
36
+
37
+ if ($Uninstall) {
38
+ Write-Info "Git Hooks 제거 중..."
39
+ foreach ($hook in $hooks) {
40
+ $target = Join-Path $hooksDir $hook
41
+ if (Test-Path $target) {
42
+ Remove-Item $target -Force
43
+ Write-Success "$hook 제거됨"
44
+ }
45
+ }
46
+ Write-Success "Git Hooks 제거 완료"
47
+ exit 0
48
+ }
49
+
50
+ Write-Info "BMad6GitHub Git Hooks 설치 중..."
51
+
52
+ # hooks 폴더 생성
53
+ if (-not (Test-Path $hooksDir)) {
54
+ New-Item -ItemType Directory -Path $hooksDir | Out-Null
55
+ }
56
+
57
+ foreach ($hook in $hooks) {
58
+ $source = Join-Path $sourceDir $hook
59
+ $target = Join-Path $hooksDir $hook
60
+
61
+ if (-not (Test-Path $source)) {
62
+ Write-Warn "$hook 소스 파일 없음: $source"
63
+ continue
64
+ }
65
+
66
+ # 기존 hook 백업
67
+ if (Test-Path $target) {
68
+ $backup = "$target.backup"
69
+ Copy-Item $target $backup -Force
70
+ Write-Warn "기존 $hook 백업됨: $backup"
71
+ }
72
+
73
+ # hook 복사 (CRLF → LF 변환 — bash 스크립트는 LF 필수)
74
+ $content = Get-Content $source -Raw
75
+ $content = $content -replace "`r`n", "`n"
76
+ [System.IO.File]::WriteAllText($target, $content, [System.Text.UTF8Encoding]::new($false))
77
+ Write-Success "$hook 설치됨"
78
+ }
79
+
80
+ Write-Host ""
81
+ Write-Success "Git Hooks 설치 완료!"
82
+ Write-Host ""
83
+ Write-Info "설치된 Hook:"
84
+ Write-Host " - pre-commit: master 브랜치 직접 커밋 차단" -ForegroundColor White
85
+ Write-Host " - commit-msg: Conventional Commits 형식 검증" -ForegroundColor White
86
+ Write-Host " - pre-push: master 브랜치 직접 푸시 차단" -ForegroundColor White
87
+ Write-Host " - post-merge: 머지된 로컬 브랜치 자동 정리" -ForegroundColor White
88
+ Write-Host ""
89
+ Write-Info "Hook 제거: .\install-hooks.ps1 -Uninstall"
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: 'onboarding'
3
+ description: 'Generate a comprehensive onboarding document for new developers joining this project.'
4
+ ---
5
+
6
+ IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{project-root}/_bmad/bmm/workflows/onboarding/workflow.md, READ its entire contents and follow its directions exactly!
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,CAAC,CAqFxB;AA8GD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiD5F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA0DlE"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,CAAC,CAqFxB;AAgHD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiD5F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA0DlE"}