Individual skill
book-to-skill
Converts books and documents (PDF, EPUB, DOCX, HTML, Markdown, plain text, RTF, MOBI/AZW with Calibre) into structured agent skills, extracting frameworks, mental models, principles, techniques, and anti-patterns. Use when the user wants to study a document through GitHub Copilot CLI, Amp, Claude Code, Hermes Agent, OpenCode, or OpenClaw, apply an author's frameworks while working, or build a reusable knowledge base from a file.
SKILL.md
Source commit e7bb659d3261491c8b28793dcb9102fa64a46c22
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 37,593
- Repository last updated
- Nov 8, 2026
- License
- MIT
Observed agent integration: claude-code, codex
- agent-skills Repository topic
- ai-agents Repository topic
- context-engineering Repository topic
- document-processing Repository topic
- edtech Repository topic
- knowledge-base Repository topic
- knowledge-management Repository topic
- llm Repository topic
- pdf-to-markdown Repository topic
- rag Repository topic
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
.gitattributesasset · 28 bytes.github/FUNDING.ymlasset · 23 bytes.github/ISSUE_TEMPLATE/bug_report.mddoc · 508 bytes.github/ISSUE_TEMPLATE/feature_request.mddoc · 469 bytes.github/PULL_REQUEST_TEMPLATE.mddoc · 3,309 bytes.github/dependabot.ymlasset · 693 bytes.github/workflows/ci.ymlasset · 10,141 bytes.github/workflows/codeql.ymlasset · 805 bytes.github/workflows/deploy-docs.ymlasset · 3,518 bytes.gitignoreasset · 599 bytesAGENTS.mddoc · 5,198 bytesBACKERS.mddoc · 967 bytesCHANGELOG.mddoc · 15,915 bytesCLAUDE.mddoc · 134 bytesCONTRIBUTING.mddoc · 4,803 bytesLICENSE.mddoc · 1,068 bytesREADME.mddoc · 15,379 bytesREADME.ru.mddoc · 12,303 bytesREADME.zh-CN.mddoc · 15,073 bytesSECURITY-NOTICE.mddoc · 1,842 bytesSECURITY.mddoc · 1,290 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesSKILL.mdcore · 55,464 bytesbook_to_skill/__init__.pyruns · 217 bytesbook_to_skill/__main__.pyruns · 74 bytesbook_to_skill/cli.pyruns · 1,336 bytesbook_to_skill/config.pyruns · 2,400 bytesbook_to_skill/dependencies.pyruns · 12,494 bytesbook_to_skill/exceptions.pyruns · 117 bytesbook_to_skill/parsers/__init__.pyruns · 18 bytesbook_to_skill/parsers/calibre.pyruns · 2,409 bytesbook_to_skill/parsers/docx.pyruns · 9,772 bytesbook_to_skill/parsers/epub.pyruns · 9,087 bytesbook_to_skill/parsers/html.pyruns · 5,757 bytesbook_to_skill/parsers/pdf.pyruns · 12,561 bytesbook_to_skill/parsers/rtf.pyruns · 8,022 bytesbook_to_skill/parsers/text.pyruns · 1,459 bytesbook_to_skill/pdf_inspector_integration.pyruns · 10,250 bytesbook_to_skill/sanitize.pyruns · 11,563 bytesbook_to_skill/utils.pyruns · 91,446 bytescliff.tomlasset · 2,519 bytesdocs/404.mddoc · 550 bytesdocs/CNAMEasset · 21 bytesdocs/architecture.mddoc · 9,680 bytesdocs/assets/banner.webpasset · 57,360 bytesdocs/assets/booklin-casting.pngasset · 204,464 bytesdocs/assets/booklin-celebrating.pngasset · 192,768 bytesdocs/assets/booklin-confused.pngasset · 167,473 bytesdocs/assets/booklin.pngasset · 190,433 bytesdocs/assets/logo.pngasset · 196,590 bytesdocs/assets/og-card.jpgasset · 123,478 bytesdocs/faq.mddoc · 5,300 bytesdocs/how-it-works.mddoc · 4,434 bytesdocs/index.mddoc · 3,910 bytesdocs/install.mddoc · 7,591 bytesdocs/performance.mddoc · 3,457 bytesdocs/research/progressive-disclosure-evals.mddoc · 25,632 bytesdocs/robots.txtdoc · 74 bytesdocs/usage.mddoc · 3,159 bytesevals/fixtures/pd00-synthetic-book.txtdoc · 938 bytesevals/fixtures/pd03-book.txtdoc · 183 bytesevals/fixtures/pd03-metadata.jsonasset · 424 bytesevals/fixtures/replay_trajectories.jsonasset · 1,006 bytesmkdocs.ymlasset · 2,769 bytesoverrides/main.htmlasset · 2,790 bytespyproject.tomlasset · 1,028 bytesscripts/extract.pyruns · 1,333 bytestests/evals/test_manifest.pyruns · 4,348 bytestests/evals/test_paper_flat.pyruns · 4,729 bytestests/evals/test_replay.pyruns · 2,838 bytestests/evals/test_score.pyruns · 2,636 bytestests/evals/test_score_robustness.pyruns · 9,304 bytestests/fixtures/generate_pdf_page_provenance.pyruns · 1,227 bytestests/fixtures/pdf_page_provenance.pdfasset · 2,047 bytestests/test_batch_resilience_unreadable.pyruns · 5,786 bytestests/test_book_to_skill.pyruns · 136,973 bytestests/test_calibre_stale_output.pyruns · 9,015 bytestests/test_chapter_content_split.pyruns · 3,056 bytestests/test_chapter_method_reported.pyruns · 2,137 bytestests/test_chapter_numeric_false_positives.pyruns · 6,365 bytestests/test_cjk_radical_normalization.pyruns · 3,877 bytestests/test_cjk_supplementary_plane.pyruns · 4,609 bytestests/test_code_fence_closers.pyruns · 3,444 bytestests/test_corpus_newlines.pyruns · 3,293 bytestests/test_dependency_install_semantics.pyruns · 2,199 bytestests/test_discovery_tax.pyruns · 4,560 bytestests/test_docling_fallback.pyruns · 4,245 bytestests/test_docs_host_lists.pyruns · 819 bytestests/test_epub_container_entities.pyruns · 3,550 bytestests/test_epub_image_reporting.pyruns · 2,965 bytestests/test_epub_utf16.pyruns · 6,032 bytestests/test_fingerprint.pyruns · 12,628 bytestests/test_hermes_host_support.pyruns · 9,244 bytestests/test_html_block_boundaries.pyruns · 6,863 bytestests/test_html_boilerplate_extraction.pyruns · 3,073 bytestests/test_intro_and_support_note.pyruns · 1,743 bytestests/test_isolated_install_hint.pyruns · 2,822 bytestests/test_malformed_text_bom.pyruns · 1,086 bytestests/test_metadata_encoding.pyruns · 3,836 bytestests/test_multi_source_structural_chapters.pyruns · 2,068 bytestests/test_multi_source_toc.pyruns · 3,885 bytestests/test_no_bytecode_pollution.pyruns · 11,908 bytestests/test_numbered_headings.pyruns · 4,769 bytestests/test_openclaw_host_support.pyruns · 3,546 bytestests/test_opencode_host_support.pyruns · 10,254 bytestests/test_output_dir_security.pyruns · 2,208 bytestests/test_part_chapter_count.pyruns · 2,016 bytestests/test_pdf_inspector_integration.pyruns · 11,595 bytestests/test_pdf_outline_chapters.pyruns · 5,152 bytestests/test_pdf_page_number_detection.pyruns · 3,891 bytestests/test_pdf_page_sidecar.pyruns · 7,320 bytestests/test_pdftotext_edge_only_boilerplate.pyruns · 5,927 bytestests/test_per_run_workdir.pyruns · 3,626 bytestests/test_publish_visibility_gate.pyruns · 5,136 bytestests/test_repo_hygiene.pyruns · 2,187 bytestests/test_rerun_guard.pyruns · 3,482 bytestests/test_rtf_destination_groups.pyruns · 6,107 bytestests/test_rtf_escaped_controls.pyruns · 3,391 bytestests/test_rtf_line_break.pyruns · 2,630 bytestests/test_rtf_surrogate_pairs.pyruns · 2,097 bytestests/test_sanitize_annotation_controls.pyruns · 1,474 bytestests/test_sanitize_bidi_controls.pyruns · 15,462 bytestests/test_sanitize_extracted_text.pyruns · 3,277 bytestests/test_scan_coverage.pyruns · 6,603 bytestests/test_scan_generated_skill.pyruns · 6,085 bytestests/test_scope_selection_contract.pyruns · 5,587 bytestests/test_setext_punctuation_guard.pyruns · 5,003 bytestests/test_skill_template_full_text.pyruns · 498 bytestests/test_source_chapter_samples.pyruns · 3,188 bytestests/test_structural_framing_sections.pyruns · 2,957 bytestests/test_technical_epub.pyruns · 6,012 bytestests/test_tilde_expansion.pyruns · 2,603 bytestests/test_tool_call_token_vs_prose.pyruns · 2,504 bytestests/test_translation_drift.pyruns · 1,660 bytestests/test_unbalanced_code_fence.pyruns · 7,210 bytestests/test_validate_skill.pyruns · 9,655 bytestools/discovery_tax.pyruns · 9,177 bytestools/evals/manifest.pyruns · 8,255 bytestools/evals/paper_flat.pyruns · 4,263 bytestools/evals/replay.pyruns · 1,355 bytestools/evals/score.pyruns · 4,300 bytestools/scan_generated_skill.pyruns · 14,278 bytestools/validate_skill.pyruns · 12,440 bytes
Read excerpt
<!--
Cross-agent notes (informational; ignored by host agents):
- Compatible skill roots: GitHub Copilot CLI (~/.copilot/skills, ~/.agents/skills,
.github/skills, .claude/skills, .agents/skills), Amp (.agents/skills,
~/.config/agents/skills, ~/.config/amp/skills), Claude Code (~/.claude/skills),
Hermes Agent ($HERMES_HOME/skills, .hermes/skills, .agents/skills),
OpenClaw (${OPENCLAW_STATE_DIR:-~/.openclaw}/skills, .agents/skills, skills/;
~/.agents/skills only with the default state).
OpenCode (~/.config/opencode/skills, ~/.claude/skills, .opencode/skills,
~/.agents/skills, .agents/skills).
- `allowed-tools` is intentionally omitted to stay agent-neutral: Copilot CLI uses
`shell`/MCP-server names, Claude uses `Bash`/`Read`/`Write`/`Glob`/`Grep`, Amp
adds `shell_command`. The skill needs shell (to run extract.py) and file
read/write — each host will prompt for those on first use.