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¶
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):
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: