Skip to content
Research
Skill

/sync-submission

Use when building, auditing or freezing a journal submission package from the canonical manuscript. Detects drift between the source and the per-journal submission copy, builds byte-preserving packages with manifests, and records current, stale or frozen status.

BOOST
From plugin
medsci-skills
34462 skills
Install
$ npx -y skills add Aperivue/medsci-skills --skill sync-submission --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/sync-submission

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when building, auditing or freezing a journal submission package from the canonical manuscript. Detects drift between the source and the per-journal submission copy, builds byte-preserving packages with manifests, and records current, stale or frozen status.

SKILL.md

sync-submission.SKILL.md
name: sync-submission
description: Use when building, auditing or freezing a journal submission package from the canonical manuscript. Detects drift between the source and the per-journal submission copy, builds byte-preserving packages with manifests, and records current, stale or frozen status.
metadata:
  triggers: "sync submission, build submission, submission drift, SSOT sync, journal package, retarget journal, freeze submission"

Sync Submission

Keep the canonical manuscript and journal-specific submission packages from drifting apart. Treat `submission/{journal}/` as derived output and record whether it is current, stale, or frozen.

Inputs

1. Project root containing `project.yaml`, or a direct canonical manuscript path. 2. Journal short name, e.g. `chest`, `ryai`, `academic_radiology`. 3. Optional mode:

  • `audit`: compare existing submission against canonical source.
  • `build`: copy canonical source and optional declared final artifacts, preserving file bytes, and write metadata.
  • `freeze`: freeze the chosen byte snapshot with its available check context (not submission approval).

Deterministic Script

python "${CLAUDE_SKILL_DIR}/scripts/sync_submission.py" audit --project-root . --journal chest
python "${CLAUDE_SKILL_DIR}/scripts/sync_submission.py" build --project-root . --journal chest
python "${CLAUDE_SKILL_DIR}/scripts/sync_submission.py" freeze --project-root . --journal chest --status submitted

For double-blind journals, sweep author identifiers across all upload artifacts:

python "${CLAUDE_SKILL_DIR}/scripts/blind_sweep.py" \
  --registry _shared/authors/author_registry.yaml \
  --files submission/{journal}/supplementary/*.md submission/{journal}/cover_letter.md \
  --backup-dir .cache/blind_sweep_backup

The registry is a project-local YAML mapping author identifiers (full names, native scripts, initials with/without periods, email, ORCID) to role labels (e.g., "Reviewer 1"); schema in `scripts/author_registry_example.yaml`. Never commit a populated registry to a public repository, because it lists the authors' identities — keep it next to the manuscript.

Output Contract

| Artifact | Path | Purpose | |---|---|---| | Submission metadata | `submission/{journal}/.journal_meta.json` | Source hash, status, canonical path | | Sync audit | `qc/submission_sync_{journal}.json` | Drift result consumed by orchestrator | | Manifest update | `artifact_manifest.json` | Submission package registry | | Pre-flight gate | `qc/preflight_gate_report.json` | Aggregated halt-on-failure manifest (see "Pre-flight gate" below) | | Supplement structure | `qc/supplement_structure.json` | Gate 14: index↔file 1:1, sub-section gaps, callout coverage |

For a complete bundle, run the existing renderers first, then `build --bundle-spec bundle.json`. The declaration adds final Word/PDF, supplement, cover-letter, table/figure and notice files with pinned render-input hashes and reuse-rights records. Copies preserve file bytes; content and visual fidelity stay `not_assessed` until separately reviewed. Build refuses edited or frozen outputs and destructive path collisions. Read [bundle workflow](references/bundle_workflow.md) for the schema, a runnable synthetic example and the limits of each recorded check.

Pre-flight gate (single command — last step before freeze)

Run this once, right before `freeze`/submission:

python "${CLAUDE_SKILL_DIR}/scripts/preflight_gate.py" --project-root . --journal chest
# add --strict to also halt on the heuristic/conditional (P1) checks
# add --online to make fabricated / author-mismatched references halt (PubMed/CrossRef)
# add --double-blind to make the asset-anonymization scan halt

It shells out to the per-check scripts (reimplementing none), writes `qc/preflight_gate_report.json`, and exits `0` clean, `1` halt (≥1 blocker), `2` gate config error (e.g. a `--require`'d check could not run). A non-zero exit blocks the freeze.

  • **P0 — halts by default** (unambiguous, deterministic errors): leftover placeholder/markers

(`check_placeholders.py`), undefined `[@key]` citations (`check_citation_keys.py`), duplicate references (`verify_refs.py`, offline-deterministic), a canonical-vs-submission hash mismatch (`sync_submission.py audit`), and an internal-audit dump in a reviewer-facing file (`check_checklist_dump_leak.py`).

  • **P1 — runs and reports `warn`, halts only with `--strict` or `--require ID`:** `check_xref`,

`detect_copy_divergence`, `scope_drift_check`, `cover_letter_drift_check`, `cross_document_n_check`, `check_cross_artifact_stale`; `check_asset_anonymization` is P1 unless `--double-blind`.

  • A check whose inputs are absent (no rendered docx, no cover letter, no copies, no journal) is

recorded `skipped`, never a blocker. A check that **ran and failed** — a traceback, an unexpected exit code, or a "missing input" exit while its inputs are present (malformed `.journal_meta.json`, an undecodable cover letter, a named `--copy` that does not exist, an unreadable file in the N scan) — is recorded `error`: `submission_safe` is false and the gate exits `2`, with or without `--strict`.

Do not read the report as approval. Its legacy `submission_safe` field means only "no configured blocker/error"; `readiness` stays `not_assessed`; the optional bundle hash binding identifies the package present during the run, not per-file visual inspection or every external check input. Run `audit` again after preflight to expose current, stale or unbound evidence. Freeze records a byte snapshot and its available check context; it does not run preflight or approve source fidelity or reuse permissions.

**Audit-dump leak check (P0).** A `/check-reporting` or `/self-review` report is an internal working audit — auto-fix annotations, a raw JSON block (`compliance_pct`, `fixable_by_ai`, `check_reporting_version`), pipeline-log paths, "Action Items". It is not the official reporting checklist a

Read more
Ships withmedsci-skills

Created & maintained by Yoojin Nam, MD Department of Radiology and Research Institute of Radiology, University of Ulsan College of Medicine, Asan Medical Center, Seoul, Republic of Korea MedSci Skills is a set of Agent Skills for clinical research: literature

Get the whole plugin

Other skills on medsci-skills.