Thank you for your interest in contributing to Geeto! This guide covers everything you need to get started.
- Bun ≥ 1.0
- Git ≥ 2.0
- GitHub CLI (for GitHub features)
- GitLab CLI (for GitLab features, optional)
git clone https://github.com/rust142/geeto.git
cd geeto
bun install
bun run build- Fork the repository and clone your fork
- Create a branch following the naming convention (see below)
- Make changes with clear, focused commits
- Test locally:
bun run dev - Run checks:
bun run check:fast && bun run check:full - Submit a PR to the
mainbranch
All branches must use the dev#<description> format:
- Lowercase only, hyphens for spaces
- 3-5 words maximum, descriptive and clear
- Configure your preferred prefix format in Settings
| Example | Status |
|---|---|
dev#add-trello-integration |
Good |
dev#fix-commit-generation |
Good |
feature/trello |
Bad (wrong prefix) |
fix-bug |
Bad (no prefix, vague) |
Follow Conventional Commits:
<type>: <description>
[optional body]
| Type | Description |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
docs: |
Documentation changes |
refactor: |
Code refactoring |
test: |
Adding or updating tests |
chore: |
Build, tooling, or config changes |
perf: |
Performance improvements |
style: |
Code style (formatting, semicolons, etc.) |
- Strict type safety — no
anyunless absolutely necessary - Export interfaces and types properly
- Use meaningful, descriptive variable names
- Follow existing patterns in similar files
- Run
bun run formatbefore committing - Follow existing code patterns exactly
- Keep functions focused and small
- Add JSDoc comments for public functions
bun run check:fast # Quick lint (ESLint + Prettier)
bun run check:full # Full typecheck + lint + spell check
bun run typecheck # TypeScript type checking only
bun run lint # ESLint only
bun run format # Format with Prettier- One feature per PR — keep PRs focused and reviewable
- Update documentation if your changes affect user-facing behavior
- Pass all checks — CI must be green before merging
- Respond to feedback promptly
src/
├── api/ # AI provider SDKs (Gemini, Copilot, OpenRouter) & Trello API
├── cli/ # Interactive CLI components (select menu, input, prompts)
├── core/ # Setup flows, constants, menu definitions
├── types/ # TypeScript interfaces and type definitions
├── utils/ # Utilities (git commands, config, logging, colors, exec)
└── workflows/ # Main workflow logic (commit, branch, release, merge, etc.)
| Directory | Key Files |
|---|---|
api/ |
gemini-sdk.ts, copilot-sdk.ts, openrouter-sdk.ts, trello.ts |
cli/ |
input.ts (prompts), menu.ts (select menus) |
core/ |
setup.ts (provider setup), constants.ts |
utils/ |
git.ts, git-ai.ts, config.ts, state.ts, exec.ts |
workflows/ |
commit.ts, branch.ts, release.ts, merge.ts, repo-settings.ts |
- Create
src/api/<provider>-sdk.tswith the SDK implementation - Create
src/api/<provider>.tsas a wrapper with standard exports - Add provider to
src/utils/git-ai.ts(model selection, text generation) - Add setup flow in
src/core/<provider>-setup.ts - Register in
src/core/setup.tsandsrc/index.ts
- Create workflow in
src/workflows/<command>.ts - Register flag in
src/index.ts(short + long form) - Add to help text in
src/index.ts - Update README.md CLI Reference table
- Open an issue
- Check existing issues
- Read the README
By contributing, you agree that your contributions will be licensed under the MIT License.