Contributing
Set up a local development environment and submit changes to the Devver CLI.
Prerequisites
- Bun ≥ 1.0
- Node.js ≥ 18 (for tooling)
- Git
Local setup
git clone https://github.com/Devver-Inc/cli.git
cd cli
bun installRun in development mode (hot reload):
bun devBuild a local binary for manual testing:
bun build ./src/index.tsx --compile --outfile devver-cli-test
./devver-cli-test --versionProject structure
cli/
├── src/
│ ├── cmd/ — command implementations (one file per command)
│ ├── api/ — API client
│ ├── auth/ — authentication logic
│ ├── config/ — config reader/writer
│ ├── global/ — shared state
│ ├── scripts/ — helper scripts
│ ├── util/ — utility functions
│ ├── error.ts — error formatting
│ ├── index.tsx — CLI entry point (yargs setup)
│ ├── storage.ts — local storage abstraction
│ └── ui.ts — shared TUI components
└── .github/
└── workflows/ — CI/CD pipelinesAdding a new command
- Create
src/cmd/<command>.tsand export a yargsCommandModule. - Import and register it in
src/index.tsx. - Add a documentation page in
content/docs/commands/<command>.mdx.
Conventional Commits
This project uses Conventional Commits. Your commit message must follow this format:
<type>(<scope>): <description>Supported types:
| Type | When to use |
|---|---|
feat | New feature |
fix | Bug fix |
refactor | Code change with no behaviour impact |
docs | Documentation only |
perf | Performance improvement |
style | Formatting, no logic change |
test | Adding or fixing tests |
chore | Build process, dependency updates |
ci | CI configuration |
Breaking changes:
feat(core)!: rename config file
# or
feat(core): new auth flow
BREAKING CHANGE: the old token format is no longer acceptedPull requests
- Target the
mainbranch. - Keep PRs focused — one feature or fix per PR.
- All commits must pass the conventional commit linter.