Citation CLI

Cite, don’t import. A code distribution pattern for codebases where consumers are expected to diverge — each consumer copies the reference into its own tree and owns the result.

packages/reference/       -->  cite  -->  clients/backend-a/
                          -->  cite  -->  clients/backend-b/
                          -->  cite  -->  clients/backend-c/

No shared imports. No version pinning. No breakage when one project evolves.

Quote, Paraphrase, Synthesize

The citation metaphor is literal. Every file lands at one of three levels of engagement with the source:

Install

Python ([tool.citation] in pyproject.toml):

uv tool install citation-cli
cite add my-pkg --source ../ref --version 1.0.0 --target ./src/my-pkg
cite check

Node.js ("citation" key in package.json):

npm install -g citation-cli
cite add my-pkg --source ../ref --version 1.0.0 --target ./src/my-pkg
cite check

Migrating from assimilai

citation-cli is the successor to the earlier assimilai project. The schema and vocabulary map one-to-one (verbatim/adapted/dissolvedquote/paraphrase/synthesize). To migrate an existing manifest:

cite migrate             # rewrite pyproject.toml or package.json in place
cite migrate --dry-run   # preview the translation

See Migration for a full before/after walkthrough.

Learn more

Origin

citation-cli was developed as part of Culture, where multiple AI agent backends (Claude, Codex, and others) need to share infrastructure code while maintaining full independence in their agent-specific integration layers. Claude’s backend synthesized config.py into its own settings.py, while Codex kept it as a quote — same reference, different engagement strategies.