Best for
- Use when user says "integrity forensics", "forensic audit this paper", "投稿前自查诚信", "审这篇论文的诚信", or says "anti-autoresearch" when the u
wanshuiyin/Auto-claude-code-research-in-sleep/skills/integrity-forensics/SKILL.md
Use it for research tasks; the detail page covers purpose, installation, and practical steps.
Decision brief
Audit target: $ARGUMENTS
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --skill "skills/integrity-forensics"Inspect the Agent Skill "integrity-forensics" from https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep/blob/014c16e0e58198e4230fafd246b0e6203892422f/skills/integrity-forensics/SKILL.md at commit 014c16e0e58198e4230fafd246b0e6203892422f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
bash CLONEDIR="$HOME/.aris/anti-autoresearch" ANTIARCOMMIT="b47af6f983b38347b6d2110379e266400597cf66"
git -C "$CLONEDIR" reset --hard -q "$ANTIARCOMMIT" || { echo "FATAL: reset to pin failed"; exit 1; } git -C "$CLONEDIR" clean -ffdxq || { echo "FATAL: clean failed"; exit 1; } [ -z "$(git -C "$CLONEDIR" status --porcelain)" ] || { echo "FATAL: clone is not pristine after reset+c…
Open and follow $CLONEDIR/workflows/anti-autoresearch/SKILL.md end to end on the target. Two wrapper rules — the ONLY things this launcher adds:
Review the “Step 2 — Typed gate + obligations (ARIS-side post-processing)” section in the pinned source before continuing.
Every OPEN obligation gets DISPOSITIONED — fixed, or explicitly waived. Upstream now reports every proposal an auditor made rather than deciding which ones do not count, so expect more obligations than a pre-2026-08 sweep opened, and expect some of them to be proposals you disag…
Permission review
The documentation includes network, browsing, or remote request actions.
git clone --no-checkout https://github.com/wanshuiyin/Anti-Autoresearch.git "$CLONE_DIR"The documentation asks the agent to run terminal commands or scripts.
git clone --no-checkout https://github.com/wanshuiyin/Anti-Autoresearch.git "$CLONE_DIR"The documentation asks the agent to run terminal commands or scripts.
git -C "$CLONE_DIR" cat-file -e "$ANTI_AR_COMMIT^{commit}" 2>/dev/null \The documentation asks the agent to create, modify, or delete local files.
shell access has owner power (they could delete the directory outright).Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15,246 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Audit target: $ARGUMENTS
What this is. ARIS generates papers; Anti-Autoresearch is its outward-pointed dual — reviewer-side integrity forensics (46 patterns across 8 families, deterministic GRIM/GRIMMER/statcheck core, span-anchored claims, a rules-only reporter that summarizes rather than adjudicates). This skill is a thin launcher: it pins an upstream commit, validates the pin with the upstream eval gate, delegates execution unchanged, and post-processes the verdict into ARIS's policy vocabulary. It vendors nothing and forks nothing.
🔁 Cadence fence (
shared-references/external-cadence.md): this skill is verdict-bearing decision support. Do not wrap it in/loop//schedule— and NEVER as "iterate edits until it stops flagging" (see The One Forbidden Loop below).
https://github.com/wanshuiyin/Anti-Autoresearch.gitb47af6f983b38347b6d2110379e266400597cf66 — the SHA-pin.
The launcher NEVER tracks upstream HEAD; bumping this constant is a reviewed
change (see Pin-bump checklist).~/.aris/anti-autoresearch — the pinned working copy. Host-neutral
on purpose: ARIS also runs on DeepSeek Harness, Codex CLI, Cursor, Trae,
Antigravity and Copilot CLI, where ~/.claude/ would name an installation the
user does not have. An older clone at ~/.claude/anti-autoresearch is unused;
move it and its .aris_eval_ok_* receipt only to keep an offline
deterministic-only run working, otherwise delete it whenever convenient.— effort: onto upstream settings. The
pinned upstream runs exactly what it pins (gpt-5.6-sol + xhigh, its own
design decision). Overriding upstream review policy from a launcher would
create a second, unauditable configuration surface.forensics_gate.py — resolved via the canonical chain
(shared-references/integration-contract.md §2): .aris/tools/ →
tools/ → $ARIS_REPO/tools/ → $ARIS_REPO/tools/ via ~/.aris/repo.
Failure policy A (required): if it cannot be resolved at
assurance: submission, STOP — never improvise the gate.CLONE_DIR="$HOME/.aris/anti-autoresearch"
ANTI_AR_COMMIT="b47af6f983b38347b6d2110379e266400597cf66"
mkdir -p "$HOME/.aris"
if [ ! -d "$CLONE_DIR/.git" ]; then
git clone --no-checkout https://github.com/wanshuiyin/Anti-Autoresearch.git "$CLONE_DIR"
fi
# fetch ONLY if the pin isn't already present — a cached, validated pin works offline
git -C "$CLONE_DIR" cat-file -e "$ANTI_AR_COMMIT^{commit}" 2>/dev/null \
|| git -C "$CLONE_DIR" fetch -q origin
git -C "$CLONE_DIR" checkout -qf "$ANTI_AR_COMMIT" || {
echo "FATAL: cannot checkout pinned commit $ANTI_AR_COMMIT"; exit 1; }
# Force a PRISTINE tree at the pin — local tampering with the clone (edited
# adjudicator, injected module, even one hidden inside a NESTED git repo,
# which single-f clean skips) must not survive bootstrap and run under the
# official pin's name. Every step is checked; then the tree is verified.
git -C "$CLONE_DIR" reset --hard -q "$ANTI_AR_COMMIT" || {
echo "FATAL: reset to pin failed"; exit 1; }
git -C "$CLONE_DIR" clean -ffdxq || {
echo "FATAL: clean failed"; exit 1; }
[ -z "$(git -C "$CLONE_DIR" status --porcelain)" ] || {
echo "FATAL: clone is not pristine after reset+clean — refusing to run"; exit 1; }
# One-time-per-pin validation: the upstream eval gate (8 injected-defect
# classes, 100% recall + zero clean false positives) must PASS before this
# pin is allowed to produce a verdict. NEVER skip; NEVER proceed on failure.
# The marker lives OUTSIDE the clone: a marker inside a tamperable tree proves
# nothing (and `git clean` above would erase it, forcing re-eval every run).
MARKER="${CLONE_DIR}.aris_eval_ok_${ANTI_AR_COMMIT}"
if [ ! -f "$MARKER" ]; then
( cd "$CLONE_DIR" && python3 eval/run_eval.py ) || {
echo "FATAL: upstream eval gate FAILED at pin $ANTI_AR_COMMIT — refusing to"
echo " use an unvalidated forensics pin for verdicts."; exit 1; }
touch "$MARKER"
fi
echo "anti-autoresearch pinned at $ANTI_AR_COMMIT (eval gate: validated)"
Open and follow $CLONE_DIR/workflows/anti-autoresearch/SKILL.md end to
end on the target. Two wrapper rules — the ONLY things this launcher adds:
git rev-parse --show-toplevel.
Run every upstream bash block with cd "$CLONE_DIR" first — ALWAYS the cd,
never just an exported ROOT (upstream blocks re-derive ROOT themselves
and would overwrite it) — and refer to the paper by absolute path,
otherwise upstream resolves ROOT to the ARIS repo and finds the wrong
Python spine.approval-policy: never + sandbox: read-only
(session hygiene; upstream already specifies fresh-thread-per-dimension,
serial execution, and its own model pins — do not alter them).Everything else — the evidence ledger, coverage.json state machine, the nine
auditor dimensions, the refutation pass, the deterministic summary — is
upstream's contract. Never rewrite, soften, or re-map its outputs
(report.json + REPORT.md, verdict ∈ CLEAN_GIVEN_EVIDENCE / SOFT_FLAGS /
HARD_FLAGS / REVIEW_UNAVAILABLE). The observability level (L0/L1/L2) is
whatever upstream derives from the artifacts present — do not promise L2.
# Resolve $GATE_HELPER via the canonical chain (integration-contract §2), then
# ONE atomic call (update + gate in a single locked transaction — the gate only
# ever speaks for the report the ledger has folded, sha-bound):
python3 "$GATE_HELPER" evaluate --report "$PAPER_DIR/report.json" --paper-dir "$PAPER_DIR" \
--anti-ar-commit "$ANTI_AR_COMMIT" --executor-model "<this pipeline's executor>"
# exit 0 = WARN / NO_NEW_BLOCKER · exit 1 = BLOCK
The gate translates the verdict into policy WITHOUT re-labeling it:
| upstream verdict | policy |
|---|---|
HARD_FLAGS | BLOCK — an auditor proposed something critical and it is on the table for you to read; never "the machine found fraud" |
REVIEW_UNAVAILABLE | BLOCK — an incomplete sweep cannot wave a paper through |
SOFT_FLAGS | WARN — human disposition. Read the never-ran list too: the upstream verdict folds incompleteness in only when it would otherwise be clean, so a WARN can sit on top of a sweep where verdict-bearing dimensions never ran. evaluate and fresh both print those dimensions |
CLEAN_GIVEN_EVIDENCE | NO_NEW_BLOCKER — never called PASS or accepted: it means "no flag found in the evidence at hand", not an acquittal |
| anything else | BLOCK (fail closed) |
plus: any OPEN critical obligation → BLOCK; any OPEN obligation → at least
WARN; a closed-without-receipt or unknown-status ledger entry → BLOCK (a
hand-edited "status": "RESOLVED" does not open the gate).
gate.json also records a paper_fingerprint (sha over the paper's compile
inputs AND deliverables — .tex/.bib/.sty/.cls/figures/PDF). The
downstream preflight is ONE command:
python3 "$GATE_HELPER" fresh --paper-dir "$PAPER_DIR" --anti-ar-commit "$ANTI_AR_COMMIT"
— exit 0 ⟺ the gate was produced at the CURRENT pin ∧ a gate
exists ∧ nothing in the paper changed after it ∧ the gate matches the current
obligations ledger ∧ the decision — re-computed from the sha-verified
archived report (last_report.json) + the live ledger, never read from the
gate's stored token — is pass-capable (WARN / NO_NEW_BLOCKER). Anything
else — missing gate, post-gate edit or recompile, unbound ledger or archive,
recompute mismatch, BLOCK, unknown token — exits 1: re-run the sweep +
evaluate. Every ledger mutation (update/resolve/waive) deletes the
standing gate.json, so an interrupted run can never leave a stale pass; and
evaluate refuses a report OLDER than any paper file (a stale report cannot
be folded onto text it never audited). Run evaluate immediately after the
sweep, before touching any paper file.
The gate artifact also records honest provenance: upstream's auditors are
GPT-family, so for a Claude executor the findings carry cross-family
proposal provenance; for a Codex executor they are same-family. Either
way this gate only raises flags — it has no acceptance to grant, so the
distinction is informational, not a loophole.
Every OPEN obligation gets DISPOSITIONED — fixed, or explicitly waived. Upstream now
reports every proposal an auditor made rather than deciding which ones do not count, so
expect more obligations than a pre-2026-08 sweep opened, and expect some of them to be
proposals you disagree with. waive is a first-class, expected outcome — "a model
proposed this and I, the human, judge it wrong" is a normal disposition here, not a last
resort. Weigh each one against the report's columns: Anchored, Observability,
FP-risk, Surface, Ext-check.
For the ones that are real, use the right door:
| Finding family | Repair route |
|---|---|
| A — numeric self-consistency | recompute from the RESULT FILES (/paper-claim-audit evidence chain); fix the number, not the sentence |
| D — experiment integrity | back to /experiment-audit / rerun |
| E — citations | /citation-audit KEEP/FIX/REPLACE machinery |
| G — proof & derivation | /proof-checker's fix loop |
| B / C / H — scope, baselines, eval design | science-level: feed the finding to /auto-review-loop as reviewer INPUT, or to the human |
| AIS / advisory (zero-weight) | optional context for /auto-paper-improvement-loop; never gates |
Close each obligation explicitly — the receipt is typed and hashed:
python3 "$GATE_HELPER" resolve --paper-dir "$PAPER_DIR" --obligation-id <id> \
--fix-type corrected-from-results|claim-narrowed|claim-withdrawn|citation-replaced \
--evidence <path-to-the-ground-truth-that-backs-the-fix> \
--verified-by "human:<name>" | "checker:<tool>" | "cross-family-review:<thread-id>"
# or, with HUMAN sign-off only:
python3 "$GATE_HELPER" waive --paper-dir "$PAPER_DIR" --obligation-id <id> \
--approver "human:<name>" --reason "<why this stands as-is>"
Rules the ledger enforces mechanically (tests/test_forensics_gate.py):
UNRESOLVED_DISAPPEARANCE — rewording the span is not a fix;claim-withdrawn is an honest fix (deleting an unsupported claim is a
legitimate resolution — with the deletion diff as evidence);fix_type label is a receipt, not a verdict — closure of a
critical needs a family checker, a fresh cross-family review, or a human
(--verified-by requires TYPED provenance and is recorded; naming a human
who did not approve is a false record with a permanent paper trail);resolve/waive (like update) invalidate the standing gate.json —
finish Step 3 by re-running the sweep + evaluate, so the gate that
downstream preflights read reflects the post-fix state.Never run "edit → re-sweep → repeat until CLEAN". That objective function teaches the editor to defeat the detector — deleting an anchored span kills a flag faster than fixing the number, and the result is a paper laundered against its own audit. The re-run after fixes exists to confirm the DISCREPANCY is gone (and to catch new ones); the obligations ledger — not the verdict — decides whether the gate opens.
fresh never trusts a stored token).human: / checker: / cross-family-review: labels are
accountability, not authentication: a false label is an explicit,
permanent false record..aris/ artifacts consistently with
shell access has owner power (they could delete the directory outright).
The gate defends against the sloppy or corner-cutting executor and against
honest crashes/races/resumes — not against the machine's owner.ANTI_AR_COMMIT; delete no markers (the eval gate re-runs
automatically for the new SHA).schemas/report.schema.json + verdict vocabulary against
the gate's policy table; extend tools/forensics_gate.py BEFORE bumping if
they moved.fresh
rejects every stored gate.json at the old pin with PIN_MISMATCH, so a
bump already forces a re-sweep for everyone — bundle upstream changes behind
ONE bump rather than two, or the re-sweep cost is paid twice.2026-08 bump (
98a75fc) — expect more open obligations. Upstream moved from adjudicating proposals to reporting them: findings its FP-risk, observability, surface and needs-external-check gates used to demote toinfonow arrive above info, so they open obligations. Nothing got worse in the paper; more of what the auditors said is now visible. Waiving a proposal you judge wrong is the expected disposition, and the report's per-finding columns (Anchored,Observability,FP-risk,Surface,Ext-check) are what you weigh. Upstream also deleted its report self-binding hashes in the same window — nothing here ever consumed them.
Upstream ships no Codex-native pack; its auditor skills are Claude-Code
contracts. A Codex-native session may run upstream's deterministic-only
mode (numeric core + adjudicator with an all-review_unavailable coverage
map — honestly scoped: it can flag, it can never say CLEAN). The full
nine-dimension sweep requires a host that can execute upstream's Claude-Code
contracts unchanged — Claude Code and the dsh-aris bundle on DeepSeek Harness
are the known ones. Translating upstream's
reviewer calls into spawn_agent on the fly is REWRITING an upstream
contract — forbidden.
Upstream saves its own per-dimension traces under the paper's
.aris/traces/. The launcher adds only the .aris/forensics/ artifacts:
gate.json (pins anti_ar_commit + report/ledger hashes + the paper-text
fingerprint), obligations.json (the append-only ledger), and
last_report.json (the sha-verified archive of the folded report that
fresh recomputes from).
Frequently asked questions
Audit target: $ARGUMENTS
The source record exposes this install command: npx skills add https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --skill "skills/integrity-forensics". Inspect the command and pinned source before running it.
The pinned source record declares support for: codex.
Static rules flagged network, exec-script, write-files in the source; the page lists the matching lines and excerpts.
Alternatives
wanshuiyin/Auto-claude-code-research-in-sleep
Two-thread adversarial review: a fresh reviewer constructs the strongest 200-word rejection memo, then a second fresh reviewer defends the paper point-by-point and surfaces still-unresolved critical issues. Use when user says "kill argument", "adversarial review", "hostile review", "rebuttal preparation", "reviewer-2 simulation", or before submitting a theory paper that has already passed standard review rounds.
wanshuiyin/Auto-claude-code-research-in-sleep
Two-thread adversarial review: a fresh reviewer constructs the strongest 200-word rejection memo, then a second fresh reviewer defends the paper point-by-point and surfaces still-unresolved critical issues. Use when user says "kill argument", "adversarial review", "hostile review", "rebuttal preparation", "reviewer-2 simulation", or before submitting a theory paper that has already passed standard review rounds.
vasilyu1983/AI-Agents-public
Scans public GitHub repos for agent skills, dev practices, and code patterns. Use when enriching skills, setting team policy, or researching a build domain.
samber/cc-skills-golang
Troubleshoot Golang programs systematically - find and fix the root cause. Use when encountering bugs, crashes, deadlocks, or unexpected behavior in Go code. Covers debugging methodology, common Go pitfalls, test-driven debugging, pprof setup and capture, Delve debugger, race detection, GODEBUG tracing, and production debugging. Start here for any 'something is wrong' situation. Not for interpreting profiles or benchmarking (→ See `samber/cc-skills-golang@golang-benchmark` skill) or applying opt