Skip to content
Back to skills

Venue Fork

ASecurity

Fork an existing paper into a concurrent second-venue submission variant with policy checks, separate Overleaf ownership, format conversion, budget refit, QA, and Atlas/Vault writeback. Use when submitting the same work concurrently to another permitted venue. Not for preprints, ordinary retargeting, or camera-ready work.

  • 144 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 23, 2026
researchgobashgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add flonat/flonat-research --skill venue-fork --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Venue Fork?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Venue Fork
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/flonat-venue-fork/badge)](https://www.skillsdirectory.com/skills/flonat-venue-fork)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: venue-fork
description: "Fork an existing paper into a concurrent second-venue submission variant with policy checks, separate Overleaf ownership, format conversion, budget refit, QA, and Atlas/Vault writeback. Use when submitting the same work concurrently to another permitted venue. Not for preprints, ordinary retargeting, or camera-ready work."
allowed-tools:
  - Read
  - Glob
  - Grep
  - Write
  - Edit
  - Bash
  - WebFetch
  - AskUserQuestion
---

# Venue Fork: Second-Venue Submission Variant

Fork a paper for a second venue while the original submission keeps living. A fork is a **copy**
(both venues track independently), unlike `retarget-journal` (a move) and `preprint` (a
non-archival variant that must NOT get a vault submission entry).

## When to Use

- A venue window explicitly permits concurrent submission (e.g. WINE 2026 ⟷ FOCS/SAGT/AFT 2026)
- A rejected paper needs a reformatted version for a differently-formatted venue
- the user says "submit this also to X", "concurrent submission to X", "make the X version"

## Phase 0 — CFP compliance sheet (blocks everything)

Fetch the **official CFP** (never WikiCFP alone; `mark-unverified` applies) and record:

| Item | Why it matters |
|---|---|
| Page limit + what's excluded (title page? references? appendix policy) | Drives the refit budget in Phase 3 |
| Font size / margins / class requirements | Submission format is often looser than camera-ready (e.g. WINE: ≥11pt, ≥1in, any class; LNCS only at camera-ready) |
| Blind policy | Anonymity QA in Phase 4; third-person self-citation per `double-blind-self-citation` rule |
| **Concurrent policy — on BOTH sides** | The target naming the source venue is not enough; verify the source venue's CFP reciprocates |
| Deadlines: submission, rebuttal, **notification** | Also the SOURCE venue's notification date |

**Timing analysis (report to the user):** if the source venue notifies before the target's
rebuttal/notification, acceptance there forces withdrawal from the target *before any reviews
arrive* — the fork is then insurance + comments-on-rejection, not guaranteed feedback. Say so
explicitly before doing the work.

## Phase 1 — Create the fork

1. New Overleaf project via Dropbox (the active client may create these — folder + main.tex = project):
   `Apps/Overleaf/Paper {Theme} {Short Name} ({VENUE} {YY})/` — Title Case, venue suffix, per
   the existing naming convention. Resolve the Dropbox root per `multi-machine.md`.
2. Copy from the source project: `main.tex`, the bib, figure dirs, any `.bst` the target format
   needs. **Never edit the source project's files** — it is a live submission surface.
   Copy **files by name only** — never `cp -r` a whole template/source dir into the new Overleaf
   folder, which would drag a `.git` in and make it a repo on the wrong remote. Confirm
   `find <new-overleaf-folder> -name .git` is empty. See `.claude/rules/template-scaffold-strip-git.md`.
3. Project dir: `mkdir <project>/paper-{venue}/` + **relative** symlink
   `paper-{venue}/paper → ../../../../../Apps/Overleaf/<name>` (absolute symlinks break
   cross-machine).

## Phase 2 — Document-class conversion

Target submission formats like WINE's are satisfied by plain `\documentclass[11pt,a4paper]{article}`
+ `\usepackage[margin=1in]{geometry}`. Conversion map:

| Source class | Strip | Replace with |
|---|---|---|
| `lipics-v2021` | `\Copyright`, `\ccsdesc`, `\category`, `\relatedversion`, `\supplement`, `\funding`, `\acknowledgements`, all `\Event*`/`\SeriesVolume`/`\ArticleNo`, `\titlerunning`/`\authorrunning`, 5-arg `\author{}{}{}{}{}` | article `\title` + `\author{Anonymous submission}` + `\date{}`; keywords as a `\noindent\textbf{Keywords:}` line inside the abstract |
| `llncs` | `\titlerunning`, `\institute`, `\spnewtheorem` defs, LNCS author-suppression hacks | amsthm with explicit `\newtheorem` for every env the body uses (`theorem`, `lemma`, `proposition`, `corollary`, `definition`, `example`, `remark`, `observation`, `claim`); `proof` comes from amsthm — do NOT redefine. `\keywords` shim: `\newcommand{\keywords}[1]{\par\medskip\noindent{\bfseries Keywords:} {\def\and{\unskip{} $\cdot$ }#1}}` |
| `acmart` | `\ccsdesc`, `\keywords`, `\copyright*`, `\settopmatter`, `\authornote` | as above |

- Grep the body first: `grep -o '\\begin{[a-z]*}' main.tex | sort | uniq -c` tells you exactly
  which theorem environments to define — the AFT paper needed none, the SAGT paper needed nine.
- `cleveref`: load `hyperref` then `\usepackage[capitalise,noabbrev]{cleveref}` when the body
  uses `\cref`/`\Cref` (LIPIcs loads it via class option).
- `.bst` files: `plainurl.bst` ships with TeX Live (urlbst); `splncs04.bst` must be copied into
  the fork. Check with `kpsewhich <name>.bst` before assuming.

**Shared math core.** A class conversion is a legitimate adoption window for
`user-math.sty` (`templates/venues/_shared/`): copy it in, load it AFTER the
new class, and delete the preamble's now-duplicate `\newcommand{\E}`-style
lines — it supplies the macro set, operators, delimiters, and theorem
environments clash-safely (`[notheorems]` when the kit owns them). Papers not
being converted are NOT retrofitted (`templates/venues/_shared/README.md`;
candidates: `docs/reference/user-math-adoption-candidates.md`).


## Phase 3 — Page-budget refit (relocate, never cut)

1. Compile; find where the body ends: `pdftotext -f N -l N main.pdf -` per page around the
   expected boundary — locate the References header page.
2. Compute overrun against the CFP budget (mind what's excluded: title page/references usually
   don't count; an 18pp LNCS body ≈ 12–13pp at 11pt/1in — LNCS text block is ~40% smaller).
3. Relocate in this order until the body fits, adding `\appendix` sections with pointer lines
   (`\noindent\emph{The proof appears in Appendix~\ref{...}.}`):
   1. Detail subsections readers can defer (experimental-design grids, implementation details)
   2. Large floats (tables/figures) — `\cref` keeps resolving when labels move with the float
   3. Longest proofs → "Omitted Proofs" appendix, re-titled `\begin{proof}[Proof of Theorem~\ref{...}]`
   4. Whole peripheral sections (motivating applications, extended demarcation)
4. **Never cut prose to fit** — relocation only (`manuscript-edit-budget` rule). Update any
   in-text `Section~\ref` pointing at moved content to `Appendix~\ref`.

## Phase 4 — QA gates (all must pass)

- `latexmk -pdf` exit 0; `grep -c 'LaTeX Warning: Reference\|Warning: Citation' main.log` → 0.
- Body-end page ≤ budget (re-run the Phase 3 boundary check — floats move on recompile).
- Anonymity grep on the tex: author surname, first name, all affiliated institutions,
  `acknowledg`, `our prior`, `we showed`, `in earlier work`. Then eyeball p1 of the PDF.
- **Render-level check** (compile logs cannot catch wrong-symbol output): `pdftotext` the PDF and
  grep for symbols that should/shouldn't appear — especially after any macro rename (see Gotchas).

## Phase 5 — Submission + writeback (after the user submits)

Multi-system completeness — all of these, then verify:

1. **Vault submission file** `submissions/<topic>-<venue>-<year>.md`: `status: Submitted`,
   `submitted_date`, and exactly one attention date: **`notification_date`** for a real CFP
   decision date or **`follow_up_date`** for an operational journal check-in. Set conference
   dates, `double_blind`,
   `paper_id`, and a body **concurrency clause**: which venue notifies first and the withdrawal
   obligation. Link the primary submission entry.
2. **Atlas topic** `outputs[]`: new venue entry, `status: Submitted` (output-ladder canon only),
   same dates, notes carrying the concurrency clause, **and the full submission-join set** per
   `rules/atlas-status-vocabulary.md` § submission-join completeness: `paper_id` (same as the
   vault entry), `paper_title` (must equal the registry `canonical_title`), and — if the venue is
   a Conference/Workshop — `cycle: <Venue> <edition-year>` (journals exempt). (Do NOT bump
   `last_reviewed` — a venue swap is not topic-file curation; only `update-topic-file` writes
   that field.) Validate with `atlas-vault/schema.py`; `validate-portfolio-registry.py` catches
   any missed join as `cycle-gap`/`title-gap` at the next `session-close`.
   If the fork target has **no venue file** yet, create `~/vault/venues/<slug>.md` with
   canon-only ranking fields (`cabs`/`core`/`scimago`/`venue_type` from the fixed sets — lookup
   caveats go in `#` comments after a canon value, never in the value).
3. **Submitted-PDF archive**: verify the HotCRP/CMT-downloaded PDF page-matches the local build,
   file at `<project>/paper-{venue}/submitted-YYYY-MM-DD.pdf` (outside the Overleaf symlink),
   add a pointer line in the vault entry.
4. **Inbox**: `curl -X POST localhost:8765/api/sync` (Mac Mini) and confirm the notification item
   appears; mark the met submission-deadline item done.

## Gotchas (each cost real time on 2026-07-02)

- **Macro renames: `\b` does not fire before `_`.** `re.sub(r'\\cap\b', ...)` misses `\cap_j`
  (underscore is a word char) — and the un-renamed token still compiles, rendering the WRONG
  symbol silently. Use `(?![a-zA-Z])` as the boundary and pdftotext-verify the output.
- **Macro names:** `\newcommand{\cap_}` is invalid (redefines `\cap`); never end a macro name
  with `_`; check clashes with amssymb (`\Cap`) before choosing.
- **Missing bib looks fine in Overleaf** because a copied `.bbl` renders references anyway —
  check the file list, not the PDF, when confirming the fork is complete.
- **Paperpile CLI snapshot lag:** freshly imported refs miss in `get-item`/`lookup-by-doi` for a
  while; the app-side BibTeX export is the authoritative canonical-key source meanwhile.
- Merge adjacent `\cite{a}\cite{b}` → `\cite{a,b}` after batch key swaps.

## Anti-Patterns

- **Don't** edit or compile inside the source venue's Overleaf project — fork first, then touch.
- **Don't** cut prose to make the page budget — relocate to appendices.
- **Don't** create the vault submission entry for a preprint-server post — that's `preprint`'s
  domain and the `preprint-vs-submission` rule forbids it.
- **Don't** skip verifying the concurrent policy on the SOURCE venue's side.
- **Don't** report "ready" from compile success alone — run the render-level check.
- **Don't** hand-author bib entries — Paperpile-canonical keys only (`paperpile-citations` rule).

## Verification

The fork is done when: fork compiles clean at/under budget with 0 warnings; anonymity + render
checks pass; source project untouched (`ls -lt` mtimes); after submission, vault + atlas agree
(`Submitted`, same dates), schema validates, the inbox shows the notification or follow-up item, and the
submitted-PDF archive is filed with a pointer.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.