✨ feat: add commit_message and bdd_testing skills
- Create commit_message skill with Gitmoji validation and templates - Update bdd_testing skill to match validated BDD implementation - Add comprehensive documentation and validation scripts - Ensure all skills follow AGENTS.md conventions Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
180
.vibe/skills/commit_message/SKILL.md
Normal file
180
.vibe/skills/commit_message/SKILL.md
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
name: commit_message
|
||||
description: Helps create proper Gitmoji commit messages following the Common Gitmoji Reference from AGENTS.md. Use when creating commits to ensure consistent, visual commit messages.
|
||||
license: MIT
|
||||
metadata:
|
||||
author: DanceLessonsCoach Team
|
||||
version: "1.0.0"
|
||||
based-on: AGENTS.md Common Gitmoji Reference
|
||||
---
|
||||
|
||||
# Commit Message Skill
|
||||
|
||||
This skill helps create proper Gitmoji commit messages following the Common Gitmoji Reference from AGENTS.md.
|
||||
|
||||
## Gitmoji Reference
|
||||
|
||||
### Feature Changes
|
||||
- **✨ `:sparkles:` feat**: New feature
|
||||
- **🐛 `:bug:` fix**: Bug fix
|
||||
- **♻️ `:recycle:` refactor**: Code refactoring
|
||||
- **🔥 `:fire:` remove**: Remove code/files
|
||||
- **🚀 `:rocket:` perf**: Performance improvements
|
||||
- **🔒 `:lock:` security**: Security fixes
|
||||
|
||||
### Documentation & Style
|
||||
- **📝 `:memo:` docs**: Documentation
|
||||
- **🎨 `:art:` style**: Code formatting
|
||||
- **📦 `:package:` dependencies**: Dependency changes
|
||||
|
||||
### Platform-Specific
|
||||
- **🐧 `:penguin:` linux**: Linux-specific changes
|
||||
- **🍎 `:apple:` macos**: macOS-specific changes
|
||||
- **🪟 `:window:` windows**: Windows-specific changes
|
||||
|
||||
### Testing & CI
|
||||
- **🧪 `:test_tube:` test**: Tests
|
||||
- **🤖 `:robot:` ci**: CI/CD changes
|
||||
|
||||
### Other
|
||||
- **📈 `:chart_with_upwards_trend:` analytics**: Analytics/SEO
|
||||
- **🌐 `:globe_with_meridians:` i18n**: Internationalization
|
||||
- **⚡ `:zap:` performance**: Performance improvements
|
||||
- **🔧 `:wrench:` chore**: Build/config changes
|
||||
|
||||
## Usage Examples
|
||||
|
||||
### New Feature
|
||||
```bash
|
||||
git commit -m "✨ feat: add user authentication"
|
||||
git commit -m "✨ feat: implement BDD testing framework"
|
||||
```
|
||||
|
||||
### Bug Fix
|
||||
```bash
|
||||
git commit -m "🐛 fix: resolve port conflict in test server"
|
||||
git commit -m "🐛 fix: handle JSON escaping in feature files"
|
||||
```
|
||||
|
||||
### Documentation
|
||||
```bash
|
||||
git commit -m "📝 docs: add comprehensive BDD testing guide"
|
||||
git commit -m "📝 docs: update AGENTS.md with commit conventions"
|
||||
```
|
||||
|
||||
### Refactoring
|
||||
```bash
|
||||
git commit -m "♻️ refactor: move log setup to config package"
|
||||
git commit -m "♻️ refactor: improve step pattern matching"
|
||||
```
|
||||
|
||||
### Tests
|
||||
```bash
|
||||
git commit -m "🧪 test: add BDD scenarios for greet service"
|
||||
git commit -m "🧪 test: implement health endpoint validation"
|
||||
```
|
||||
|
||||
### Configuration
|
||||
```bash
|
||||
git commit -m "🔧 chore: add log output file configuration"
|
||||
git commit -m "🔧 chore: update build system scripts"
|
||||
```
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Commit Message Structure
|
||||
```
|
||||
<gitmoji> <type>: <description>
|
||||
|
||||
<optional body with details>
|
||||
|
||||
<optional footer with references>
|
||||
```
|
||||
|
||||
### Examples
|
||||
|
||||
**Simple commit:**
|
||||
```
|
||||
✨ feat: add skill_creator framework
|
||||
```
|
||||
|
||||
**Detailed commit:**
|
||||
```
|
||||
✨ feat: implement BDD testing with Godog
|
||||
|
||||
- Add features/greet.feature and features/health.feature
|
||||
- Implement step definitions in pkg/bdd/steps/
|
||||
- Create hybrid in-process test server
|
||||
- Add comprehensive documentation
|
||||
|
||||
Generated by Mistral Vibe.
|
||||
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
|
||||
```
|
||||
|
||||
**Complex commit:**
|
||||
```
|
||||
🧪 test: add comprehensive BDD test suite
|
||||
|
||||
- Implement greet service scenarios
|
||||
- Add health endpoint validation
|
||||
- Create test server on port 9191
|
||||
- Ensure no undefined/pending steps
|
||||
|
||||
Resolves: #42
|
||||
Ref: AGENTS.md
|
||||
Generated by Mistral Vibe.
|
||||
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
|
||||
```
|
||||
|
||||
## Validation
|
||||
|
||||
### Check Commit Message Format
|
||||
```bash
|
||||
# Verify gitmoji is present
|
||||
echo "$commit_message" | grep -E "^[[:space:]]*[🎨✨🐛📝🔧♻️🚀🔒📦🔥🐧🍎🪟🤖🧪📈🌐⚡]"
|
||||
|
||||
# Verify type: description format
|
||||
echo "$commit_message" | grep -E "^[🎨✨🐛📝🔧♻️🚀🔒📦🔥🐧🍎🪟🤖🧪📈🌐⚡][[:space:]]+[a-z_]+:"
|
||||
```
|
||||
|
||||
### Common Validation Issues
|
||||
|
||||
| Issue | Cause | Solution |
|
||||
|-------|-------|----------|
|
||||
| Missing gitmoji | No emoji at start | Add appropriate gitmoji from reference |
|
||||
| Wrong type | Type doesn't match emoji | Use correct type from reference table |
|
||||
| Missing colon | No colon after type | Add colon: `feat:` not `feat` |
|
||||
| Long first line | First line > 50 chars | Keep first line concise, add details in body |
|
||||
|
||||
## References
|
||||
|
||||
- [Gitmoji Official Site](https://gitmoji.dev)
|
||||
- [Common Gitmoji Reference in AGENTS.md](#common-gitmoji-reference)
|
||||
- [Conventional Commits](https://www.conventionalcommits.org/)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Finding the Right Gitmoji
|
||||
```bash
|
||||
# Search for appropriate gitmoji
|
||||
grep "feature\|new" .vibe/skills/commit_message/SKILL.md
|
||||
# Result: ✨ :sparkles: feat - New feature
|
||||
```
|
||||
|
||||
### Commit Message Too Long
|
||||
```bash
|
||||
# Split into concise first line + detailed body
|
||||
git commit -m "✨ feat: add BDD framework" -m "- Implement Godog testing" -m "- Add greet/health features" -m "- Create test server"
|
||||
```
|
||||
|
||||
### Multiple Changes in One Commit
|
||||
```bash
|
||||
# Use comprehensive description
|
||||
git commit -m "♻️ refactor: improve BDD implementation" -m "- Update step patterns to match Godog exactly" -m "- Add JSON response validation" -m "- Implement server verification" -m "- Update all templates and documentation"
|
||||
```
|
||||
|
||||
## Assets
|
||||
|
||||
- **gitmoji-cheatsheet.md**: Quick reference for common gitmoji
|
||||
- **commit-template.txt**: Git commit message template
|
||||
- **validate-commit.sh**: Commit message validation script
|
||||
25
.vibe/skills/commit_message/assets/commit-template.txt
Normal file
25
.vibe/skills/commit_message/assets/commit-template.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
# Commit Message Template
|
||||
|
||||
# Type: Choose one gitmoji from the reference
|
||||
# ✨ :sparkles: feat - New feature
|
||||
# 🐛 :bug: fix - Bug fix
|
||||
# 📝 :memo: docs - Documentation
|
||||
# ♻️ :recycle: refactor - Code refactoring
|
||||
# 🧪 :test_tube: test - Tests
|
||||
# 🔧 :wrench: chore - Configuration
|
||||
|
||||
# Format: <gitmoji> <type>: <description>
|
||||
# Example: ✨ feat: implement BDD testing framework
|
||||
|
||||
# First line (50 chars max):
|
||||
|
||||
# Body (optional - explain what and why, not how):
|
||||
# - Change 1
|
||||
# - Change 2
|
||||
# - Change 3
|
||||
|
||||
# Footer (optional - references, breaking changes):
|
||||
# Resolves: #<issue>
|
||||
# Breaking: <description>
|
||||
# Generated by Mistral Vibe.
|
||||
# Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
|
||||
41
.vibe/skills/commit_message/assets/gitmoji-cheatsheet.md
Normal file
41
.vibe/skills/commit_message/assets/gitmoji-cheatsheet.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Gitmoji Cheatsheet
|
||||
|
||||
## Quick Reference
|
||||
|
||||
### Most Common
|
||||
- ✨ `:sparkles:` - New feature
|
||||
- 🐛 `:bug:` - Bug fix
|
||||
- 📝 `:memo:` - Documentation
|
||||
- ♻️ `:recycle:` - Refactoring
|
||||
- 🧪 `:test_tube:` - Tests
|
||||
- 🔧 `:wrench:` - Configuration
|
||||
|
||||
### All Gitmoji
|
||||
|
||||
| Emoji | Code | Type | Description |
|
||||
|-------|------|------|-------------|
|
||||
| ✨ | `:sparkles:` | feat | New feature |
|
||||
| 🐛 | `:bug:` | fix | Bug fix |
|
||||
| 📝 | `:memo:` | docs | Documentation |
|
||||
| 🎨 | `:art:` | style | Code formatting |
|
||||
| 🔧 | `:wrench:` | chore | Build/config changes |
|
||||
| ♻️ | `:recycle:` | refactor | Code refactoring |
|
||||
| 🚀 | `:rocket:` | perf | Performance improvements |
|
||||
| 🔒 | `:lock:` | security | Security fixes |
|
||||
| 📦 | `:package:` | dependencies | Dependency changes |
|
||||
| 🔥 | `:fire:` | remove | Remove code/files |
|
||||
| 🐧 | `:penguin:` | linux | Linux-specific changes |
|
||||
| 🍎 | `:apple:` | macos | macOS-specific changes |
|
||||
| 🪟 | `:window:` | windows | Windows-specific changes |
|
||||
| 🤖 | `:robot:` | ci | CI/CD changes |
|
||||
| 🧪 | `:test_tube:` | test | Tests |
|
||||
| 📈 | `:chart_with_upwards_trend:` | analytics | Analytics/SEO |
|
||||
| 🌐 | `:globe_with_meridians:` | i18n | Internationalization |
|
||||
| ⚡ | `:zap:` | performance | Performance improvements |
|
||||
|
||||
## Usage Tips
|
||||
|
||||
1. **Keep it simple**: Use the most specific gitmoji that fits
|
||||
2. **Be consistent**: Use the same gitmoji for similar changes
|
||||
3. **First line only**: Gitmoji goes in the first line of commit message
|
||||
4. **One gitmoji per commit**: Focus on the primary change type
|
||||
67
.vibe/skills/commit_message/scripts/validate-commit.sh
Executable file
67
.vibe/skills/commit_message/scripts/validate-commit.sh
Executable file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Commit message validation script
|
||||
# Validates that commit messages follow the Gitmoji convention
|
||||
|
||||
set -e
|
||||
|
||||
# Check if commit message file is provided
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 <commit-message-file>"
|
||||
echo "Example: $0 .git/COMMIT_EDITMSG"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
COMMIT_MSG_FILE="$1"
|
||||
|
||||
# Check if file exists
|
||||
if [ ! -f "$COMMIT_MSG_FILE" ]; then
|
||||
echo "Error: File $COMMIT_MSG_FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Read first line of commit message
|
||||
FIRST_LINE=$(head -n 1 "$COMMIT_MSG_FILE")
|
||||
|
||||
# Gitmoji pattern - check for any gitmoji at the start
|
||||
GITMOJI_PATTERN='^[[:space:]]*[🎨✨🐛📝🔧♻️🚀🔒📦🔥🐧🍎🪟🤖🧪📈🌐⚡]'
|
||||
|
||||
# Simpler validation - check for emoji followed by type:description
|
||||
# This avoids complex regex issues with emoji characters
|
||||
|
||||
echo "Validating commit message: $FIRST_LINE"
|
||||
|
||||
# Check for gitmoji (any emoji character at start)
|
||||
if ! echo "$FIRST_LINE" | grep -q '^[[:space:]]*[^[:alnum:]]'; then
|
||||
echo "❌ Error: Missing gitmoji at start of commit message"
|
||||
echo " Expected: ✨ 🐛 📝 ♻️ 🧪 🔧 etc."
|
||||
echo " Got: $FIRST_LINE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for type:description format (emoji followed by word and colon)
|
||||
if ! echo "$FIRST_LINE" | grep -qE '^[[:space:]]*[^[:alnum:]][[:space:]]+[a-z_]+:'; then
|
||||
echo "❌ Error: Invalid commit message format"
|
||||
echo " Expected: <gitmoji> <type>: <description>"
|
||||
echo " Example: ✨ feat: add new feature"
|
||||
echo " Got: $FIRST_LINE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check first line length (should be < 50 chars)
|
||||
FIRST_LINE_LENGTH=${#FIRST_LINE}
|
||||
if [ $FIRST_LINE_LENGTH -gt 50 ]; then
|
||||
echo "⚠️ Warning: First line is $FIRST_LINE_LENGTH characters (recommended max: 50)"
|
||||
echo " Consider: '$FIRST_LINE'"
|
||||
fi
|
||||
|
||||
# Extract gitmoji and type (simplified to avoid emoji regex issues)
|
||||
GITMOJI=$(echo "$FIRST_LINE" | grep -o "^[^[:alnum:]]")
|
||||
TYPE=$(echo "$FIRST_LINE" | sed -E 's/^[^[:alnum:]][[:space:]]*([a-z_]+):.*/\1/')
|
||||
|
||||
echo "✅ Valid commit message format"
|
||||
echo " Gitmoji: $GITMOJI"
|
||||
echo " Type: $TYPE"
|
||||
echo " Description: $(echo "$FIRST_LINE" | sed 's/^[^[:alnum:]][[:space:]]*[a-z_]+: //')"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user