Thanks for your interest in contributing to ralph-starter! This document covers the basics to get you started.
- Documentation
- Developer Extension Guide - For creating custom sources, agents, and more
- Issues
- Discussions
# Clone the repo
git clone https://github.com/multivmlabs/ralph-starter.git
cd ralph-starter
# Install dependencies
pnpm install
# Build
pnpm build
# Link for local testing
pnpm link --global
ralph-starter --versionralph-starter/
├── src/
│ ├── cli.ts # CLI entry point
│ ├── index.ts # Public API exports
│ ├── commands/ # CLI commands (run, init, plan, etc.)
│ ├── sources/ # Input source system
│ │ ├── builtin/ # File, URL, PDF sources
│ │ └── integrations/ # GitHub, Linear, Notion, Figma
│ ├── wizard/ # Interactive wizard & idea mode
│ ├── loop/ # Autonomous loop engine
│ ├── mcp/ # MCP server implementation
│ └── automation/ # Git automation
├── docs/ # Docusaurus documentation
└── templates/ # Project templates
# Type check
pnpm typecheck
# Lint
pnpm lint
# Build (includes type checking)
pnpm buildFollow the branch naming convention:
git checkout -b feature/my-feature # New features
git checkout -b fix/my-fix # Bug fixes
git checkout -b staging/v0.2.0 # Staging branches (use target version)
git checkout -b release/v0.2.0 # Release branches (automated)Branch naming rules:
feature/<name>— New featuresfix/<name>— Bug fixesdocs/<name>— Documentation changeschore/<name>— Maintenance tasksstaging/v<version>— Pre-release staging (must use target semver)release/v<version>— Release branches (created by CI)
- Keep changes focused - one feature or fix per PR
- Follow existing code style
- Add types for new code
- Update docs if you add/change features (see Documentation Requirements below)
Every code change that affects user-facing behavior MUST include documentation updates.
- New CLI flags or options
- New commands
- Changed behavior
- New features
- New integrations
Before submitting a PR, ensure:
- README.md updated (if adding flags/features)
- docs/docs/cli/*.md updated (if changing CLI)
- docs/docs/sources/*.md updated (if changing sources)
- CHANGELOG.md updated (under
[Unreleased])
| Change Type | Files to Update |
|---|---|
| New CLI flag | README.md, docs/docs/cli/run.md |
| New source | docs/docs/sources/, README.md integrations table |
| New command | README.md commands table, new file in docs/docs/cli/ |
| Bug fix | CHANGELOG.md only |
pnpm build
ralph-starter --helpgit commit -m "feat: add trello source integration"
git commit -m "fix: handle empty API responses"
git commit -m "docs: update installation guide"
git commit -m "refactor: extract validation logic"Prefixes:
feat:- New featurefix:- Bug fixdocs:- Documentation onlyrefactor:- Code change that doesn't fix a bug or add a featuretest:- Adding testschore:- Maintenance tasks
- Fill out the PR template
- Link any related issues
- Wait for review
See the extension guide for a complete walkthrough.
Quick overview:
- Create
src/sources/integrations/mysource.ts - Implement the
InputSourceinterface - Register in
src/sources/index.ts - Add env var mapping in
src/sources/config.ts - Add documentation in
docs/docs/sources/
- Add detection logic in
src/loop/agents.ts - Test that the agent works with the loop
- Update docs
Docs live in docs/ and use Docusaurus.
cd docs
pnpm install
pnpm start # Development server at localhost:3000- TypeScript with strict mode
- ES modules (
.jsextensions in imports) - Async/await over raw promises
- Descriptive variable names
- JSDoc comments for public APIs
- Open a Discussion for questions
- Open an Issue for bugs or feature requests
By contributing, you agree that your contributions will be licensed under the MIT License.