Skip to content

krites review

Description

Get an AI critique of selected frames against a rubric — a learning-first coaching read plus a secondary viability opinion — and save it beside each frame (0009 §1, §5). Review is separate from the cull: it never sets a verdict or rating (R-REV-6); its job is to teach. It runs on a handful of hand-picked frames, on demand, never automatically.

How it stays non-destructive. A review is an advisory record, not an edit. It's stored as a human-readable sidecar at .krites/reviews/<frame>.md (with the rubric, provider, model and timestamp for provenance), re-openable in the studio and offered to the Phase-4 learner. It is never written to XMP or the image, and a generative review is not reproducible — which is fine, because it's advisory (0009 §9).

Cloud-first — read this. Unlike the local-first cull, review sends the full image to a third-party model. So it is off by default and opt-in: there is no default provider and no ambient key. You choose a provider and supply its API key in the studio; the key is stored in the OS keychain, used only for that provider, and never written to config or logs (0009 §3, R-PRIV-*). Before any image is sent, the operation is disclosed.

Availability. Review is only offered when it can actually run — a provider is configured and reachable (network up, endpoint responding). Otherwise the studio disables the Review action with a tooltip explaining why (no provider / offline / unreachable), and this command declines with the same reason (R-REV-10). This command is excluded from the MCP tool surface — it egresses images, so an agent must never trigger it (R-MCP-2).

The backend is a chat-backed critic over go-tool-base's multimodal pkg/chat client, so a provider is a config choice — Gemini (Hailey's default) and Claude both work with no per-provider code (0009 §2.1). Review stays inert until you choose a provider and supply its key; with none configured, review declines cleanly and writes nothing.

Enable it in config:

Key Meaning Default
review.provider AI provider: gemini or claude (none — inert)
review.model Model id override (provider default)
review.timeout Per-review deadline 180s

The API key is entered in the studio and stored in the OS keychain — never in the config file or an environment variable (0009 §3.1).

Usage

krites review <frame…> [--rubric <id>] [--provider gemini|claude] [--compare] [flags]

Name one or more frames. The shoot is taken from --shoot, or the current working directory if omitted (R-SCOPE-1).

Flags

Flag Description Default
--shoot Shoot directory to scope to the current directory
--rubric Rubric id to critique against the seeded wedding-review
--provider AI provider to use (gemini, claude); overrides config (configured provider)
--compare Add a comparative best-of-set pass when reviewing multiple frames false

Run krites review --help for the authoritative, always-current flag set.

Examples

Review one frame against the default rubric (once a provider is configured):

krites review IMG_2043.JPG

Review a shortlist and get the comparative best-of-set reasoning:

krites review IMG_2043.JPG IMG_2044.JPG IMG_2051.JPG --compare