Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use ONLY when the user explicitly says: 'use the skill web-to-markdown ...' (or 'use a skill web-to-markdown ...'). Converts webpage URLs to clean Markdown by calling the local web2md CLI (Puppeteer + Readability), suitable for JS-rendered pages.
.claude/skills/davila7-web-to-markdown/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 63% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 152% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -7% | 0% |
Convert web pages to clean Markdown by driving a locally installed browser (via web2md).
This skill MUST NOT be used unless the user explicitly wrote exactly a phrase like:
use the skill web-to-markdown ...use a skill web-to-markdown ...If the user did not explicitly request this skill by name, stop and ask them to re-issue the request including: use the skill web-to-markdown.
puppeteer-core.web2md.url (or a list of URLs)--print), OR--out ./file.md), OR--out ./some-dir/ to auto-name by page title)--chrome-path <path> (if Chrome auto-detection fails)--interactive (show Chrome and pause so the user can complete human checks/login, then press Enter)--wait-until load|domcontentloaded|networkidle0|networkidle2--wait-for '<css selector>'--wait-ms <milliseconds>--headful (debug)--no-sandbox (sometimes required in containers/CI)--user-data-dir <dir> (login/session; use a dedicated profile directory)1) Confirm the user explicitly invoked the skill (use the skill web-to-markdown). 2) Validate URL(s) start with http:// or https://. 3) Ensure web2md is installed:
command -v web2mdnpm install -g web2mdnpm install && npm run build && npm link4) Convert:
web2md '<url>' --out ./page.mdmkdir -p ./out && web2md '<url>' --out ./out/mkdir -p ./out && web2md '<url>' --interactive --user-data-dir ./tmp/web2md-profile --out ./out/web2md '<url>' --print./out/) then run one web2md command per URL using --out ./out/5) Validate output:
ls -la <path> and wc -c <path>).6) Return:
--wait-until networkidle2--wait-until domcontentloaded --wait-ms 2000, then add --wait-for 'main' (or another stable selector) if needed.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 12,283 | 2,800 | -77% | 1 | 1 | 0% | 2,234 | 1,240 | -44% | 0 | 0 | — |
case-01 | fail→fail | 11,363 | 5,501 | -52% | 1 | 1 | 0% | 366 | 1,200 | +228% | 0 | 0 | — |
case-03 | fail→fail | 10,135 | 7,241 | -29% | 1 | 1 | 0% | 1,291 | 1,229 | -5% | 0 | 0 | — |
case-04 | fail→pass | 4,463 | 2,457 | -45% | 1 | 1 | 0% | 737 | 1,203 | +63% | 0 | 0 | — |
case-05 | fail→pass | 4,778 | 7,908 | +66% | 1 | 1 | 0% | 677 | 1,704 | +152% | 0 | 0 | — |
case-06 | fail→pass | 6,681 | 5,444 | -19% | 1 | 1 | 0% | 1,111 | 1,972 | +77% | 0 | 0 | — |
case-07 | fail→fail | 9,646 | 5,283 | -45% | 1 | 1 | 0% | 780 | 1,227 | +57% | 0 | 0 | — |
case-08 | fail→fail | 3,352 | 3,800 | +13% | 1 | 1 | 0% | 474 | 1,198 | +153% | 0 | 0 | — |
case-09 | fail→fail | 8,180 | 3,019 | -63% | 1 | 1 | 0% | 1,262 | 1,226 | -3% | 0 | 0 | — |
case-10 | fail→fail | 7,986 | 2,815 | -65% | 1 | 1 | 0% | 1,408 | 1,188 | -16% | 0 | 0 | — |
case-11 | fail→fail | 12,091 | 2,868 | -76% | 1 | 1 | 0% | 2,116 | 1,205 | -43% | 0 | 0 | — |
case-12 | fail→pass | 7,746 | 8,748 | +13% | 1 | 1 | 0% | 904 | 1,812 | +100% | 0 | 0 | — |
case-13 | fail→fail | 10,649 | 5,868 | -45% | 1 | 1 | 0% | 1,987 | 1,255 | -37% | 0 | 0 | — |
case-14 | fail→fail | 8,441 | 2,866 | -66% | 1 | 1 | 0% | 1,474 | 1,365 | -7% | 0 | 0 | — |
case-15 | fail→fail | 7,421 | 6,686 | -10% | 1 | 1 | 0% | 1,269 | 1,137 | -10% | 0 | 0 | — |
case-16 | pass→fail | 5,937 | 5,583 | -6% | 1 | 1 | 0% | 1,095 | 1,228 | +12% | 0 | 0 | — |
case-17 | fail→fail | 9,799 | 5,102 | -48% | 1 | 1 | 0% | 837 | 1,133 | +35% | 0 | 0 | — |
case-18 | fail→pass | 9,277 | 3,716 | -60% | 1 | 1 | 0% | 1,583 | 1,477 | -7% | 0 | 0 | — |
case-19 | fail→fail | 8,041 | 5,840 | -27% | 1 | 1 | 0% | 1,484 | 1,221 | -18% | 0 | 0 | — |
case-20 | pass→pass | 5,285 | 2,943 | -44% | 1 | 1 | 0% | 865 | 1,315 | +52% | 0 | 0 | — |
case-21 | fail→fail | 11,080 | 3,741 | -66% | 1 | 1 | 0% | 1,985 | 1,198 | -40% | 0 | 0 | — |
case-22 | pass→pass | 4,994 | 4,047 | -19% | 1 | 1 | 0% | 845 | 1,585 | +88% | 0 | 0 | — |
case-23 | pass→pass | 18,759 | 13,512 | -28% | 1 | 1 | 0% | 3,071 | 3,349 | +9% | 0 | 0 | — |
case-24 | pass→pass | 3,671 | 4,973 | +35% | 1 | 1 | 0% | 449 | 1,715 | +282% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 17 counted toward the lift figure. The other 7 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +17 percentage points is the difference between those two pass rates over the 17 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.