agent-infini
Use the InfiniSynapse CLI (`agent_infini`) for multi-turn AI data-analysis tasks,…
学术审查 / research-integrity screening of a manuscript's figures and reported numbers. Finds duplicated, reused, or transformed image panels and data anomalies: copied value blocks, fixed differences/ratios between groups, digit patterns, Benford deviations,
$ npx -y skills add xuzhougeng/wisp-science --skill research-integrity-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/research-integrity-auditContext preview
The summary Claude sees to decide when to auto-load this skill.
学术审查 / research-integrity screening of a manuscript's figures and reported numbers. Finds duplicated, reused, or transformed image panels and data anomalies: copied value blocks, fixed differences/ratios between groups, digit patterns, Benford deviations,
name: research-integrity-audit description: "学术审查 / research-integrity screening of a manuscript's figures and reported numbers. Finds duplicated, reused, or transformed image panels and data anomalies: copied value blocks, fixed differences/ratios between groups, digit patterns, Benford deviations, GRIM/GRIMMER-inconsistent means and SDs, p-values mismatching their statistics. Use for 学术诚信, 图片查重, 论文图像重复, 数据造假筛查, Source Data 审查, 末位数字, 本福特, GRIM, statcheck, p 值核对, or when the user attaches a PDF, image directory, or CSV/Excel source data to audit." compatibility: Python 3.10+. Figure track needs Pillow, NumPy, pypdf, and pypdfium2, plus OpenCV with SIFT for the full feature-matching pass. Data track is standard library only, plus openpyxl for .xlsx input.
Screen a manuscript's evidence at the smallest meaningful unit: one experimental image panel, or one independently measured data series. Hashes, feature matches, and statistical tests find candidates; they do not establish misconduct, or even duplication, on their own.
Accept a PDF, a directory of manuscript images, and/or source data (CSV, TSV, Excel, or a directory of them). Resolve tagged or attached paths before running anything. Choose tracks from the input and the request:
tables, and numeric tables transcribed from the PDF.
A PDF usually warrants both unless the user limits scope. Ask for a page range only when the user did not specify one and scanning the whole PDF would materially change scope.
Create a new analysis directory such as `analysis/integrity-audit-YYYYMMDD-HHMM/` with `figures/` and `data/` as the two script workspaces. Never modify source files, overwrite a prior audit, or silently omit an unreadable file.
Locate both scripts from the resource paths returned by `use_skill`. If imports fail, load `local-env-setup`, create a project-local environment, and install the packages named in `compatibility`. Do not continue with the hash-only figure fallback when the user requested a strict or exhaustive review.
For a PDF:
python audit_figures.py prepare --input PAPER.pdf --output AUDIT_DIR/figures --pages "1-40,49-54"
The script extracts qualifying embedded raster images first. It renders a page only when no large embedded image is available and the page looks like a figure page, or when `--render-fallback all` is explicitly used. Review `sources.json`, `skipped.json`, and `sources-contact-sheet.png`; confirm that every requested figure is represented. A page render still contains captions and page furniture, so crop the figure before panel splitting.
For a directory:
python audit_figures.py prepare --input FIGURE_DIR --output AUDIT_DIR/figures
The script recursively inventories supported images, normalizes EXIF orientation into audit copies, and records hashes and original paths. It does not alter the directory.
`prepare` writes conservative panel proposals to `panels.json`. They are only proposals. View every source at full resolution and edit the manifest until:
wound, gel/blot region, or other experimental image has its own box;
labels such as `Fig2-D-r1-c2` rather than anonymous indices;
panels;
and merge, overview and inset, or known longitudinal views);
`western-blot`, `gel`, `plate`, `wound`, `ivis`, `chart`, or `schematic`).
Run:
python audit_figures.py materialize --workspace AUDIT_DIR/figures
Inspect `panels-contact-sheet.png` immediately. Fix bad crops and rerun. Do not scan until `manifest-warnings.json` has no unexplained out-of-bounds, duplicate-ID, or overlapping-box warning. Preserve parent/context crops when a tighter data-only crop is needed for matching.
python audit_figures.py scan --workspace AUDIT_DIR/figures --features required
The scan combines exact pixel hashes, perceptual hashes, normalized correlation, and SIFT + RANSAC geometry. It writes `candidates.csv`, `candidates.json`, `quality-flags.csv`, and `scan-summary.json`. Review every candidate, not only the first page of the table. Re-scan after any crop change.
Automatic scores are triage signals. Repeated labels, axes, membrane grids, plate rims, scale bars, and regular tissue texture often produce false matches. Conversely, different crops, contrast changes, rotation, mirroring, or recompression can hide a duplicate from hashes and global correlation.
Generate evidence for selected pairs or the highest-ranked unresolved pairs:
python audit_figures.py evidence --workspace AUDIT_DIR/figures --pair PANEL_A,PANEL_B python audit_figures.py evidence --workspace AUDIT_DIR/figures --top 20
Inspect the full panels, data-only crops, match-line view, registered red/green overlay, and metrics together. For circular plates or other strong borders, repeat with a tighter interior crop. For blots, compare both whole blot context and protein-by-lane crops. For microscopy, distinguish same-field channel derivation from cross-condition reuse. Consult `references/review-protocol.md` for modality-specific checks and verdicts.
Never call a pair confirmed from an inlier count or NCC alone. Confirmation requires geometrically consistent correspondence across independent random details in the data region, a plaus
The open-source, local-first AI research workbench. WISP — Workspace for Intelligent Scientific Practice Search the literature, run Python and R, query ~80 scientific databases, and keep the trail — figures, runs, decisions, and drafts — in one project.
Use the InfiniSynapse CLI (`agent_infini`) for multi-turn AI data-analysis tasks,…
Organize multi-step scientific analyses into reproducible, self-contained modules. Use for…
Use this skill to drive Wisp Browser Runtime sessions (shared daily Chrome or workspace…
Set up and validate a reproducible Python or R environment on a Wisp execution context. Use…
Use Cua Driver through MCP to inspect and operate the user's native desktop apps on Windows,…