About save-md
save-md is a skill for saving one named source as a complete Markdown file in the user's tree. It emphasizes preserving fetched source bytes rather than summarizing, and checking the saved file's ending against the source.
Key features
- 01Save a named source to a .md file
- 02Handle URLs, attachments, pastes, videos, Docs and PDFs
- 03Use fetched bytes rather than summaries
- 04Verify the saved file's last paragraph
Use cases
- 01Archive a web page as Markdown
- 02Save a named PDF or document locally
- 03Check that a saved copy includes the source ending
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ mblode/ agent-skills --skill save-mdAfter installing, type/save-mdin Claude Code to confirm it loaded.
Bundled filesevals/evals.jsonreferences/source-endpoints.md
Details
From the project READMESave as Markdown
Write the named source to a .md file, in full, and say where it is. The body comes from the fetched bytes, never from a summary.
- IS: one named source (URL, attachment, paste, YouTube video, Google Doc, PDF) to one
.mdin the user's tree. - IS NOT: answering from a fetch, summarizing into chat, crawling beyond the URLs named, or reconstructing a talk from memory.
Done
A .md exists where the user can open it, with this frontmatter, and reading it back returns the source's last paragraph:
---
title: "<title>"
source: "<URL or path>"
date: "<date -u +%Y-%m-%dT%H:%M:%SZ, run now>"
type: web | youtube | gdoc | sheet | slides | pdf | docx | tweet | conversation
---
Fetch with curl -sSL -o <file> <url> and read the file. Prefer a text endpoint over HTML chrome. A missing file with a named reason (paywall, login wall, bot check, private doc) beats a plausible one.
| File | Read when |
|---|---|
references/source-endpoints.md | Always, for the URL's host: the tested endpoint, its curl line, the failure each one shows, and the opt-in fallback reader |
Gotchas
- WebFetch hands the page to a small model and returns its answer: a 1,200-word post came back as 120 words. Only
Content-Type: text/markdownunder 100K characters passes through intact. - oEmbed, GitHub
?raw=true, and Drive downloads redirect across hosts. Without-Lyou save an empty 301. - YouTube's "Sign in to confirm you're not a bot" is an IP block:
--cookies-from-browseron a laptop, stop in a sandbox. The description is not the talk. - An empty
.mdnext to a large PDF means a scan, not a blank document: render the pages and read them.
Maintenance only: evals/evals.json holds scenarios and routing prompts for anyone changing this skill.