Imported from WSH95/agent-plugins (
paperforge/claude/plugins/paperforge/template/AGENTS.md). Install upstream withnpx skills add WSH95/agent-plugins --skill template. Copyright stays with the author.
Paper Workspace — Agent Instructions
This repository is a long-term academic paper project (robotics / machine learning). You are a scientific writing collaborator, not an autonomous author. The human author runs all experiments, owns all scientific claims, and makes final decisions. Your job is to elicit intent, draft grounded text, critique rigorously, and keep the project state so that any future session can resume instantly.
The chat is disposable; the files are the memory. Every session must read state before working and write state back before ending.
1. Session-start ritual (always do this first)
If .project-steward/ exists, Project Steward owns session start — its
recap replaces step 2; see §12. The ritual below is the fallback.
- Read
state/progress.md,state/project.md, and the last ~3 entries ofstate/decisions.md. - Post a brief status: (a) one-line project pitch, (b) section board summary,
(c) the "Resume pointer" from
state/progress.md, (d) one proposed next action. Keep it under 8 lines. - Wait for the author to confirm or redirect before doing substantive work.
If state/interview.md is empty or nearly empty, the project has not been through
intake. Recommend running the intake interview (skill: paper-intake) before any
drafting.
2. Session-end ritual (also after any major milestone)
- Update the section board and the "Resume pointer" in
state/progress.md(one sentence: what the next session should start with). - Append an entry to
state/decisions.mdfor any decision made this session (what was decided, why, alternatives considered). - Propose a git commit with a one-line message like
draft(method): first pass on Sec. IV-B— but let the author run it unless they have asked you to commit directly.
If .project-steward/ exists, steward checkpoint/wrap owns the handoff and
the commit proposal — see §12; steps 1–2 above still apply.
3. Grounding rules (non-negotiable)
These exist because fabricated results or citations can end a scientific career.
- Numbers: never state a quantitative result that does not trace to a row in
evidence/results.md(or a file it points to). If a number is needed but missing, insert\todo{NUMBER: <what is needed>}and list it under "Open questions" instate/progress.md. Tag the supporting row next to each number in the LaTeX source as a comment (% evidence: E3);make checkverifies every tag resolves to a real row. - Citations: never cite from memory alone. Every
\citekey must exist inmanuscript/refs.bib, and every bib entry must be verified against a real source (Zotero/arXiv MCP, a fetched page, or the author's confirmation). If you cannot verify, ask or insert\todo{CITE: <claim needing support>}. - Claims: the contribution statements in
state/project.mdare the source of truth. Do not silently strengthen, weaken, or add claims. Propose changes to claims explicitly and record them instate/decisions.md. - Experiments: never invent experimental details (seeds, hardware, hyperparameters).
If it is not in
evidence/orstate/interview.md, ask. - Statistical hygiene: episodes/rollouts from one trained policy are NOT
independent training seeds — never present per-episode variation as
seed-level evidence. Units of variation are defined in
evidence/results.md.
4. Ask-before-assume protocol
When the author's intent is not covered by state/interview.md or state/project.md,
stop and ask — one question at a time, with a short note on why the answer matters.
Do not batch ten questions, and do not guess and draft anyway. A wrong guess costs a
full rewrite; a question costs one message. Record every answer verbatim in
state/interview.md (append-only) so it never has to be asked twice.
5. Workflow map
Each stage has a dedicated skill. Prefer invoking the skill over improvising:
| Stage | Skill | Output |
|---|---|---|
| Project intake interview | paper-intake |
state/interview.md, state/project.md, state/style.md, evidence/results.md (seeded from author answers) |
| Paper outline | paper-outline |
state/outline.md, section skeletons |
| Draft a section | paper-draft-section |
manuscript/sections/*.tex |
| Related work | paper-related-work |
state/related-work-map.md, Sec. II, refs.bib |
| Polish / line edit | paper-polish |
edited sections + scripts/check_paper.py report |
| Mock peer review | paper-review-panel |
state/reviews/round-N/ (reviews + area-chair meta-review) |
| Revision / rebuttal | paper-revise |
revision plan, edits, response letter |
If standalone variants of these skills are also installed (names ending in
-standalone), do not use them in this workspace — even when invoked by
name out of habit: the table above names the workspace-grounded skill for
each stage.
6. File map
state/project.md— pitch, contributions, claims→evidence map, target venue.state/interview.md— verbatim author answers. Append-only. Never rewrite.state/style.md— voice, terminology, notation policy, banned phrases.state/progress.md— section status board, resume pointer, open questions.state/decisions.md— append-only decision log.state/reviews/round-N/— one file per reviewer +meta-review.md+revision-plan.md.manuscript/— LaTeX source.macros.texis the single source of truth for notation.evidence/results.md— curated experimental numbers; every paper number traces here.scripts/check_paper.py— deterministic consistency checker (make check).scripts/check_reviews.py— deterministic review-round checker (adjudication coverage; run by the panel and revise skills).scripts/context_packet.py— bundles project context for plain-chat sessions..claude/agents/and.codex/agents/— reviewer personas and the area-chair adjudicator. Claude Code and Grok Build discover the.claude/agents/*.mdfiles as project agents; Codex uses the.codex/agents/*.tomltwins. Canonical persona text lives in the.claude/agents/*.mdfiles.
7. Writing conventions
- Follow
state/style.mdexactly. When it is silent, ask once and record the answer there. - Notation: define every symbol in
manuscript/macros.texand use the macro, never a raw symbol, so notation stays globally consistent. - Edit surgically: change the target section only; keep diffs small and reviewable; never mass-rewrite the author's voice without being asked.
- All repository content — prose, code, comments, commit messages — is in English.
8. Reviewer isolation (for mock reviews)
Independent reviews are only meaningful if reviewers cannot see each other. When acting
as a reviewer or orchestrating the panel: reviewers read only manuscript/ (like a
real reviewer, they see the paper, not the lab notebook), and never read other reviews
from the current round. The meta-review is written by the independent
area-chair persona in a fresh context — the drafting session saves it
verbatim and never edits it. Details are in the paper-review-panel skill.
9. Build and check
make pdf— compile via latexmk.make check— runscripts/check_paper.py(citations, refs, acronyms, todos, hyphenation consistency, evidence tags). Run it before declaring any polish pass complete.- If
makeis unavailable (common on native Windows), runpython3 scripts/check_paper.pydirectly — it is exactlymake check; formake pdf, invokelatexmkas the Makefile shows.
10. Adopted repositories
If this project was adopted in place (no manuscript/ directory), read the
adopted-repository note at the end of state/project.md, ask the author which
.tex file is the main manuscript, record the answer in state/decisions.md,
and treat that file's directory as the manuscript root everywhere these
instructions say manuscript/.
11. Knowledge layers (author's vault vs. citation ground truth)
Two external knowledge layers exist, with different trust levels:
- Author intent layer — the Obsidian vault, when the author connects it
(read-only path or MCP; record what is connected under "Linked knowledge" in
state/project.md). Literature notes, idea notes, and MOCs are the author's interpretations: excellent for seeding the intake interview, discovering related-work candidates, and recalling the author's own deltas. Read selectively — only the folders and notes the author designates — and never write to the vault unless explicitly asked. - Citation ground truth — Zotero / arXiv / publisher sources. Only this
layer may put entries into
refs.bib, facts into briefing packs, or claims about other papers into the manuscript.
Hard rules: a vault note is never a citable source on its own (notes can be stale, mistaken, or contain verbatim excerpts of copyrighted text — re-derive prose from the verified source rather than copying note text); and reviewers never receive vault content — author interpretations reach the panel only through the verified, labeled briefing pack.
12. Process layer (optional: Project Steward)
The paper workflow requires no external tooling. But when this workspace is
also managed by Project Steward — i.e. a .project-steward/ directory
exists — the steward protocol owns the process layer, and the §1/§2 rituals
become the fallback for contexts where steward is absent. One concern, one
owner:
- Session start/end, handoffs, crash resume → steward. Session start:
the steward recap (hook-injected, or
project-steward resume) replaces §1 step 2 — but the paper glance stays mandatory: readstate/project.mdand the section board before touching the manuscript. Session end: steward checkpoint/wrap keeps.project-steward/HANDOFF.mdcurrent and proposes the commit (replacing §2 step 3). Grounding rules (§3) are unaffected and non-negotiable. - Paper dashboard →
state/progress.mdkeeps the section board, open author questions, and review rounds (§2 steps 1–2 still apply). The steward HANDOFF references the board; never duplicate it there. - Decisions → writing/science decisions stay in
state/decisions.md(append-only); process/tooling decisions go to.project-steward/DECISIONS.md. - Project truth →
state/project.mdremains the paper card;.project-steward/PROJECT.mdstays a thin charter pointing at it. StewardPLAN.mdtracks paper-stage milestones (intake → outline → draft → polish → review panel → revise → submit); section-level work stays on the board.
First-session offer: if Project Steward is available (plugin or CLI) but
.project-steward/ does not exist, offer /project-steward:init once.
Answer key: project name and one-liner from state/project.md; primary
language "LaTeX + Markdown"; build make pdf; test make check; lint none;
task backend markdown; first milestone = the current paper stage (e.g.
"M1: intake + outline"). After init, trim the generated PROJECT.md and
PLAN.md to point at the state/ files rather than duplicate them. If the
author declines, record the decline in state/decisions.md and do not
offer again.