Skip to content

Changelog

The Prism plugin follows Semantic Versioning. Plugin source is at grumatic/optra-prism-plugin; the authoritative file is CHANGELOG.md in that repo. Only high-level themes are summarized here.

  • Commit and repository evidence. When a prompt is captured, the plugin attaches a snapshot of the repository at that moment (sanitized remote host, owner/group path, branch, head commit, working-tree state, and more), and once a response is safely recorded it can report the added and deleted line counts of the commits made during that turn. No file paths, diffs, commit messages, or author details are collected.
  • Opt-in. Commit reporting is sent only when the configured Prism service says it accepts it (asked at most once every five minutes, cached per key and destination). An answer older than an hour stops reporting until a fresh one arrives; until then the plugin behaves exactly as the previous release did.
  • Isolated queue. Commit reports use their own on-disk queue, separate from prompt and response capture, so a stuck or failing report queue cannot delay, drop, or reorder a captured prompt or response.
  • Strong privacy guarantees. Remote URLs are reduced to host and path — credentials, ports, query strings, and fragments are discarded. The repository fingerprint is an HMAC keyed by a 32-byte secret created once per install, and only committed work is measured (staged and untracked changes are never counted). Queued reports are stored owner-only and removed after thirty days.
  • /prism:status reports more. Whether commit reporting is active, and how many reports are queued or settled — as counts and reasons only.
  • Update awareness. The plugin checks at session start whether a newer version has been published — at most once a day — and folds that into a single startup message. After a plugin reload, the first prompt reminds you to restart.
  • Keys are tied to their environment. /prism:setup binds your key to the ingest destination it was issued for. Editing apiKey or ingest_url by hand afterwards is detected locally and refused, rather than quietly sending your data somewhere it doesn’t belong. Installs from before this release keep working until the next /prism:setup.
  • Safer uninstall. /prism:uninstall previews exactly what it will remove, re-checks everything immediately before touching it, and aborts without side effects if anything has changed. Other plugins’ settings are left alone.
  • Costs come from the server. Response costs use a model catalog supplied by Prism rather than a price table baked into the plugin, and an unknown or unpriced model reads cost n/a instead of a wrong number.
  • No lost responses. Responses are queued on disk and retried until the server confirms receipt, so a network blip or a restart no longer drops one.
  • /prism:doctor reports more. Managed-helper state and whether debug logging is on, including the file it writes to.
  • Commands run in isolated agents. Each slash command keeps a light controller and delegates execution to a foreground agent with only the tools that command needs.
  • Larger prompt/response body limit. The old 2000-character client cap is gone; bodies now clamp at the backend limit (2 MiB), and the rare truncation is flagged.

The plugin’s realtime and configuration surfaces.

  • /prism:realtime — on-demand summary of the current session: per-sub-session grades, turn and token activity, and a short narrative. Uses a server-side score (the local “Lite” grade was removed). The realtime summary is opt-in (show_realtime_summary, off by default).
  • /prism:config — manage runtime config with explicit show / help / set / unset actions; /prism:config and /prism:help enumerate the user-editable fields with their current and default values. Configuration authority is centralized in ~/.prism/config.json.
  • API keys — Prism API keys (prism_*) are supported alongside the legacy gck_* prefix; setup treats any non-empty key as opaque and lets the backend determine authentication.
  • Ingest overrides — the ingest base URL can be overridden via environment or config for local dev; plugin version provenance is attached to requests.
  • Cleanup — the Stop-hook context nudge and local token tracking were removed; the plugin no longer modifies Claude Code connection settings.
  • /prism:doctor — diagnostic command with deterministic checks; scope-aware cleanup prevents zombie plugin resurrection.
  • /prism:report — rewritten for weekly comparison, with a token-usage chart; scoring follows the spec-canonical formula and grade rendering matches the dashboard.
  • Gateway routing removed. The plugin no longer offers to route Claude Code’s API calls through the Optra gateway, and no longer changes Claude Code’s connection settings. Requests go straight to Anthropic; telemetry and scoring are unaffected.
  • Domain migration to optra-prism.com.
  • Install-scope detection and manual-install fixes.

First standalone plugin release via the grumatic/optra-prism-plugin marketplace — the initial slash commands and core telemetry: OTEL export (logs, metrics), session cost/token tracking, and the SessionStart / UserPromptSubmit / Stop / PostCompact lifecycle hooks.

Current slash commands: /prism:setup, /prism:status, /prism:config, /prism:doctor, /prism:realtime, /prism:report, /prism:help, /prism:uninstall.

The API and dashboard live in grumatic/optra-prism and are not independently versioned. Notable capabilities currently shipped:

  • Scoring — Prompt Score (current headline): the headline metric is the Prompt Score — your Average Prompt Grade rendered on a 0–100 scale with a letter grade. It’s computed from the per-prompt rubric (seven checks × eight intent classes → a grade) averaged across scored sub-sessions. See The scoring model.
  • Completion rate (supporting): the share of scored sub-sessions that were crushed — they cleared the substance floor, reached their goal, and were not redone afterwards. Shown alongside the Prompt Score, not as the headline.
  • Supporting metrics: Speed (CSPW — crushed sub-sessions per window — and TTC), Token Usage (Crush Weight = median tokens per crushed sub-session), and Skill (a habit-based Skill Index 0–100 with a Skill tier Novice→Elite).
  • Sub-sessions: each session is split into goal-arc sub-sessions with editable titles and LLM-generated summaries; realtime SSE pushes updates to the dashboard.
  • Throttle detection: four detectors — rate limits, latency spikes, prompt retries, service outages — at /v1/intelligence/throttle and the /insights/throttle page.
  • Rightsizing: API-equivalent cost references and observed plan-pressure signals for a subscription decision, served directly from Parquet. It does not recommend a model or a tier. /v1/intelligence/rightsizing + /insights/rightsizing.
  • Advisor & summaries: LLM session summaries and per-sub-session prompt coaching, surfaced in the report and on the Realtime view.
  • Reports: period reports with delivery history and optional Slack delivery; report content comes from the scoring pipeline.
  • Ingest: OTLP/HTTP JSON only (protobuf returns 415), gzip supported, NATS JetStream backpressure returns 503 with Retry-After: 5. A small subset of API endpoints is proxied through ingest for the plugin / external callers.
  • Dashboard: organized as My Work (Overview, Realtime, Report, Daily Recap), Analytics (Prompt, Speed, Token Usage, Skill), Insights (Sessions, Productivity, Activity, Throttle), Advanced (Telemetry, Rightsizing), and Team (the manager console — Overview / Performance / Cost / Reports). Settings (Profile, Organization, Users, Teams) opens from the account menu in the header.
  • The aggregate “PRISM Score” metric — the earlier single 0–100 crush-rate number branded “PRISM Score” is no longer surfaced as the headline. The visible headline is now the Prompt Score (average prompt grade); the crush measure remains as the supporting Completion rate.
  • Scoring model lineage — the original 6-dimension model (12 metrics) was replaced by a v2.1 three-score model (Speed / Skill / Efficiency), which has since been fully retired. There is no version toggle; the score_version_pref switch and the standalone /scoring/ v2.1 docs section were removed.
  • Waste detection — the seven-detector catalog still writes to prism.waste_events, but the /v1/intelligence/waste read endpoint was removed; waste framing now appears only inside the generated report chapters.
  • Recommendations API/v1/intelligence/recommendations and its status workflow were removed; Rightsizing and advisor coaching replace it.
  • Vibe Metrics — both the UI and the /v1/telemetry/vibe-metrics endpoint were removed.
  • Legacy v2.1 /prism/* API — the whole /prism/* family and POST /v1/intelligence/score-prompt were removed. Per-prompt scoring is now internal to the pipeline. GET /v1/intelligence/prism remains only as an authenticated stub returning an empty result for backward compatibility.