Mori DocumentationGitHub ↗
Mori v0.34.0 documentation · Library scopes and support bundles require v0.33.0 or later. Check release notes against your installed version.
GUIDES & REFERENCE Markdown source ↗

Editors and coding agents

Mori keeps source local. Editor and agent integrations invoke the local binary and consume deterministic SARIF or JSON.

VS Code

The repository contains a dependency-free reference extension. It debounces edits, cancels superseded scans, rejects stale results, and displays findings as informational diagnostics and incomplete-analysis conditions as warnings. Locationless warnings are labeled Scan-level warning at the start of the edited document. A failed process or invalid response replaces stale findings with Mori analysis unavailable; Mori: Show Diagnostic Output opens the detail. Warnings specific only to another file remain outside the edited file's diagnostics. The runtime language list comes directly from extension activation capabilities, including Dart, Kotlin, PowerShell, and Ruby.

The extension does not download Mori, upload source, write temporary source files, or send telemetry. Install an official binary separately and place it on PATH, or configure an explicit executable path.

Other editors

Editors with Language Server Protocol support can launch:

mori lsp

The server accepts full-document synchronization and publishes informational structural-review leads with related source locations. It debounces edits, cancels stale work, and emits incomplete-analysis warnings instead of silently turning parser or coverage gaps into an empty result.

Unsaved buffers

Editors can overlay one already-discovered source path through standard input:

mori scan --profile review --format sarif \
  --stdin-path src/example.go . < src/example.go

Mori reads at most 16 MiB from standard input, applies a lower configured file limit when present, and automatically focuses results touching the overlaid file. The path must already be a supported discovered file; the overlay does not create a new discovery route.

See Machine and editor integration for stable rule IDs, source regions, limits, suppression semantics, exit behavior, and the versioned JSON Schema.

Coding-agent skill

Install the embedded review skill into the current project:

mori skill install --project .

Or install it for the current user:

mori skill install --global

The skill requires the agent to verify the binary, inventory supported and unsupported source, inspect exact coverage, use bounded structured output, open both source locations, and classify matches before recommending changes. It explicitly prohibits treating a score as proof of equivalent behavior.

Agent installation, project configuration, refactoring, baselining, CI, committing, pushing, and releasing are separate permissions. Installing the skill alone does not authorize any of the others.

Coordinated project upgrades

An updated CLI can inspect every project-managed Mori surface in one local, versioned plan:

mori project upgrade --check --format json .
mori project upgrade --dry-run .
mori project upgrade --apply .

Check mode exits 5 when required Mori-managed migration remains or a managed conflict blocks compatibility. Apply mode updates the pin and tracked project contract, replaces only a missing, contract-recorded, or known official prior skill with a recoverable backup, and then rechecks the project. Unknown skill changes are preserved and marked as a manual conflict. Configuration, protected baseline evidence, hooks, scripts, and CI remain project-owned; they are inventoried but never rewritten. The command also never installs a CLI, creates a baseline, commits, pushes, or releases.

Agent-guided project setup

Ask Mori for a deterministic, read-only project inventory and question plan:

mori setup --agent --format json . > mori-setup-plan.json

The plan uses project-relative paths and describes the supported-language inventory, unsupported extensions, current configuration state, editable scope suggestions, questions, and next commands. Setup-plan schema 2 adds those suggestions; the strict answers document remains backward-compatible and has no version field. A project agent can write a small answers document such as:

{
  "profile": "review",
  "comparison_mode": "cross-language",
  "strictness": "standard",
  "exclude_generated": true,
  "review_intent": "application",
  "scope_name": "application",
  "roots": ["src"],
  "scope_exclude": ["**/*.test.ts"]
}

review_intent accepts keep, application, tests, or all. Omit roots and scope_exclude to use a suggested policy; an explicit empty scope_exclude removes the suggested exclusions, but cannot remove existing base exclusions. Existing named scopes are never overwritten: choose a new scope_name or edit the old policy deliberately. Test/story path conventions are suggestions, not proof of ownership or complete inline-test classification.

The example creates an opt-in application scope. Use mori scan --scope application for that exploratory surface and keep the base policy inclusive for mori review staged check. Setting top-level exclude still affects every scope and can make supported staged paths unanalyzed.

Preview the exact .mori.json without writing:

mori setup --answers mori-answers.json --dry-run .

Apply only after review:

mori setup --answers mori-answers.json --apply .
mori doctor .

Use mori configure --agent and the corresponding configure --answers commands for an existing file. Answer files are strict JSON, symlinks are refused, and configuration replacement is atomic. These commands do not create a baseline, install a hook or skill, edit CI, refactor source, commit, push, or release anything.

Scores describe structural similarity; they do not prove behavioral equivalence.
Source stays local. Mori on GitHub