A fast LSP server and CLI linter for the Australian Guide to Legal Citation (4th ed).
- Live drafting (LSP): Markdown, LaTeX
- Batch checking (CLI): PDF, Word/docx, Markdown, LaTeX, plain text
Status: M1 slice — case citations · Markdown/plain hosts · CLI · SDK.
Architecture and guardrails: CLAUDE.md · plan of record:
docs/roadmap/ · rule catalogue (generated):
docs/rules.md.
The project was renamed from
cite-linttolintciteon 2026-06-06. The imported plan of record underdocs/roadmap/predates the rename and keeps the original name; crate names map 1:1 (cite-lint-core→lintcite-core).
cargo build --workspace
target/debug/lintcite check your-memo.md # lint (exit 1 on findings)
target/debug/lintcite fix your-memo.md # corrected text to stdout
target/debug/lintcite explain AGLC4-CASE-001 # the rule behind a code
target/debug/lintcite check --format json - # JSON from stdin, for CI$ lintcite check memo.md
memo.md:9:31: error[AGLC4-CASE-001] year bracket should be round brackets for CLR: found square brackets (AGLC4 r 2.2.1)
fix-it: '(1992)'
let diagnostics = lintcite::lint("[^1]: Mabo v Queensland (No 2) [1992] 175 CLR 1.")?;
assert_eq!(diagnostics[0].code.0, "AGLC4-CASE-001");Every diagnostic names the AGLC4 rule it enforces; ambiguous citations get a low-confidence "could not verify" rather than a confident guess. Fix-its are safe-only: they never change the cited authority.
See CONTRIBUTING.md. Contributions require 90%+ test coverage
and every linting rule must cite the AGLC4 rule it enforces. AI-assisted
contributions are welcome and held to a higher bar.
Apache License 2.0. Attribution per the NOTICE file.