Skip to content

tooling: add the line-evidence skill - #290

Draft
clins1994 wants to merge 3 commits into
beeper:mainfrom
clins1994:tooling/skills-evidence
Draft

clins1994 wants to merge 3 commits into
beeper:mainfrom
clins1994:tooling/skills-evidence

Conversation

@clins1994

Copy link
Copy Markdown
Contributor

Adds the line-evidence skill, which turns a feature's test screenshots into redacted, PR-ready images. Depends on #289: review that one first, and only the last commit here is new.


🇬🇧 More details

Summary

line-evidence collects test screenshots, finds personal data on them, covers it, and writes approved PNGs without metadata, plus a manifest that maps each image to a test plan step. Raw screenshots never leave the machine.

Why

Part 3 of 5 of the stack that brings the LINE skills into this repo, as asked on #280. Screenshots from a real LINE account show names, avatars and MIDs. This skill covers them in a repeatable way before anything goes into a PR.

Changes

New folder .agents/skills/line-evidence/:

  • SKILL.md: the workflow. Collect, pick from a local contact sheet, find personal data, preview, approve, write.
  • scripts/collect.py: copies screenshots from a time window, skips duplicates, and turns HEIC and rotated JPEGs into upright PNGs.
  • scripts/detect.py and scripts/vision-detect.swift: OCR and face detection on the device. It uses Apple Vision on macOS and tesseract elsewhere. Phone numbers, emails and LINE MIDs are covered. Every other word is covered too, unless it is in the plan's ## Test data.
  • scripts/redact.py: preview, approve and final output. Boxes are solid fills. Approval stores a hash, so a changed image or box needs a new approval.
  • scripts/manifest.py, scripts/contact-sheet.py, scripts/evidence_lib.py and scripts/line-evidence-preflight.sh.

The files live in test/<feature>/evidence/, which .gitignore already covers.

How it was tested

  • The preflight on macOS (arm64): all OK, with Apple Vision and tesseract.
  • bash -n and a Python syntax check on the scripts, and pre-commit run on every changed file: passed.

Not tested (and why)

Related

🤖 Generated with Claude Code using clins:create-pr

clins1994 and others added 3 commits October 27, 2026 23:57
Move the line-capture and line-analyze commands to .agents/skills, with
their scripts next to them, and link .claude/skills to .agents/skills so
Claude Code finds them.

The capture launcher now runs a dependency preflight first and works on
macOS, Linux and Windows (Git Bash). The CDP recorder releases every
page-like target so extension windows no longer open frozen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Writes the numbered test plan (test/<feature>/PLAN.md) for a bridge
feature before any capture or code: lettered sections, stable step IDs,
before/capture/after phases and a Result column, plus labeled sample
media when the feature needs files. check-plan.py validates the layout
and make-samples.py generates the samples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Turns a feature's test screenshots into PR-ready evidence: collects them
from local folders, builds a local contact sheet to pick from, finds
names, faces, phone numbers, emails and MIDs with on-device OCR (Apple
Vision on macOS, tesseract elsewhere), covers everything outside the test
plan's test data with solid boxes, and writes approved, metadata-free
PNGs plus a manifest. Raw screenshots never leave the machine.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant