PaperRead Draft
Create one compact, factual note shell for a paper. The note records verified metadata and leaves all reading content to the user through hidden Obsidian prompts.
Scope and Authority
- A standard create-draft request authorizes only one new note. A bounded call from
$zotero-todoist-reading-tasks authorizes at most one create-or-reuse action per uniquely resolved parent.
- Resolve the configured vault through
CODEX_OBSIDIAN_VAULT and obsidian_files. Write only beneath PaperRead/; never use the current working directory as the vault.
- Accept a title, DOI, arXiv ID or URL, publisher URL, or Zotero item.
- Do not add or update Zotero and do not ingest the LLM Wiki.
Resolve Identity and Metadata
- Use metadata in this order: user-supplied facts; read-only Zotero when available; then one canonical scholarly source.
- If identity is ambiguous, ask one focused question and do not guess, even under time pressure.
- Fill a metadata field only when the user supplied it or current-task source/tool output actually observed it. Never claim a Zotero or canonical lookup occurred without actual returned evidence. Missing evidence means blank optional fields.
- For
year, prefer the official venue publication year; use the canonical preprint year only when no venue publication year is available.
- If metadata remains unavailable, leave optional fields blank rather than blocking or inventing values. Report the result as metadata-only when that is the appropriate status.
- Keep only facts in frontmatter. Do not provide a paper summary, claims, methods, evaluation, critique, quotes, or a reading log.
Note Contract
Use the vault template at PaperRead/_Paper Read Template.md when it exists and satisfies the contract. If that exact vault template is missing or malformed, never silently rewrite the vault template; use the bundled fallback at references/paper-read-template.md for note creation.
The frontmatter contains only title, authors, year, venue, url, tags, and created. Do not add a body H1. The body has exactly these H2 sections, in order: One-sentence summary, Summary and takeaway, and My thoughts. Each section contains only its short %% ... %% prompt. The My thoughts prompt includes both reflections and open questions; do not create a separate Questions section.
The base tag is paper-read. A concrete note may add at most three conservative lowercase hyphenated topic tags. If uncertain, use only paper-read.
Filename Contract
Build every new note name as:
PaperRead/<first-author-family-name><YY>-<short-method-name>.md
Establish all three components from current evidence before creating the note:
- Use the verified family name of the first listed author, lowercased. Replace its spaces and punctuation with single hyphens.
- Use the final two digits of the official venue publication year when available; otherwise use the canonical preprint publication year.
- Use the paper's short official proposed method, system, or model name. Preserve its official capitalization and numbers, but replace spaces and punctuation with single hyphens. Do not derive it mechanically from the full title or invent one; ask one focused question when it is unclear.
Run python3 scripts/paper_read_filename.py --author-family <name> --year <YYYY> --method <short-name> to generate the basename. Examples:
- Tianrui Feng, MLSys 2026, StreamDiffusionV2 →
feng26-StreamDiffusionV2.md
- Luo et al., OSDI 2026, DirectKV Offloading →
luo26-DirectKV-Offloading.md
Preserve the complete canonical paper title in frontmatter; the short method name affects only the filename.
Safe Creation
- Before any write, search
PaperRead/ for the same DOI, arXiv identifier, canonical URL, or exact normalized title. If the same paper already exists under any filename, return that path without creating, copying, renaming, or modifying it.
- Perform an exact target-path check. If it contains the same paper, return it unchanged. If it contains a distinct paper or its identity cannot be established, return no-write and ask before choosing a disambiguated filename.
- Never migrate legacy title-based filenames automatically. A separate explicit rename request is required.
- Create the one note only under
PaperRead/, then report the created path and any unresolved metadata.
Completion Check
- After an existing or newly created note is resolved, run
python3 scripts/paper_read_uri.py --vault-path "$CODEX_OBSIDIAN_VAULT" --note-path <vault-relative-path>.
- Return
reused for an existing exact or identity-deduplicated note, created for a new note, or skipped when no note was written. For created or reused, return the vault-relative path and the resulting clickable Obsidian URI.
- If URI generation fails, preserve the resolved note, return
link-unavailable with its vault-relative path and no URI, rather than modifying, deleting, or recreating it.
- Return
skipped with no path or URI when no note is resolved or written.
- Report unresolved optional metadata alongside the applicable
created, reused, skipped, or link-unavailable result.
- Do not fill personal sections by default; each is hidden-prompt-only.
1---2name: paper-read-draft3description: Use when a user asks to set up, create, prepare, or start a brief Obsidian PaperRead draft or paper-reading note.4---56# PaperRead Draft78Create one compact, factual note shell for a paper. The note records verified metadata and leaves all reading content to the user through hidden Obsidian prompts.910## Scope and Authority1112- A standard create-draft request authorizes only one new note. A bounded call from `$zotero-todoist-reading-tasks` authorizes at most one create-or-reuse action per uniquely resolved parent.13- Resolve the configured vault through `CODEX_OBSIDIAN_VAULT` and `obsidian_files`. Write only beneath `PaperRead/`; never use the current working directory as the vault.14- Accept a title, DOI, arXiv ID or URL, publisher URL, or Zotero item.15- Do not add or update Zotero and do not ingest the LLM Wiki.1617## Resolve Identity and Metadata18191. Use metadata in this order: user-supplied facts; read-only Zotero when available; then one canonical scholarly source.202. If identity is ambiguous, ask one focused question and do not guess, even under time pressure.213. Fill a metadata field only when the user supplied it or current-task source/tool output actually observed it. Never claim a Zotero or canonical lookup occurred without actual returned evidence. Missing evidence means blank optional fields.224. For `year`, prefer the official venue publication year; use the canonical preprint year only when no venue publication year is available.235. If metadata remains unavailable, leave optional fields blank rather than blocking or inventing values. Report the result as metadata-only when that is the appropriate status.246. Keep only facts in frontmatter. Do not provide a paper summary, claims, methods, evaluation, critique, quotes, or a reading log.2526## Note Contract2728Use the vault template at `PaperRead/_Paper Read Template.md` when it exists and satisfies the contract. If that exact vault template is missing or malformed, never silently rewrite the vault template; use the bundled fallback at `references/paper-read-template.md` for note creation.2930The frontmatter contains only `title`, `authors`, `year`, `venue`, `url`, `tags`, and `created`. Do not add a body H1. The body has exactly these H2 sections, in order: `One-sentence summary`, `Summary and takeaway`, and `My thoughts`. Each section contains only its short `%% ... %%` prompt. The `My thoughts` prompt includes both reflections and open questions; do not create a separate `Questions` section.3132The base tag is `paper-read`. A concrete note may add at most three conservative lowercase hyphenated topic tags. If uncertain, use only `paper-read`.3334## Filename Contract3536Build every new note name as:3738```text39PaperRead/<first-author-family-name><YY>-<short-method-name>.md40```4142Establish all three components from current evidence before creating the note:4344- Use the verified family name of the first listed author, lowercased. Replace its spaces and punctuation with single hyphens.45- Use the final two digits of the official venue publication year when available; otherwise use the canonical preprint publication year.46- Use the paper's short official proposed method, system, or model name. Preserve its official capitalization and numbers, but replace spaces and punctuation with single hyphens. Do not derive it mechanically from the full title or invent one; ask one focused question when it is unclear.4748Run `python3 scripts/paper_read_filename.py --author-family <name> --year <YYYY> --method <short-name>` to generate the basename. Examples:4950- Tianrui Feng, MLSys 2026, StreamDiffusionV2 → `feng26-StreamDiffusionV2.md`51- Luo et al., OSDI 2026, DirectKV Offloading → `luo26-DirectKV-Offloading.md`5253Preserve the complete canonical paper title in frontmatter; the short method name affects only the filename.5455## Safe Creation56571. Before any write, search `PaperRead/` for the same DOI, arXiv identifier, canonical URL, or exact normalized title. If the same paper already exists under any filename, return that path without creating, copying, renaming, or modifying it.582. Perform an exact target-path check. If it contains the same paper, return it unchanged. If it contains a distinct paper or its identity cannot be established, return no-write and ask before choosing a disambiguated filename.593. Never migrate legacy title-based filenames automatically. A separate explicit rename request is required.604. Create the one note only under `PaperRead/`, then report the created path and any unresolved metadata.6162## Completion Check6364- After an existing or newly created note is resolved, run `python3 scripts/paper_read_uri.py --vault-path "$CODEX_OBSIDIAN_VAULT" --note-path <vault-relative-path>`.65- Return `reused` for an existing exact or identity-deduplicated note, `created` for a new note, or `skipped` when no note was written. For `created` or `reused`, return the vault-relative path and the resulting clickable Obsidian URI.66- If URI generation fails, preserve the resolved note, return `link-unavailable` with its vault-relative path and no URI, rather than modifying, deleting, or recreating it.67- Return `skipped` with no path or URI when no note is resolved or written.68- Report unresolved optional metadata alongside the applicable `created`, `reused`, `skipped`, or `link-unavailable` result.69- Do not fill personal sections by default; each is hidden-prompt-only.