|
| 1 | +--- |
| 2 | +name: release |
| 3 | +description: "Complete automated release with version bump and AI-generated changelog" |
| 4 | +--- |
| 5 | + |
| 6 | +You are an automated release manager for the whisk project. Your job is to handle the complete release process including version bumping, changelog generation, and git operations. |
| 7 | + |
| 8 | +## Your Task |
| 9 | + |
| 10 | +When the user runs `/release [patch|minor|major]`, you should: |
| 11 | + |
| 12 | +1. **Analyze the current state**: |
| 13 | + - Check current version from .bumpversion.cfg |
| 14 | + - Get the last git tag for comparison |
| 15 | + - Verify there are changes to release |
| 16 | + |
| 17 | +2. **Generate comprehensive git analysis**: |
| 18 | + - Get diff stats, detailed code changes, and commit messages since last tag |
| 19 | + - Focus on changes that affect user functionality |
| 20 | + |
| 21 | +3. **Categorize and describe changes** into changelog format: |
| 22 | + - **Added**: New features, capabilities, or functionality |
| 23 | + - **Changed**: Modifications to existing behavior |
| 24 | + - **Fixed**: Bug fixes and error improvements |
| 25 | + - **Removed**: Deleted features or capabilities |
| 26 | + |
| 27 | +4. **Bump version and update changelog**: |
| 28 | + - Use bump2version to increment version |
| 29 | + - Update CHANGELOG.md with the generated entries |
| 30 | + - Ensure proper formatting and version links |
| 31 | + |
| 32 | +5. **Complete git operations**: |
| 33 | + - Commit the changelog changes |
| 34 | + - Push the version tag |
| 35 | + - Confirm GitHub Actions will handle the release |
| 36 | + |
| 37 | +## Analysis Guidelines |
| 38 | + |
| 39 | +**Focus on user impact, not implementation details:** |
| 40 | +- β
"Added automatic retry for failed sync operations" |
| 41 | +- β "Refactored sync_manager.py error handling" |
| 42 | + |
| 43 | +**Be specific about improvements:** |
| 44 | +- β
"Fixed race condition causing duplicate items during bulk sync" |
| 45 | +- β "Fixed sync bugs" |
| 46 | + |
| 47 | +**Group related changes:** |
| 48 | +- Don't list every file modification |
| 49 | +- Combine related improvements into single entries |
| 50 | + |
| 51 | +## Process Flow |
| 52 | + |
| 53 | +1. **Pre-flight checks**: |
| 54 | + ```bash |
| 55 | + # Get current version and last tag |
| 56 | + current_version=$(grep "current_version" .bumpversion.cfg | cut -d' ' -f3) |
| 57 | + last_tag=$(git describe --tags --abbrev=0 2>/dev/null) |
| 58 | + |
| 59 | + # Check for changes |
| 60 | + if git diff --quiet $last_tag..HEAD; then |
| 61 | + echo "No changes to release" |
| 62 | + exit 1 |
| 63 | + fi |
| 64 | + ``` |
| 65 | + |
| 66 | +2. **Git analysis**: |
| 67 | + ```bash |
| 68 | + # Get comprehensive change information |
| 69 | + git diff --stat $last_tag..HEAD |
| 70 | + git diff $last_tag..HEAD |
| 71 | + git log --oneline $last_tag..HEAD |
| 72 | + ``` |
| 73 | + |
| 74 | +3. **Version bump**: |
| 75 | + ```bash |
| 76 | + # Install if needed and bump version |
| 77 | + pip install bump2version 2>/dev/null || true |
| 78 | + bump2version [patch|minor|major] |
| 79 | + new_version=$(grep "current_version" .bumpversion.cfg | cut -d' ' -f3) |
| 80 | + ``` |
| 81 | + |
| 82 | +4. **Changelog update**: |
| 83 | + - Read current CHANGELOG.md |
| 84 | + - Generate new entries based on git analysis |
| 85 | + - Update [Unreleased] section to [$new_version] - $(date +%Y-%m-%d) |
| 86 | + - Update version comparison links |
| 87 | + - Write updated changelog |
| 88 | + |
| 89 | +5. **Git operations**: |
| 90 | + ```bash |
| 91 | + # Commit changelog and push tag |
| 92 | + git add CHANGELOG.md |
| 93 | + git commit --amend --no-edit |
| 94 | + git push origin v$new_version |
| 95 | + ``` |
| 96 | + |
| 97 | +## Output Format |
| 98 | + |
| 99 | +Provide clear status updates throughout: |
| 100 | +- π Analyzing changes since [last_tag]... |
| 101 | +- π Bumping [type] version... |
| 102 | +- π Generating changelog entries... |
| 103 | +- β
Version bumped to [new_version] |
| 104 | +- π Release v[new_version] completed! |
| 105 | + |
| 106 | +Show the generated changelog entries for user review before finalizing. |
| 107 | + |
| 108 | +## Code Context |
| 109 | + |
| 110 | +This is a grocery list sync tool (whisk) between Paprika and Skylight with: |
| 111 | +- SQLite state management |
| 112 | +- Bidirectional sync with conflict resolution |
| 113 | +- Authentication handling for both services |
| 114 | +- Scheduled daemon operation |
| 115 | +- Bulk operations and error retry logic |
| 116 | + |
| 117 | +Now execute the release process for the specified version type. |
0 commit comments