Thanks for your interest in contributing! This guide covers how to set up a development environment and submit changes.
- Python 3.11+
- uv (recommended) or pip
git clone https://github.com/mcoliver/knowmarks.git
cd knowmarks
uv sync --all-extrasThis installs all dependencies including dev tools (pytest, ruff).
# CLI
km save https://example.com
km find "search query"
# Dashboard
km serve
# MCP server
km mcppytest
pytest tests/test_config.py -v # specific test file
pytest -k "test_search" # specific test nameruff check src/
ruff format --check src/- Follow existing patterns in the codebase
- Use type hints for function signatures
- Keep functions focused — one responsibility per function
- No docstrings required for internal functions with clear names
src/knowmarks/
cli.py # Click CLI
config.py # Configuration and paths
core/ # Business logic (db, search, embed, ingest, etc.)
web/ # FastAPI dashboard + REST API
mcp/ # MCP server
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run tests and linting (
pytest && ruff check src/) - Commit with a clear message
- Open a pull request
- Keep PRs focused on a single change
- Include a clear description of what and why
- Add tests for new functionality
- Ensure all tests pass and linting is clean
Use GitHub Issues for bug reports and feature requests. Please include:
- Bugs: Steps to reproduce, expected vs actual behavior, Python version, OS
- Features: Description of the use case and proposed behavior
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.