Contributing to Project AIRI
Thank you for your interest in contributing to Project AIRI! This guide will help you get started with development, understand our workflows, and make your first contribution.We welcome all types of contributions: code, documentation, translations, bug reports, feature requests, and community support!
Prerequisites
Before you begin, make sure you have the following installed:Git
Version control systemDownload Git
Node.js 23+
JavaScript runtimeDownload Node.js
pnpm
Fast, disk space efficient package manager
corepack
Package manager manager (comes with Node.js)Already included with Node.js 16+
Platform-Specific Setup
- Windows
- macOS
- Linux
Install Visual Studio
Download Visual Studio and install:
- Windows SDK
- C++ build tools
Optional: Install @antfu/ni
For a simpler development experience:ni installed, you can:
- Use
niinstead ofpnpm install,npm install,yarn install - Use
nrinstead ofpnpm run,npm run,yarn run
Getting Started
Fork and Clone
Fork the Repository
Click the Fork button on the moeru-ai/airi repository page.
Install Dependencies
Create a Working Branch
Branch naming convention:
<username>/<type>/<description>Types: feat, fix, docs, refactor, test, choreDevelopment Workflow
Choose Your Application
- Stage Web
- Stage Tamagotchi
- Stage Pocket
- Documentation
Monorepo Commands
Workspace Filters
Use pnpm filters to scope commands to specific packages:Common Commands
Development
Development
Build
Build
Type Checking
Type Checking
Linting
Linting
Testing
Testing
Development Services
- Discord Bot
- Telegram Bot
- Minecraft Agent
Code Style and Conventions
TypeScript
- File Naming
- Functions
- Imports
Use kebab-case for all files:
Vue Components
Comments
- Documentation
- Markers
- Workarounds
Add clear comments for complex logic:
Commit Guidelines
Before Committing
Image Optimization
If committing images, convert to AVIF:Commit Messages
Use Conventional Commits:feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasksperf: Performance improvements
Making the Commit
Creating a Pull Request
Open Pull Request
- Navigate to moeru-ai/airi
- Click Pull requests tab
- Click New pull request
- Click Compare across forks
- Select your fork and branch
Fill PR Template
Provide:
- Clear title and description
- What changes were made
- Why the changes were needed
- How to test the changes
- Screenshots/videos if UI changes
- Related issues (if any)
PR Checklist
- Code follows project style guidelines
- All tests pass (
pnpm test:run) - Types are correct (
pnpm typecheck) - Code is linted (
pnpm lint) - Commits follow conventional commit format
- PR description is clear and complete
- Related documentation updated (if needed)
- Breaking changes documented (if any)
Keeping Your Fork Updated
Development Best Practices
Module Boundaries
Keep clear module boundaries. Shared logic goes in
packages/, app-specific code stays in apps/.DI Pattern
Use dependency injection (
injeca) for better testability and modularity.Type Safety
Use TypeScript strictly. Avoid
any type unless absolutely necessary.Progressive Refactoring
Improve code you touch. Small refactors are better than big rewrites.
When to Refactor
- Do Refactor
- Don't Refactor
- When touching legacy code
- To improve readability
- To remove duplication
- To fix code smells
- Alongside feature work
Testing Your Changes
Manual Testing
- Build the project:
pnpm build - Run the app:
pnpm devorpnpm dev:tamagotchi - Test your changes: Follow the test scenarios from your PR description
- Test edge cases: Try to break your implementation
- Test on different browsers/platforms: If applicable
Automated Testing
Community Guidelines
Communication
Discord
Join our Discord server for real-time chat
GitHub Discussions
Ask questions and share ideas
GitHub Issues
Report bugs and request features
Twitter/X
Follow for project updates
Code of Conduct
- Be respectful and inclusive
- Welcome newcomers
- Assume good intentions
- Give constructive feedback
- Focus on the code, not the person
- Follow project guidelines
Getting Help
I'm stuck on setup
I'm stuck on setup
- Check the prerequisites section
- Make sure you’re using Node.js 23+
- Try
rm -rf node_modules && pnpm install - Ask in Discord #help channel
My PR was rejected
My PR was rejected
Don’t worry! Rejection doesn’t mean your contribution isn’t valuable:
- Read the review feedback carefully
- Ask clarifying questions if needed
- Make the requested changes
- Push updates to your branch
- The PR will be re-reviewed automatically
How do I find something to work on?
How do I find something to work on?
- Check Good First Issues
- Look for issues labeled
help wanted - Ask in Discord what needs help
- Improve documentation (always needed!)
- Fix bugs you encounter
Can I contribute without coding?
Can I contribute without coding?
Absolutely! We need:
- Documentation writers: Improve guides and tutorials
- Translators: Help with i18n on Crowdin
- Designers: UI/UX improvements, Live2D models, VRM models
- Testers: Report bugs, test PRs
- Community helpers: Answer questions, help newcomers
- Artists: Create promotional materials, screenshots
Non-Code Contributions
Translations
We use Crowdin for translations:- Create a Crowdin account
- Join the Project AIRI project
- Select your language
- Translate strings
- Translations will be synced automatically
Documentation
Improve documentation indocs/:
Bug Reports
Good bug reports include:- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Environment (OS, browser, version)
- Screenshots/videos
- Error messages/logs
Feature Requests
Good feature requests include:- Clear use case
- Why it’s valuable
- How it should work
- Alternatives considered
- Willingness to implement (optional)
Resources
Architecture Guide
Understand the codebase structure
Plugin Development
Learn to build plugins
AGENTS.md
Agent development guide
Discord Community
Join the community
Congratulations!
You’re now ready to contribute to Project AIRI! Remember:- Start small
- Ask questions
- Learn from feedback
- Help others
- Have fun!
Thank you for contributing to Project AIRI! Every contribution, no matter how small, helps make AIRI better for everyone.
