Contributing - JoelBondoux/AtlasMind GitHub Wiki
Thank you for your interest in contributing to AtlasMind! This guide covers development setup, conventions, and how to add new features.
- Node.js ≥ 18
- npm ≥ 9
- VS Code ≥ 1.95.0
- Git
git clone https://github.com/JoelBondoux/AtlasMind.git
cd AtlasMind
npm installnpm run compile # One-shot TypeScript compilation
npm run watch # Watch mode (recommended during development)npm test # Run all Vitest tests
npm run test:coverage # Run the CI coverage gatenpm run lint # ESLintnpx vsce package # Produces a .vsix file- Open the project in VS Code
- Press
F5to launch the Extension Development Host - The
@atlaschat participant becomes available
-
Strict mode is enabled — no implicit
any - Use
.jsextension on all relative imports (Node16 module resolution) - Prefer
typeimports for types only used in type positions:import type { ModelInfo } from '../types.js';
- One class per file for core services
- All shared interfaces live in
src/types.ts— never duplicate types across files
| Directory | Purpose |
|---|---|
src/core/ |
Core services (orchestrator, agents, skills, router, planner) |
src/chat/ |
Chat participant and slash commands |
src/providers/ |
LLM provider adapters |
src/skills/ |
Built-in skill implementations |
src/memory/ |
Memory manager and scanner |
src/mcp/ |
MCP client and server registry |
src/views/ |
Webview panels and tree views |
src/voice/ |
Voice (TTS/STT) integration |
src/bootstrap/ |
Project bootstrap and import |
tests/ |
Vitest test suites (mirrors src/ structure) |
docs/ |
Technical documentation |
Use Conventional Commits:
feat: add new skill for Docker management
fix: prevent path traversal in memory-write
docs: update routing algorithm documentation
refactor: extract cost calculation into helper
chore: update dependencies
-
Version bump in
package.jsonusing Semantic Versioning:- PATCH (0.0.x): bug fixes, docs, refactors
- MINOR (0.x.0): new features, new commands, new UI
- MAJOR (x.0.0): breaking changes to config, agent definitions, or memory format
- CHANGELOG.md entry matching the version bump
- Documentation updates for any changed interfaces (see table below)
When you make any of these changes, update the corresponding docs:
| Change | Files to Update |
|---|---|
| Add/remove/rename a source file |
README.md, docs/architecture.md, docs/development.md
|
| Add/modify a command |
README.md, package.json
|
| Add/modify a chat slash command |
README.md, package.json
|
| Add/modify a configuration setting |
README.md, package.json
|
Add/modify a type in types.ts
|
docs/architecture.md |
| Add/modify an agent feature | docs/agents-and-skills.md |
| Add/modify a skill | docs/agents-and-skills.md |
| Add/modify the model router | docs/model-routing.md |
| Add/modify a provider adapter |
docs/model-routing.md, CONTRIBUTING.md
|
| Add/modify the SSOT memory | docs/ssot-memory.md |
| Add/modify webview panels | docs/development.md |
| Add/modify tree views |
README.md, docs/architecture.md
|
| Change build config or dependencies |
docs/development.md, README.md
|
| Ship a new version |
CHANGELOG.md, package.json
|
- Create
src/providers/<name>.tsimplementing theProviderAdapterinterface fromadapter.ts - Register the adapter in
src/providers/index.ts - Add the provider ID to
ProviderIdinsrc/types.ts - Add model metadata to the model catalog
- Update
docs/model-routing.mdandCONTRIBUTING.md
- Create the skill file in
src/skills/ - Export a factory function returning a
SkillDefinition - Register in
src/skills/index.ts - Add tests in
tests/skills/ - Update
docs/agents-and-skills.md
Default agents are defined in src/extension.ts during activation. To add a new built-in agent:
- Add the
AgentDefinitioninactivate()withbuiltIn: true - Register via
agentRegistry.registerAgent() - Update
docs/agents-and-skills.md
Coverage thresholds are currently enforced for service-layer modules under src/core, src/skills, src/memory, src/providers, src/mcp, and src/bootstrap.
Webview-heavy src/views code and chat participant wiring in src/chat are excluded from the enforced threshold until dedicated integration tests are added.
Before submitting:
-
npm run compilepasses with 0 errors -
npm test— all suites pass -
npm run lint— no new warnings - Version bumped in
package.json -
CHANGELOG.mdentry added - Relevant docs updated
- Commit message follows conventional format
Be respectful, constructive, and inclusive. We follow standard open-source community guidelines.