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¶
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):
Review a shortlist and get the comparative best-of-set reasoning: