Thanks for your interest in contributing to BloxForge! Every contribution — code, docs, bug reports, feature ideas, or just using the project — helps make it better for everyone.
- Bug reports: Open a GitHub issue with OS, Node version, Studio version, AI client,
--doctoroutput, and reproduction steps. - Feature ideas: Open a GitHub issue describing the problem and your proposed solution.
- Documentation: The
docs/directory and README always need proofreading, examples, and clarification. - Code: Check open GitHub issues for current priorities, or pick a tool domain that interests you.
- Fork the repo.
- Create a feature branch (
git checkout -b feat/my-change). - Make your changes.
- Run the PR gate:
npm run lint && npm run typecheck && npm test && npm run build:all && npm run docs:check. Before a release, run the fullnpm run release:checkinstead — it adds the protocol, metadata, plugin and packaging checks that CI enforces. - If adding a new tool, see "Adding a tool" below.
- Push and open a pull request.
- Schema definition —
packages/core/src/tools/definitions/<domain>.ts - Handler —
packages/core/src/http-server.ts→TOOL_HANDLERSmap - Implementation —
packages/core/src/tools/index.tsmethod (or extract to domain class) - Plugin endpoint (optional) —
studio-plugin/src/modules/handlers/*+Communication.tsrouteMap - Test — add to existing test file or create new
- Catalog —
tools/tool-catalog.ts→DOMAIN_OVERRIDESif name doesn't classify by prefix
Each tool needs:
instance_idin its schema (unless Studio-agnostic)instance_idthreaded in the handler- Schema-parity invariant: definition and handler agree on all params
npm install
cd studio-plugin && npm install && cd ..
npm run build
npm run typecheck && npm testpackages/core has zero runtime dependencies. Keep it that way, or say plainly
why not in the pull request.
- TypeScript, strict mode
2-spaceindentation- Descriptive variable names over comments
asyncmethods with explicit parameter names (not destructured config objects)instance_idis always the last optional parameter- Private helpers prefixed with
_
Open a discussion for questions, workflow ideas, or help getting started.