Files
msd-core/CONTRIBUTING.md
Lex Christopherson a3a16be296 feat: add CI/CD and release automation
- 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>
2026-01-22 10:37:22 -06:00

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

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

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