Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add bam-bam-2/solo-skills --skill book-pdfgit clone --depth 1 https://github.com/bam-bam-2/solo-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bam-bam-2/solo-skills/book-pdf)<a href="https://agentmods.dev/skills/bam-bam-2/solo-skills/book-pdf"><img src="https://agentmods.dev/badge/skills/bam-bam-2/solo-skills/book-pdf/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bam-bam-2/solo-skills/book-pdf"><img src="https://agentmods.dev/badge/skills/bam-bam-2/solo-skills/book-pdf.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00060 | $0.02533 |
| Opus 5 | $0.00030 | $0.01267 |
| Sonnet 5 | $0.00012 | $0.00507 |
| Haiku 4.5 | $0.00006 | $0.00253 |
Grade A, and why
book-pdf scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.
마크다운 → 진짜 책 PDF/EPUB
일반 page.pdf() + 마크다운→HTML 변환만으로는 "리포트를 인쇄한 것"처럼 보인다.
실제 책이려면 최소 이 6가지가 있어야 한다: 표지(풀블리드) · 타이틀 페이지 · 판권 페이지 · 실제 쪽번호가 달린 목차 · 장 시작마다 새 페이지 · 쪽마다 러닝헤더/쪽번호.
이 스킬은 Paged.js(MIT, https://unpkg.com/pagedjs/dist/paged.polyfill.js)를 브라우저에 스크립트 태그로 로드해 CSS Paged Media 기능(러닝헤더, 목차 쪽번호 자동생성)을 구현한다. Chromium이 네이티브로 지원 안 하는 기능이라 이 폴리필이 필요하다.
바로 쓰는 스크립트
scripts/html-to-pdf.py — Paged.js로 조판한 HTML을 PDF로 굽습니다.
pip install playwright && playwright install chromium
python scripts/html-to-pdf.py book.html
python scripts/html-to-pdf.py "chapters/*.html" # 여러 개 한 번에
--output으로 경로를 지정할 수 있고, 생략하면 입력 파일명 그대로 .pdf가 나옵니다.
이 환경(Aside REPL)의 알려진 함정
page.pdf({width, height})파라미터가 무시된다. 항상 US Letter로 나온다. 반드시preferCSSPageSize: true를 주고 CSS@page { size: 148mm 210mm; }로 크기를 지정할 것.format: 'A5'같은 심볼릭 사이즈도 마찬가지로 무시되니 쓰지 말 것.page.setViewportSize()가 없다. 뷰포트 크기를 못 바꾸므로 표지 등 개별 이미지를 만들 때page.screenshot({fullPage:true})로 큰 캔버스를 찍으면 타일링 버그가 난다. 대신page.pdf()+pdftoppm으로 원하는 크기를 렌더링할 것.page.addScriptTag()가 없다. 외부 스크립트(Paged.js 등)는document.write()로 쓰는 HTML 문자열 안에<script src="https://unpkg.com/...">태그를 직접 넣어야 로드된다.- 구글 폰트
@import/<link>가document.write()직후엔 타이밍 문제로 반영 안 될 때가 있다. 커스텀 세리프 폰트를 꼭 써야 하면 woff2를 직접 fetch해서 base64로 인라인@font-face에 박아넣을 것. 급하면 시스템 폰트(-apple-system,'Apple SD Gothic Neo')로 타협. target-counter()로 목차 쪽번호를 만들 때 한글 슬러그 id가 깨질 수 있다. pandoc이 자동 생성하는id="1장-시작과-실패"같은 한글 id 대신ch-01,part-1,app-a같은 ASCII id로 바꿔서 앵커를 걸 것.- CSS
page:(named page) 속성을 제목 요소에만 주고 바로 다음 형제 요소에는 안 주면, 그 둘 사이에 강제 페이지베이크가 생긴다. 단순히break-before: page로 장/부 시작만 제어하고 싶을 때는page: main;같은 명명 페이지 지정을 쓰지 말거나, 쓴다면 본문 전체에 동일하게 적용해야 한다 — 이건 "장 제목 바로 뒤에 이미지를 넣었는데 이미지가 다음 페이지로 밀리며 압도적인 빈 공백 페이지가 생기는" 증상으로 나타난다. 페이지 구성이 이상하면 가장 먼저 이 속성부터 의심할 것. - 트림 사이즈로 A5(148x210mm)를 쓰지 말 것. A5와 A4는 비율이 동일해(1:1.414, ISO 시리즈) 화면에서 보면 "작은 A4 문서"처럼 보인다. 한국 단행본 표준판형인 **신국판(152x225mm, 비율 1:1.48)**을 쓰면 "진짜 책" 느낌이 명확하게 산다.
- Paged.js 렌더링은 비동기라 완료 시점을 폴링해야 한다.
document.querySelectorAll('.pagedjs_page').length가 N초 연속 안 바뀔 때까지 기다린 다음page.pdf()를 호출할 것. 문서가 크면(80150쪽) 완료까지 30초1분 걸릴 수 있다.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 81 lines · 60 tokens per session scan A 79366465dc7d
book-pdf is a skill published in the GitHub repository bam-bam-2/solo-skills (362 stars, last pushed 8d ago), licensed MIT. It adds 60 tokens to every session and 2,533 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gws-drive
Google Drive: Manage files, folders, and shared drives.
recipe-save-email-attachments
Find Gmail messages with attachments and save them to a Google Drive folder.
recipe-save-email-to-doc
Save a Gmail message body into a Google Doc for archival or reference.
recipe-share-doc-and-notify
Share a Google Docs document with edit access and email collaborators the link.
recipe-bulk-download-folder
List and download all files from a Google Drive folder.
document-classification-nlp
Automatically classify and extract information from construction documents using NLP. Categorize RFIs, submittals, change orders, specifications, and contracts.