@sleighmaster/bmad 1.3.1 → 1.3.2
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/data/changelog/cliff.toml +30 -0
- package/data/_bmad/bmm/data/changelog/release-on-tag.yml +49 -0
- package/data/_bmad/bmm/workflows/changelog-setup/instructions.xml +120 -0
- package/data/_bmad/bmm/workflows/changelog-setup/workflow.yaml +14 -0
- package/data/claude-commands/bmad-bmm-changelog-setup.md +12 -0
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# git-cliff configuration for CHANGELOG generation
|
|
2
|
+
# https://git-cliff.org
|
|
3
|
+
|
|
4
|
+
[changelog]
|
|
5
|
+
header = "# Changelog\n\n"
|
|
6
|
+
body = """
|
|
7
|
+
## [{{ version }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
|
8
|
+
{% for group, commits in commits | group_by(attribute="group") %}
|
|
9
|
+
### {{ group | upper_first }}
|
|
10
|
+
{% for commit in commits %}
|
|
11
|
+
- {{ commit.message | split(pat="\n") | first }}
|
|
12
|
+
{%- endfor %}
|
|
13
|
+
{% endfor %}
|
|
14
|
+
"""
|
|
15
|
+
footer = ""
|
|
16
|
+
trim = true
|
|
17
|
+
|
|
18
|
+
[git]
|
|
19
|
+
conventional_commits = true
|
|
20
|
+
filter_unconventional = true
|
|
21
|
+
commit_parsers = [
|
|
22
|
+
{ message = "^feat", group = "Features" },
|
|
23
|
+
{ message = "^fix", group = "Bug Fixes" },
|
|
24
|
+
{ message = "^docs", group = "Documentation" },
|
|
25
|
+
{ message = "^refactor", group = "Refactor" },
|
|
26
|
+
{ message = "^test", group = "Testing" },
|
|
27
|
+
{ message = "^chore", group = "Miscellaneous" },
|
|
28
|
+
]
|
|
29
|
+
filter_commits = false
|
|
30
|
+
tag_pattern = "v[0-9]*"
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# BMAD GitHub Release Workflow with CHANGELOG automation
|
|
2
|
+
name: Release on Tag
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
tags:
|
|
7
|
+
- 'v*'
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
with:
|
|
19
|
+
fetch-depth: 0
|
|
20
|
+
|
|
21
|
+
- name: Install git-cliff
|
|
22
|
+
run: |
|
|
23
|
+
curl -sSfL https://github.com/orhun/git-cliff/releases/download/v2.7.0/git-cliff-2.7.0-x86_64-unknown-linux-gnu.tar.gz | tar xz
|
|
24
|
+
sudo mv git-cliff-2.7.0/git-cliff /usr/local/bin/
|
|
25
|
+
|
|
26
|
+
- name: Generate CHANGELOG
|
|
27
|
+
run: git-cliff --config cliff.toml --output CHANGELOG.md --verbose
|
|
28
|
+
|
|
29
|
+
- name: Commit CHANGELOG and move tag
|
|
30
|
+
run: |
|
|
31
|
+
git config user.name "github-actions[bot]"
|
|
32
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
33
|
+
git add CHANGELOG.md
|
|
34
|
+
if ! git diff --staged --quiet; then
|
|
35
|
+
git commit -m "docs: update CHANGELOG for ${{ github.ref_name }}"
|
|
36
|
+
git push origin HEAD:${{ github.event.repository.default_branch }}
|
|
37
|
+
# Move tag to include CHANGELOG commit
|
|
38
|
+
git tag -f ${{ github.ref_name }}
|
|
39
|
+
git push origin ${{ github.ref_name }} --force
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
- name: Create GitHub Release
|
|
43
|
+
uses: softprops/action-gh-release@v2
|
|
44
|
+
with:
|
|
45
|
+
generate_release_notes: true
|
|
46
|
+
draft: false
|
|
47
|
+
prerelease: ${{ contains(github.ref, '-alpha') || contains(github.ref, '-beta') || contains(github.ref, '-rc') }}
|
|
48
|
+
env:
|
|
49
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,120 @@
|
|
|
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>📋 CHANGELOG SETUP - 프로젝트에 CHANGELOG 자동 생성 기능 설정</critical>
|
|
8
|
+
|
|
9
|
+
<output>📋 **CHANGELOG 자동화 설정**
|
|
10
|
+
|
|
11
|
+
이 워크플로우는 프로젝트에 다음 기능을 추가합니다:
|
|
12
|
+
- cliff.toml (git-cliff 설정 파일)
|
|
13
|
+
- release-on-tag.yml 업데이트 (CHANGELOG 자동 생성 포함)
|
|
14
|
+
|
|
15
|
+
**동작 방식:**
|
|
16
|
+
1. 태그 푸시 (예: git tag v1.0.0 && git push origin v1.0.0)
|
|
17
|
+
2. GitHub Actions가 CHANGELOG.md 자동 생성
|
|
18
|
+
3. CHANGELOG 커밋 후 태그 이동
|
|
19
|
+
4. GitHub Release 생성
|
|
20
|
+
|
|
21
|
+
</output>
|
|
22
|
+
|
|
23
|
+
<action>git repository 확인: git rev-parse --git-dir</action>
|
|
24
|
+
<check if="git repository NOT detected">
|
|
25
|
+
<output>⚠️ Git 저장소가 감지되지 않습니다. CHANGELOG 설정을 위해 Git 저장소가 필요합니다.</output>
|
|
26
|
+
<action>HALT</action>
|
|
27
|
+
</check>
|
|
28
|
+
|
|
29
|
+
<action>.github/workflows 디렉토리 확인</action>
|
|
30
|
+
<check if=".github/workflows NOT detected">
|
|
31
|
+
<output>⚠️ .github/workflows 디렉토리가 없습니다.
|
|
32
|
+
먼저 /bmad-bmm-github-setup 을 실행하여 GitHub 설정을 완료해주세요.</output>
|
|
33
|
+
<action>HALT</action>
|
|
34
|
+
</check>
|
|
35
|
+
</step>
|
|
36
|
+
|
|
37
|
+
<step n="2" goal="기존 설정 확인">
|
|
38
|
+
<action>기존 cliff.toml 확인</action>
|
|
39
|
+
|
|
40
|
+
<check if="cliff.toml 존재">
|
|
41
|
+
<output>⚠️ 기존 cliff.toml이 발견되었습니다.</output>
|
|
42
|
+
<ask>기존 cliff.toml을 덮어쓰시겠습니까? [y/n]</ask>
|
|
43
|
+
<check if="user cancels">
|
|
44
|
+
<output>ℹ️ cliff.toml 유지</output>
|
|
45
|
+
<action>{{skip_cliff}} = true</action>
|
|
46
|
+
</check>
|
|
47
|
+
</check>
|
|
48
|
+
|
|
49
|
+
<action>기존 release-on-tag.yml 확인</action>
|
|
50
|
+
<check if="release-on-tag.yml 존재">
|
|
51
|
+
<output>📁 기존 release-on-tag.yml이 발견되었습니다.
|
|
52
|
+
CHANGELOG 자동화 버전으로 교체합니다.</output>
|
|
53
|
+
<ask>release-on-tag.yml을 CHANGELOG 버전으로 교체하시겠습니까? [y/n]</ask>
|
|
54
|
+
<check if="user cancels">
|
|
55
|
+
<output>❌ CHANGELOG 설정 취소됨</output>
|
|
56
|
+
<action>HALT</action>
|
|
57
|
+
</check>
|
|
58
|
+
</check>
|
|
59
|
+
</step>
|
|
60
|
+
|
|
61
|
+
<step n="3" goal="CHANGELOG 파일 복사">
|
|
62
|
+
<critical>📋 COPY FILES - CHANGELOG 설정 파일 복사</critical>
|
|
63
|
+
|
|
64
|
+
<!-- cliff.toml 복사 -->
|
|
65
|
+
<check if="NOT {{skip_cliff}}">
|
|
66
|
+
<action>복사: {{changelog_templates}}/cliff.toml
|
|
67
|
+
→ {{target_root}}/cliff.toml</action>
|
|
68
|
+
<output>✅ cliff.toml 생성됨</output>
|
|
69
|
+
</check>
|
|
70
|
+
|
|
71
|
+
<!-- release-on-tag.yml 교체 -->
|
|
72
|
+
<action>복사: {{changelog_templates}}/release-on-tag.yml
|
|
73
|
+
→ {{target_workflows_dir}}/release-on-tag.yml</action>
|
|
74
|
+
<output>✅ release-on-tag.yml CHANGELOG 버전으로 교체됨</output>
|
|
75
|
+
</step>
|
|
76
|
+
|
|
77
|
+
<step n="4" goal="설정 완료 및 안내">
|
|
78
|
+
<output>🎉 **CHANGELOG 자동화 설정 완료!**
|
|
79
|
+
|
|
80
|
+
**적용된 설정:**
|
|
81
|
+
✅ cliff.toml - git-cliff 설정 (Conventional Commits 파싱)
|
|
82
|
+
✅ release-on-tag.yml - CHANGELOG 자동 생성 워크플로우
|
|
83
|
+
|
|
84
|
+
**Conventional Commits 형식:**
|
|
85
|
+
- feat: 새 기능
|
|
86
|
+
- fix: 버그 수정
|
|
87
|
+
- docs: 문서 변경
|
|
88
|
+
- refactor: 리팩토링
|
|
89
|
+
- test: 테스트
|
|
90
|
+
- chore: 기타 변경
|
|
91
|
+
|
|
92
|
+
**다음 단계:**
|
|
93
|
+
1. 변경사항 커밋: `git add cliff.toml .github && git commit -m "feat: add CHANGELOG automation"`
|
|
94
|
+
2. 원격 저장소에 Push: `git push origin main`
|
|
95
|
+
3. 태그 생성하여 테스트: `git tag v0.1.0 && git push origin v0.1.0`
|
|
96
|
+
|
|
97
|
+
**사용 방법:**
|
|
98
|
+
태그를 푸시하면 자동으로:
|
|
99
|
+
1. CHANGELOG.md 생성/업데이트
|
|
100
|
+
2. CHANGELOG 커밋
|
|
101
|
+
3. 태그를 새 커밋으로 이동
|
|
102
|
+
4. GitHub Release 생성
|
|
103
|
+
</output>
|
|
104
|
+
|
|
105
|
+
<ask>변경사항을 지금 커밋하고 Push하시겠습니까? [y/n]</ask>
|
|
106
|
+
|
|
107
|
+
<check if="user confirms">
|
|
108
|
+
<action>git add cliff.toml .github/workflows/release-on-tag.yml</action>
|
|
109
|
+
<action>git commit -m "feat: add CHANGELOG automation
|
|
110
|
+
|
|
111
|
+
- Add cliff.toml for git-cliff configuration
|
|
112
|
+
- Update release-on-tag.yml with CHANGELOG generation
|
|
113
|
+
|
|
114
|
+
Generated by BMAD Method"</action>
|
|
115
|
+
<action>git push origin {{current_branch}}</action>
|
|
116
|
+
<output>✅ 변경사항 Push 완료!</output>
|
|
117
|
+
</check>
|
|
118
|
+
</step>
|
|
119
|
+
|
|
120
|
+
</workflow>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: changelog-setup
|
|
2
|
+
description: "프로젝트에 CHANGELOG.md 자동 생성 기능 설정 (git-cliff 기반)"
|
|
3
|
+
author: "BMAD"
|
|
4
|
+
|
|
5
|
+
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
6
|
+
installed_path: "{project-root}/_bmad/bmm/workflows/changelog-setup"
|
|
7
|
+
instructions: "{installed_path}/instructions.xml"
|
|
8
|
+
template: false
|
|
9
|
+
standalone: true
|
|
10
|
+
|
|
11
|
+
variables:
|
|
12
|
+
changelog_templates: "{project-root}/_bmad/bmm/data/changelog"
|
|
13
|
+
target_workflows_dir: "{project-root}/.github/workflows"
|
|
14
|
+
target_root: "{project-root}"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'changelog-setup'
|
|
3
|
+
description: '프로젝트에 CHANGELOG.md 자동 생성 기능 설정'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<steps CRITICAL="TRUE">
|
|
7
|
+
1. Always LOAD the FULL @{project-root}/_bmad/core/tasks/workflow.xml
|
|
8
|
+
2. READ its entire contents
|
|
9
|
+
3. Pass the yaml path as 'workflow-config' parameter to workflow.xml: {project-root}/_bmad/bmm/workflows/changelog-setup/workflow.yaml
|
|
10
|
+
4. Follow workflow.xml instructions EXACTLY as written
|
|
11
|
+
5. Save outputs after EACH section
|
|
12
|
+
</steps>
|