# Lumen Citations

How Lumen cites a document - the citation object, how to get anchors, quote rules and...

- Repository: https://github.com/kortix-ai/suna (20345 stars)
- Category: Writing
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add kortix-ai/suna --skill lumen-citations -g -a claude-code -y`
Codex: `npx skills add kortix-ai/suna --skill lumen-citations -g -a codex -y`
Cursor: `npx skills add kortix-ai/suna --skill lumen-citations -g -a cursor -y`
Gemini CLI: `npx skills add kortix-ai/suna --skill lumen-citations -g -a gemini-cli -y`

## Description

How Lumen cites a document - the citation object, how to get anchors, quote rules and `lumen cite check`. Load before writing any claim about a document.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Citations

Lumen shows every citation to a lawyer next to the source passage, and checks it
against the source before the lawyer sees it. A citation that fails the check is
shown as "Citation not found". Get it right the first time.

## The object

```json
{ "doc_id": "<id from lumen docs>", "a": "p3.12", "quote": "verbatim text from that paragraph" }
```

- `a` is the paragraph anchor: `p<page>.<n>`. Take it from `lumen read` or `lumen search`. Never compute it.
- `quote` is copied character for character from ONE paragraph: at most 300 characters, no "..." inside, no paraphrase, case kept.
- Quote the words that prove the claim, not the whole paragraph. 8 to 40 words is right.

## Get anchors

```bash
lumen search --matter <matter_dir> --query "limitation of liability capped"   # hits: doc_id, a, snippet
lumen read --doc <doc_id> --anchor p3.12 --context 1                           # the paragraph and its neighbours
lumen read --doc <doc_id>                                                      # the whole document
```

## Check before you finish

```bash
echo '{"citations": [{"doc_id": "...", "a": "p3.12", "quote": "..."}]}' | lumen cite check
```

| Code | Meaning | Fix |
|---|---|---|
| `not_found` | The quote is not in the document | Copy the exact words from `lumen read` output |
| `wrong_anchor` | The quote is in another paragraph (`fixed_anchor`) | Use `fixed_anchor` |
| `too_long` | Over 300 characters | Quote fewer words |
| `unknown_doc` | No such document | Use a `doc_id` from `lumen docs` |

`lumen result write` runs the same check on every citation in a result and refuses the file until each passes.

## In chat answers

The rest: https://github.com/kortix-ai/suna/blob/HEAD/apps/white-label/lumen/agent-kit/skills/lumen-citations/SKILL.md
