feat: add CHANGELOG.md and project-local publish-version command

CHANGELOG.md covers v0.1.6 through v0.3.3 with curated entries.
Publish command uses manual npm publish instead of GitHub Action.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lex Christopherson 2026-03-11 16:26:07 -06:00
parent 88781cb722
commit f8052870df
2 changed files with 342 additions and 0 deletions

View file

@ -0,0 +1,223 @@
---
description: Publish GSD updates to npm and GitHub
---
Publish GSD updates with automatic changelog generation.
<process>
<step name="check_uncommitted">
## 1. Check for Uncommitted Changes
```bash
git status --short
```
If uncommitted changes exist:
- Ask: "Uncommitted changes detected. What commit message should I use?"
- Commit with provided message
- Continue to next step
</step>
<step name="get_commits_since_tag">
## 2. Get Commits Since Last Version
```bash
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
git log ${LAST_TAG}..HEAD --oneline --no-merges
else
echo "No previous tags found"
fi
```
Capture the commit list for changelog generation.
</step>
<step name="check_docs">
## 3. Check Documentation Currency
Review the commits captured above and check if README.md needs updates.
**Check for commits that require README updates:**
- New commands or features
- Changed command behavior or flags
- New configuration options
- New workflows or processes
- Deprecations or removals
**Review README.md against commits:**
1. Read README.md
2. For each significant commit, verify the feature/change is documented
3. Check command tables match actual commands
4. Check configuration tables match actual options
**If updates needed:**
1. Draft specific README changes
2. Present changes for approval
3. Apply approved changes
4. Commit: `git add README.md && git commit -m "docs: update README for vX.Y.Z"`
**If no updates needed:**
- State: "README is current with all changes"
- Continue to next step
</step>
<step name="generate_changelog_draft">
## 4. Generate Changelog Entry Draft
Analyze the commits and draft a curated changelog entry.
**Grouping rules:**
- **Added** — New features, commands, capabilities
- **Changed** — Modifications to existing behavior
- **Fixed** — Bug fixes
- **Removed** — Deprecated/removed features
- **BREAKING:** prefix for breaking changes
**Writing rules:**
- Write human-readable descriptions, not raw commit messages
- Focus on user impact, not implementation details
- Group related commits into single entries
- Flag breaking changes prominently with **BREAKING:** prefix
**Example draft:**
```markdown
## [X.Y.Z] - YYYY-MM-DD
### Added
- New `/gsd:whats-new` command for version awareness
### Changed
- Improved parallel execution performance
### Fixed
- STATE.md progress bar calculation
### Removed
- **BREAKING:** Removed deprecated ISSUES.md system
```
Present the draft for review.
</step>
<step name="checkpoint_review" type="checkpoint:human-verify">
## 5. Review Changelog Draft
**Drafted changelog entry:**
[Show the generated draft]
**Verify:**
1. Categories are correct (Added/Changed/Fixed/Removed)
2. Descriptions are clear and user-focused
3. Breaking changes are marked with **BREAKING:** prefix
4. Nothing important is missing from commits
**Resume signal:** Type "approved" or provide edits
</step>
<step name="update_changelog">
## 6. Update CHANGELOG.md
After approval:
1. **Read current CHANGELOG.md**
2. **Insert new version section** after [Unreleased] header
3. **Update version links** at bottom:
- Add new version link: `[X.Y.Z]: https://github.com/gsd-build/gsd-2/releases/tag/vX.Y.Z`
- Update [Unreleased] comparison: `[Unreleased]: https://github.com/gsd-build/gsd-2/compare/vX.Y.Z...HEAD`
```bash
# Stage changelog
git add CHANGELOG.md
git commit -m "docs: update changelog for vX.Y.Z"
```
</step>
<step name="version_bump">
## 7. Bump Version
Ask which version bump type:
- `npm version patch` — Bug fixes (default)
- `npm version minor` — New features
- `npm version major` — Breaking changes
- `npm version prerelease --preid=alpha` — Experimental features
```bash
npm version patch # or minor/major/prerelease
```
This creates a version commit and tag.
</step>
<step name="push_and_publish">
## 8. Push and Publish
```bash
git push && git push --tags
```
Then publish to npm:
```bash
npm publish --access public
```
Verify the publish succeeded by checking the output for the package URL.
</step>
<step name="create_github_release">
## 9. Create GitHub Release
Create a GitHub Release from the tag.
```bash
gh release create vX.Y.Z --title "vX.Y.Z" --notes "[changelog content]" --latest
```
Use the approved changelog content as the release notes.
</step>
<step name="post_discord">
## 10. Post to Discord Changelog
Post the changelog entry to the GSD Discord community.
Use the Discord MCP server:
```
discord_execute("messages.send", {
"channel_id": "1464128246290579469",
"content": "**vX.Y.Z Released** \n\n[changelog content here]\n\nInstall/upgrade: `npx gsd-pi@latest`"
})
```
Format the message with:
- Version number as header
- The approved changelog content (Added/Changed/Fixed/Removed sections)
- Install command at the bottom
</step>
<step name="report">
## 11. Report Success
```
Published vX.Y.Z
- npm: https://www.npmjs.com/package/gsd-pi
- GitHub: https://github.com/gsd-build/gsd-2/releases/tag/vX.Y.Z
```
</step>
</process>
<success_criteria>
- README.md checked against commits and updated if needed
- Changelog entry drafted from commits
- User reviewed and approved entry
- CHANGELOG.md updated and committed
- Version bumped via npm version
- Pushed to GitHub with tags
- Published to npm via `npm publish`
- GitHub Release created with `gh release create`
- Changelog posted to Discord #changelog channel
</success_criteria>

119
CHANGELOG.md Normal file
View file

@ -0,0 +1,119 @@
# Changelog
All notable changes to GSD are documented in this file.
Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
## [0.3.3] - 2026-03-11
### Added
- `/gsd next` step mode — walk through units one at a time with a wizard between each
- `/gsd` bare command defaults to step mode
- `/exit` command to kill the GSD process immediately
- `/clear` as alias for `/new` (new session)
- MCPorter extension for lazy on-demand MCP server integration
- `/voice` extension for real-time speech-to-text
- Pi global install scripts
- Post-hook bookkeeping: auto-run doctor + rebuild STATE.md after each unit
### Changed
- Improved worktree merge, create, remove, and reload resilience
- Discuss prompt rewritten with reflection step and depth enforcement
### Fixed
- Idle watchdog false-firing on active agents — tasks >10min no longer get incorrectly skipped (#52)
- Browser screenshots constrained to 1568px max dimension (#56)
- Pi extensions loaded from `~/.pi/agent/extensions/` (#51)
### Removed
- `/gsd-run` command (replaced by `/gsd` and `/gsd next`)
## [0.3.1] - 2026-03-11
### Fixed
- Windows VT input restored after child processes exit (#41)
- Print/JSON mode in cli.js so subagents don't hang
- Discuss prompt loop prevention
- Managed tools bootstrap and gh auth
- Session list scoped to current working directory
- Bash/bg_shell hang and kill issues on Windows (#40)
- `/gsd-run` hardcoded `~/.pi/` path (#38)
- Windows backspace in masked input + custom browser path support (#36, #34)
### Changed
- Renamed "Get Stuff Done" to "Get Shit Done"
## [0.3.0] - 2026-03-11
### Added
- `/worktree` (`/wt`) — git worktree lifecycle management (#31)
- `/gsd migrate``.planning` to `.gsd` migration tool (#28)
### Fixed
- Skipped API keys now persist so wizard doesn't repeat on every launch (#27)
- Scoped models restored from settings on new session startup (#22)
- Startup fallback no longer overwrites user's default model with Sonnet (#29)
## [0.2.9] - 2026-03-11
### Fixed
- Idle recovery skips stuck units instead of silently stalling (#19)
- `pkg/package.json` version synced with pi-coding-agent to prevent false update banner
- Milestones with summary but no roadmap treated as complete (#13)
## [0.2.8] - 2026-03-11
### Added
- Mac-tools extension (macOS native automation)
## [0.2.6] - 2026-03-11
### Fixed
- Default model validated against full registry on every startup
## [0.2.5] - 2026-03-11
### Fixed
- Circular self-dependency removed, default model set to anthropic/claude-sonnet-4-6 with thinking off
## [0.2.4] - 2026-03-11
### Added
- Branded setup wizard UI with visual hierarchy, descriptions, and status feedback
- Branded banner on first launch
- Postinstall banner with version and next-step hint
### Fixed
- All `.pi/` paths updated to `.gsd/`
- Default model matching by `id.includes('sonnet')` for dated API IDs
- Circular gsd-pi self-dependency removed
- Pi SDK version check suppressed
- Selected options stay lit when notes field is focused
## [0.1.6] - 2026-03-11
### Added
- GitHub extension tool suite with confirmation gate
- Bundled skills: frontend-design, swiftui, debug-like-expert
- Skills trigger table in system prompt
- Resource loader syncs bundled skills to `~/.gsd/agent/skills/`
### Fixed
- `~/.gsd/agent/` paths in prompt templates instead of `~/.pi/agent/` (#10)
- Guard against re-injecting discuss prompt when session already in flight
### Changed
- License updated to MIT
[Unreleased]: https://github.com/gsd-build/gsd-2/compare/v0.3.3...HEAD
[0.3.3]: https://github.com/gsd-build/gsd-2/compare/v0.3.1...v0.3.3
[0.3.1]: https://github.com/gsd-build/gsd-2/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/gsd-build/gsd-2/compare/v0.2.9...v0.3.0
[0.2.9]: https://github.com/gsd-build/gsd-2/compare/v0.2.8...v0.2.9
[0.2.8]: https://github.com/gsd-build/gsd-2/compare/v0.2.6...v0.2.8
[0.2.6]: https://github.com/gsd-build/gsd-2/compare/v0.2.5...v0.2.6
[0.2.5]: https://github.com/gsd-build/gsd-2/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/gsd-build/gsd-2/compare/v0.1.6...v0.2.4
[0.1.6]: https://github.com/gsd-build/gsd-2/releases/tag/v0.1.6