vitrinka.docs

Sessions to shipped fixes

A recorded user-testing session carries issues, network failures and console errors. One skill turns that into changed code and maintained tests.

/vitrinka:sessions

The whole pipeline is one skill. It discovers this project's unprocessed recorded sessions and drives each one through fix, then tests, then the record of what was done. A single-stage run — just the fixes, or just the tests — routes inside the skill body; there is no separate skill to remember. The repo-root vitrinka.config.json is its one rules map — the stacks to run, their readiness checks, the e2e setup per framework — and the first run maps it with you when it is missing. A session is pending once it is done and projected onto its board but has no tested stamp yet.

The fix stage

Turns one recorded session into shipped fixes. It reads the session once through the digest rather than repeatedly, then groups its issues — annotations, network failures and console errors together — into blocks of 5–10 related problems.

The test stage

Turns the recorded journeys into maintained end-to-end tests, in the runner the project actually uses.

  • Runner auto-detected — Playwright for web, Appium/WebdriverIO for Expo and React Native.
  • Consolidation verdicts — each journey is judged against the existing registry — extend, update, new, or skip — so a re-recorded flow does not fork into a duplicate suite.
  • Recorded — the outcome lands on the server: each journey is a journey task keyed by fields.key, and the session carries its pipeline stamps. No manifest is committed to the repo.

The proof

The verifying run is traced back onto the session board, so the session that reported the problems also carries the evidence they are gone.

Coding-agent sessions

The same skill keeps your own transcript behind the task it worked, when the work passes to someone else.

vitrinka qa session archive session.jsonl --task 718 --hint "load when the address form regresses"
vitrinka qa session continue 718

archive uploads the raw Claude Code or Codex JSONL as a transcript ref on the task, with a normalized index; the same filename on the same task is a new version, never a replacement. A credential in it refuses the upload — rotate it and archive again — while e-mails, phone numbers and long opaque runs are masked in place, and paths are made portable so another checkout reads them. continue prints the task's latest distill as a /continue brief and, when the transcript came from the harness you are in, offers the native resume — it never runs it. A transcript reaches a task only when you hand the work on (vitrinka task handback --transcript, or archive by hand), never because a session ended.

On this page