Spec-driven authoring toolkit for novels, essays, and memoirs.
Project description
Toolkit de autoría spec-driven para novelas, ensayos y memorias.
Read in English
Bookwright aplica el patrón Spec-Driven Development a la escritura de formato largo: destilas tus ideas en un conjunto reducido de documentos canónicos (constitución, biblia, outline, escenas) y dejas que un agente IA escriba a partir de ellos, no de un chat libre. Tu libro vive en texto plano, versionado en git, completamente auditable, y sobrevive al toolkit.
Estado: v0.3.2
Tres hitos y dos parches están en
main. v0.1.0 (el toolkit base, iteraciones 1–11): scaffolding del proyecto (bookwright init), el modelo de dominio GOLEM, el indexer y los comandosbookwright graph, las skills de autoría materializadas como Agent Skills, y el sistema de validación de continuidad. v0.2.0 / M4 (investigación y verificación, iteraciones 12–18): el modelo de procedenciaSource/Finding/Anchor, las skills/bookwright-researchy/bookwright-verify, el validadorfactual_anchory la envoltura--jsonunificada. v0.3.0 / M5 (orquestación de contexto, iteraciones 19–23): el foco autoral ([focus]+bookwright focus), el estado derivadobookwright statuscon susnext_actions, y las skills que lo consumen para guiar el siguiente paso. v0.3.x (track de hardening, iteraciones 024–027): guard de paridad de ingesta
- registro de aplazamientos (
v0.3.1) e ingesta debible/locations/*como nodosG13_Narrative_Location(v0.3.2). v0.4 (capa de estructura narrativa, iteraciones 028–032): la ingesta deoutline/units/en unidades (G9), funciones (G10) y secuencias (G7) narrativas, el tipado Propp/Greimas vía[vocabularies] active, y el validadornarrative_structure. La documentación de usuario completa vive en el sitio de documentación.
El loop del escritor
-
Idea libremente — conversa con tu agente o tu libreta y vuelca un brief a Markdown.
-
Scaffolding del proyecto —
bookwright init mi-novela --integration claudegenera la estructura de directorios, los templates de los documentos canónicos e instala los Agent Skills de Bookwright en.claude/skills/. -
Destila, en orden — abre el proyecto con Claude Code (o cualquier agente compatible con agentskills.io) y ejecuta:
/bookwright-constitution ← reglas no negociables de la obra /bookwright-bible ← personajes, settings, lore /bookwright-outline ← estructura de actos/capítulos /bookwright-scenes ← desglose beat por beat /bookwright-draft ← generación de prosa por escenaCada comando toma input no estructurado y produce un artefacto Markdown / Turtle versionable. Iteras los documentos, no el borrador.
-
Construye y valida —
bookwright graph buildderiva el grafo narrativo GOLEM ybookwright validatecorre los chequeos de continuidad (continuidad temporal, presencia de personajes, focalización, continuidad de settings). -
Edita en tu editor favorito — Bookwright no es un editor de texto. Abre los
.mden Obsidian, Scrivener, VS Code o vim.
Instalación
El paquete en PyPI es bookwright-cli; el comando que instala es bookwright.
Desde PyPI (recomendado):
uv tool install bookwright-cli # con uv
pipx install bookwright-cli # o con pipx
bookwright version
Directamente desde el repositorio (última versión de main):
uv tool install "git+https://github.com/jmorenobl/bookwright"
# o: pipx install "git+https://github.com/jmorenobl/bookwright"
¿Solo quieres probarlo una vez, sin instalar nada?
uvx --from bookwright-cli bookwright version
Para desarrollar sobre el toolkit, clona el repo y sincroniza el entorno:
git clone https://github.com/jmorenobl/bookwright && cd bookwright
uv sync
uv run bookwright --help
Quickstart en 5 minutos
bookwright init mi-novela --integration claude # scaffolding + Agent Skills
cd mi-novela
Abre el proyecto en tu agente y destila tu idea con las skills (no editas los documentos a mano; las skills leen tu brief y te preguntan lo que falte):
/bookwright-constitution lee idea.md y destila la constitución
/bookwright-bible ← personajes, settings, cronología
/bookwright-outline ← arcos y estructura
/bookwright-scenes ← desglose en escenas
/bookwright-draft ← redacta la prosa de una escena
Para obra basada en hechos (p. ej. novela histórica), el loop opcional de investigación documenta fuentes, hallazgos y anclas, y contrasta la prosa contra ellas:
/bookwright-research <tema> ← documenta hallazgos con procedencia completa
/bookwright-verify ← contrasta la prosa redactada con las anclas
Y construye/valida desde el CLI:
bookwright graph build # → bible/graph.ttl
bookwright graph query "SELECT ?c WHERE { ?c a golem:G1_Character }" --json
bookwright validate # exit 0 si no hay errores
Para mantener el hilo conductor entre sesiones, fija tu foco autoral y deja que Bookwright derive el estado y el siguiente paso:
bookwright focus set --target "Cerrar la investigación del libro de jornales"
bookwright status --json # estado derivado + next_actions
¿Quieres cambiar de integración (p. ej. de claude a generic)?
bookwright integration use generic # re-materializa en .agents/skills/
El recorrido completo está en docs/getting-started.md.
Principios de diseño
- El texto plano es la fuente de verdad. Manuscrito, biblia, constitución y grafo narrativo son Markdown, TOML o Turtle (RDF). Auditables por humanos, diffables en git, portables.
- Agnóstico de agente. La capa de comandos se materializa como
Agent Skills portables. Bookwright entrega dos
integraciones (
claude,generic); agentes como Codex, Cursor o Copilot consumen la salidagenericdirectamente, sin integración nativa dedicada. - Batch, no conversacional. Tú consolidas el input; el comando lo destila. El agente no es un co-escritor frase a frase.
- GOLEM por debajo. El grafo narrativo usa la ontología GOLEM publicada (personajes, eventos, settings, relaciones, estructura narrativa, procedencia de inferencias) serializada en Turtle.
Roadmap y fuera de scope
Hecho: v0.2 / M4 — investigación y verificación (modelo de procedencia,
skills research/verify, validador factual_anchor); v0.3 / M5 —
orquestación de contexto (foco autoral [focus] + bookwright focus, estado
derivado bookwright status con next_actions, y las skills que lo consumen);
v0.3.x — track de hardening (paridad de ingesta, registro de aplazamientos,
ingesta de localizaciones G13, objetos G16); v0.4 — la capa de estructura
narrativa Propp/Greimas (G7/G9/G10): la ingesta de outline/units/*.md en
unidades, funciones y secuencias narrativas, el tipado de funciones/roles contra
los vocabularios de Propp y Greimas vía [vocabularies] active, y el validador
narrative_structure (beat huérfano, rol sin resolver) — cierra la paridad de
ingesta. Ver Estructura narrativa.
Horizonte demand-pulled (sin versión asignada), se activa solo ante un
disparador concreto, nunca como plumbing especulativo: búsqueda vectorial
(ChromaDB sobre rdflib, desacoplada de Grafeo — se activa con un corpus real
multi-libro / serie o ante un fallo medido de recall estructural); export a
EPUB / PDF / impresión vía pandoc (se activa cuando el flujo de extremo a extremo
esté probado sobre un libro real). La etiqueta 1.0 se gana con ese flujo
probado, no se preasigna al export.
Cancelado (decisión del owner), no lo pidas: presets de género / paquetes
de plantilla (la resolución es de 2 capas, overrides → core); el motor
Grafeo / GrafeoIndexer; integraciones más allá de claude y generic;
el sistema de extensiones. Agentes como Codex, Cursor o Copilot ya se soportan
hoy vía la integración generic con --integration-options="--skills-dir …",
sin integración nativa dedicada.
Documentos del proyecto
- Sitio de documentación — guía de usuario completa (primeros pasos, comandos, validación, extender, FAQ).
- bookwright-design.md — la especificación de diseño completa. La numeración de secciones es load-bearing.
- bookwright-implementation-plan.md — el plan de iteraciones ordenado.
- .specify/memory/constitution.md — los principios ratificados y vinculantes para cada PR.
- CONTRIBUTING.md — instalación, quality gates y cómo extender el toolkit (nueva integración, validador, vocabulario).
- CHANGELOG.md — historial de cambios.
Licencia
Apache-2.0. Consulta NOTICE para la atribución.
Esta licencia cubre solo el software bookwright. El contenido que crees con la herramienta —bibles, escaletas, manuscritos y los grafos de conocimiento derivados— sigue siendo enteramente tuyo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bookwright_cli-0.4.3.tar.gz.
File metadata
- Download URL: bookwright_cli-0.4.3.tar.gz
- Upload date:
- Size: 220.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
175eea3d071af234dcbc4ff24dd4e18d5343b4aa99761f73063ae72e8f11f0f4
|
|
| MD5 |
8ba9fa2966a7ee498af77d9e66492004
|
|
| BLAKE2b-256 |
3266f3d6a324d5d0bb78f8ea5f85195b7bd2f3e4213ca113b0bf1dd1b0faa853
|
File details
Details for the file bookwright_cli-0.4.3-py3-none-any.whl.
File metadata
- Download URL: bookwright_cli-0.4.3-py3-none-any.whl
- Upload date:
- Size: 305.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f033cb5a32cc52533218622070c705204e78ea0b748694096a35d0a1c85fa548
|
|
| MD5 |
c10f8756b10719b8b6f3cc445b6a462f
|
|
| BLAKE2b-256 |
b29471f320a05f58b8b497fdaa2262ecf5cf506ddff5dd71f1b455d07441bdf1
|