git clone https://github.com/UltimaPhoenix/dev-coach && cd dev-coach
npm install
npm run dev -- mcp # run the MCP server from source (tsx)
npm run dev -- ui # run the web dashboard from sourcenpm run lint # Biome check (auto-fix: npm run format)
npm run typecheck # TypeScript
npm run test:cov # Vitest — coverage must stay ≥ 80% linesAll three must pass before opening a PR.
See CLAUDE.md for the full project structure, stack, and conventions. The critical ones:
core/must never import frommcp/,cli/, orweb/- Every DB access must be wrapped in try/catch — never crash the MCP server
- Paths always derived from
os.homedir()/.devcoach, never hardcoded assets/is the tracked source of truth (SKILL.md + web static) — edit there, not indist/
- Fork the repo and create a branch from
main - Make your changes and confirm all checks pass
- Open a PR against
mainwith a clear description of what and why — and state any change you made to existing behaviour - Sign the Contributor License Agreement — the CLA Assistant bot comments on your PR with a one-line phrase to post; signing is required before merge
Keep PRs focused. A change that fixes a bug and adds a feature should be two PRs.
devcoach is licensed under AGPL-3.0 and is also offered under a separate commercial license. So that contributions can ship under both, every contributor signs a lightweight Contributor License Agreement: you confirm you have the right to contribute and you grant the maintainer the right to license your contribution under both AGPL and commercial terms. The CLA Assistant bot handles this automatically on your first PR.
See also: Code of Conduct · Security policy · License.
npm run build
npx @modelcontextprotocol/inspector node dist/bin.js mcpHOME=$(mktemp -d) node dist/bin.js stats
HOME=$(mktemp -d) npm run dev -- mcpnpm run mcpb # → dist-mcpb/devcoach-<version>.mcpb
npm run mcpb:sign # self-sign (shows as unverified publisher)