Paper Vault
Purpose
Use this skill to turn selected papers from $daily-literature-digest into a local static web vault. The daily digest finds and prioritizes papers; Paper Vault keeps the important ones visible, categorized, searchable, and revisitable.
The skill must generalize to any field. Never reuse the creator's example categories unless the user's keywords actually match them.
Core Workflow
- Locate the user's digest workspace:
- Prefer
daily-literature-digest.config.json in the current workspace.
- Prefer digest JSON under
daily-literature-digests/data.
- Use a user-provided path if they name one.
- Decide what to import:
- "High papers" means
priority: High.
- "Medium and above" means
priority: High and priority: Medium.
- Do not import Low unless explicitly requested.
- Default rule: only import papers after Codex has read an accessible full text, local PDF, or user-provided article text. Papers without accessible full text go to
sources/fulltext-inbox first.
- Initialize the vault if needed:
python paper-vault\scripts\paper_vault.py init --vault-dir paper-vault-site
- Import selected papers:
python paper-vault\scripts\paper_vault.py import-high `
--vault-dir paper-vault-site `
--digest-data-dir daily-literature-digests\data `
--config daily-literature-digest.config.json `
--priority Medium `
--max-areas 5 `
--download-arxiv-pdfs
This command defaults to --require-fulltext. It imports only papers with a local PDF or extracted full-text source file. Use --no-require-fulltext only when the user explicitly asks for temporary abstract/title cards.
- Review the generated site:
- Broad categories must be no more than 5.
- Subtopics can be more specific and should sit under a broad category.
- Paper cards should show title, tags, short summary first; objective, method, result, usefulness, and next step only after expanding details.
- DOI/arXiv and journal links should be clickable.
- Local PDFs should display as copyable local paths, not hidden browser downloads.
- Run locally:
cd paper-vault-site
python -m http.server 8766 --bind 127.0.0.1
Open http://127.0.0.1:8766/index.html.
Classification Rules
- Use the user's own keyword groups as the first signal.
- If keyword groups are too granular, merge them into broader research areas.
- Keep at most 5 broad
area values. If more exist, merge smaller/rare areas into Other Research.
- Keep one
primarySubtopic per paper for counted drill-down filters.
- Keep
subtopics and tags as descriptive secondary labels; they may overlap.
- Primary subtopic counts should add up cleanly within the selected broad category.
- Deduplicate by DOI, arXiv id, source key, URL, then normalized title.
Examples of acceptable broad categories:
- For building research:
Building Energy, HVAC Control, Low-Carbon Construction, Optimization Methods, Occupant Comfort.
- For biomedical research:
Clinical Evidence, Molecular Mechanisms, Imaging and Diagnostics, Therapeutics, Data Methods.
- For social science:
Policy, Behavior, Institutions, Methods, Equity.
These are examples only. Infer categories from the user's papers.
AI Fields
For each card, maintain:
summary: one skimmable paragraph.
objective: the research problem or question.
method: algorithms, models, data, experiments, or framework.
result: findings explicitly supported by abstract/full text.
usefulness: why this matters for the user's stated research interests.
nextAction: what to read, extract, compare, or reproduce next.
Full-Text Requirement
Before adding a paper as a normal Paper Vault card:
- Read the full PDF, article HTML, or user-provided full-text file.
- Base
objective, method, result, usefulness, and nextAction on that full text.
- Set
readingStatus honestly, e.g. fulltext-read, article-page-read, or preview-read.
- Attach
pdfPath when a local PDF exists, or fullTextPath/sourcePath when article text was extracted.
If only title, metadata, or abstract is available:
- Do not import it as a normal card by default.
- Write it to
sources/fulltext-inbox/to-download-YYYY-MM-DD.md with DOI/URL and why it is worth following up.
- Actively tell the user how many High/Medium papers need full text and ask whether they want to log in through the active browser now.
- If the user logs in, use only that explicit current browser session to open the paper pages, download/read the PDF or full article text, then summarize from the full text before importing.
- If the user does not want to log in now, keep the papers in
sources/fulltext-inbox and do not show them as normal cards.
- Only create a temporary card if the user explicitly says to save it before full-text reading; set
readingStatus: needs-fulltext, keep limitations visible, and do not infer method or results.
Paywalled access rules:
- Use an active user-logged-in browser session or PDFs the user manually downloads.
- Do not store passwords, cookies, HTML login pages, or institutional session traces.
- Do not create unattended publisher-login download automation.
Bilingual Notes
The frontend supports bilingual display through data/paper-bilingual.js.
- If the user wants bilingual notes, add translations under
window.PAPER_VAULT_BILINGUAL.
- Preserve UTF-8 encoding.
- Prefer
apply_patch for manual edits containing Chinese. Do not pipe Chinese source text through PowerShell into Python/Node; Windows console encoding can turn Chinese into ????.
- If using scripts to write Chinese, keep Chinese in UTF-8 files or JSON inputs, not inline PowerShell heredocs.
- After editing, validate generated HTML/JS/JSON for mojibake and replacement text. Search for
????, 锟, 鐮, 浼, 寤, 璁, 鎽, 涓, 娑, 閻, 閸, and 瀵.
- If mojibake already exists in a user's data file, repair it by mapping known labels/text back to valid UTF-8 or by adding a UTF-8 override file loaded after the damaged data.
Vault Structure
Generated runtime files belong in the user's workspace, not inside the skill folder:
paper-vault-site/
index.html
styles.css
app.js
data/
papers.js
vault-settings.js
paper-bilingual.js
notes/
pdfs/
sources/
Do not commit generated papers, PDFs, notes, source pages, cookies, or login traces unless the user explicitly wants to publish that vault.
Script Reference
Use scripts/paper_vault.py for deterministic setup and import. Read or patch it only for custom behavior.
Common commands:
python paper-vault\scripts\paper_vault.py init --vault-dir paper-vault-site
python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority High --max-areas 5
python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --max-areas 5
python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --min-impact-factor 5 --download-arxiv-pdfs
python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --no-require-fulltext
--priority Medium imports Medium and High. --priority Low imports all priority levels.
--min-impact-factor 5 skips numeric peer-reviewed journal IF values below 5 while keeping arXiv/preprints by default. Add --no-keep-preprints only if the user wants to exclude preprints too.
--require-fulltext is the default. It skips papers that do not already have a local PDF or extracted full-text source and writes them to sources/fulltext-inbox. --no-require-fulltext is only for explicit temporary abstract/title cards.
Safety
- Do not store passwords, cookies, or login state in the vault.
- Do not run unattended publisher login/download workflows.
- For paywalled papers, use explicit user-provided PDFs or an active user-logged-in browser session for that batch only.
- Keep institutional-access artifacts out of the shareable skill repository.
1---2name: paper-vault3description: Create, update, or troubleshoot a local visual Paper Vault for saved research papers. Use when the user wants to import High or Medium papers from a daily literature digest, connect the vault with the daily-literature-digest skill, classify papers into no more than five broad research categories with drill-down subtopics, build a searchable card-style paper dashboard, add bilingual notes, attach local PDF paths, or share a reusable Paper Vault workflow across different research fields.4---56# Paper Vault78## Purpose910Use this skill to turn selected papers from `$daily-literature-digest` into a local static web vault. The daily digest finds and prioritizes papers; Paper Vault keeps the important ones visible, categorized, searchable, and revisitable.1112The skill must generalize to any field. Never reuse the creator's example categories unless the user's keywords actually match them.1314## Core Workflow15161. Locate the user's digest workspace:17 - Prefer `daily-literature-digest.config.json` in the current workspace.18 - Prefer digest JSON under `daily-literature-digests/data`.19 - Use a user-provided path if they name one.202. Decide what to import:21 - "High papers" means `priority: High`.22 - "Medium and above" means `priority: High` and `priority: Medium`.23 - Do not import Low unless explicitly requested.24 - Default rule: only import papers after Codex has read an accessible full text, local PDF, or user-provided article text. Papers without accessible full text go to `sources/fulltext-inbox` first.253. Initialize the vault if needed:26 ```powershell27 python paper-vault\scripts\paper_vault.py init --vault-dir paper-vault-site28 ```294. Import selected papers:30 ```powershell31 python paper-vault\scripts\paper_vault.py import-high `32 --vault-dir paper-vault-site `33 --digest-data-dir daily-literature-digests\data `34 --config daily-literature-digest.config.json `35 --priority Medium `36 --max-areas 5 `37 --download-arxiv-pdfs38 ```39 This command defaults to `--require-fulltext`. It imports only papers with a local PDF or extracted full-text source file. Use `--no-require-fulltext` only when the user explicitly asks for temporary abstract/title cards.405. Review the generated site:41 - Broad categories must be no more than 5.42 - Subtopics can be more specific and should sit under a broad category.43 - Paper cards should show title, tags, short summary first; objective, method, result, usefulness, and next step only after expanding details.44 - DOI/arXiv and journal links should be clickable.45 - Local PDFs should display as copyable local paths, not hidden browser downloads.466. Run locally:47 ```powershell48 cd paper-vault-site49 python -m http.server 8766 --bind 127.0.0.150 ```51 Open `http://127.0.0.1:8766/index.html`.5253## Classification Rules5455- Use the user's own keyword groups as the first signal.56- If keyword groups are too granular, merge them into broader research areas.57- Keep at most 5 broad `area` values. If more exist, merge smaller/rare areas into `Other Research`.58- Keep one `primarySubtopic` per paper for counted drill-down filters.59- Keep `subtopics` and `tags` as descriptive secondary labels; they may overlap.60- Primary subtopic counts should add up cleanly within the selected broad category.61- Deduplicate by DOI, arXiv id, source key, URL, then normalized title.6263Examples of acceptable broad categories:6465- For building research: `Building Energy`, `HVAC Control`, `Low-Carbon Construction`, `Optimization Methods`, `Occupant Comfort`.66- For biomedical research: `Clinical Evidence`, `Molecular Mechanisms`, `Imaging and Diagnostics`, `Therapeutics`, `Data Methods`.67- For social science: `Policy`, `Behavior`, `Institutions`, `Methods`, `Equity`.6869These are examples only. Infer categories from the user's papers.7071## AI Fields7273For each card, maintain:7475- `summary`: one skimmable paragraph.76- `objective`: the research problem or question.77- `method`: algorithms, models, data, experiments, or framework.78- `result`: findings explicitly supported by abstract/full text.79- `usefulness`: why this matters for the user's stated research interests.80- `nextAction`: what to read, extract, compare, or reproduce next.8182## Full-Text Requirement8384Before adding a paper as a normal Paper Vault card:8586- Read the full PDF, article HTML, or user-provided full-text file.87- Base `objective`, `method`, `result`, `usefulness`, and `nextAction` on that full text.88- Set `readingStatus` honestly, e.g. `fulltext-read`, `article-page-read`, or `preview-read`.89- Attach `pdfPath` when a local PDF exists, or `fullTextPath`/`sourcePath` when article text was extracted.9091If only title, metadata, or abstract is available:9293- Do not import it as a normal card by default.94- Write it to `sources/fulltext-inbox/to-download-YYYY-MM-DD.md` with DOI/URL and why it is worth following up.95- Actively tell the user how many High/Medium papers need full text and ask whether they want to log in through the active browser now.96- If the user logs in, use only that explicit current browser session to open the paper pages, download/read the PDF or full article text, then summarize from the full text before importing.97- If the user does not want to log in now, keep the papers in `sources/fulltext-inbox` and do not show them as normal cards.98- Only create a temporary card if the user explicitly says to save it before full-text reading; set `readingStatus: needs-fulltext`, keep limitations visible, and do not infer method or results.99100Paywalled access rules:101102- Use an active user-logged-in browser session or PDFs the user manually downloads.103- Do not store passwords, cookies, HTML login pages, or institutional session traces.104- Do not create unattended publisher-login download automation.105106## Bilingual Notes107108The frontend supports bilingual display through `data/paper-bilingual.js`.109110- If the user wants bilingual notes, add translations under `window.PAPER_VAULT_BILINGUAL`.111- Preserve UTF-8 encoding.112- Prefer `apply_patch` for manual edits containing Chinese. Do not pipe Chinese source text through PowerShell into Python/Node; Windows console encoding can turn Chinese into `????`.113- If using scripts to write Chinese, keep Chinese in UTF-8 files or JSON inputs, not inline PowerShell heredocs.114- After editing, validate generated HTML/JS/JSON for mojibake and replacement text. Search for `????`, `锟`, `鐮`, `浼`, `寤`, `璁`, `鎽`, `涓`, `娑`, `閻`, `閸`, and `瀵`.115- If mojibake already exists in a user's data file, repair it by mapping known labels/text back to valid UTF-8 or by adding a UTF-8 override file loaded after the damaged data.116## Vault Structure117118Generated runtime files belong in the user's workspace, not inside the skill folder:119120```text121paper-vault-site/122 index.html123 styles.css124 app.js125 data/126 papers.js127 vault-settings.js128 paper-bilingual.js129 notes/130 pdfs/131 sources/132```133134Do not commit generated papers, PDFs, notes, source pages, cookies, or login traces unless the user explicitly wants to publish that vault.135136## Script Reference137138Use `scripts/paper_vault.py` for deterministic setup and import. Read or patch it only for custom behavior.139140Common commands:141142```powershell143python paper-vault\scripts\paper_vault.py init --vault-dir paper-vault-site144python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority High --max-areas 5145python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --max-areas 5146python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --min-impact-factor 5 --download-arxiv-pdfs147python paper-vault\scripts\paper_vault.py import-high --vault-dir paper-vault-site --digest-data-dir daily-literature-digests\data --priority Medium --no-require-fulltext148```149150`--priority Medium` imports Medium and High. `--priority Low` imports all priority levels.151152`--min-impact-factor 5` skips numeric peer-reviewed journal IF values below 5 while keeping arXiv/preprints by default. Add `--no-keep-preprints` only if the user wants to exclude preprints too.153154`--require-fulltext` is the default. It skips papers that do not already have a local PDF or extracted full-text source and writes them to `sources/fulltext-inbox`. `--no-require-fulltext` is only for explicit temporary abstract/title cards.155156## Safety157158- Do not store passwords, cookies, or login state in the vault.159- Do not run unattended publisher login/download workflows.160- For paywalled papers, use explicit user-provided PDFs or an active user-logged-in browser session for that batch only.161- Keep institutional-access artifacts out of the shareable skill repository.