Output formats
Every lore analyze run produces the same canonical result; --format decides how it's
rendered. Progress logs go to stderr, so the report on stdout is always clean to pipe.
lore analyze ./book --project "Book" --format json > report.json
The formats
- text — a human-readable summary for the terminal (default).
- json — the full canonical result (script, status, score, diagnostics, entities).
- sarif — SARIF 2.1.0 for GitHub and Azure code scanning (inline annotations from a security tab).
- github — GitHub Actions workflow commands (
::error file=…,line=…::) that annotate a PR inline. - gitlab — GitLab Code Quality JSON, rendered in the merge-request widget.
- junit — JUnit XML that generic CI (Jenkins, CircleCI, Azure Pipelines) shows as test results.
- markdown — a table you can drop into a PR comment or a job summary.
CI examples
GitHub Actions
- name: Continuity check
run: lore analyze ./manuscript --project "Book" --format github --model-key "$OPENROUTER_KEY"
Or publish a rich summary:
- run: lore analyze ./manuscript --format markdown --model-key "$OPENROUTER_KEY" >> "$GITHUB_STEP_SUMMARY"
GitLab
continuity:
script: lore analyze ./manuscript --format gitlab --model-key "$OPENROUTER_KEY" > gl-code-quality.json
artifacts:
reports:
codequality: gl-code-quality.json
The command exits non-zero when continuity breaks, so any of these steps fails the pipeline on a real contradiction.