- Add GitHub Actions CI for cross-platform testing (ubuntu/windows/macos × node 18/20/22) - Add release workflow that auto-creates GitHub Releases and publishes to npm on tag push - Add CONTRIBUTING.md with branching strategy (maintainers direct commit, contributors PR) - Add MAINTAINERS.md with release workflows and recovery procedures - Add PR template for contributors Closes #221 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.8 KiB
Contributing to Get Shit Done
No enterprise theater. Ship useful code.
Philosophy
GSD optimizes for solo developer + Claude workflow. The release process follows the same principle: complexity lives in automation, not your workflow.
Branch Strategy
main ════════════════════════════════════════════►
▲ ▲ ▲ ▲
│ │ │ │
v1.9.0 v1.9.1 v1.10.0 v2.0.0
main
Production. Always installable via npx get-shit-done-cc.
- Must pass CI (catches Windows/cross-platform issues)
- Protected from force pushes
Who Can Commit Directly to Main
| Role | Direct commits | Branch + PR |
|---|---|---|
| Maintainers | Any change | Never required |
| Contributors | Typo/doc fixes only | All code changes |
Why no PRs for maintainers? Self-reviewed PRs are ceremony without value. CI still runs on push. For risky features, use pre-release tags instead.
Feature Branches (Contributors)
git checkout -b feat/model-profiles
# or fix/windows-paths, docs/examples
git push origin feat/model-profiles
# Open PR, get review, merge
Branch naming:
feat/description— New capabilityfix/description— Bug fixdocs/description— Documentation onlyrefactor/description— Internal changes
Commits
Use conventional commits.
feat(checkpoints): add rollback capability
fix(install): use absolute paths on Windows (#207)
docs(readme): update installation instructions
refactor(orchestrator): extract context loading
| Type | Use |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation |
refactor |
Code change without behavior change |
chore |
Maintenance, dependencies |
revert |
Undoing previous commit |
Releases
Tag Strategy
| Change Type | Tag? | Version Bump |
|---|---|---|
| Breaking change | Yes | MAJOR (2.0.0) |
| New feature | Yes | MINOR (1.10.0) |
| Bug fix | Batch weekly | PATCH (1.9.x) |
| Documentation | No | — |
Pre-release Tags for Risky Features
For experimental features, use pre-release tags:
npm version prerelease --preid=alpha # v1.10.0-alpha.0
git push origin main --tags
Users opt-in: npm install get-shit-done-cc@1.10.0-alpha.0
If it doesn't work out, delete the tag. No messy public revert.
Creating a Release
Run /gsd-publish-version which walks you through:
- Changelog generation from commits
- Version bump
- Push to GitHub
GitHub Actions automatically:
- Creates the GitHub Release from CHANGELOG.md
- Publishes to npm
Pull Request Guidelines (Contributors)
Title
Use conventional commit format:
feat(checkpoints): add rollback capability
fix(install): use absolute paths on Windows
Description
- What: One sentence describing the change
- Why: One sentence explaining the need
- Testing: How you verified it works
- Breaking Changes: List any, or "None"
Checklist
- Follows GSD style (no enterprise patterns)
- Updates CHANGELOG.md for user-facing changes
- No unnecessary dependencies
- Works on Windows (test backslash paths)
What NOT to Do
Enterprise patterns (banned):
- Story points, sprint ceremonies
- RACI matrices, release committees
- Multi-week stabilization branches
Vague commits (banned):
# Bad
"Improve performance"
"Fix bugs"
# Good
"Reduce orchestrator context load from 12KB to 4KB"
"Fix Windows path handling in hook commands (#207)"
Development Setup
git clone https://github.com/glittercowboy/get-shit-done.git
cd get-shit-done
npm install
npm link
npx get-shit-done-cc --version
Getting Help
- Issues: Bug reports, feature requests
- Discussions: Questions, ideas