Thank you for your interest in contributing to Coach Claude! This document provides guidelines and instructions for contributing.
Be respectful, inclusive, and constructive in all interactions.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- System information (OS, Python version, Node version)
- Relevant logs
- Check existing Issues for similar suggestions
- Create a new issue with:
- Clear description of the feature
- Use case and motivation
- Proposed implementation (optional)
-
Fork the repository
-
Clone your fork
git clone https://github.com/YOUR-USERNAME/coach-claude.git cd coach-claude -
Create a branch
git checkout -b feature/your-feature-name
-
Set up development environment
Python MCP server:
cd packages/mcp-server pip install -e ".[dev]"
Node.js CLI:
cd packages/cli npm install npm link -
Make your changes
- Follow existing code style
- Add tests for new functionality
- Update documentation as needed
-
Run tests
Python:
cd packages/mcp-server pytest black src/ ruff check src/Node.js:
cd packages/cli npm test npm run build
-
Commit your changes
git add . git commit -m "Description of changes"
Commit message format:
- Use present tense ("Add feature" not "Added feature")
- First line: brief summary (50 chars or less)
- Blank line, then detailed description if needed
-
Push to your fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Select your branch
- Provide clear description of changes
- Link related issues
Python:
- Use Black for formatting (line length: 100)
- Use Ruff for linting
- Type hints for function signatures
- Docstrings for modules, classes, and functions
TypeScript:
- Use Prettier for formatting
- Follow existing conventions
- Type everything (no
anyunless necessary) - JSDoc comments for exported functions
Python:
- Use pytest
- Aim for 80%+ coverage
- Test both success and error cases
- Mock external dependencies
TypeScript:
- Use Jest
- Test all commands
- Mock database operations
- Test CLI argument parsing
- Update README.md if user-facing changes
- Update relevant docs in
docs/ - Add JSDoc/docstrings for new code
- Include examples in documentation
Format: type: description
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding/updating testschore: Maintenance tasks
Examples:
feat: add weekly stats viewfix: handle database locked errordocs: update installation guide
coach-claude/
├── packages/
│ ├── mcp-server/ # Python MCP server
│ │ ├── src/
│ │ │ └── coach_claude/
│ │ │ ├── server.py
│ │ │ ├── database.py
│ │ │ ├── models.py
│ │ │ └── config.py
│ │ └── tests/
│ │
│ └── cli/ # Node.js CLI tool
│ ├── src/
│ │ ├── index.ts
│ │ ├── commands/
│ │ ├── db/
│ │ └── config/
│ └── tests/
│
├── skills/ # Claude skill
│ └── coach-claude/
│ └── SKILL.md
│
└── docs/ # Documentation
├── installation.md
├── configuration.md
└── architecture.md
cd packages/mcp-server
python -m coach_claude.server & # Start in background
# Test with Claude Code or MCP inspectorcd packages/cli
npm link # Link for testing
coach-claude water 16
coach-claude stats- Copy skill to
~/.claude/skills/coach-claude/ - Start Claude Code
- Test in a conversation
(For maintainers)
- Update version in
package.jsonandpyproject.toml - Update CHANGELOG.md
- Create git tag:
git tag v1.0.0 - Push tag:
git push --tags - Publish to PyPI:
twine upload dist/* - Publish to npm:
npm publish - Create GitHub release
- Open an issue for questions
- Email: hello@clutch.engineering
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.