Thank you for your interest in contributing to Chen Pilot! We're building the most intelligent gateway for cross-chain DeFi operations, and we'd love your help.
- Fork the Project: Create your own copy of the repository.
- Environment Setup:
- Install Node.js (18+).
- Install
pnpm(npm install -g pnpm). - Run
pnpm install. - Copy
.env.exampleto.envand configure your keys.
- Run Locally:
npm run migration:run(Requires a running PostgreSQL instance).npm run dev.
Look at our Issues list for tasks labeled help wanted or good first issue. We have a roadmap of 50 priority issues focused on building a world-class DeFi Agent on Stellar (Yield strategies, Portfolio management, and Protocol integrations).
New to the project? Here's a concrete walkthrough for your first contribution.
Before picking up an issue, confirm your local environment works:
pnpm install
npm test # runs Jest — all tests should pass
npm run build:check # runs tsc --noEmit — no type errorsIf both pass, you're ready to contribute.
Good starter categories:
- Docs — improve README sections, fix typos, clarify API docs
- Test coverage — add missing unit tests for existing services
- Type-safety — replace
anywith proper types (we've added an ESLint rule@typescript-eslint/no-explicit-anyto flag these)
Browse all good first issues for a starting point.
- Conventional commit format —
feat:,fix:,docs:,test:,refactor: - Strict typing — no
anyunless absolutely necessary - Tests — include or update tests for your change
- Linting — pre-commit hooks run
lint-stagedautomatically; make sure they pass - Scope — keep PRs focused on a single issue
- Create a branch from
main:git checkout -b feature/your-feature-name. - Commit your changes using Conventional Commits:
feat: add automated yield farming strategyfix: resolve profit calculation bug in portfolio tooldocs: update strategy contribution guide
- Push to your fork and submit a PR to
main.
- TypeScript: Use strict typing. Avoid
anyunless absolutely necessary. - Tools: All new tools should extend
BaseTooland be placed insrc/Agents/tools/. - Testing: Add unit tests for new logic in the
tests/unitdirectory. - Linting: We use Husky and lint-staged. Your code will be automatically formatted and linted on commit.
Tool configuration files (ESLint, commitlint, etc.) use the .mjs or .js extension — not .mts or .ts — because most tools do not natively resolve TypeScript config files. Keep configs in JavaScript unless the tool explicitly documents TypeScript support.
- Gateway: The API entry point (
src/Gateway). - Agents: The brain of the operation (
src/Agents). - Tools: Specialized functions the agent can call (
src/Agents/tools). - Registry: Where tools and prompt templates are managed.
If you have questions, feel free to open an issue or join our community discussions!
Chen Pilot — Automating the Multi-Chain Future.