Contributing
CodeBuddy is open source under the MIT license. Contributions are welcome — bug fixes, new features, documentation improvements, and translations.
Repository: github.com/olasunkanmi-SE/codebuddy
Getting started
Section titled “Getting started”Prerequisites
Section titled “Prerequisites”- Node.js 20+
- Git
- VS Code, Cursor, or any compatible editor (VS Code Insiders recommended for extension development)
# Fork and clonegit clone https://github.com/<your-username>/codebuddy.gitcd codebuddy
# Install dependenciesnpm ci
# Install webview dependenciescd webviewUi && npm ci && cd ..
# Compilenpm run compile
# Build webviewnpm run build:webviewDevelopment workflow
Section titled “Development workflow”# Watch for TypeScript changesnpm run watch
# In a separate terminal, watch for webview changesnpm run dev:webviewPress F5 in your editor to launch the Extension Development Host with CodeBuddy loaded.
Project structure
Section titled “Project structure”| Directory | Contents |
|---|---|
src/ | Extension source (TypeScript) |
src/agents/ | LangGraph agent, subagents, tool providers |
src/services/ | Core services (indexing, testing, embedding, etc.) |
src/webview-providers/ | Webview ↔ extension message handlers |
src/workers/ | Worker threads (AST analysis, embedding) |
src/infrastructure/ | Logger, telemetry, observability |
src/MCP/ | MCP protocol integration |
webviewUi/ | Webview frontend (separate npm project) |
skills/ | Built-in skill definitions (SKILL.md files) |
l10n/ | Translation bundles |
.github/ | CI workflows, issue/PR templates |
Available scripts
Section titled “Available scripts”| Script | Description |
|---|---|
npm run build | Full build: compile + format + webview + package |
npm run compile | TypeScript compilation |
npm run watch | Watch mode for TypeScript |
npm run lint | ESLint check |
npm run fix | ESLint auto-fix |
npm run format | Prettier formatting |
npm test | Run extension tests |
npm run test:coverage | Tests with coverage report (text-summary, lcov, json-summary) |
npm run build:webview | Build webview frontend |
npm run dev:webview | Webview dev server |
npm run package | Package with esbuild (production) |
Branching strategy
Section titled “Branching strategy”development— active development branch. Create feature branches from here.main— stable releases. PRs fromdevelopment→mainfor releases.
Pull request process
Section titled “Pull request process”- Fork the repository
- Create a branch from
development:git checkout -b feature/my-feature development - Make your changes
- Run
npm run lint && npm run compile && npm test - Push and open a PR against
development
PR checklist
Section titled “PR checklist”- Description of what changed and why
- Type: bug fix / feature / breaking change / refactor / docs / CI
- Tests added or updated
- Linting passes
Coding standards
Section titled “Coding standards”- TypeScript strict mode — all code is type-checked with
strict: true - ESLint — run
npm run lintbefore committing;npm run fixfor auto-fixes - Prettier — run
npm run formatto format all files - Naming — use
camelCasefor variables/functions,PascalCasefor classes/types,kebab-casefor file names - Services — follow the dependency injection pattern via
ServiceFactory. Register new services in the factory - Workers — use the
parentPort.postMessage()/onmessagepattern. Keep worker files insrc/workers/ - Error handling — use structured error types. Don’t silently swallow errors
- Security — never expose API keys in logs or webview messages. All external inputs must be validated
Testing
Section titled “Testing”# Run all testsnpm test
# Run with coveragenpm run test:coverageTests use the built-in extension testing framework. Place test files alongside source files with a .test.ts suffix, or in a __tests__/ directory.
When adding a new feature:
- Add unit tests for the service layer
- Add integration tests if the feature interacts with external systems (mock them)
- Ensure existing tests still pass — CI will block the PR if they don’t
Documentation
Section titled “Documentation”This documentation site lives in a separate repository: codebuddy-docs. To contribute docs changes:
git clone https://github.com/olasunkanmi-SE/codebuddy-docs.gitcd codebuddy-docsnpm cinpm run devDocs are built with Astro Starlight. Markdown files are in src/content/docs/.
Reporting issues
Section titled “Reporting issues”Open a GitHub Issue with:
- Environment: OS, editor and version, CodeBuddy version
- Steps to reproduce: minimal steps to trigger the bug
- Expected vs actual behavior
- Logs: copy relevant output from the Output panel → CodeBuddy
For feature requests, describe the use case and the proposed solution.
License
Section titled “License”CodeBuddy is licensed under the MIT License. By contributing, you agree that your contributions will be licensed under the same terms.
- Code compiles without errors
Templates
Section titled “Templates”The repository provides templates for:
- Bug reports — structured form with repro steps, expected/actual, version
- Feature requests — problem, proposed solution, alternatives, context
- Pull requests — description, type checklist, testing checklist
CI pipeline
Section titled “CI pipeline”Every PR triggers a matrix build on Ubuntu, Windows, and macOS:
- Checkout → generate diff
- Node 20 setup →
npm ci - Security audit
- Lint → compile → format
- Build webview (
npm ci && lint && buildinwebviewUi/) - Compile tests → run tests (xvfb on Linux)
- Coverage upload → 30% minimum line coverage threshold
- Package
Tests run under xvfb-run on Linux for headless extension integration testing.
Release process
Section titled “Release process”Releases are triggered by pushing a version tag:
git tag v4.3.0git push origin v4.3.0The deploy pipeline:
- Builds and packages a
.vsixfile - Publishes to the VS Code Marketplace and Open VSX Registry
- Publishes to the Open VSX Registry
- Creates a GitHub Release with the
.vsixattachment
Dependencies
Section titled “Dependencies”Dependabot is configured for automatic dependency updates:
| Scope | Frequency | PR limit |
|---|---|---|
| Root npm | Weekly | 10 |
webviewUi/ npm | Weekly | 5 |
| GitHub Actions | Monthly | — |
Code of conduct
Section titled “Code of conduct”The project follows a standard Code of Conduct. See CODE_OF_CONDUCT.md in the repository.
Security
Section titled “Security”To report security vulnerabilities, see SECURITY.md in the repository. Do not open public issues for security concerns.