book-to-skill
Convierte un libro en PDF (o tus documentos) en una skill: marcos, reglas de decisión y un archivo por capítulo que tu agente consulta cuando lo necesitas.
Instalación
$ npx skills add virgiliojr94/book-to-skill
Revisada: instálala con precaución
La mayoría de avisos salen de sus tests: frases como «Ignore previous instructions» o caracteres invisibles están ahí a propósito para comprobar que la skill los limpia de los libros. «Enable Developer Mode» es la instrucción de Windows para crear enlaces simbólicos, y los comentarios HTML son notas normales. Lo real: ejecuta un extractor en Python en tu ordenador y escribe la skill generada en tu carpeta de skills (~/.agents/skills, con un enlace en ~/.claude/skills). Ojo: el autor avisa de una copia maliciosa en otro usuario de GitHub (Leutenegger/book-to-skill); instala solo desde virgiliojr94/book-to-skill.
Ver los avisos del escáner (primeros 60)
- Hidden Instructions (high) en
.github/PULL_REQUEST_TEMPLATE.md:50: «<!-- Drag in an image: the bug vs the fix, the generated skill, the dashboard, etc. A picture of broken-vs-fixed is the fastest way to get a PR reviewed. » - Hidden Instructions (high) en
SKILL.md:6: «<!-- Cross-agent notes (informational; ignored by host agents): - Compatible skill roots: GitHub Copilot CLI (~/.copilot/skills, ~/.agents/skills, .github» - Incomplete referenced artifact analysis (high) en
SKILL.md:102: «SKILL.md (partial)» - Instruction Override (high) en
SKILL.md:757: «Enable Developer Mode» - Incomplete referenced artifact analysis (high) en
SKILL.md:788: «README.md (partial)» - Credential Access (high) en
tests/test_book_to_skill.py:1749: «/etc/passwd» - Env Variable Harvesting (high) en
tests/test_corpus_newlines.py:41: «dict(os.environ, BOOK_SKILL_WORKDIR=str(output))» - Env Variable Harvesting (high) en
tests/test_epub_container_entities.py:67: «dict(os.environ, BOOK_SKILL_WORKDIR=str(output), PYTHONIOENCODING="utf-8")» - Env Variable Harvesting (high) en
tests/test_epub_utf16.py:114: «os.environ.copy()» - Env Variable Harvesting (high) en
tests/test_multi_source_structural_chapters.py:51: «dict(os.environ, BOOK_SKILL_WORKDIR=str(workdir))» - Env Variable Harvesting (high) en
tests/test_no_bytecode_pollution.py:105: «os.environ.items()» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:30: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:31: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:32: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:33: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:34: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:35: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:36: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:37: «» - Hidden Instructions (high) en
tests/test_sanitize_bidi_controls.py:38: «» - Instruction Override (high) en
tests/test_scan_coverage.py:27: «Ignore all previous instructions» - Credential Access (high) en
tests/test_scan_coverage.py:27: «.env » - YARA rule 'agent_skill_prompt_injection_hidden_instructions': Prompt injection or hidden i (high) en
tests/test_scan_generated_skill.py:104: «model; Ignore previous instructions» - Instruction Override (high) en
tests/test_scan_generated_skill.py:107: «Ignore previous instructions» - MCP server referenced without pinned version: 'uvx git-cliff'. (medium) en
CONTRIBUTING.md:73: «uvx git-cliff» - External Transmission (medium) en
README.md:27: «https://api.star-history.com/» - MCP server referenced without pinned version: 'npx skills'. (medium) en
README.md:123: «npx skills» - Sudo/Root Execution (medium) en
README.md:169: «sudo » - analysis-evasion (medium) en
README.ru.md:1 - Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were (medium) en
SKILL.md:1: «Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: env, file_read, file_write, network, shell.» - Session Persistence (medium) en
SKILL.md:412: «create the directory if missing). One exception, so the default does not invent a convention in someone else's house: if `~/.agents» - Session Persistence (medium) en
SKILL.md:757: «create the symlink (a plain copy drifts on the next Update/Fold-in). Enable Developer Mode / create the link manually, or run the skill from ~/.agents» - subprocess module call (medium) en
book_to_skill/dependencies.py:124: «subprocess.run( [sys.executable, "-m", "pip", "install", *packages], text=True, timeout=600, )» - subprocess module call (medium) en
book_to_skill/parsers/calibre.py:43: «subprocess.run( ["ebook-convert", input_path, str(output_path)], capture_output=True, text=True, timeout=300 )» - subprocess module call (medium) en
book_to_skill/parsers/pdf.py:89: «subprocess.run( ["pdftotext", "-layout", "-enc", "UTF-8", pdf_path, "-"], capture_output=True, text=True, timeout=120, encod» - subprocess module call (medium) en
book_to_skill/parsers/pdf.py:110: «subprocess.run( ["pdftotext", "-f", "1", "-l", str(pages), "-enc", "UTF-8", os.path.abspath(pdf_path), "-"], capture_output=True, text=T» - subprocess module call (medium) en
book_to_skill/parsers/pdf.py:286: «subprocess.run( ["pdfinfo", pdf_path], capture_output=True, text=True, timeout=15, )» - Autonomous Decision Making (medium) en
book_to_skill/utils.py:1760: «without asking» - Skill Enumeration (medium) en
docs/install.md:101: «skill/master/SKILL.md» - subprocess module call (medium) en
tests/evals/test_manifest.py:94: «subprocess.run(command, check=True, capture_output=True, text=True, encoding="utf-8")» - subprocess module call (medium) en
tests/evals/test_replay.py:36: «subprocess.run(command, check=True, capture_output=True)» - subprocess module call (medium) en
tests/evals/test_replay.py:62: «subprocess.run( [sys.executable, str(REPLAY), str(fixture)], check=True, capture_output=True, text=True, )» - subprocess module call (medium) en
tests/test_corpus_newlines.py:43: «subprocess.run( [ sys.executable, str(ROOT / "scripts" / "extract.py"), str(source), "--mode", » - Dynamic import via __import__() (medium) en
tests/test_discovery_tax.py:111: «__import__("re")» - subprocess module call (medium) en
tests/test_epub_container_entities.py:68: «subprocess.run( [sys.executable, "-B", "-S", str(ROOT / "scripts" / "extract.py"), str(source), "--mode", "text", "--install-mi» - subprocess module call (medium) en
tests/test_epub_utf16.py:116: «subprocess.run( [sys.executable, "-B", "-S", str(ROOT / "scripts" / "extract.py"), str(self.path), "--mode", "text", "--install-missing» - subprocess module call (medium) en
tests/test_hermes_host_support.py:55: «subprocess.run(["git", "init", "-q"], cwd=project, check=True)» - subprocess module call (medium) en
tests/test_hermes_host_support.py:75: «subprocess.run( ["bash", "-c", _extract_probe_script()], cwd=nested, env=env, check=True, capture_output=True, t» - subprocess module call (medium) en
tests/test_hermes_host_support.py:164: «subprocess.run( ["bash", "-c", _extract_probe_script()], cwd=run_from, env=env, check=True, capture_output=True, » - subprocess module call (medium) en
tests/test_hermes_host_support.py:195: «subprocess.run( ["bash", "-c", _extract_probe_script()], cwd=project, env=env, check=True, capture_output=True, » - subprocess module call (medium) en
tests/test_multi_source_structural_chapters.py:41: «subprocess.run( [ sys.executable, str(ROOT_DIR / "scripts" / "extract.py"), *map(str, paths), "--mode", » - subprocess module call (medium) en
tests/test_no_bytecode_pollution.py:111: «subprocess.run( argv, cwd=str(cwd), env=env, capture_output=True, text=True, encoding="utf-8", errors="r» - subprocess module call (medium) en
tests/test_opencode_host_support.py:57: «subprocess.run( [cand, "-c", "true"], capture_output=True, timeout=30, )» - subprocess module call (medium) en
tests/test_opencode_host_support.py:104: «subprocess.run( [BASH, "-c", _extract_probe_script()], cwd=cwd, env=env, check=True, capture_output=True, text=T» - subprocess module call (medium) en
tests/test_opencode_host_support.py:126: «subprocess.run( [BASH, "-lc", "cygpath -w -- " + shlex.quote(raw)], capture_output=True, text=True, timeout=30, » - subprocess module call (medium) en
tests/test_pdf_page_sidecar.py:149: «subprocess.run( [sys.executable, str(ROOT / "scripts" / "extract.py"), str(FIXTURE), "--mode", "text", "--install-missing", "no", *opti» - subprocess module call (medium) en
tests/test_repo_hygiene.py:14: «subprocess.run( ["git", *args], cwd=REPO_ROOT, capture_output=True, timeout=30, text=True, » - subprocess module call (medium) en
tests/test_source_chapter_samples.py:63: «subprocess.run( [sys.executable, str(ROOT_DIR / "scripts" / "extract.py"), *map(str, paths), "--mode", "text", "--install-missing", "no"], » - subprocess module call (medium) en
tests/test_technical_epub.py:60: «subprocess.run( command, cwd=ROOT, env=env, capture_output=True, text=True, encoding="utf-8", timeout=30, )» - subprocess module call (medium) en
tools/evals/manifest.py:113: «subprocess.run( ["git", "rev-parse", "HEAD"], cwd=base_dir, capture_output=True, text=True, encoding="utf-8", errors="replace", timeout=»
Un escáner automático no garantiza que book-to-skill sea segura. Lee su código antes de instalarla, sobre todo si ejecuta scripts o pide permisos.
¿Para qué sirve?
- Preguntarle a tu agente por un capítulo concreto de un libro técnico que tienes
- Convertir la documentación interna o el manual de marca en una skill consultable
- Tener una chuleta de reglas de decisión de cualquier libro
Preguntas sobre book-to-skill
¿Qué hace book-to-skill?
Convierte un libro en PDF (o tus documentos) en una skill: marcos, reglas de decisión y un archivo por capítulo que tu agente consulta cuando lo necesitas.
¿Cómo se instala book-to-skill?
Copia y ejecuta en tu terminal: npx skills add virgiliojr94/book-to-skill. Después pídeselo a Claude con normalidad.
¿book-to-skill es gratis?
Sí. Es un proyecto de código abierto de virgiliojr94 con licencia MIT. Solo necesitas tu propio plan de Claude.
Skillario no es el autor de esta skill. La ficha resume su funcionamiento; el proyecto pertenece a virgiliojr94. Revisa su README antes de instalarla.
Skills relacionadas
Planning with Files
Claude guarda su plan en archivos y retoma tareas largas sin perder el hilo.
Ver ficha →career-ops
Agente de IA para buscar empleo: pegas una oferta y, en tu ordenador, te dice si sigue abierta y si te encaja, adapta tu CV y redacta tus respuestas. Tú pulsas Enviar.
Ver ficha →Claude-Mem
Dale memoria persistente a Claude: recuerda tus sesiones anteriores y retoma el trabajo sin repetir contexto.
Ver ficha →I Have ADHD
Respuestas sin relleno: tu agente da primero la acción, numera los pasos y termina con un único siguiente paso concreto.
Ver ficha →