Skip to main content
Thank you for your interest in contributing to Get Shit Done! This guide covers development setup, testing, and contribution guidelines.

GitHub Repository

Main repository with source code

Report Issues

Submit bug reports and feature requests

Discussions

Ask questions and share ideas

Discord Community

Join the community for real-time help

Development Setup

Prerequisites

  • Node.js 16+ (LTS recommended)
  • Git
  • Claude Code, OpenCode, Gemini CLI, or Codex installed
  • Basic familiarity with shell scripting and JavaScript

Clone and Install

Local Testing

Install GSD from your local repository:
This installs from your working directory instead of the npm package, allowing you to test modifications immediately.

Verify Installation


Project Structure

Key Components


Testing

Run Test Suite

Test Coverage

GSD enforces 70% line coverage via CI. The test suite includes:
  • Core utilities (config, state, roadmap parsing)
  • Command dispatch and routing
  • Frontmatter parsing and validation
  • Phase/milestone management
  • Windows/Unix path handling
Coverage report:

Manual Testing

  1. Create a test project:
  2. Install your local GSD:
  3. Run a full workflow:
  4. Verify outputs:
    • Check .planning/ files
    • Review git commits
    • Test generated code

Contribution Guidelines

Reporting Issues

Before submitting:
  • Search existing issues to avoid duplicates
  • Verify you’re on the latest version: npx get-shit-done-cc@latest
Include in your report:
  • GSD version (check VERSION file in .claude/commands/gsd/ or similar)
  • Runtime (Claude Code, OpenCode, Gemini CLI, Codex)
  • Operating system (Mac, Linux, Windows, WSL)
  • Command that failed (e.g., /gsd:execute-phase 1)
  • Error messages or unexpected behavior
  • Steps to reproduce
Use issue templates:

Submitting Pull Requests

All contributions must include tests and maintain 70% coverage.
Process:
  1. Fork and clone:
  2. Make your changes:
    • Follow existing code style
    • Add tests for new functionality
    • Update documentation if needed
  3. Test thoroughly:
  4. Commit with clear messages:
    Commit message format:
    • feat: New feature
    • fix: Bug fix
    • docs: Documentation changes
    • test: Test additions/changes
    • refactor: Code refactoring
    • chore: Maintenance tasks
  5. Push and create PR:
    Open a pull request on GitHub with:
    • Clear description of changes
    • Link to related issues
    • Screenshots/examples if applicable

Code Style

  • Markdown commands/workflows: Use consistent heading levels, clear step numbering
  • JavaScript/Node.js: Follow existing patterns in lib/gsd-tools.cjs and hooks
  • XML prompts: Follow existing agent patterns with clear tags and structure
  • Comments: Explain why, not what

Testing New Agents

When adding a new agent:
  1. Create agent directory:
  2. Add agent file:
    • Include frontmatter (name, role, allowed-tools, skills)
    • Follow thin orchestrator pattern
    • Add comprehensive methodology section
  3. Add tests:
  4. Test spawn:
    • Create a workflow that spawns your agent
    • Verify context loading and output format

Architecture Guidelines

Thin Orchestrator Pattern

GSD follows a consistent pattern: Commands are thin orchestrators that:
  • Parse arguments
  • Load necessary context
  • Spawn specialized agents
  • Collect results
  • Update state files
  • Route to next step
Agents are self-contained with:
  • Complete methodology
  • Domain expertise
  • No external dependencies
  • Fresh context per spawn
Example structure:
Process results:
  1. Validate output
  2. Update STATE.md
  3. Commit if needed
Route next step:
  • If X, suggest /gsd:next-command

Documentation

When adding features:
  • README.md: Update if it affects core workflow
  • CHANGELOG.md: Add entry following Keep a Changelog format
  • USER-GUIDE.md: Add to command reference and examples
  • Inline docs: Update command help text
Documentation location:
  • Core docs: README.md, docs/USER-GUIDE.md
  • Reference: references/ (debugging, checkpoints, etc.)
  • Templates: templates/ (document templates)

Release Process

Releases are managed by the maintainer team. Contributors should focus on PRs.
For maintainers:
  1. Update CHANGELOG.md:
    • Add version and date
    • List changes by category (Added, Changed, Fixed, Removed)
  2. Bump version in package.json:
  3. Tag release:
  4. Publish to npm:
  5. Create GitHub release:
    • Copy changelog section
    • Attach any relevant files

Community Ports

Interested in porting GSD to a new runtime? Requirements:
  • Runtime must support slash commands or equivalent
  • Ability to spawn subagents with fresh context
  • File system access (Read, Write, Edit)
  • Git integration
  • Bash/shell command execution
Examples:
  • gsd-opencode (now officially supported)
  • gsd-gemini (archived, now officially supported)
Contact:

License

GSD is released under the MIT License. See LICENSE for details. By contributing, you agree that your contributions will be licensed under the same MIT License.

Recognition

Contributors are recognized in:
  • GitHub Contributors
  • Release notes for significant contributions
  • CHANGELOG.md for bug fixes and features

Questions?

Discord

Real-time help from the community

GitHub Discussions

Ask questions and discuss ideas

X (Twitter)

Follow for updates and announcements

Email

Contact the maintainer team