Skip to content

Commit b4b64ec

Browse files
authored
Merge pull request #21 from nullhack/fix/versioning-and-naming
fix: remove rN suffix, update release naming to AI-generated
2 parents 5a39183 + 6903d14 commit b4b64ec

File tree

8 files changed

+174
-231
lines changed

8 files changed

+174
-231
lines changed

.opencode/agents/repo-manager.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,22 @@ Generate themed names using: `{adjective} {animal}`
4848
**Name Selection Strategy:**
4949
**IMPORTANT**: Use your AI to analyze the actual PR/commit content and generate an appropriate themed name. Do NOT use random selection.
5050

51-
1. Get merged PRs: `gh pr list --state merged --base develop --limit 20`
51+
1. Get merged PRs: `gh pr list --state merged --base main --limit 20`
5252
2. **Use your AI to analyze** the PR titles and descriptions
53-
3. Determine overall "vibe" (performance, security, features, fixes, etc.) based on the actual content
54-
4. Select appropriate adjective + animal combination
55-
56-
4. Select appropriate adjective + animal combination:
57-
- **Performance**: swift cheetah, lightning falcon, rapid hare
58-
- **Security**: vigilant owl, guardian bear, watchful hawk
59-
- **Features**: creative fox, innovative dolphin, clever raven
60-
- **Bug Fixes**: persistent badger, diligent ant, careful turtle
61-
- **Refactoring**: elegant swan, graceful deer, nimble cat
62-
- **Documentation**: wise elephant, thoughtful whale, patient sloth
63-
- **Mixed**: versatile chameleon, adaptive jackal, resourceful coyote
53+
3. Determine what this release is really about
54+
4. Generate a unique adjective-animal name that:
55+
- Reflects the PR content
56+
- Hasn't been used before
57+
- Is creative and memorable
58+
59+
**Avoid** overused combinations like "swift cheetah", "creative fox", "vigilant owl", "innovative dolphin".
60+
61+
**Try** unique combinations like:
62+
- Exotic: narwhal, axolotl, capybara, quokka, pangolin
63+
- Aquatic: jellyfish, seahorse, manta, cuttlefish, otter
64+
- Birds: kingfisher, heron, ibis, stork
65+
- Insects: firefly, butterfly, dragonfly
66+
- Mythical: phoenix, griffin, pegasus, siren
6467

6568
## Git Operations
6669

@@ -151,7 +154,7 @@ gh pr list --state merged --base develop --limit 10
151154
# Recent PRs: "Optimize database queries", "Improve API performance", "Cache implementation"
152155
# Theme detected: Performance improvements
153156
# Generated name: "swift falcon"
154-
# Version: v1.2.20260302r1
157+
# Version: v1.2.20260302
155158
```
156159

157160
### Emergency Hotfix

.opencode/skills/git-release/SKILL.md

Lines changed: 57 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -45,96 +45,64 @@ v1.2.20260302 → v1.3.20260302
4545

4646
## Release Naming Strategy
4747

48-
### Adjective-Animal Themes
49-
Generate release names by analyzing PR sentiment and selecting appropriate themes.
48+
### AI-Generated Themed Naming
5049

51-
### Theme Categories
50+
The release name is generated by the AI based on analyzing the merged PRs and their content. The AI should:
5251

53-
#### Performance & Speed
54-
**Adjectives**: swift, rapid, lightning, blazing, turbo, speedy, agile
55-
**Animals**: cheetah, falcon, hare, gazelle, hawk, dolphin, hummingbird
52+
1. **Analyze PR content** - Read titles, descriptions, and code changes
53+
2. **Identify dominant theme** - What is this release really about?
54+
3. **Generate unique name** - Create an adjective-animal pair that:
55+
- Reflects the PR content accurately
56+
- Has not been used before in this project
57+
- Is memorable and appropriate
5658

57-
Examples: `swift cheetah`, `lightning falcon`, `rapid gazelle`
59+
### Guidelines for AI
5860

59-
#### Security & Protection
60-
**Adjectives**: vigilant, guardian, watchful, secure, protective, stalwart, fortress
61-
**Animals**: owl, bear, hawk, wolf, eagle, rhinoceros, mastiff
61+
**Good adjectives** (avoid generic ones):
62+
- Emotional/sensory: `electric`, `radiant`, `fiery`, `velvet`, `crystalline`
63+
- Movement: `surging`, `drifting`, `soaring`, `diving`, `spiral`
64+
- Nature: `blooming`, `misty`, `aurora`, `tidal`, `verdant`
65+
- Abstract: `boundless`, `infinite`, `hidden`, `silent`, `luminous`
6266

63-
Examples: `vigilant owl`, `guardian bear`, `watchful hawk`
67+
**Good animals** (avoid overused ones like fox, owl, dolphin, cheetah):
68+
- Exotic: `narwhal`, `axolotl`, `capybara`, `quokka`, `pangolin`
69+
- Aquatic: `jellyfish`, `seahorse`, `manta`, `cuttlefish`, `otter`
70+
- Birds: `kingfisher`, `heron`, `ibis`, `stork`, `bird-of-paradise`
71+
- Insects: `firefly`, `butterfly`, `dragonfly`, `beetle`, `mantid`
72+
- Mythical-inspired: `phoenix`, `griffin`, `pegasus`, `siren`, `chimera`
6473

65-
#### Innovation & Features
66-
**Adjectives**: creative, innovative, clever, brilliant, inventive, pioneering, ingenious
67-
**Animals**: fox, dolphin, raven, octopus, monkey, parrot, crow
74+
**Avoid repetition** - Check previous releases and choose something new.
6875

69-
Examples: `creative fox`, `innovative dolphin`, `clever raven`
76+
### Examples
7077

71-
#### Stability & Fixes
72-
**Adjectives**: persistent, diligent, careful, steadfast, reliable, thorough, patient
73-
**Animals**: badger, ant, turtle, ox, elephant, beaver, bull
74-
75-
Examples: `persistent badger`, `diligent ant`, `careful turtle`
76-
77-
#### Refactoring & Cleanup
78-
**Adjectives**: elegant, graceful, nimble, refined, polished, pristine, sleek
79-
**Animals**: swan, deer, cat, crane, jaguar, seal, panther
80-
81-
Examples: `elegant swan`, `graceful deer`, `nimble cat`
78+
```
79+
v1.2.20260315 - Blooming Narwhal (based on new features, growth theme)
80+
v1.3.20260316 - Velvet Manta (based on smooth refactoring)
81+
v1.4.20260317 - Electric Firefly (based on performance improvements)
82+
v1.5.20260403 - Crystal Jellyfish (based on documentation overhaul)
83+
```
8284

83-
#### Documentation & Knowledge
84-
**Adjectives**: wise, thoughtful, scholarly, insightful, learned, enlightened, sage
85-
**Animals**: elephant, whale, owl, sloth, tortoise, raven, dolphin
85+
## PR Analysis for Release Naming
8686

87-
Examples: `wise elephant`, `thoughtful whale`, `scholarly owl`
87+
### AI Analysis Process
8888

89-
## PR Sentiment Analysis
89+
Instead of rigid keyword matching, the AI should:
9090

91-
### Analysis Process
9291
1. **Gather Recent PRs**
9392
```bash
94-
gh pr list --state merged --base develop --limit 20 --json title,body,labels
93+
gh pr list --state merged --base main --limit 20 --json title,body,labels
9594
```
9695

97-
2. **Categorize by Keywords**
98-
```python
99-
performance_keywords = ["optimize", "performance", "speed", "cache", "faster"]
100-
security_keywords = ["security", "auth", "encrypt", "vulnerability", "safe"]
101-
feature_keywords = ["add", "implement", "new", "feature", "enhance"]
102-
fix_keywords = ["fix", "bug", "error", "issue", "patch"]
103-
refactor_keywords = ["refactor", "clean", "restructure", "improve", "organize"]
104-
docs_keywords = ["docs", "documentation", "readme", "guide", "explain"]
105-
```
96+
2. **Understand the content** - Read PR titles and descriptions to understand what changed
10697

107-
3. **Calculate Dominant Theme**
108-
```python
109-
def analyze_pr_sentiment(prs):
110-
scores = {
111-
"performance": 0,
112-
"security": 0,
113-
"features": 0,
114-
"fixes": 0,
115-
"refactoring": 0,
116-
"documentation": 0
117-
}
118-
119-
for pr in prs:
120-
text = f"{pr['title']} {pr['body']}".lower()
121-
# Score based on keyword frequency and PR importance
122-
123-
return max(scores, key=scores.get)
124-
```
98+
3. **Identify the story** - What's the narrative of this release? What stands out?
12599

126-
4. **Select Theme Name**
127-
```python
128-
def generate_release_name(dominant_theme):
129-
themes = {
130-
"performance": [("swift", "cheetah"), ("lightning", "falcon"), ("rapid", "hare")],
131-
"security": [("vigilant", "owl"), ("guardian", "bear"), ("watchful", "hawk")],
132-
"features": [("creative", "fox"), ("innovative", "dolphin"), ("clever", "raven")],
133-
# ... etc
134-
}
135-
136-
return random.choice(themes[dominant_theme])
137-
```
100+
4. **Generate creative name** - Based on understanding, create a unique adjective-animal pair
101+
102+
**Remember:**
103+
- Each release should have a unique name - don't repeat
104+
- The name should feel authentic and memorable
105+
- Let the PR content guide the naming, not the other way around
138106

139107
## Release Process Workflow
140108

@@ -149,7 +117,7 @@ git log --oneline $(git describe --tags --abbrev=0)..HEAD
149117

150118
# Create release branch
151119
current_date=$(date +%Y%m%d)
152-
git checkout -b release/v1.3.${current_date}r1
120+
git checkout -b release/v1.3.${current_date}
153121
```
154122

155123
### Step 2: Analyze PRs and Generate Name
@@ -172,11 +140,11 @@ gh pr list --state merged --base develop --limit 20
172140
### Step 3: Update Version and Changelog
173141
```bash
174142
# Update pyproject.toml
175-
sed -i 's/version = ".*"/version = "1.3.20260302r1"/' pyproject.toml
143+
sed -i 's/version = ".*"/version = "1.3.20260302"/' pyproject.toml
176144

177145
# Generate changelog entry
178146
cat >> CHANGELOG.md << EOF
179-
## [v1.3.20260302r1] - Swift Cheetah - 2026-03-02
147+
## [v1.3.20260302] - Swift Cheetah - 2026-03-02
180148
181149
### Performance Improvements
182150
- Optimize database query performance (#123)
@@ -192,24 +160,24 @@ EOF
192160

193161
# Commit version bump
194162
git add pyproject.toml CHANGELOG.md
195-
git commit -m "chore(release): bump version to v1.3.20260302r1 - Swift Cheetah"
163+
git commit -m "chore(release): bump version to v1.3.20260302 - Swift Cheetah"
196164
```
197165

198166
### Step 4: Create and Publish Release
199167
```bash
200168
# Merge to main
201169
git checkout main
202-
git merge release/v1.3.20260302r1
170+
git merge release/v1.3.20260302
203171

204172
# Create tag
205-
git tag v1.3.20260302r1
173+
git tag v1.3.20260302
206174

207175
# Push to remote
208176
git push origin main --tags
209177

210178
# Create GitHub release
211-
gh release create v1.3.20260302r1 \
212-
--title "v1.3.20260302r1 - Swift Cheetah" \
179+
gh release create v1.3.20260302 \
180+
--title "v1.3.20260302 - Swift Cheetah" \
213181
--notes-file CHANGELOG.md
214182

215183
# Sync develop branch
@@ -218,20 +186,20 @@ git merge main
218186
git push origin develop
219187

220188
# Clean up release branch
221-
git branch -d release/v1.3.20260302r1
222-
git push origin --delete release/v1.3.20260302r1
189+
git branch -d release/v1.3.20260302
190+
git push origin --delete release/v1.3.20260302
223191
```
224192

225193
### Step 5: Post-Release Tasks
226194
```bash
227195
# Verify release
228-
gh release view v1.3.20260302r1
196+
gh release view v1.3.20260302
229197

230198
# Check CI/CD pipeline
231-
gh workflow run deploy --ref v1.3.20260302r1
199+
gh workflow run deploy --ref v1.3.20260302
232200

233201
# Update project documentation
234-
echo "Latest release: v1.3.20260302r1 - Swift Cheetah" > .release-info
202+
echo "Latest release: v1.3.20260302 - Swift Cheetah" > .release-info
235203
```
236204

237205
## Hotfix Release Process
@@ -254,7 +222,7 @@ gh pr create --title "Critical Security Hotfix" \
254222
current_date=$(date +%Y%m%d)
255223
last_version=$(git describe --tags --abbrev=0)
256224

257-
# Calculate next revision (v1.3.20260302r1 → v1.3.20260302r2)
225+
# Calculate next revision (v1.3.20260302 → v1.3.20260302r2)
258226
next_revision=$(echo $last_version | sed 's/r\([0-9]\+\)/r\1+1/')
259227

260228
git tag $next_revision
@@ -307,7 +275,7 @@ echo "✅ Pre-release validation passed!"
307275
# Analysis: 3 feature PRs, 1 performance PR
308276
# Theme: FEATURES (dominant)
309277
# Name: "innovative dolphin"
310-
# Version: v1.4.20260315r1
278+
# Version: v1.4.20260315
311279
```
312280

313281
### Security Release
@@ -316,7 +284,7 @@ echo "✅ Pre-release validation passed!"
316284
# Analysis: 4 security PRs, 1 docs PR
317285
# Theme: SECURITY (dominant)
318286
# Name: "vigilant owl"
319-
# Version: v1.3.20260320r1
287+
# Version: v1.3.20260320
320288
```
321289

322290
### Major Release
@@ -325,5 +293,5 @@ echo "✅ Pre-release validation passed!"
325293
# Analysis: Breaking changes detected
326294
# Theme: Based on supporting PRs
327295
# Name: "pioneering eagle"
328-
# Version: v2.0.20260401r1
296+
# Version: v2.0.20260401
329297
```

.opencode/skills/template-release/SKILL.md

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,16 @@ echo "✅ Final validation passed"
153153
git log ${current_version}..HEAD --oneline
154154
```
155155

156-
2. **Analyze the commits using your AI** to determine the dominant theme/vibe:
156+
2. **Analyze the commits using your AI** to determine what this release is about:
157157
- Read each commit message and PR description
158-
- Determine if they're about: performance, security, features, bug fixes, refactoring, or docs
159-
- Pick a theme that matches the majority
160-
161-
3. **Generate themed name** based on your analysis:
162-
- **Performance**: swift cheetah, lightning falcon, rapid hare, blazing gazelle
163-
- **Security**: vigilant owl, guardian bear, watchful hawk, steadfast turtle
164-
- **Features**: creative fox, innovative dolphin, clever raven, curious raccoon
165-
- **Bug Fixes**: persistent badger, diligent ant, careful turtle, steadfast ox
166-
- **Refactoring**: elegant swan, graceful deer, nimble cat, balanced llama
167-
- **Documentation**: wise elephant, thoughtful whale, scholarly owl, patient sloth
168-
- **Mixed**: versatile chameleon, adaptive jackal, resourceful coyote
158+
- Understand the story/narrative of the release
159+
160+
3. **Generate a unique themed name** based on your analysis:
161+
- Create an adjective-animal pair that reflects the content
162+
- Avoid overused combinations (fox, owl, dolphin, cheetah)
163+
- Make it creative and memorable
164+
165+
**Good examples**: Blooming Narwhal, Crystal Jellyfish, Velvet Manta, Electric Firefly, Aurora Moth, Tidal Otter
169166

170167
4. **Create the release:**
171168
```bash

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ When developers use this template, they get:
6868

6969
### Repository Management
7070
- Hybrid versioning: `v1.2.20260302` (major.minor.calver)
71-
- Themed releases: "swift cheetah", "vigilant owl", "creative fox"
71+
- AI-generated themed releases (unique per release): "Blooming Narwhal", "Crystal Jellyfish", "Electric Firefly"
7272
- Automated PR workflows with conventional commits
7373
- GitHub CLI integration
7474

@@ -119,7 +119,7 @@ cookiecutter gh:your-username/python-project-template --checkout v1.2.20260312
119119
- **v1.2.20260312**: Added meta template management system
120120
- **v1.3.20260313**: Added session-workflow skill
121121
- **v1.4.20260313**: Added AI-driven themed naming
122-
- **v1.5.20260403r1**: Replaced mkdocs with pdoc for API docs, added pytest-html-plus with BDD docstring display
122+
- **v1.5.20260403**: Replaced mkdocs with pdoc for API docs, added pytest-html-plus with BDD docstring display
123123

124124
## Generated Project Features
125125

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Modern cookiecutter template delivering enterprise-grade Python projects with **
1616
🏗️ **SOLID Architecture** - Object calisthenics, dependency inversion, and protocol-based design
1717
**Zero-Config Setup** - UV package manager, Ruff formatting, PyTest + Hypothesis testing
1818
🎯 **Quality Enforced** - 100% coverage, static typing, property-based testing
19-
🔄 **Smart Releases** - Calver versioning with themed releases (`v1.2.20260315 "Swift Cheetah"`)
19+
🔄 **Smart Releases** - Calver versioning with AI-generated themed names
2020
📋 **Complete Workflows** - 7-phase development cycle from prototype to production
2121

2222
## 🎯 Perfect For
@@ -89,7 +89,7 @@ task doc-serve # Live documentation server
8989

9090
### Smart Release Management
9191

92-
- **Hybrid Versioning**: `v{major}.{minor}.{YYYYMMDD}r{revision}`
92+
- **Hybrid Versioning**: `v{major}.{minor}.{YYYYMMDD}` (same-day releases increment minor)
9393
- **Themed Releases**: AI-generated names based on PR sentiment
9494
- Performance: `"Swift Cheetah"` `"Lightning Falcon"`
9595
- Security: `"Vigilant Owl"` `"Guardian Bear"`

0 commit comments

Comments
 (0)