Back to Claude Scientific Skills

Local Tool Contracts

skills/peer-review/references/tool_reference.md

2.55.07.6 KB
Original Source

Local Tool Contracts

All bundled tools are deterministic Python 3.11+ standard-library CLIs. They make no network, model, image, subprocess, environment-variable, dynamic-code, or pickle calls.

Shared safety behavior

  • Inputs: local JSON, CSV, or Markdown only
  • Maximum input size: 4 MiB
  • Maximum CSV rows: 5,000
  • UTF-8 only; NUL bytes rejected
  • Symlink inputs and outputs rejected
  • Duplicate JSON keys and CSV headers rejected
  • Unknown schema fields rejected by JSON validators
  • Existing outputs are not replaced unless --force is explicit
  • JSON and Markdown outputs are written atomically with owner-only permissions where supported
  • Reports contain IDs, counts, rule codes, and line numbers—not raw manuscript, review, claim, title, author, or reference prose

Exit codes:

  • 0: structurally valid or completed
  • 1: a validly parsed audit is blocked or has rule errors
  • 2: malformed input, unsafe path, unsupported field, or CLI validation error

Run tools from the skill directory or use absolute script paths.

Intake validator

bash
python3 scripts/validate_review_intake.py \
  assets/review_intake_template.json

Purpose:

  • Confirm documented authorization and human accountability
  • Record role, competence areas and limits, conflicts, target-venue policy, and review model
  • Enforce local-only processing, no external service use, no data reuse, and a deletion/retention record
  • Gate approved AI assistance on venue policy, permission, and disclosure

The bundled template is intentionally blocked until the human completes the controls.

Top-level JSON fields:

  • schema_version: 2.0
  • review_id: safe local identifier, not a manuscript title
  • material: status and sensitive-data flag
  • authorization: basis and documented permissions
  • reviewer: capacity, accountability, competence, and conflicts
  • venue_policy: checked status, review model, confidential-note channel
  • ai_use: policy, plan, permission, disclosure
  • handling: local-only, external-service, reuse, retention controls
  • scope: manuscript type, requested focus, limits, specialist needs

The report validates declarations, not their truth.

Reporting-guideline selector and coverage audit

Selection only:

bash
python3 scripts/select_reporting_guidelines.py \
  assets/study_profile_template.json

Selection plus coverage:

bash
python3 scripts/select_reporting_guidelines.py \
  assets/study_profile_template.json \
  --coverage assets/reporting_checklist_template.csv

Profile fields:

  • schema_version: 2.0
  • profile_id
  • study_types: identifiers such as randomized_trial
  • report_kind: results, protocol, abstract, or data_release
  • features: for example ai_based, ai_intervention, large_language_model
  • domains: for example health, genomics, proteomics

Coverage columns:

  • guideline_id
  • item_id: aggregate main item number for guidelines with a known main count
  • status: reported, partly_reported, not_reported, not_applicable, not_assessed
  • location: required for reported or partly reported items
  • rationale: required for not-applicable items

The catalog is assets/reporting_guidelines.json, verified on the date embedded in that file. It does not fetch live updates. The output deliberately has no percentage or quality score.

Claim–evidence matrix validator

bash
python3 scripts/validate_claim_evidence.py \
  assets/claim_evidence_matrix_template.csv

Columns:

  • claim_id
  • location
  • claim_type
  • claim_summary: input-only; never echoed
  • evidence_ids: semicolon-delimited local IDs
  • support_level: supported, partly_supported, unsupported, not_assessed
  • alignment_issue: direction, magnitude, population, outcome, timepoint, causal language, scope, uncertainty, selective reporting, other, or none
  • limitation: input-only; never echoed
  • requested_action: input-only; never echoed

Rules include:

  • Supported claims need evidence IDs and no declared alignment issue.
  • Partly supported claims need evidence, an issue code, and a requested action.
  • Unsupported claims need an issue code.
  • Claim IDs must be unique.

The tool does not determine whether evidence is true or sufficient.

Statistics and reproducibility checklist

bash
python3 scripts/audit_statistics_reproducibility.py \
  assets/statistical_reproducibility_template.json

The JSON contains:

  • Checklist and study-design IDs
  • Specialist-review declaration
  • Core item records with category, applicability, status, evidence locations, note, and requested action

Core areas:

  • Question/estimand alignment
  • Unit, independence, sample size, allocation, and blinding
  • Inclusion/exclusion, missing data, and data handling
  • Prespecification, method alignment, assumptions, multiplicity, and dependence
  • Effect estimates, uncertainty, denominators, outcomes, and harms
  • Data/material access, code/environment, and provenance
  • Ethics/governance, claim interpretation, and selective reporting

The tool requires the core item IDs but permits additional safe IDs. It reports gaps and specialist-review triggers without a score.

Citation/reference consistency audit

The Markdown must use Pandoc-style citation keys:

markdown
The synthetic method is described elsewhere [@ref-synthetic-2026].
Several sources may be grouped [@ref-one; @ref-two].

Run:

bash
python3 scripts/audit_citations.py \
  local-manuscript.md \
  assets/citation_references_template.csv

Reference CSV columns:

  • reference_id
  • title
  • authors
  • year
  • doi
  • url
  • verification_status: verified_primary, verified_secondary, or not_verified

The audit finds:

  • Citation keys without reference rows
  • Reference rows not cited
  • Cited references not marked verified
  • References without DOI or URL
  • Malformed citation syntax

It validates DOI/URL shape only. It does not resolve identifiers, search the web, verify existence, or determine whether a reference supports a claim.

Review scaffold generator

The intake must pass first:

bash
python3 scripts/generate_review_scaffold.py \
  completed-intake.json \
  -o private-review.md

The generator:

  • Reads assets/review_scaffold_template.md
  • Interpolates only safe intake identifiers
  • Never reads or embeds manuscript text
  • Separates comments to authors from confidential editor notes
  • Provides structured major/minor comment fields
  • Includes human-accountability and no-editorial-decision warnings

It refuses unresolved intake controls and implicit overwrite.

Tone and actionability lint

bash
python3 scripts/lint_review.py private-review.md

Required headings:

  • # Comments to authors
  • # Confidential comments to editor

Structured comment headings:

  • ### Major comment M1
  • ### Minor comment m1

Each comment must contain non-placeholder values for:

  • Location
  • Observation
  • Evidence or criterion
  • Why it matters
  • Requested action

The linter flags:

  • Missing or reversed author/editor channels
  • Editor-only markers in the author channel
  • Unresolved scaffold placeholders
  • A narrow lexicon of abusive or personal language
  • Role impersonation and editorial-decision phrases
  • Missing actionability fields
  • Claims of executed analysis that need provenance

Lexical lint has false positives and false negatives. Human review remains required.

Private output examples

All JSON-reporting CLIs accept:

bash
-o local-report.json

To replace an existing output deliberately:

bash
--force

Do not place outputs in a synced or shared directory unless the authorization and venue policy permit it. Delete or retain inputs, drafts, and reports according to the documented review policy.