Thanks for your interest in contributing to GitClaw! Here's how to get started.
- Fork the repository
- Clone your fork:
git clone https://github.com/<your-username>/gitclaw.git cd gitclaw
- Install dependencies:
npm install
- Build the project:
npm run build
- Run tests:
npm test
- Create a feature branch from
main:git checkout -b feat/my-feature
- Make your changes in
src/ - Run
npm run buildto verify compilation - Run
npm testto ensure tests pass - Commit your changes with a clear message
- Push and open a pull request
src/
├── index.ts # CLI entry point
├── sdk.ts # Core SDK (query function)
├── exports.ts # Public API surface
├── loader.ts # Agent config loader
├── tools/ # Built-in tools (cli, read, write, memory)
├── voice/ # Voice mode (OpenAI Realtime adapter)
├── hooks.ts # Script-based hooks
├── sdk-hooks.ts # Programmatic SDK hooks
├── skills.ts # Skill expansion
├── workflows.ts # Workflow metadata
├── agents.ts # Sub-agent metadata
├── compliance.ts # Compliance validation
└── audit.ts # Audit logging
- TypeScript — all code is written in strict TypeScript
- ESM — the project uses ES modules (
"type": "module") - Keep it simple — avoid over-engineering; minimal dependencies
- Test your changes — add or update tests in
test/when applicable - One concern per PR — keep pull requests focused and reviewable
Use clear, descriptive commit messages:
Add voice mode with OpenAI Realtime adapterFix memory tool path resolution on WindowsUpdate SDK query to support abort signals
- Search existing issues before opening a new one
- Include reproduction steps, expected vs actual behavior, and your environment (Node version, OS)
Be respectful and constructive. We're all here to build something useful together.
By contributing, you agree that your contributions will be licensed under the MIT License.