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. Review is separate from the cull: it never sets a verdict or rating; 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.

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. 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 . This command is excluded from the MCP tool surface — it egresses images, so an agent must never trigger it.

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. 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.

Usage

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

Name one or more frames. The shoot is taken from --shoot, or the current working directory if omitted.

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)

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. Naming more than one frame is itself the request for the comparative best-of-set read — there is no flag, because a set of one has nothing to compare against and a set of several always does:

krites review IMG_2043.JPG IMG_2044.JPG IMG_2051.JPG