@nomad-e/bluma-cli 0.1.66 → 0.1.68
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/README.md +2 -2
- package/dist/config/native_tools.json +9 -9
- package/dist/config/skills/git-release/LICENSE.txt +18 -0
- package/dist/config/skills/git-release/SKILL.md +408 -0
- package/dist/main.js +4491 -2239
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -160,7 +160,7 @@ npm start
|
|
|
160
160
|
|
|
161
161
|
```json
|
|
162
162
|
{
|
|
163
|
-
"model": "
|
|
163
|
+
"model": "auto",
|
|
164
164
|
"reasoningEffort": "medium",
|
|
165
165
|
"outputStyle": "concise",
|
|
166
166
|
"sandboxMode": "confirm",
|
|
@@ -171,7 +171,7 @@ npm start
|
|
|
171
171
|
|
|
172
172
|
| Setting | Values | Description |
|
|
173
173
|
|---------|--------|-------------|
|
|
174
|
-
| `model` | `
|
|
174
|
+
| `model` | `auto` | LLM model (FactorRouter decides) |
|
|
175
175
|
| `reasoningEffort` | `low`, `medium`, `high` | Reasoning depth |
|
|
176
176
|
| `outputStyle` | `concise`, `balanced`, `verbose` | Response style |
|
|
177
177
|
| `sandboxMode` | `confirm`, `auto`, `strict` | Tool execution policy |
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
"type": "function",
|
|
341
341
|
"function": {
|
|
342
342
|
"name": "read_file_lines",
|
|
343
|
-
"description": "Reads a slice of a text file (
|
|
343
|
+
"description": "Reads a slice of a text file (Read parity). Use filepath only for up to 2000 lines from line 1, or offset+limit, or start_line+end_line. Optional line_number_prefix formats lines like cat -n.",
|
|
344
344
|
"parameters": {
|
|
345
345
|
"type": "object",
|
|
346
346
|
"properties": {
|
|
@@ -800,7 +800,7 @@
|
|
|
800
800
|
"type": "function",
|
|
801
801
|
"function": {
|
|
802
802
|
"name": "ask_user_question",
|
|
803
|
-
"description": "Ask the user one or more multiple-choice questions in the terminal (
|
|
803
|
+
"description": "Ask the user one or more multiple-choice questions in the terminal (AskUserQuestion). Blocks until they answer. Only the first question is shown; options must be single-select.",
|
|
804
804
|
"parameters": {
|
|
805
805
|
"type": "object",
|
|
806
806
|
"properties": {
|
|
@@ -836,7 +836,7 @@
|
|
|
836
836
|
"type": "function",
|
|
837
837
|
"function": {
|
|
838
838
|
"name": "enter_plan_mode",
|
|
839
|
-
"description": "Enter plan-only mode (
|
|
839
|
+
"description": "Enter plan-only mode (EnterPlanMode parity). While active, edits, writes, shell, spawn_agent, and artifact creation require user confirmation even if normally auto-approved.",
|
|
840
840
|
"parameters": {
|
|
841
841
|
"type": "object",
|
|
842
842
|
"properties": {
|
|
@@ -849,7 +849,7 @@
|
|
|
849
849
|
"type": "function",
|
|
850
850
|
"function": {
|
|
851
851
|
"name": "exit_plan_mode",
|
|
852
|
-
"description": "Leave plan mode (
|
|
852
|
+
"description": "Leave plan mode (ExitPlanMode parity). Restores normal auto-approve rules.",
|
|
853
853
|
"parameters": {
|
|
854
854
|
"type": "object",
|
|
855
855
|
"properties": {
|
|
@@ -862,7 +862,7 @@
|
|
|
862
862
|
"type": "function",
|
|
863
863
|
"function": {
|
|
864
864
|
"name": "task_create",
|
|
865
|
-
"description": "Create a session task (
|
|
865
|
+
"description": "Create a session task (TaskCreate-style). Tasks are scoped to this session.",
|
|
866
866
|
"parameters": {
|
|
867
867
|
"type": "object",
|
|
868
868
|
"properties": {
|
|
@@ -921,7 +921,7 @@
|
|
|
921
921
|
"type": "function",
|
|
922
922
|
"function": {
|
|
923
923
|
"name": "task_stop",
|
|
924
|
-
"description": "Mark a task as cancelled (
|
|
924
|
+
"description": "Mark a task as cancelled (TaskStop-style).",
|
|
925
925
|
"parameters": {
|
|
926
926
|
"type": "object",
|
|
927
927
|
"properties": { "task_id": { "type": "string" } },
|
|
@@ -933,7 +933,7 @@
|
|
|
933
933
|
"type": "function",
|
|
934
934
|
"function": {
|
|
935
935
|
"name": "list_mcp_resources",
|
|
936
|
-
"description": "List resources exposed by connected MCP servers (
|
|
936
|
+
"description": "List resources exposed by connected MCP servers (ListMcpResourcesTool parity).",
|
|
937
937
|
"parameters": {
|
|
938
938
|
"type": "object",
|
|
939
939
|
"properties": {
|
|
@@ -946,7 +946,7 @@
|
|
|
946
946
|
"type": "function",
|
|
947
947
|
"function": {
|
|
948
948
|
"name": "read_mcp_resource",
|
|
949
|
-
"description": "Read a resource URI from a named MCP server (
|
|
949
|
+
"description": "Read a resource URI from a named MCP server (ReadMcpResourceTool parity).",
|
|
950
950
|
"parameters": {
|
|
951
951
|
"type": "object",
|
|
952
952
|
"properties": {
|
|
@@ -961,7 +961,7 @@
|
|
|
961
961
|
"type": "function",
|
|
962
962
|
"function": {
|
|
963
963
|
"name": "cron_create",
|
|
964
|
-
"description": "Schedule a one-shot or repeating user-visible reminder in this CLI session (
|
|
964
|
+
"description": "Schedule a one-shot or repeating user-visible reminder in this CLI session (CronCreate parity). Fires via user_overlay; timers end when the process exits.",
|
|
965
965
|
"parameters": {
|
|
966
966
|
"type": "object",
|
|
967
967
|
"properties": {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
BluMa — Base Language Unit · Model Agent
|
|
2
|
+
Proprietary License
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2024-2026 BluMa Contributors
|
|
5
|
+
|
|
6
|
+
This skill is part of the BluMa CLI distribution.
|
|
7
|
+
It is provided as a bundled native skill and may not be
|
|
8
|
+
redistributed, modified, or used outside of the BluMa agent
|
|
9
|
+
framework without prior written permission.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
12
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
13
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
14
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
15
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
16
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
17
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
18
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-release
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill for any task involving software releases: version bumps,
|
|
5
|
+
changelog generation, git tags, GitHub releases, npm publish, and
|
|
6
|
+
release orchestration. Triggers include: "release", "publish",
|
|
7
|
+
"version bump", "changelog", "create release", "cut release",
|
|
8
|
+
"ship it", "deploy version", "tag release", or any request to
|
|
9
|
+
finalize and publish a new version of the software.
|
|
10
|
+
license: Proprietary. LICENSE.txt has complete terms
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Git Release — Professional Release Engineering
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
This skill produces **production-grade** releases with consistent versioning,
|
|
18
|
+
comprehensive changelogs, proper tagging, and full traceability. Every release
|
|
19
|
+
carries a BluMa watermark for auditability.
|
|
20
|
+
|
|
21
|
+
## Release Types
|
|
22
|
+
|
|
23
|
+
| Type | When to use | Version bump |
|
|
24
|
+
|------|-------------|--------------|
|
|
25
|
+
| `major` | Breaking changes, incompatible API changes | `X.0.0` |
|
|
26
|
+
| `minor` | New features, backward-compatible | `0.X.0` |
|
|
27
|
+
| `patch` | Bug fixes, backward-compatible | `0.0.X` |
|
|
28
|
+
| `premajor` | Pre-release for upcoming major | `X.0.0-beta.0` |
|
|
29
|
+
| `preminor` | Pre-release for upcoming minor | `0.X.0-beta.0` |
|
|
30
|
+
| `prepatch` | Pre-release for upcoming patch | `0.0.X-beta.0` |
|
|
31
|
+
| `prerelease` | Pre-release iteration | `0.0.X-beta.N` |
|
|
32
|
+
|
|
33
|
+
## Pre-Release Checklist
|
|
34
|
+
|
|
35
|
+
Before ANY release, verify:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 1. Clean working tree
|
|
39
|
+
git status --short
|
|
40
|
+
# Must be empty — no uncommitted changes
|
|
41
|
+
|
|
42
|
+
# 2. On the correct branch
|
|
43
|
+
git branch --show-current
|
|
44
|
+
# Usually main or master for releases
|
|
45
|
+
|
|
46
|
+
# 3. Up to date with remote
|
|
47
|
+
git fetch origin
|
|
48
|
+
git status
|
|
49
|
+
# "Your branch is up to date with 'origin/main'"
|
|
50
|
+
|
|
51
|
+
# 4. Tests pass
|
|
52
|
+
npm test
|
|
53
|
+
# All tests must pass — no exceptions
|
|
54
|
+
|
|
55
|
+
# 5. Build succeeds
|
|
56
|
+
npm run build
|
|
57
|
+
# Clean build with no errors or warnings
|
|
58
|
+
|
|
59
|
+
# 6. Lint passes
|
|
60
|
+
npm run lint
|
|
61
|
+
# No lint errors
|
|
62
|
+
|
|
63
|
+
# 7. Review commits since last tag
|
|
64
|
+
git log v<current>..HEAD --oneline
|
|
65
|
+
# Understand what's being released
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
If ANY check fails, STOP and fix before proceeding.
|
|
69
|
+
|
|
70
|
+
## Step 1: Determine Version Bump
|
|
71
|
+
|
|
72
|
+
### Option A: Automatic (from Conventional Commits)
|
|
73
|
+
|
|
74
|
+
Analyze commits since the last tag:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git log v<current>..HEAD --oneline
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Determine the highest-impact type:
|
|
81
|
+
- Any `BREAKING CHANGE` or `feat!` → **major**
|
|
82
|
+
- Any `feat` → **minor**
|
|
83
|
+
- Only `fix`, `docs`, `refactor`, `perf`, `test`, `chore` → **patch**
|
|
84
|
+
|
|
85
|
+
### Option B: Explicit
|
|
86
|
+
|
|
87
|
+
User specifies: `/release minor`, `/release patch`, `/release major`
|
|
88
|
+
|
|
89
|
+
### Calculate next version:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Current version from package.json
|
|
93
|
+
cat package.json | grep '"version"'
|
|
94
|
+
|
|
95
|
+
# Or from git tag
|
|
96
|
+
git describe --tags --abbrev=0
|
|
97
|
+
|
|
98
|
+
# Bump logic:
|
|
99
|
+
# 0.1.67 + patch = 0.1.68
|
|
100
|
+
# 0.1.67 + minor = 0.2.0
|
|
101
|
+
# 0.1.67 + major = 1.0.0
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Step 2: Generate Changelog
|
|
105
|
+
|
|
106
|
+
Create a structured CHANGELOG.md entry. Group commits by type:
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## [v0.2.0] - 2026-04-16
|
|
110
|
+
|
|
111
|
+
### 🚀 Features
|
|
112
|
+
- **(auth)**: add JWT refresh token rotation (#42)
|
|
113
|
+
- **(ui)**: add dark mode toggle
|
|
114
|
+
|
|
115
|
+
### 🐛 Bug Fixes
|
|
116
|
+
- **(api)**: fix null pointer in session validation (#55)
|
|
117
|
+
- **(cli)**: resolve timeout on large file reads
|
|
118
|
+
|
|
119
|
+
### ⚡ Performance
|
|
120
|
+
- **(core)**: optimize context compression algorithm
|
|
121
|
+
|
|
122
|
+
### 🔧 Chores
|
|
123
|
+
- **(deps)**: bump react from 18.2 to 19.0
|
|
124
|
+
- **(ci)**: add Node 22 to test matrix
|
|
125
|
+
|
|
126
|
+
### 📝 Documentation
|
|
127
|
+
- **(readme)**: update installation instructions
|
|
128
|
+
|
|
129
|
+
### 💥 Breaking Changes
|
|
130
|
+
- **(api)**: remove deprecated `/v1/legacy` endpoint
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
> *Generated by [BluMa — Base Language Unit · Model Agent](https://github.com/Nomad-e/bluma-cli)*
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Commands to gather data:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# All commits since last tag
|
|
141
|
+
git log v<current>..HEAD --format="%h|%s|%an|%ad" --date=short
|
|
142
|
+
|
|
143
|
+
# Commits by type
|
|
144
|
+
git log v<current>..HEAD --oneline --grep="^feat"
|
|
145
|
+
git log v<current>..HEAD --oneline --grep="^fix"
|
|
146
|
+
git log v<current>..HEAD --oneline --grep="^BREAKING"
|
|
147
|
+
|
|
148
|
+
# Diff stats
|
|
149
|
+
git log v<current>..HEAD --stat --oneline
|
|
150
|
+
|
|
151
|
+
# Contributors
|
|
152
|
+
git log v<current>..HEAD --format="%an" | sort | uniq -c | sort -rn
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Step 3: Update Version
|
|
156
|
+
|
|
157
|
+
### package.json
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# Using npm (recommended — updates package.json + package-lock.json)
|
|
161
|
+
npm version <type> --no-git-tag-version
|
|
162
|
+
|
|
163
|
+
# Or manually edit package.json
|
|
164
|
+
# "version": "0.1.68"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Other version files (if they exist):
|
|
168
|
+
|
|
169
|
+
- `src/version.ts` or `src/version.js`
|
|
170
|
+
- `src/app/version.ts`
|
|
171
|
+
- `.version`
|
|
172
|
+
- Any file containing the version string
|
|
173
|
+
|
|
174
|
+
Update ALL version references consistently.
|
|
175
|
+
|
|
176
|
+
## Step 4: Update CHANGELOG.md
|
|
177
|
+
|
|
178
|
+
If CHANGELOG.md exists, prepend the new entry. If not, create it:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# Prepend to existing
|
|
182
|
+
# (use edit_tool to insert at top after header)
|
|
183
|
+
|
|
184
|
+
# Or create new
|
|
185
|
+
cat > CHANGELOG.md << 'EOF'
|
|
186
|
+
# Changelog
|
|
187
|
+
|
|
188
|
+
All notable changes to this project will be documented in this file.
|
|
189
|
+
|
|
190
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
191
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
192
|
+
|
|
193
|
+
## [v0.2.0] - 2026-04-16
|
|
194
|
+
...
|
|
195
|
+
EOF
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Step 5: Commit the Release
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
git add -A
|
|
202
|
+
git commit -m "$(cat <<'EOF'
|
|
203
|
+
chore(release): v0.2.0
|
|
204
|
+
|
|
205
|
+
- Bump version to 0.2.0
|
|
206
|
+
- Update CHANGELOG.md
|
|
207
|
+
- Release: minor (new features: JWT refresh, dark mode)
|
|
208
|
+
|
|
209
|
+
Generated-by: BluMa — Base Language Unit · Model Agent
|
|
210
|
+
EOF
|
|
211
|
+
)"
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Step 6: Tag the Release
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# Annotated tag (preferred)
|
|
218
|
+
git tag -a v0.2.0 -m "Release v0.2.0
|
|
219
|
+
|
|
220
|
+
Features:
|
|
221
|
+
- JWT refresh token rotation
|
|
222
|
+
- Dark mode toggle
|
|
223
|
+
|
|
224
|
+
Bug fixes:
|
|
225
|
+
- Null pointer in session validation
|
|
226
|
+
- Timeout on large file reads
|
|
227
|
+
|
|
228
|
+
Generated-by: BluMa — Base Language Unit · Model Agent"
|
|
229
|
+
|
|
230
|
+
# Or lightweight tag
|
|
231
|
+
git tag v0.2.0
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Step 7: Push
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
# Push commit and tag
|
|
238
|
+
git push origin main --tags
|
|
239
|
+
|
|
240
|
+
# Or push commit first, tag separately
|
|
241
|
+
git push origin main
|
|
242
|
+
git push origin v0.2.0
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Step 8: GitHub Release (if `gh` CLI available)
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
gh release create v0.2.0 \
|
|
249
|
+
--title "v0.2.0 — Feature Release" \
|
|
250
|
+
--notes "$(cat <<'EOF'
|
|
251
|
+
## What's New
|
|
252
|
+
|
|
253
|
+
### 🚀 Features
|
|
254
|
+
- JWT refresh token rotation
|
|
255
|
+
- Dark mode toggle
|
|
256
|
+
|
|
257
|
+
### 🐛 Bug Fixes
|
|
258
|
+
- Null pointer in session validation
|
|
259
|
+
- Timeout on large file reads
|
|
260
|
+
|
|
261
|
+
### ⚡ Performance
|
|
262
|
+
- Optimized context compression
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
> *Generated by [BluMa — Base Language Unit · Model Agent](https://github.com/Nomad-e/bluma-cli)*
|
|
267
|
+
EOF
|
|
268
|
+
)"
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Step 9: npm Publish (if applicable)
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
# Dry run first
|
|
275
|
+
npm publish --dry-run
|
|
276
|
+
|
|
277
|
+
# Publish
|
|
278
|
+
npm publish
|
|
279
|
+
|
|
280
|
+
# For scoped packages
|
|
281
|
+
npm publish --access public
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## Step 10: Verify
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# Tag exists
|
|
288
|
+
git tag -l "v0.2.0"
|
|
289
|
+
|
|
290
|
+
# Tag points to correct commit
|
|
291
|
+
git show v0.2.0 --quiet
|
|
292
|
+
|
|
293
|
+
# Remote has the tag
|
|
294
|
+
git ls-remote --tags origin v0.2.0
|
|
295
|
+
|
|
296
|
+
# package.json version matches
|
|
297
|
+
cat package.json | grep '"version"'
|
|
298
|
+
|
|
299
|
+
# GitHub release exists (if created)
|
|
300
|
+
gh release view v0.2.0
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Rollback Procedure
|
|
304
|
+
|
|
305
|
+
If something goes wrong AFTER pushing:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
# Delete remote tag (DANGEROUS — coordinate with team)
|
|
309
|
+
git push origin --delete v0.2.0
|
|
310
|
+
|
|
311
|
+
# Delete local tag
|
|
312
|
+
git tag -d v0.2.0
|
|
313
|
+
|
|
314
|
+
# Revert the release commit
|
|
315
|
+
git revert <commit-hash>
|
|
316
|
+
git push origin main
|
|
317
|
+
|
|
318
|
+
# Re-publish npm if needed
|
|
319
|
+
npm unpublish @nomad-e/bluma-cli@0.2.0
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Release Notes Template
|
|
323
|
+
|
|
324
|
+
For each release, generate notes in this format:
|
|
325
|
+
|
|
326
|
+
```markdown
|
|
327
|
+
# Release v0.2.0
|
|
328
|
+
|
|
329
|
+
**Date:** 2026-04-16
|
|
330
|
+
**Type:** Minor Release
|
|
331
|
+
**Previous Version:** v0.1.67
|
|
332
|
+
|
|
333
|
+
## Summary
|
|
334
|
+
Brief 2-3 sentence summary of what this release brings.
|
|
335
|
+
|
|
336
|
+
## Highlights
|
|
337
|
+
- Feature 1 with user-facing impact
|
|
338
|
+
- Feature 2 with user-facing impact
|
|
339
|
+
|
|
340
|
+
## All Changes
|
|
341
|
+
### Features (2)
|
|
342
|
+
- feat(auth): add JWT refresh token rotation (#42)
|
|
343
|
+
- feat(ui): add dark mode toggle
|
|
344
|
+
|
|
345
|
+
### Bug Fixes (2)
|
|
346
|
+
- fix(api): null pointer in session validation (#55)
|
|
347
|
+
- fix(cli): timeout on large file reads
|
|
348
|
+
|
|
349
|
+
### Performance (1)
|
|
350
|
+
- perf(core): optimize context compression
|
|
351
|
+
|
|
352
|
+
### Chores (2)
|
|
353
|
+
- chore(deps): bump react 18.2 → 19.0
|
|
354
|
+
- chore(ci): add Node 22 to test matrix
|
|
355
|
+
|
|
356
|
+
## Contributors
|
|
357
|
+
- @alex-fonseca (5 commits)
|
|
358
|
+
- @contributor (2 commits)
|
|
359
|
+
|
|
360
|
+
## Migration Notes
|
|
361
|
+
If breaking changes, describe migration steps.
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
> *Generated by [BluMa — Base Language Unit · Model Agent](https://github.com/Nomad-e/bluma-cli)*
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Quality Standards
|
|
369
|
+
|
|
370
|
+
Every release generated by BluMa MUST:
|
|
371
|
+
|
|
372
|
+
1. Follow Semantic Versioning strictly.
|
|
373
|
+
2. Have a comprehensive CHANGELOG.md entry.
|
|
374
|
+
3. Include an annotated git tag with release summary.
|
|
375
|
+
4. Pass all pre-release checks (tests, build, lint, clean tree).
|
|
376
|
+
5. Have a GitHub Release with structured notes (if `gh` available).
|
|
377
|
+
6. Include the BluMa watermark in commit, tag, and release notes.
|
|
378
|
+
7. Be verified after push (tag exists, version matches).
|
|
379
|
+
|
|
380
|
+
## Watermarks
|
|
381
|
+
|
|
382
|
+
**Commit trailer** (last line of release commit):
|
|
383
|
+
```
|
|
384
|
+
Generated-by: BluMa — Base Language Unit · Model Agent
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**Tag annotation** (included in tag message):
|
|
388
|
+
```
|
|
389
|
+
Generated-by: BluMa — Base Language Unit · Model Agent
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**GitHub Release footer** (last line of release notes):
|
|
393
|
+
```markdown
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
> *Generated by [BluMa — Base Language Unit · Model Agent](https://github.com/Nomad-e/bluma-cli)*
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Available References
|
|
400
|
+
|
|
401
|
+
- [Semantic Versioning](https://semver.org/)
|
|
402
|
+
- [Keep a Changelog](https://keepachangelog.com/)
|
|
403
|
+
- [Conventional Commits](https://www.conventionalcommits.org/)
|
|
404
|
+
|
|
405
|
+
## Next Steps
|
|
406
|
+
|
|
407
|
+
- For commit workflows, see git-commit skill
|
|
408
|
+
- For PR workflows, see git-pr skill
|