vis-preview — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited vis-preview (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generate a single HTML report in {paper_dir}/display/ with a three-panel layout: PDF page images on the left, code viewer with syntax highlighting in the middle, and review findings on the right. All findings are permanently highlighted on the PDF with colored overlays, and clicking works bidirectionally (PDF → finding, finding → PDF).
{paper_dir}/*.pdf — the paper PDF{paper_dir}/reports/check_*.json — all available check reports{paper_dir}/metadata/code/index.json — code tree (optional)Any missing report is skipped with a notice.
- [ ] Step 1: Collect inputs and confirm the main PDF
- [ ] Step 2: Generate HTML via build_review.py (renders pages, runs quote search)
- [ ] Step 3: Copy assets{paper_dir}/ (e.g. via Glob){paper_dir.name}.pdfSkip files like appendix.pdf, supplementary.pdf, or version-suffixed older PDFs unless they are the only candidate.
{pdf_path} to pass to build_review.py later.check_*.json files from {paper_dir}/reports/{paper_dir}/metadata/code/index.json for the code file treeIf no PDF is found, fail with a clear message — do not proceed.
Run the build tool to generate the complete paperdoctor.html. Pass the main PDF chosen in Step 1 via --pdf. build_review.py handles three things internally:
{paper_dir}/display/pages/ (skipped if already present, idempotent across reruns).quote fields from check_*.json and runs pdf_search.search_pdf to produce {paper_dir}/reports/quote_positions.json for permanent highlight rendering.python tools/build_review.py {paper_dir} --pdf {pdf_path}This reads all check_*.json, quote_positions.json, and index.json, then generates {paper_dir}/display/paperdoctor.html with:
White header with PaperDoctor logo (left) + "PaperDoctor" brand text (center).
index.json by default; switches to code viewer on clickAt the top of the right panel (below paper title), an SVG donut pie chart summarizing claim verification results by status:
#10b981 (green)#f59e0b (amber)#ef4444 (red)#6b7280 (gray)#3b82f6 (blue)Each finding card shows:
Copy each of these from the repo's top-level assets/ directory into the {paper_dir}/display/ folder:
highlight.min.js — syntax highlighting (local, from highlight.js)python.min.js — Python language supportgithub-dark.min.css — code themelogo.png — PaperDoctor logocp assets/{highlight.min.js,python.min.js,github-dark.min.css,logo.png} {paper_dir}/display/Output directory: {paper_dir}/display/
Contents:
display/
├── paperdoctor.html # the interactive report (generated by build_review.py)
├── pages/ # pre-rendered PDF page images
│ ├── page-001.png
│ ├── page-002.png
│ └── ...
├── highlight.min.js # syntax highlighting (local)
├── python.min.js # Python language support
├── github-dark.min.css # code theme
└── logo.png # PaperDoctor logoFollow the autolab.moe/blog aesthetic:
#f9fafb)4px 4px 0px #d1d5db)#10b981), amber (#f59e0b), red (#ef4444), gray (#6b7280)#1a1a1a / #1e1e1e (dark, for PDF/code contrast)file:// protocol.position: absolute inside each page wrapper, scaled to match the displayed image size<details> for collapsible sections in both report sections and individual finding detailbuild_review.py tool handles all HTML generation — do not hand-edit paperdoctor.html~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.