Thanks for your interest in BitFun! BitFun is a multi-platform AI programming environment powered by Rust and TypeScript, with shared core logic across Desktop/CLI/Server. This guide explains how to contribute effectively.
Be respectful, kind, and constructive. We welcome contributors of all backgrounds and experience levels.
- Node.js (LTS recommended)
- Rust toolchain (install via rustup)
- Tauri prerequisites for desktop development
npm install# Desktop
npm run desktop:dev
npm run desktop:build
# E2E
npm run e2e:testNote: More granular scripts are available (e.g.
dev:web,cli:dev,website:dev). Seepackage.jsonfor details.
- English only, avoid verbose logs
- Frontend:
createLogger('ModuleName') - Backend:
log::{info, debug, warn, error}macros
Do not use platform-specific dependencies in core:
- ❌
tauri::AppHandle - ✅
bitfun_events::EventEmitter
- Command names use
snake_case - Keep Rust and TypeScript naming aligned
- Always use structured request format:
#[tauri::command]
pub async fn your_command(
state: State<'_, AppState>,
request: YourRequest,
) -> Result<YourResponse, String>await api.invoke("your_command", { request: { /* ... */ } });- Contribute good ideas/creativity (features, interactions, visuals, etc.) by opening issues
Product managers and UI designers are welcome to submit ideas quickly via PI. We will help refine them for development.
- Improve the Agent system and overall quality
- Improve system stability and strengthen foundational capabilities
- Expand the ecosystem (Skills, MCP, LSP plugins, or better support for domain-specific development scenarios)
We welcome contributions beyond standard feature or bug-fix PRs. Examples include:
| Contribution area | Location / files | Example |
|---|---|---|
| Prompts | src/crates/core/src/agentic/agents/prompts/ |
Add or refine prompts, and update related logic as needed |
| Tools | src/crates/core/src/agentic/tools/implementations/, src/crates/core/src/agentic/tools/registry.rs |
Add tool implementations and register them in the tool registry |
| Subagents | src/crates/core/src/agentic/agents/custom_subagents/, src/crates/core/src/agentic/agents/registry.rs |
Add subagent implementations and register them in the subagent registry |
| Mode contributions | src/crates/core/src/agentic/agents/*_mode.rs, src/crates/core/src/agentic/agents/prompts/*_mode.md, src/web-ui/src/locales/*/settings/modes.json |
Add/improve agent modes (e.g. Plan/Debug/Agentic or custom modes) and keep prompts + UI copy in sync |
| Scenario guides for Code Agent and AIIde | website/src/docs/ |
Add workflows, playbooks, and real-world scenario docs (or link them from README.md) |
- Open an issue to describe the problem or proposal, especially for larger changes, to avoid duplication and design conflicts
- For new features or UI changes, discuss the design direction early to ensure it fits the product experience
We recommend using Conventional Commits for clearer history and better automation:
feat:new featurefix:bug fixdocs:documentationchore:maintenance/depsrefactor:refactor without behavior changetest:tests
UI changes should include before/after screenshots or a short recording for fast review.
If your work is AI-assisted, please note it in the PR and indicate testing level (untested/lightly tested/fully tested) to help reviewers assess risk.
The master branch is for stable features and does not accept feature merges. Since this repo encourages product managers and developers to use AI-generated code for rapid validation or idea submission, please open all PRs targeting the dev branch. We will periodically review and polish changes in dev, then merge back into master.
Keep PRs small and focused. Avoid bundling unrelated changes.
Run relevant tests for your change:
# Rust
cargo test --workspace
# E2E
npm run e2e:testIf you cannot run tests, explain why in the PR and provide manual verification steps.
- Do not commit secrets, tokens, certificates, or any sensitive data
- When adding dependencies, ensure license compatibility and explain the purpose
Every contribution matters. Issues, PRs, and suggestions are all welcome!