Skip to content
Back to skills

Evidence

ASecurity

Produce visual PR evidence — a screenshot or video — whenever a change has on-screen impact. Tests are never a substitute; a change can be backend by cause and visible by effect. Capture via the project's e2e harness on a pu box, or by driving a live kolu with the chrome-devtools MCP; host on a GitHub release and post a `## Evidence` comment. Triggers on "post evidence", "screenshot the change", "record a video of this", "show it working", "prove it", or finishing any change whose effect is v...

  • 81 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 5, 2026
toolsgoshellgitbackend

Works with

  • terminal
  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add juspay/kolu --skill evidence --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Evidence?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Evidence
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/juspay-evidence-kolu/badge)](https://www.skillsdirectory.com/skills/juspay-evidence-kolu)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: evidence
description: >-
  Produce visual PR evidence — a screenshot or video — whenever a change has
  on-screen impact. Tests are never a substitute; a change can be backend by
  cause and visible by effect. Capture via the project's e2e harness on a pu
  box, or by driving a live kolu with the chrome-devtools MCP; host on a GitHub
  release and post a `## Evidence` comment. Triggers on "post evidence",
  "screenshot the change", "record a video of this", "show it working", "prove
  it", or finishing any change whose effect is visible on screen.
---

# evidence — PR screenshots & video

## The gate — answer this first

> If someone exercised what this change affects, would the screen look
> DIFFERENT — before vs. after?

- **YES → a visual artifact is mandatory.** Static (end-state, single moment,
  before↔after) → **screenshot**. Motion (transition, flow, live update,
  animation) → **video**. A value-over-time element — a running timer, live
  counter, anything whose *job* is to change on its own — is motion: a frozen
  clock and a live one are pixel-identical in one frame, so watch it tick.
  A screenshot is a complete deliverable, not a runner-up to video.
- **NO → skip with one explicit PR line: `No visual impact: <why>.`** Silent
  skips are not allowed; neither is manufacturing a tenuous pixel for a change
  whose screen truly doesn't differ.

Excuses that don't hold (each was tried on a real PR and rejected):

- **"Backend change, no UI surface."** Backend by cause can be visible by
  effect — trace the effect to the screen, not the cause to a layer.
- **"No scenario exercises it."** That decides *how* you capture, never
  *whether*.
- **"It's a CLI/TUI — here's a transcript."** A terminal is an on-screen
  surface, and a pasted transcript is not a visual artifact. Record the real
  binary with vhs/asciinema.
- **"The tests prove it."** Tests accompany the artifact, never replace it.
- **"I reconstructed the output — close enough."** A synthesized artifact
  (formatter output posted as a recording, mocked data, a stub's clip) is a
  fabrication, and it hides the very bug evidence exists to expose. The
  artifact comes from really executing the change end-to-end against real
  data — and read the real output to confirm the feature works before posting.

## Capture

Runs on an ephemeral **pu box** (see the pu skill), never locally, so evidence
reflects a clean CI-like build of the PR's commit.

**Prefer the existing Cucumber + Playwright e2e harness** — `KOLU_EVIDENCE=1`
turns on video recording (see `packages/tests/support/hooks.ts`) and you select
a scenario by name. It's the default because the clip comes from the same code
CI runs. The one thing to avoid building is a *parallel capture harness* that
duplicates the step library; everything else is fair game when the harness
can't reach the state: pull a still from a recorded clip, drive a live kolu
with the chrome-devtools MCP and `take_screenshot`, `vhs` for a TUI, ordinary
shell setup for on-disk preconditions. Never skip for lack of a canned path.

**Delegate capture to a subagent** so the main context stays clear: brief it
with the box, branch, image-or-video, the scenario or live state, a `<slug>`,
the PR number, and the release tag; it returns the markdown it posted.

Commands, harness details, transcode settings, and vhs gotchas:
**[CAPTURE.md](CAPTURE.md)**.

## Host & post

- **`evidence-assets` is the one fixed release tag.** It already exists; verify
  it does, never create another, never derive a tag from the PR number.
- **The local filename IS the asset name** — copy back as `/tmp/<slug>.png`,
  not a decorated name, or every `…/download/evidence-assets/<slug>.png` embed
  404s.
- GIF embeds inline (keep under GitHub's ~10 MB limit); MP4 links via the
  shared player (`juspay.github.io/video-evidence`). PNG embeds like a GIF.
- Use a single-quoted heredoc when posting so backticks and `$` survive.
- **Tear the box down** when finished: `pu destroy "$host"`.

Files in this skill

  • CAPTURE.md5.2 KB
  • SKILL.md4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…