Thank you for your interest in SVP Forge! This guide helps you contribute effectively.
Please read and follow our Code of Conduct.
We embrace AI-assisted contributions. Please read our AI Policy for guidelines on using AI tools when contributing.
- Search existing Issues first to avoid duplicates
- Use the Bug Report template to create an Issue
- Include: reproduction steps, expected behavior, actual behavior, environment info (Node version, OS)
- Create a Feature Request Issue describing the need
- Explain: the problem to solve, proposed solution, possible alternatives
- Non-trivial API changes should be discussed in an Issue before development
We welcome Pull Requests for bug fixes, new features, documentation improvements, and test coverage.
- Node.js >= 22 (see
.node-version) - npm
# Clone the repo
git clone https://github.com/SemanticVoxelProtocol/forge.git
cd forge
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Full check (TypeScript + ESLint + Prettier)
npm run checkpackages/
cli/ CLI commands (forge check, init, prompt, ...)
core/ Core logic (check, hash, store, view, i18n)
skills/ AI tool adapters and prompt generation
tests/e2e/ End-to-end tests
main— Stable branch, all releases are tagged from heredev— Development branch, day-to-day work merges here- Feature branches are created from
dev, named:feat/description,fix/description,docs/description
- Fork the repo and create a feature branch from
dev - Keep each PR focused on a single concern (don't mix unrelated changes)
- Add tests for new features and bug fixes
- Run the full check suite locally:
npm run check # tsc --noEmit + eslint + prettier --check npm test # vitest
- Follow Conventional Commits format for the PR title (see below)
- Reference the related Issue:
Fixes #123orCloses #123 - Enable "Allow edits from maintainers"
- Code passes
npm run check - Tests pass with
npm test - New features/bug fixes include tests
- Documentation updated (if user-facing changes)
- PR title follows Conventional Commits
We follow Conventional Commits v1.0.0.
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
| Type | Description | Example |
|---|---|---|
feat |
New feature | feat(cli): add view command |
fix |
Bug fix | fix(core): handle empty hash input |
docs |
Documentation only | docs: update tutorial |
style |
Formatting, no logic change | style: fix indentation |
refactor |
Refactor, not feat/fix | refactor(store): simplify read logic |
perf |
Performance improvement | perf(hash): cache computed values |
test |
Test-related | test(check): add edge case coverage |
build |
Build system | build: update tsconfig target |
ci |
CI configuration | ci: add Node 24 to matrix |
chore |
Maintenance | chore: update dependencies |
- Use imperative present tense:
add featurenotaddedoradds - Lowercase first letter, no trailing period
- Subject line max 72 characters
- Breaking changes: add
!after type:feat!: remove deprecated API
- TypeScript — All source files must be typed
- ESLint —
npm run lint(config ineslint.config.ts) - Prettier —
npm run format(auto-format before committing) - Testing — Vitest; bug fixes and new features must include tests
- Run
npm run checkbefore submitting to ensure everything passes
This section is for maintainers only.
Releases are automated via CI:
- Ensure CI is green on
main - Bump version:
npm version patch|minor|major - Push tag:
git push --follow-tags - CI auto-publishes to npm via Trusted Publishing
- Browse Issues labeled
good first issue - Ask questions in Issues or Discussions
Thank you for contributing!