Contributing
Contributing to Kernova
We welcome contributions! Whether it’s bug fixes, new features, documentation improvements, or community tools.
Repository Structure
The Kernova ecosystem is a monorepo:
kernova/├── packages/│ ├── core/ # @kernova/core — Agent runtime engine│ ├── types/ # @kernova/types — Shared type definitions│ ├── sdk/ # @kernova/sdk — Client SDK│ ├── cli/ # @kernova/cli — Developer CLI│ ├── framework/ # @kernova/framework — Full-stack framework│ ├── studio/ # @kernova/studio — Admin dashboard│ └── create-kernova-app/ # npx create-kernova-app├── sdks/│ ├── go/ # Go client SDK│ └── swift/ # Swift client SDK├── website/ # Documentation (Astro Starlight)├── examples/ # Example projects└── docs/ # Design documentsGetting Started
Prerequisites
- Node.js 22+
- npm 10+
- Git
Setup
# Clone the repogit clone https://github.com/GodwinAdu/kernova.gitcd kernova
# Install dependenciesnpm install
# Build all packagesnpm run build
# Run testsnpm testDevelopment
# Watch mode for a specific packagecd packages/frameworknpm run dev
# Run the whole monorepo in dev modenpm run devMaking Changes
1. Fork and Branch
git checkout -b feature/my-feature# orgit checkout -b fix/issue-1232. Make Your Changes
Follow the existing code style:
- TypeScript strict mode
- ES modules (
import/export) - Functional style where possible
- JSDoc comments on public APIs
3. Test
# Run all testsnpm test
# Run tests for a specific packagecd packages/frameworknpm test
# Type checknpx tsc --noEmit4. Commit
Use conventional commits:
feat: add webhook support to defineAgentfix: resolve memory leak in dev server hot reloaddocs: add streaming deep dive guidechore: update dependencies5. Submit a Pull Request
Push your branch and open a PR against main. Include:
- What the change does
- Why it’s needed
- How to test it
Contribution Areas
Bug Fixes
Found a bug? Check existing issues first, then:
- Create a minimal reproduction
- Open an issue describing the bug
- Submit a PR with the fix + a test that would have caught it
New Features
For significant features, open an issue first to discuss the approach. This saves everyone time.
Good first features to contribute:
- New tool definitions (e.g.,
@kernova/tool-slack,@kernova/tool-github) - Additional React hooks or UI components
- CLI improvements
- Documentation pages
Documentation
Docs live in website/src/content/docs/. They use Markdown with Astro Starlight.
To run the docs site locally:
cd websitenpm installnpm run devExamples
Add example projects to examples/:
examples/├── support-bot/ # Customer support agent├── research-agent/ # Paper research pipeline└── your-example/ # Your new exampleEach example should have:
- A
README.mdexplaining what it does - Working code that runs with
kernova dev - Minimal dependencies
Code Guidelines
TypeScript
- Use strict types (no
anyunless absolutely necessary) - Export types alongside implementations
- Use
interfacefor shapes,typefor unions/intersections
Naming
- Files:
kebab-case.ts - Functions:
camelCase - Classes:
PascalCase - Constants:
UPPER_SNAKE_CASE - Types/Interfaces:
PascalCase
Testing
- Use Vitest (configured at repo root)
- Co-locate tests with source:
my-module.ts→my-module.test.ts - Test behavior, not implementation details
- Mock external services (LLM APIs, databases)
Error Handling
- Use descriptive error messages that tell the user what to do
- Never swallow errors silently
- Use typed errors where possible
Release Process
Maintainers handle releases:
- Changes accumulate on
main - Version bumped across all packages
- Changelog generated from conventional commits
- Published to npm:
npm run publish:all
Community
- GitHub Issues — Bug reports and feature requests
- GitHub Discussions — Questions and ideas
- Discord — Real-time chat (coming soon)
License
Kernova is MIT licensed. All contributions are made under the same license.
Thank you for contributing! Every improvement helps developers build better AI applications.