- 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>
161 lines
3.8 KiB
Markdown
161 lines
3.8 KiB
Markdown
# 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)
|
|
|
|
```bash
|
|
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 capability
|
|
- `fix/description` — Bug fix
|
|
- `docs/description` — Documentation only
|
|
- `refactor/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:
|
|
|
|
```bash
|
|
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:
|
|
1. Changelog generation from commits
|
|
2. Version bump
|
|
3. 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
|
|
|
|
```bash
|
|
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
|