Short version: open an issue, open a PR, challenge a design decision. All three are welcome.
- A new agent stage (or a variant of an existing one). The pipeline is intentionally modular — if you think there should be a
CriticorVerifierstage between Planner and Executor, prototype it and send the PR. - A new provider adapter. OpenAI-compatible endpoints work out of the box; other SDKs (Anthropic native, Bedrock, etc.) are good fits.
- A new recipe. The
Recipessection of the README is a living document. If you found a pattern that keeps recurring, document it. - Better tests on the stage contracts. Every Pydantic schema in
backend/models/schemas.pyis a test surface. - Docs fixes. Typos, broken links, confusing phrasing — just open the PR.
- Fork, branch from
main. - Keep the change small. One stage, one feature, one fix.
- If you change a stage contract, update the schema and the stage it belongs to in the same PR.
- Run the pipeline end-to-end with
python run.pybefore sending — a smoke test counts. - Open the PR with a one-paragraph "why" and a before/after if the behavior changed.
If you think a design decision in the cookbook is wrong, open an issue titled design: <thing you disagree with>. We'd rather be challenged than be wrong in public.
- Python:
ruffdefaults, type hints on public functions, Pydantic models for any cross-stage data. - Commit messages: imperative mood ("add context gatherer", not "added context gatherer").
Open an issue labeled question. No issue is too small.
Thanks for making this better.