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
Abschnitt betitelt „Getting started“Prerequisites
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „Branching strategy“development— active development branch. Create feature branches from here.main— stable releases. PRs fromdevelopment→mainfor releases.
Pull request process
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „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
Abschnitt betitelt „Code of conduct“The project follows a standard Code of Conduct. See CODE_OF_CONDUCT.md in the repository.
Security
Abschnitt betitelt „Security“To report security vulnerabilities, see SECURITY.md in the repository. Do not open public issues for security concerns.