Thank you for your interest in contributing to OpenSoul! This guide will help you get started.
- Node.js ≥ 22
- pnpm (managed via
packageManagerfield inpackage.json) - Git
# Fork and clone the repository
git clone https://github.com/<your-username>/opensoul.git
cd opensoul
# Install dependencies
pnpm install
# Build the project
pnpm build
# Run in development mode
pnpm dev# Run the full check (type-check + lint + format)
pnpm check
# Run tests
pnpm testsrc/ — Core agent engine (TypeScript, ESM)
extensions/ — Channel integrations and feature plugins
skills/ — Built-in agent skills
apps/ — Native platform apps (macOS, iOS, Android, Windows)
ui/ — Web Control UI
packages/ — Internal packages
docs/ — Documentation
scripts/ — Build and utility scripts
-
Create a branch from
main:git checkout -b feat/my-feature
-
Make your changes following our coding style.
-
Run checks before committing:
pnpm check pnpm test -
Commit with a clear message:
git commit -m "feat: add support for new channel" -
Push and create a Pull Request.
- Language: TypeScript (ESM modules)
- Formatting: Oxfmt — run
pnpm format:fixto auto-format - Linting: Oxlint — run
pnpm lint:fixto auto-fix - Naming:
camelCasefor functions and variableskebab-casefor file namesUPPER_SNAKE_CASEfor constants
- Exports: Prefer named exports over default exports
- Functions: Prefer
function foo()overconst foo = () => - Arrays: Use
Array<T>instead ofT[]
We follow Conventional Commits:
| Prefix | Description |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
docs: |
Documentation only |
refactor: |
Code refactoring |
test: |
Adding or updating tests |
chore: |
Maintenance tasks |
Look for issues labeled good first issue — these are beginner-friendly tasks.
- New channel extensions — Add support for more messaging platforms
- New skills — Build skills for popular tools and services
- Documentation — Improve guides, add examples, fix typos
- Bug fixes — Check the issue tracker
- Tests — Improve test coverage
- Translations — Help translate docs to more languages
Extensions live in extensions/<name>/. Each extension is a self-contained module. See existing extensions for reference patterns.
Skills live in skills/<name>/. Follow the structure of existing skills to create your own.
After each tagged release, please update ROADMAP.md:
- Move shipped items from "Current Focus" to the appropriate "Shipped in vX.Y.Z" section.
- Update "Current Focus" with priorities for the next release.
- Remove or archive stale bullets that are no longer planned.
Use the Bug Report template and include:
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Node version, install method)
- Relevant logs or screenshots
Use the Feature Request template and describe:
- The problem you're trying to solve
- Your proposed solution
- Alternatives you've considered
Be respectful, inclusive, and constructive. We are building a welcoming community for everyone.
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for helping make OpenSoul better! 🎉