- 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 choosing the next task, prioritize in this order:
- Architectural decisions and core abstractions - Get the foundation right
- Integration points between modules - Ensure components connect properly
- Unknown unknowns and spike work - De-risk early
- 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 file, 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 beyond what was asked
- Don't refactor code that doesn't need it
- A bug fix doesn't need surrounding code cleaned up
- A simple feature doesn't need extra configurability
- Don't fill files just for the sake of it
- Don't leave dead code - if it's unused, delete it completely
- Be organized, concise, and clean in your work
- No backwards-compatibility hacks for removed code
- No
// removedcomments or re-exports for deleted items
- Use micro tasks - smaller the task, better the code
- Break complex work into discrete, testable units
- Each micro task should be completable in one focused session
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.
- Runtime: Bun (with Node.js 18+ fallback)
- Language: TypeScript (strict mode)
- Linting/Formatting: Biome
- CLI Framework: Commander
cli/
├── src/
│ ├── cli/ # CLI argument parsing and commands
│ ├── config/ # Configuration management
│ ├── engines/ # AI engine integrations
│ ├── execution/ # Task execution orchestration
│ ├── git/ # Git operations
│ ├── tasks/ # Task source handlers
│ ├── notifications/ # Webhook notifications
│ ├── telemetry/ # Usage analytics
│ └── ui/ # User interface/logging
- Use tabs for indentation (Biome config)
- Line width: 100 characters
- Use LF line endings
- Run
bun run checkbefore committing - Keep imports organized (Biome handles this)
- PRD files during execution
.ralphy/progress.txt.ralphy-worktrees.ralphy-sandboxes*.lockfiles
- Write tests for new features
- Run tests before committing:
bun test - Ensure linting passes:
bun run check
- One logical change per commit
- Write descriptive commit messages
- Commit message format:
type: brief descriptionfeat:new featurefix:bug fixrefactor:code restructuringdocs:documentationtest:test additions/changeschore:maintenance tasks