Contribution Paths
Where can I help in 30 minutes, half a day, or one weekend?
CONTRIBUTING.mdis the full setup-and-style reference. This page is the shortcut: pick the kind of help you want to give and jump straight to the relevant section, commands, and issue labels — without reading the whole repo first.
Every path below runs the same validation gate. Confirm your environment is healthy before you start:
pip install -e ".[dev]"
make ci # fmt + lint + type + test + schemas-check + example + demo
Pick your path
| I want to… | Time | Start here | Issue labels |
|---|---|---|---|
| Improve docs | 30 min | Docs | documentation, good first issue |
| Add an adapter | 1 weekend | Adapters | enhancement, area/adapters |
| Add a benchmark scenario | half a day | Benchmarks | area/eval |
| Improve adoption / growth | half a day | Adoption | documentation, enhancement |
| Grab a good first issue | 30 min–½ day | Good first issue | good first issue |
| Drive it with an AI assistant | any | AI assistant | agent-friendly |
I want to improve docs
The lowest-friction way in. Docs live under docs/
and the site is built with make docs (preview with make docs-serve at
http://127.0.0.1:8000).
- README clarity — tighten
README.md; the first screen is the category pitch. - Recipes — add a copy-paste pattern to the Cookbook. Most
recipes are runnable core-only code, so they don't bitrot; a few drive an
external CLI as a
subprocessfor illustration (e.g. Recipe 7's safety gate) and document that they add no runtime dependency. - Integration pages —
docs/integration_<framework>.mdexplains wiring a specific runtime. Use an existing page (e.g. MCP) as a template. - Troubleshooting examples — extend
docs/troubleshooting.mdwith a concrete failure you hit and how you fixed it.
New pages must be added to the nav: block in
mkdocs.yml.
Look for the documentation and good first issue labels.
I want to add an adapter
Adapters convert between contextweaver's domain types and an external protocol or framework. The full checklist is in CONTRIBUTING § Adding a new adapter. In short:
- Implement
src/contextweaver/adapters/<name>.pyusing thefrom_<protocol>(..., into=...) -> list[ContextItem]/to_<protocol>(items) -> payloadconvention. - Re-export the public surface from
adapters/__init__.py. - Add
tests/test_adapters_<name>.pycovering both directions (round-trip where applicable). - Add a worked
examples/<name>_adapter_demo.pyand wire it into theexample:target in theMakefile. - Add
docs/integration_<name>.mdand a row to the interop matrix in How contextweaver Fits. - Never import the third-party SDK at module load — use guarded imports
and put heavy dependencies under
[project.optional-dependencies].
I want to add a benchmark scenario
The committed scorecard at benchmarks/scorecard.md is regenerated
deterministically. Adding a scenario extends the gold dataset it reports on —
see CONTRIBUTING § Adding a new benchmark scenario
and docs/benchmarks.md "Known limits" for gaps worth
measuring.
- Drop a JSONL file under
benchmarks/scenarios/(oneContextItem-shaped event per line). - Target a specific behaviour the scorecard does not yet capture.
- Run
make benchmark-matrix && make scorecardto regenerate, and commit bothbenchmarks/scorecard.mdandbenchmarks/results/latest.json.
I want to improve adoption / growth
Help adopters say "yes" faster.
- Examples — add a deterministic, network-free script under
examples/(see CONTRIBUTING § Adding a new example script) and a row to the Examples table inREADME.md. - Demo assets — the
contextweaver demoscenarios power README and docs hero content. - Comparison pages — sharpen Where it fits and the Ecosystem Map so readers can place contextweaver in their stack.
- Honest limitations — the Launch Kit sets the responsible-claims guardrails; keep new copy inside them.
I want a good first issue
good first issue
items are scoped to roughly one file or one module, with explicit acceptance
criteria and no deep architectural context required.
Comment on the issue first so it can be assigned to you — that avoids duplicate work. A good first contribution in this repo:
- touches a single module and keeps it ≤ 300 lines;
- adds or updates a test for every changed public function;
- updates
CHANGELOG.mdunder## [Unreleased]; - passes
make cilocally before the PR is opened.
I am using an AI coding assistant
contextweaver is friendly to AI coding agents (Claude Code, GitHub Copilot Agent Mode, Codex, …). Load these first, in order:
AGENTS.md— module map, conventions, and pipeline summary (the single source of truth)..claude/CLAUDE.mdand.github/copilot-instructions.md— assistant-specific operating overlays.llms.txt/llms-full.txt— machine-readable repo summary.
Then follow the same rules everyone else does: no print() in library code,
no business logic in __init__.py, every public function gets a test, and
make ci is the gate. Tasks tagged agent-friendly are scoped for end-to-end
agent work.