- One logical change per commit - Each commit should do exactly one thing
- If a task feels too large, break it into subtasks
- Prefer multiple small commits over one large commit
- Run feedback loops after each change, not at the end
Quality over speed. Small steps compound into big progress.
When working on tasks, prioritize in this order:
- Architectural decisions and core abstractions - Get the foundation right first
- Integration points between modules - Ensure components connect properly
- Unknown unknowns and spike work - De-risk early with exploratory work
- Standard features and implementation - Build on solid foundations
- Polish, cleanup, and quick wins - Save easy wins for later
Fail fast on risky work. Save easy wins for later.
After writing any code, ask yourself:
"Would a senior engineer say this is overcomplicated?"
If yes, simplify.
- Only make changes that are directly requested or clearly necessary
- Don't add features, refactor code, or make "improvements" beyond what was asked
- A bug fix doesn't need surrounding code cleaned up
- A simple feature doesn't need extra configurability
- Don't add comments or type annotations to unchanged code
- Only add comments where the logic isn't self-evident
- Don't fill files just for the sake of it
- Don't leave dead code - if it's unused, delete it completely
- No backwards-compatibility hacks like renaming unused
_vars - No re-exporting types for removed code
- No
// removedcomments for deleted code - Be organized, concise, and clean
This codebase will outlive you. Every shortcut you take becomes someone else's burden. Every hack compounds into technical debt that slows the whole team down.
You are not just writing code. You are shaping the future of this project. The patterns you establish will be copied. The corners you cut will be cut again.
Fight entropy. Leave the codebase better than you found it.
# Clone the repository
git clone https://github.com/michaelshimeles/ralphy.git
cd ralphy/cli
# Install dependencies
bun install
# Run linting
bun run check
# Run tests
bun test
# Build
bun run build- Runtime: Bun (Node.js 18+ fallback)
- Language: TypeScript (strict mode)
- Linting/Formatting: Biome
- CLI Framework: Commander
Code style is enforced by Biome. Run bun run check before committing.
- Indentation: Tabs
- Line width: 100 characters
- Line endings: LF
- Imports: Auto-organized by Biome
- One logical change per commit
- Write descriptive commit messages
- Format:
type: brief description
Types:
feat:New featurefix:Bug fixrefactor:Code restructuring (no behavior change)docs:Documentationtest:Test additions/changeschore:Maintenance tasks
- Create a feature branch from
main - Make your changes following the guidelines above
- Ensure all tests pass:
bun test - Ensure linting passes:
bun run check - Submit a PR with a clear description of changes
cli/
├── src/
│ ├── cli/ # CLI argument parsing and commands
│ ├── config/ # Configuration management
│ ├── engines/ # AI engine integrations (Claude, Cursor, etc.)
│ ├── execution/ # Task execution orchestration
│ ├── git/ # Git operations (branches, PRs, worktrees)
│ ├── tasks/ # Task source handlers (Markdown, YAML, JSON)
│ ├── notifications/ # Webhook notifications
│ ├── telemetry/ # Usage analytics
│ └── ui/ # User interface/logging
Join our Discord for questions and discussions.