From vault-mind
Use when the user wants the actual source document for a reading pulled down locally so the agent can read it directly, e.g. "fetch the source for Epiphenomenal Qualia", "download the papers in my philosophy of mind list", "grab a local copy of the VAMPnets paper", "fetch everything I haven't downloaded yet". Resolves the reading's online-source URL, downloads a publicly available copy into the assets dir, and verifies it. Downloads source files only, never writes note prose.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vault-mind:fetchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
For a reading in the resources dirs, download the actual source document (the PDF or article
For a reading in the resources dirs, download the actual source document (the PDF or article
behind its online-source URL) into the vault so the agent can Read it directly instead of
relying on web search snippets. This makes the primary text available for /vault-mind:discuss,
:feynman, :quiz, :ask, and for the user's own reading.
What this skill writes: source files only (downloaded PDFs/HTML) into the assets dir. It writes no note content: downloading a paper is not authoring understanding. The core rule still holds: never write the body of a concept note.
Legality/ethics, only publicly available sources. Fetch open-access copies: direct PDFs, arXiv, PMC, PhilArchive/PhilPapers, author/university pages, journal open-access. Never bypass paywalls, logins, or DRM, and never use shadow libraries (sci-hub, libgen, z-lib). If only a paywalled copy exists, report it as unavailable and move on; don't fake it.
Read the vault profile (.vault-mind/profile.md) first if you haven't this session (paths +
schema; run /vault-mind:init if missing). "Assets dir", "resources dirs", "url key",
"local key" below refer to the profile's values.
assets_dir/Papers/ or assets_dir/Essays/ subfolder).VAMPnets … - Andreas Mardt.md →
<assets_dir>/Papers/VAMPnets … - Andreas Mardt.pdf).A specific note, a topic, or "all not-yet-downloaded". Pull the url key from frontmatter.
# from the vault root; substitute the profile's dir/key names:
rg -N --no-filename '^(title|<url_key>):' <resources_dirs> # a topic / all readings + URLs
rg -N '^<url_key>:' "<resources_dir>/Some Reading.md" # one note's url
If a target has no url, say so (it's a /vault-mind:lint/metadata fix, or needs a source
found first, offer to search the web for one, but don't invent a URL).
Don't re-download. Check the target path, and scan the dir for an older/short-named copy.
Resolve to an open-access document, then download with curl -L (follow redirects).
.pdf URL → download as-is.arxiv.org/abs/ID) → use https://arxiv.org/pdf/ID..html). If a readability/markdown converter (pandoc, etc.) is available,
convert to clean text; if not, keep the .html and note that WebFetch <url> reads it
more cleanly than the raw file.curl -L --fail --retry 2 -A "Mozilla/5.0" -o "<assets_dir>/Papers/<note-basename>.pdf" "<resolved-url>"
A renamed login/captcha/404 page is worse than nothing. The magic-byte check is the
reliable test (file is not installed everywhere):
head -c 5 "<path>.pdf" # PDFs start with %PDF-
ls -la "<path>.pdf" # non-trivial size, not a 2 KB error page
file "<path>.pdf" 2>/dev/null # "PDF document" if `file` exists
Then sanity-check it's the right work: confirm title/author match the note. Reading a PDF
back needs poppler-utils (pdftotext for text, or pdftoppm, which the Read tool uses
to render pages). If poppler is missing the bytes are still valid; flag that the user should
install it so PDFs are readable in-session.
If it's the wrong document or an error page, delete it and report failure; never leave a misnamed file in place.
On a verified download, set the note's local key to a wikilink to the file so the user can
open their local copy. This is a metadata edit, the only frontmatter /vault-mind:fetch
touches; never the body.
<local_key>: "[[<assets_dir>/Papers/<note-basename>.pdf]]"
If the local key isn't in the profile/template, it's a custom key; mention you're adding it. Leave it blank if the fetch failed.
State, per target: fetched (with the local path the agent can now Read, local key set),
already-present, or unavailable (and why, paywalled, no public copy, dead link → a
/vault-mind:lint item).
npx claudepluginhub jeff7712/vault-mind --plugin vault-mindGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.