End-to-end paper workflow: resolve a paper reference, acquire the canonical raw bundle, discover and clone repository. Generate reading notes if user requests ("笔记", "reading notes", "--with-notes").
End-to-end paper workflow. Calls other paper-* skills sequentially.
Canonical store: ~/papers/{title_slug}/
Project symlink (when cwd ≠ ~):
./papers/ if not exists./papers/{venue_year}-{method}-{first_author} → ~/papers/{title_slug}/Example: iclr2017-gcn-kipf → ~/papers/semi_supervised_classification_with_graph_convolutional_networks/
Default: resolve → acquire → repo
Notes: Only if user requests ("笔记", "reading notes", "--with-notes")
Parse user arguments first:
| Flag | Effect |
|---|---|
--skip-repo |
| Skip Step 3 |
--with-notes | Run Step 4 after Step 3 |
--output <path> | Pass to paper-reading-notes |
--refresh | Re-run completed steps |
Call: Skill(skill="paper-resolve", args="<paper_reference>")
Output: ~/papers/{title_slug}/metadata.yaml
Skip if: metadata.yaml already exists and --refresh not set.
Call: Skill(skill="paper-acquire", args="{title_slug}")
Output: ~/papers/{title_slug}/paper/paper.pdf, paper.md
Skip if: paper.md already exists and --refresh not set.
Call: Skill(skill="paper-repo", args="{title_slug}")
Output: ~/papers/{title_slug}/repo/ (if found)
Skip if: --skip-repo or repo already exists and --refresh not set.
Call: Skill(skill="paper-reading-notes", args="{title_slug} --output {path}")
Output: reading-note.md
Only runs if user requests notes.
If current working directory is not ~:
~/papers/{title_slug}/metadata.yaml for venue, year, first author./papers/{venue_year}-{method}-{first_author} → ~/papers/{title_slug}/Example naming: iclr2017-gcn-kipf
User: "SpaMI spatial multi-omics --with-notes"
Execute:
Skill(skill="paper-resolve", args="SpaMI spatial multi-omics")Skill(skill="paper-acquire", args="spami_spatial_multi_omics_integration")Skill(skill="paper-repo", args="spami_spatial_multi_omics_integration")Skill(skill="paper-reading-notes", args="spami_spatial_multi_omics_integration")