For development workflow and best practices, see DEVELOPMENT.md.
Found a bug or have a feature request? You can use our built-in slash commands to create GitHub issues directly from the CLI:
/bug-report- Report a bug with automated context collection/feature-request- Suggest a new feature or enhancement
These commands will guide you through providing the necessary information and create a properly formatted GitHub issue.
Setup the API keys for the LLMs providers, use the env variables in your bashrc/zshrc/fishrc files or use /login the select a provider and enter the API Key.
If you are using VSCode or Cursor, install Biome extension to format the code.
It's recommended to use Volta to manage the node and pnpm version. And you need to set the VOLTA_FEATURE_PNPM environment variable to enable pnpm support.
export VOLTA_FEATURE_PNPM=1Install and build the CLI.
$ pnpm install
$ pnpm buildRun the CLI.
$ pnpm devTips: Add t alias to the src/cli.ts file to make it easier to run the CLI.
$ alias t="bun /path/to/neovate/src/cli.ts"
$ tNote: After installation, you can use either neovate to run the CLI.
Before you commit, you need to run the ready script to check if the code is ready to be committed.
$ pnpm ready
# Or include e2e tests
$ pnpm ready --e2eThe e2e tests validate the CLI functionality end-to-end using real model interactions.
Before running the e2e tests, you need to configure the model. Set the E2E_MODEL environment variable in your .env file and ensure you have the appropriate API keys configured for your chosen model.
# .env
E2E_MODEL=provider_id/model_idThen you can run the e2e tests.
$ pnpm test:e2e
# Run tests for a specific fixture
$ pnpm test:e2e --only normal
# Run tests for a specific test
$ pnpm test:e2e --only normal/basicChoose one of the following methods to debug the CLI:
- Press
⌘+⇧+Dto open the debug view, then selectDebug cli. - Add
DEBUG=neovate*prefix to the command to print the debug logs. - Add
-qto the command to print the quiet logs. - Open session files under
~/.neovate/projects/directory to check the logs.
Use the test-nodebridge.ts script to test NodeBridge message handlers directly:
# List all available handlers
bun scripts/test-nodebridge.ts --list
# Test a specific handler with --key=value arguments
bun scripts/test-nodebridge.ts models.list
bun scripts/test-nodebridge.ts models.test --model anthropic/claude-sonnet-4-20250514
bun scripts/test-nodebridge.ts utils.getPaths --cwd /path/to/dir --maxFiles 100
# Pass complex data as JSON (--data takes priority over --key value)
bun scripts/test-nodebridge.ts models.test --data '{"model":"anthropic/claude-sonnet-4-20250514","timeout":5000}'$ pnpm release
$ pnpm release:minor
$ pnpm release:majorAfter running the release command, use /share-release to generate release share.
If you frequently contribute to Neovate Code (bug fixes, features, documentation, etc.), you may be invited to:
- Join the Developer Team as a core contributor
- Join our DingTalk group for real-time communication and collaboration
We appreciate all contributions and look forward to working with passionate developers!