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.