Contributing
August 10, 2026 ยท View on GitHub
Thanks for your interest in SkillRoute! This page covers local development and the release process.
Development setup
Requirements: uv, Node 20+.
# Python package (src/skillroute) + tests
uv sync --extra dev
uv run --extra dev pytest --cov=skillroute --cov-fail-under=80
uv run --extra dev ruff check .
uv run --extra dev mypy
# Skill Atlas web UI
npm --prefix web ci
npm --prefix web run typecheck && npm --prefix web run lint && npm --prefix web run test
# MCP server
npm --prefix mcp ci
npm --prefix mcp run build && npm --prefix mcp test && npm --prefix mcp run smoke
CI mirrors these commands plus dependency audits and a packaging check; see .github/workflows/ci.yml.
Guidelines
- Conventional commit messages (
feat:,fix:,chore:, ...) - Add or update tests with behavior changes; overall coverage must stay >= 80%
ruffandmypymust pass
Releasing
-
Bump the version in
pyproject.toml,mcp/package.json(andweb/package.jsonfor consistency). Python code and the MCP server read their versions from package metadata โ do not hardcode versions elsewhere. -
Add a section to
CHANGELOG.mdand update its compare/tag links. -
Land those changes on
main, then tag and push:git tag vX.Y.Z && git push origin vX.Y.Z -
The release workflow builds the sdist, wheel, and npm tarball, then creates a GitHub release with the artifacts attached.
- PyPI publishing runs only when the
PYPI_PUBLISHrepository variable istrueand a PyPI trusted publisher is configured for this repository. - npm publishing runs only when the
NPM_PUBLISHrepository variable istrueand anNPM_TOKENsecret with publish rights to the@skillroutescope is configured.
- PyPI publishing runs only when the