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:
2026-04-04 19:05:22 +02:00
parent 8df234f1f5
commit e9f3b63406
25 changed files with 6318 additions and 0 deletions

View 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

View 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>

View 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

View 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