Thank you for your interest in contributing to IronClaude! This document provides guidelines and instructions for contributing.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/iron-claude.git - Install dependencies:
npm install - Create a
.envfile based on.env.example - Run in development mode:
npm run dev
- We use TypeScript for all source files
- Run
npm run lint:fixbefore committing to auto-format code - Run
npm run typecheckto verify TypeScript types - Keep functions small and focused
- Use descriptive variable names
Run tests with:
npm testAdd tests for new functionality when possible.
Periodically run:
npx knipThis helps identify unused exports, dependencies, and files.
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Run linting and tests:
npm run lint:fix && npm test - Commit with a clear message describing the change
- Push to your fork and open a Pull Request
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Keep the first line under 72 characters
- Reference issues when relevant
- Provide a clear description of the changes
- Include any relevant issue numbers
- Ensure all checks pass
- Keep PRs focused - one feature or fix per PR
iron-claude/
├── src/
│ ├── bot/ # Telegram bot integration
│ ├── coach/ # AI coaching agent (Claude Agent SDK)
│ ├── cron/ # Scheduled tasks
│ ├── handlers/ # HTTP request handlers
│ ├── storage/ # GitHub data storage
│ └── utils/ # Utility functions
├── scripts/ # Setup and deployment scripts
├── prompts/ # AI coaching prompts
└── templates/ # Document templates
When reporting issues, please include:
- A clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Your environment (Node version, OS, etc.)
Feel free to open an issue for questions about the codebase or contributing process.