bookwright-cli 0.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. bookwright/__init__.py +3 -0
  2. bookwright/__main__.py +6 -0
  3. bookwright/cli.py +19 -0
  4. bookwright/commands/__init__.py +0 -0
  5. bookwright/commands/_envelope.py +36 -0
  6. bookwright/commands/check.py +75 -0
  7. bookwright/commands/graph/__init__.py +23 -0
  8. bookwright/commands/graph/build.py +157 -0
  9. bookwright/commands/graph/envelope.py +26 -0
  10. bookwright/commands/graph/query.py +98 -0
  11. bookwright/commands/init/__init__.py +5 -0
  12. bookwright/commands/init/conflict.py +107 -0
  13. bookwright/commands/init/envelope.py +322 -0
  14. bookwright/commands/init/git.py +96 -0
  15. bookwright/commands/init/main.py +263 -0
  16. bookwright/commands/init/resolve.py +193 -0
  17. bookwright/commands/init/scaffold.py +242 -0
  18. bookwright/commands/init/validate.py +172 -0
  19. bookwright/commands/integration/__init__.py +22 -0
  20. bookwright/commands/integration/use.py +120 -0
  21. bookwright/commands/validate.py +160 -0
  22. bookwright/commands/version.py +35 -0
  23. bookwright/core/__init__.py +35 -0
  24. bookwright/core/_blocks.py +239 -0
  25. bookwright/core/_build.py +154 -0
  26. bookwright/core/_research_block.py +56 -0
  27. bookwright/core/_translate.py +90 -0
  28. bookwright/core/errors.py +127 -0
  29. bookwright/core/iso639_1.py +200 -0
  30. bookwright/core/manifest.py +343 -0
  31. bookwright/errors.py +47 -0
  32. bookwright/golem/__init__.py +71 -0
  33. bookwright/golem/base.py +200 -0
  34. bookwright/golem/errors.py +29 -0
  35. bookwright/golem/modules/__init__.py +1 -0
  36. bookwright/golem/modules/character.py +109 -0
  37. bookwright/golem/modules/event.py +91 -0
  38. bookwright/golem/modules/feature.py +161 -0
  39. bookwright/golem/modules/inference.py +41 -0
  40. bookwright/golem/modules/narrative.py +55 -0
  41. bookwright/golem/modules/provenance.py +197 -0
  42. bookwright/golem/modules/relationship.py +38 -0
  43. bookwright/golem/modules/setting.py +30 -0
  44. bookwright/golem/namespaces.py +332 -0
  45. bookwright/golem/serialize.py +25 -0
  46. bookwright/golem/slug.py +22 -0
  47. bookwright/indexers/__init__.py +47 -0
  48. bookwright/indexers/base.py +55 -0
  49. bookwright/indexers/errors.py +80 -0
  50. bookwright/indexers/rdflib_indexer.py +89 -0
  51. bookwright/integrations/__init__.py +155 -0
  52. bookwright/integrations/base.py +117 -0
  53. bookwright/integrations/claude/__init__.py +29 -0
  54. bookwright/integrations/constants.py +38 -0
  55. bookwright/integrations/descriptions.py +48 -0
  56. bookwright/integrations/errors.py +170 -0
  57. bookwright/integrations/generic/__init__.py +56 -0
  58. bookwright/integrations/lint.py +160 -0
  59. bookwright/integrations/materialize.py +202 -0
  60. bookwright/integrations/options.py +203 -0
  61. bookwright/io/__init__.py +1 -0
  62. bookwright/io/bible.py +500 -0
  63. bookwright/io/errors.py +98 -0
  64. bookwright/io/frontmatter.py +61 -0
  65. bookwright/io/fs.py +226 -0
  66. bookwright/io/manuscript.py +15 -0
  67. bookwright/io/project.py +21 -0
  68. bookwright/io/report.py +107 -0
  69. bookwright/io/research.py +427 -0
  70. bookwright/resources/__init__.py +1 -0
  71. bookwright/resources/commands/bookwright-analyze.md +66 -0
  72. bookwright/resources/commands/bookwright-bible.md +96 -0
  73. bookwright/resources/commands/bookwright-checklist.md +67 -0
  74. bookwright/resources/commands/bookwright-clarify.md +65 -0
  75. bookwright/resources/commands/bookwright-constitution.md +79 -0
  76. bookwright/resources/commands/bookwright-continuity.md +70 -0
  77. bookwright/resources/commands/bookwright-draft.md +74 -0
  78. bookwright/resources/commands/bookwright-outline.md +71 -0
  79. bookwright/resources/commands/bookwright-research.md +107 -0
  80. bookwright/resources/commands/bookwright-scenes.md +66 -0
  81. bookwright/resources/commands/bookwright-synopsis.md +67 -0
  82. bookwright/resources/commands/bookwright-verify.md +136 -0
  83. bookwright/resources/commands/references/golem-character.md +65 -0
  84. bookwright/resources/commands/references/golem-events-timeline.md +56 -0
  85. bookwright/resources/commands/references/golem-relationships.md +53 -0
  86. bookwright/resources/commands/references/greimas-actants.md +57 -0
  87. bookwright/resources/commands/references/pending-protocol.md +72 -0
  88. bookwright/resources/commands/references/propp-functions.md +54 -0
  89. bookwright/resources/commands/references/research-format.md +136 -0
  90. bookwright/resources/project/.bookwright/cache/.gitkeep +0 -0
  91. bookwright/resources/project/.bookwright/schema/.gitkeep +0 -0
  92. bookwright/resources/project/.bookwright/templates/.gitkeep +0 -0
  93. bookwright/resources/project/.gitignore +23 -0
  94. bookwright/resources/project/README.md.j2 +40 -0
  95. bookwright/resources/project/__init__.py +6 -0
  96. bookwright/resources/project/bible/characters/.gitkeep +0 -0
  97. bookwright/resources/project/bible/constitution.md.j2 +74 -0
  98. bookwright/resources/project/bible/glossary.md +36 -0
  99. bookwright/resources/project/bible/locations/.gitkeep +0 -0
  100. bookwright/resources/project/bible/pov-structure.md +43 -0
  101. bookwright/resources/project/bible/relationships.md +36 -0
  102. bookwright/resources/project/bible/research/_index.md +28 -0
  103. bookwright/resources/project/bible/research/sources.md +23 -0
  104. bookwright/resources/project/bible/settings/.gitkeep +0 -0
  105. bookwright/resources/project/bible/subplots.md +35 -0
  106. bookwright/resources/project/bible/themes.md +36 -0
  107. bookwright/resources/project/bible/timeline.md +38 -0
  108. bookwright/resources/project/manuscript/.gitkeep +0 -0
  109. bookwright/resources/project/outline/arcs.md +34 -0
  110. bookwright/resources/project/outline/scenes.md +31 -0
  111. bookwright/resources/project/outline/structure.md +35 -0
  112. bookwright/resources/project/outline/synopsis.md +25 -0
  113. bookwright/resources/schemas/__init__.py +19 -0
  114. bookwright/resources/schemas/golem-1.1/VERSION +1 -0
  115. bookwright/resources/schemas/golem-1.1/golem.ttl +1947 -0
  116. bookwright/resources/schemas/golem-1.1/version.json +8 -0
  117. bookwright/resources/templates/__init__.py +1 -0
  118. bookwright/resources/templates/bible/character.md.tmpl +63 -0
  119. bookwright/resources/templates/bible/location.md.tmpl +37 -0
  120. bookwright/resources/templates/bible/research/_index.md.tmpl +25 -0
  121. bookwright/resources/templates/bible/research/sources.md.tmpl +21 -0
  122. bookwright/resources/templates/bible/research/tema.md.tmpl +37 -0
  123. bookwright/resources/templates/bible/setting.md.tmpl +38 -0
  124. bookwright/resources/templates/manifest.template.toml +79 -0
  125. bookwright/resources/templates/manuscript/chapter.md.tmpl +36 -0
  126. bookwright/resources/templates/scenes/scene.md.tmpl +37 -0
  127. bookwright/resources/vocabularies/__init__.py +6 -0
  128. bookwright/resources/vocabularies/greimas.ttl +4 -0
  129. bookwright/resources/vocabularies/propp.ttl +4 -0
  130. bookwright/resources/vocabularies/sources.ttl +82 -0
  131. bookwright/validation/__init__.py +33 -0
  132. bookwright/validation/anchor_queries.py +223 -0
  133. bookwright/validation/base.py +233 -0
  134. bookwright/validation/queries.py +197 -0
  135. bookwright/validation/registry.py +185 -0
  136. bookwright/validation/report.py +106 -0
  137. bookwright/validation/runner.py +65 -0
  138. bookwright/validation/validators/__init__.py +9 -0
  139. bookwright/validation/validators/character_presence.py +202 -0
  140. bookwright/validation/validators/factual_anchor.py +291 -0
  141. bookwright/validation/validators/focalization.py +152 -0
  142. bookwright/validation/validators/setting_continuity.py +100 -0
  143. bookwright/validation/validators/temporal.py +277 -0
  144. bookwright_cli-0.2.0.dist-info/METADATA +218 -0
  145. bookwright_cli-0.2.0.dist-info/RECORD +149 -0
  146. bookwright_cli-0.2.0.dist-info/WHEEL +4 -0
  147. bookwright_cli-0.2.0.dist-info/entry_points.txt +2 -0
  148. bookwright_cli-0.2.0.dist-info/licenses/LICENSE +202 -0
  149. bookwright_cli-0.2.0.dist-info/licenses/NOTICE +14 -0
@@ -0,0 +1,40 @@
1
+ {#
2
+ Nota de mantenimiento (comentario Jinja: NO se renderiza en el README final).
3
+ Esta plantilla sólo puede usar las variables de contexto del andamiaje:
4
+ `title`, `project_slug`, `author`, `language`, `integration_key`. No añadas
5
+ otras: el render con `StrictUndefined` abortaría `init`.
6
+ -#}
7
+ # {{ title }}
8
+
9
+ <!--
10
+ Guía: este README es el punto de entrada del proyecto y orienta a quien lo abre
11
+ por primera vez. Edítalo libremente; borra este bloque cuando ya no lo necesites.
12
+ -->
13
+
14
+ Proyecto Bookwright — identificador `{{ project_slug }}`.
15
+ Autoría: {{ author }}. Idioma de la obra: `{{ language }}`.
16
+
17
+ ## Por dónde empezar
18
+
19
+ 1. Abre `bible/constitution.md` y responde sus prompts `[PENDING: …]`: fija la
20
+ voz, el pacto con el lector y las líneas rojas de la obra.
21
+ 2. Esboza la historia en `outline/` (sinopsis, estructura, arcos, escenas).
22
+ 3. Da cuerpo al mundo en `bible/` (personajes, lugares, temas, glosario).
23
+ 4. Escribe el manuscrito bajo `manuscript/`.
24
+
25
+ ## Qué contiene cada directorio
26
+
27
+ - `bible/` — la "biblia" de la obra: personajes, escenarios, línea de tiempo,
28
+ relaciones, temas, glosario e investigación. Es la fuente de verdad del mundo.
29
+ - `outline/` — el plan: sinopsis corta y larga, estructura, arcos y escenas.
30
+ - `manuscript/` — el texto en sí, capítulo a capítulo.
31
+ - `.bookwright/` — estado interno del proyecto (caché, vocabularios, esquema);
32
+ no suele editarse a mano.
33
+
34
+ ## Comandos clave
35
+
36
+ - `bookwright graph build` — indexa la biblia y construye el grafo GOLEM.
37
+ - `bookwright check` — verifica que el proyecto y la cadena de herramientas
38
+ están en orden.
39
+
40
+ Ejecuta los comandos desde la raíz del proyecto.
@@ -0,0 +1,6 @@
1
+ """Packaged project template tree consumed by ``bookwright init``.
2
+
3
+ Marker file — the directory's purpose is to be enumerated by
4
+ ``importlib.resources.files("bookwright.resources.project")`` at scaffold
5
+ time. No public symbols.
6
+ """
File without changes
@@ -0,0 +1,74 @@
1
+ # {{ title }} — Constitución narrativa
2
+
3
+ <!--
4
+ Guía: este documento es el contrato narrativo del proyecto. Todo comando de
5
+ escritura (redacción, revisión, validación) lo lee primero y lo trata como la
6
+ fuente de verdad del tono, los límites y las invariantes de la obra. Responde
7
+ cada prompt `[PENDING: …]` con una frase o un párrafo breve; conserva los
8
+ títulos de sección aunque borres esta guía: los comandos y el agente los
9
+ esperan. Escribe en el idioma de la obra; las claves técnicas y el token
10
+ `[PENDING]` se mantienen en inglés.
11
+ -->
12
+
13
+ ## Voz y registro
14
+
15
+ <!-- Guía: define cómo "suena" el libro: persona narrativa, distancia, tono,
16
+ tiempo verbal dominante y nivel de formalidad. Ejemplo de respuesta:
17
+ "Tercera persona limitada, en pasado, tono lírico contenido, registro culto
18
+ con coloquialismos puntuales en el diálogo." -->
19
+
20
+ - **Voz narrativa**: [PENDING: ¿Quién narra y desde qué distancia (primera/tercera persona, omnisciente/limitada)?]
21
+ - **Tono**: [PENDING: ¿Qué tono domina la obra (neutral, lírico, coloquial, técnico…)?]
22
+ - **Tiempo verbal dominante**: [PENDING: ¿Pasado o presente como modo por defecto?]
23
+ - **Registro**: [PENDING: ¿Qué nivel de formalidad y qué textura léxica caracterizan la prosa?]
24
+
25
+ ## Pacto con el lector
26
+
27
+ <!-- Guía: la promesa implícita del libro. Qué experiencia ofrece, qué reglas
28
+ del mundo respeta y qué nunca rompe sin coste narrativo. -->
29
+
30
+ [PENDING: ¿Qué promete esta obra al lector y qué reglas se compromete a no traicionar?]
31
+
32
+ ## Pacto histórico-ficcional *(opcional)*
33
+
34
+ <!-- Guía: rellena esta sección sólo si la obra dialoga con hechos o periodos
35
+ reales. Si es ficción pura, escribe "No aplica" y continúa. Ejemplo:
36
+ "Los hechos públicos de 1937 son fieles; los personajes de la embajada
37
+ son inventados y nunca se les atribuyen actos documentados." -->
38
+
39
+ [PENDING: Si la obra toca hechos reales, ¿dónde termina el registro histórico y empieza la licencia ficcional?]
40
+
41
+ ## Líneas rojas
42
+
43
+ <!-- Guía: lo que esta obra no hará nunca: recursos, giros, tonos o contenidos
44
+ vedados. El validador y el agente tratan estas líneas como límites duros.
45
+ Ejemplo: "Sin deus ex machina; ningún personaje de punto de vista muere
46
+ fuera de página." -->
47
+
48
+ - [PENDING: ¿Qué recurso narrativo o de tono queda explícitamente prohibido?]
49
+
50
+ ## Invariantes de coherencia
51
+
52
+ <!-- Guía: hechos del mundo que deben mantenerse constantes a lo largo del
53
+ libro; sirven de checklist de continuidad. Ejemplo:
54
+ "La magia siempre cobra un precio físico visible." -->
55
+
56
+ - [PENDING: ¿Qué regla del mundo o del personaje debe ser cierta en cada capítulo?]
57
+
58
+ ## Vocabularios activos
59
+
60
+ <!-- Guía: enumera los vocabularios narrativos que la obra usa de forma
61
+ consciente (por ejemplo funciones de Propp o actantes de Greimas) y cómo
62
+ se aplican. El indexador y los validadores se apoyan en estas etiquetas. -->
63
+
64
+ [PENDING: ¿Qué vocabularios o marcos narrativos (Propp, Greimas, propios) guían la estructura?]
65
+
66
+ ## Notas para el agente
67
+
68
+ <!-- Guía: instrucciones operativas para el asistente de escritura: qué
69
+ consultar antes de redactar, qué preguntar cuando falte un dato y qué
70
+ nunca inventar. Ejemplo: "Antes de escribir una escena, verifica el POV
71
+ activo en outline/structure.md; ante un dato biográfico ausente, abre un
72
+ [PENDING] en lugar de inventarlo." -->
73
+
74
+ [PENDING: ¿Qué debe hacer el agente antes de redactar y cómo debe comportarse ante información faltante?]
@@ -0,0 +1,36 @@
1
+ # Glosario y léxico inventado
2
+
3
+ <!--
4
+ Guía: este documento fija la ortografía y el significado de todo término
5
+ inventado o de uso especial (topónimos, jerga, neologismos, tratamientos). No
6
+ lleva frontmatter indexado. Su función es garantizar consistencia: el agente lo
7
+ consulta antes de escribir un término del mundo para no introducir variantes.
8
+ Ejemplo de entrada del registro:
9
+
10
+ | Término | Significado | Capitalización | Variante prohibida |
11
+ | --- | --- | --- | --- |
12
+ | Ardía | Ciudad-puente sobre el río Vel | Siempre con mayúscula inicial | "ardia", "Hardía" |
13
+ -->
14
+
15
+ ## Registro de términos inventados
16
+
17
+ <!-- Guía: una fila por término. Incluye el significado breve y, si procede,
18
+ su etimología interna para mantener coherencia fonética. -->
19
+
20
+ | Término | Significado | Capitalización | Variante prohibida |
21
+ | --- | --- | --- | --- |
22
+ | [PENDING: ¿Qué término inventado necesita una entrada canónica?] | | | |
23
+
24
+ ## Reglas de capitalización
25
+
26
+ <!-- Guía: criterios generales (cargos, gentilicios, nombres de instituciones)
27
+ para no decidir caso por caso. -->
28
+
29
+ [PENDING: ¿Qué clases de palabras del mundo se escriben con mayúscula y cuáles no?]
30
+
31
+ ## Bitácora de consistencia
32
+
33
+ <!-- Guía: anota aquí las decisiones léxicas resueltas durante la escritura, con
34
+ fecha, para que una elección no se reabra sin querer. -->
35
+
36
+ [PENDING: ¿Qué dudas léxicas ya quedaron resueltas y cómo?]
File without changes
@@ -0,0 +1,43 @@
1
+ # Estructura de punto de vista (POV)
2
+
3
+ <!--
4
+ Guía: este documento gobierna desde qué conciencia se narra cada tramo de la
5
+ obra. No lleva frontmatter indexado. **Sólo es relevante para obras multi-POV**:
6
+ si tu libro mantiene un único punto de vista, escribe "Obra de POV único" en la
7
+ primera sección y deja el resto como referencia. Ejemplo de calendario de POV:
8
+
9
+ | Capítulo | POV | Información que este POV NO conoce aún |
10
+ | --- | --- | --- |
11
+ | 1 | Ana | El verdadero plan de Marco |
12
+ | 2 | Marco | Que Ana ya sospecha |
13
+ -->
14
+
15
+ ## Modo narrativo
16
+
17
+ <!-- Guía: declara si la obra es de POV único o múltiple y, en este último caso,
18
+ la regla de rotación (por capítulo, por escena, por acto). -->
19
+
20
+ [PENDING: ¿La obra usa un POV único o varios? Si son varios, ¿cómo rotan?]
21
+
22
+ ## Calendario de POV
23
+
24
+ <!-- Guía: tabla que asigna un POV a cada capítulo o escena. Aplica sólo a obras
25
+ multi-POV; en POV único, omítela. -->
26
+
27
+ | Capítulo | POV | Información que este POV NO conoce aún |
28
+ | --- | --- | --- |
29
+ | [PENDING: ¿Qué capítulo?] | [PENDING: ¿Desde qué personaje se narra?] | |
30
+
31
+ ## Diferenciación de voz
32
+
33
+ <!-- Guía: qué hace distinguible a cada voz narradora (léxico, ritmo, obsesiones)
34
+ para que el lector sepa "quién mira" sin que se lo digan. -->
35
+
36
+ [PENDING: ¿Qué rasgos de voz separan a un narrador-personaje de otro?]
37
+
38
+ ## Mapa de asimetría de información
39
+
40
+ <!-- Guía: registra qué sabe cada POV y cuándo, para administrar el suspense y
41
+ evitar filtraciones de información entre líneas de punto de vista. -->
42
+
43
+ [PENDING: ¿Qué sabe cada POV en cada acto y qué se le oculta deliberadamente al lector?]
@@ -0,0 +1,36 @@
1
+ ---
2
+ relationships: []
3
+ ---
4
+
5
+ # Relaciones
6
+
7
+ <!--
8
+ Guía: registra aquí los vínculos sociales entre personajes. Cada relación es un
9
+ mapa `{ name, participants }`, donde `participants` es una lista de *slugs* de
10
+ personaje. El *slug* se deriva del campo `name` de la ficha (p. ej.
11
+ `name: "Ana Soler"` → `ana-soler`), no del nombre del archivo; nombra cada
12
+ `bible/characters/<slug>.md` con ese mismo slug para mantenerlos alineados.
13
+ El indexador sólo lee la clave `relationships:` del frontmatter — mantenla como
14
+ única clave de nivel superior. Deja la lista vacía hasta rellenarla; los
15
+ ejemplos viven dentro de este comentario para que nunca se indexen. Ejemplo:
16
+
17
+ relationships:
18
+ - name: "Lealtad fracturada"
19
+ participants: ["ana-soler", "marco-vega"]
20
+ - name: "Rivalidad heredada"
21
+ participants: ["marco-vega", "elsa-roan"]
22
+ -->
23
+
24
+ ## Cómo se rellena
25
+
26
+ - Añade cada vínculo como un ítem bajo `relationships:` en el frontmatter.
27
+ - `name` es obligatorio y nombra la naturaleza del vínculo, no a las personas.
28
+ - `participants` enumera los *slugs* de los personajes implicados; deben existir
29
+ en `bible/characters/` para resolverse.
30
+
31
+ ## Mapa de tensiones
32
+
33
+ <!-- Guía: en prosa, describe las alianzas y los conflictos que mueven la
34
+ trama, y cómo evolucionan a lo largo del libro. -->
35
+
36
+ [PENDING: ¿Cuáles son las tres relaciones que más empujan el conflicto central?]
@@ -0,0 +1,28 @@
1
+ ---
2
+ open_questions: []
3
+ ---
4
+
5
+ # Índice de investigación
6
+
7
+ <!--
8
+ Guía: este índice mapea los temas investigados y reúne las preguntas abiertas
9
+ globales del proyecto. La clave `open_questions:` del frontmatter admite una
10
+ lista de preguntas, cada una con un `id`; déjala vacía (`[]`) hasta que tengas
11
+ alguna que quieras rastrear en el grafo. El cuerpo en prosa de abajo no se
12
+ indexa: úsalo como mapa legible. El comando `/bookwright-research` actualiza este
13
+ archivo en sitio siguiendo `references/research-format.md`.
14
+ -->
15
+
16
+ ## Temas
17
+
18
+ <!-- Guía: enlaza aquí cada archivo `<tema>.md` a medida que lo creas, p. ej.
19
+ `- [Logística en 1943](logistica-en-1943.md)`. -->
20
+
21
+ [PENDING: ¿Qué temas necesitas investigar para sostener la verosimilitud de la obra?]
22
+
23
+ ## Preguntas abiertas globales
24
+
25
+ <!-- Guía: cuando quieras rastrear una pregunta en el grafo, muévela a
26
+ `open_questions:` arriba con un `id` propio. -->
27
+
28
+ [PENDING: ¿Qué preguntas del mundo real o del mundo interno siguen sin respuesta?]
@@ -0,0 +1,23 @@
1
+ ---
2
+ sources: []
3
+ ---
4
+
5
+ # Registro de fuentes
6
+
7
+ <!--
8
+ Guía: el registro de fuentes del proyecto. La clave `sources:` del frontmatter
9
+ admite una lista de fuentes, cada una con procedencia completa: `name`,
10
+ `reference`, `author`, `original_language`, `type`, `reliability`,
11
+ `reliability_justification`, `access_date`, `original_quote` y `translation`
12
+ cuando la lengua de la fuente difiera de la del libro. Déjala vacía (`[]`) hasta
13
+ registrar la primera fuente. El comando `/bookwright-research` la puebla
14
+ siguiendo `references/research-format.md`; no inventes fuentes a mano sin esa
15
+ procedencia.
16
+ -->
17
+
18
+ ## Notas
19
+
20
+ <!-- Guía: usa esta prosa para anotaciones de trabajo; no se indexa. La fuente
21
+ real vive en `sources:` arriba. -->
22
+
23
+ [PENDING: ¿Qué fuentes sustentan la ambientación y qué nivel de fiabilidad exiges?]
File without changes
@@ -0,0 +1,35 @@
1
+ # Subtramas
2
+
3
+ <!--
4
+ Guía: este documento ordena las líneas argumentales secundarias y sus puntos de
5
+ cruce con la trama principal. No lleva frontmatter indexado. Para cada subtrama
6
+ escribe un *beat sheet* breve (sus latidos esenciales) y marca dónde se entrelaza
7
+ con la historia central. Ejemplo de beat sheet:
8
+
9
+ - **Subtrama: la deuda de Marco**
10
+ 1. Detonante: el prestamista aparece en el mercado.
11
+ 2. Complicación: Marco oculta la deuda a Ana.
12
+ 3. Cruce con la trama principal: la deuda fuerza el robo del capítulo 7.
13
+ 4. Resolución: se salda con un coste moral irreversible.
14
+ -->
15
+
16
+ ## Inventario de subtramas
17
+
18
+ <!-- Guía: lista cada subtrama con una frase que capture su pregunta dramática
19
+ ("¿logrará X antes de Y?"). -->
20
+
21
+ [PENDING: ¿Qué subtramas acompañan a la trama principal y qué pregunta plantea cada una?]
22
+
23
+ ## Beat sheets
24
+
25
+ <!-- Guía: para cada subtrama, ordena sus latidos (detonante, complicación,
26
+ clímax, resolución) en cuatro o cinco pasos. -->
27
+
28
+ [PENDING: ¿Cuáles son los latidos esenciales de cada subtrama?]
29
+
30
+ ## Puntos de intersección con la trama principal
31
+
32
+ <!-- Guía: tabla o lista que indique en qué capítulo cada subtrama toca,
33
+ desvía o acelera la trama central, para sincronizar el ritmo. -->
34
+
35
+ [PENDING: ¿En qué capítulos cada subtrama se cruza con la historia central?]
@@ -0,0 +1,36 @@
1
+ # Temas y motivos
2
+
3
+ <!--
4
+ Guía: este documento rastrea la capa simbólica de la obra. No lleva frontmatter
5
+ indexado: es material de consulta para el autor y el agente. Mantén tres
6
+ registros vivos — motivos, símbolos y mapa temático por capítulo — y actualízalos
7
+ cuando una escena introduzca o resuelva una imagen recurrente. Ejemplo de una
8
+ fila del rastreador de símbolos:
9
+
10
+ | Símbolo | Significado | Primera aparición | Reaparece en |
11
+ | --- | --- | --- | --- |
12
+ | El reloj parado | Duelo no resuelto | Cap. 1, escena 2 | Caps. 4, 9 |
13
+ -->
14
+
15
+ ## Registro de motivos
16
+
17
+ <!-- Guía: enumera los motivos (imágenes o ideas que reaparecen) y qué tensión
18
+ cargan. Un motivo no es un tema: es su vehículo concreto y repetible. -->
19
+
20
+ [PENDING: ¿Qué tres o cuatro motivos recurrentes vertebran la obra?]
21
+
22
+ ## Rastreador de símbolos
23
+
24
+ <!-- Guía: tabla viva. Cada símbolo, su carga de significado, dónde aparece
25
+ primero y dónde reaparece, para vigilar la consistencia simbólica. -->
26
+
27
+ | Símbolo | Significado | Primera aparición | Reaparece en |
28
+ | --- | --- | --- | --- |
29
+ | [PENDING: ¿Qué objeto o imagen carga significado?] | | | |
30
+
31
+ ## Mapa temático por capítulo
32
+
33
+ <!-- Guía: relaciona cada capítulo con el tema que pone en primer plano, para
34
+ evitar que un tema central desaparezca durante tramos largos. -->
35
+
36
+ [PENDING: ¿Qué tema domina cada acto o bloque de capítulos?]
@@ -0,0 +1,38 @@
1
+ ---
2
+ events: []
3
+ ---
4
+
5
+ # Línea de tiempo
6
+
7
+ <!--
8
+ Guía: registra aquí los hechos cronológicos de la obra. Cada evento es un
9
+ mapa `{ name, participants }`, donde `participants` es una lista de *slugs* de
10
+ personaje. El *slug* se deriva del campo `name` de la ficha (p. ej.
11
+ `name: "Ana Soler"` → `ana-soler`), no del nombre del archivo; nombra cada
12
+ `bible/characters/<slug>.md` con ese mismo slug para mantenerlos alineados.
13
+ El indexador sólo lee la clave `events:` del frontmatter — mantenla como única
14
+ clave de nivel superior. Deja la lista vacía hasta que el agente o tú la
15
+ rellenéis; los ejemplos viven dentro de este comentario para que nunca se
16
+ indexen. Ejemplo de lista poblada:
17
+
18
+ events:
19
+ - name: "Caída del puente de Ardía"
20
+ participants: ["ana-soler", "marco-vega"]
21
+ - name: "Pacto en la torre"
22
+ participants: ["ana-soler"]
23
+ -->
24
+
25
+ ## Cómo se rellena
26
+
27
+ - Añade cada hecho como un ítem bajo `events:` en el frontmatter, no en el cuerpo.
28
+ - `name` es obligatorio y debe ser una cadena no vacía.
29
+ - `participants` es opcional; cada *slug* debe corresponder a un personaje real
30
+ de `bible/characters/` o aparecerá como referencia sin resolver.
31
+ - El orden de la lista refleja el orden cronológico interno de la historia.
32
+
33
+ ## Notas de cronología
34
+
35
+ <!-- Guía: usa esta sección en prosa para anclar fechas, saltos temporales o
36
+ ambigüedades deliberadas que no encajan como eventos discretos. -->
37
+
38
+ [PENDING: ¿Cuál es el marco temporal global de la obra (época, duración, saltos)?]
File without changes
@@ -0,0 +1,34 @@
1
+ # Arcos
2
+
3
+ <!--
4
+ Guía: plantilla de arcos. Un arco describe la transformación de un personaje o
5
+ de una fuerza a lo largo de la obra: de dónde parte, qué lo quiebra y dónde
6
+ termina. No lleva frontmatter indexado. Completa un bloque por arco. Ejemplo:
7
+
8
+ - **Arco de Ana — del deber a la elección**
9
+ - Estado inicial: obedece sin preguntar.
10
+ - Punto de quiebre: descubre la mentira fundacional.
11
+ - Estado final: elige, y paga el precio de elegir.
12
+ - Evidencia por capítulo: 1 (deber), 5 (duda), 9 (ruptura), 12 (elección).
13
+ -->
14
+
15
+ ## Arcos de personaje
16
+
17
+ <!-- Guía: para cada personaje con recorrido, declara estado inicial, punto de
18
+ quiebre y estado final, y ancla cada fase a capítulos concretos. -->
19
+
20
+ [PENDING: ¿Qué personajes cambian a lo largo de la obra y desde/hacia qué?]
21
+
22
+ ## Arco temático o de la trama
23
+
24
+ <!-- Guía: el arco que recorre la historia misma (una idea que madura, un mundo
25
+ que se transforma), no atado a un solo personaje. -->
26
+
27
+ [PENDING: ¿Qué transformación recorre la obra más allá de los personajes individuales?]
28
+
29
+ ## Sincronización de arcos
30
+
31
+ <!-- Guía: cómo se alinean los puntos de quiebre de los distintos arcos para que
32
+ el clímax los haga converger. -->
33
+
34
+ [PENDING: ¿En qué punto convergen los arcos principales?]
@@ -0,0 +1,31 @@
1
+ # Escenas
2
+
3
+ <!--
4
+ Guía: plantilla de escenas. Desglosa los capítulos en escenas concretas, la
5
+ unidad real de la redacción. No lleva frontmatter indexado. Para cada escena
6
+ anota objetivo, conflicto y cambio de estado (el "antes → después" que justifica
7
+ su existencia). Ejemplo de ficha:
8
+
9
+ - **Escena 1.2 — El mercado de Ardía**
10
+ - Objetivo del POV: comprar el salvoconducto.
11
+ - Conflicto: el vendedor la reconoce.
12
+ - Cambio de estado: de anónima a buscada.
13
+ - Lugar / momento: mercado, amanecer.
14
+ -->
15
+
16
+ ## Lista de escenas
17
+
18
+ <!-- Guía: enumera las escenas en orden, identificadas por capítulo y posición
19
+ (p. ej. 3.1, 3.2). Cada una debe cambiar algo: si nada cambia, sobra. -->
20
+
21
+ [PENDING: ¿En qué escenas se divide cada capítulo y qué cambia en cada una?]
22
+
23
+ ## Ficha de escena
24
+
25
+ <!-- Guía: usa esta ficha como patrón al detallar una escena: objetivo del POV,
26
+ conflicto que lo obstaculiza, y el estado que deja al terminar. -->
27
+
28
+ - **Escena**: [PENDING: ¿Qué identificador y título tiene la escena?]
29
+ - Objetivo del POV: [PENDING: ¿Qué quiere conseguir el personaje en esta escena?]
30
+ - Conflicto: [PENDING: ¿Qué se interpone?]
31
+ - Cambio de estado: [PENDING: ¿Cómo cambia la situación de principio a fin?]
@@ -0,0 +1,35 @@
1
+ # Estructura
2
+
3
+ <!--
4
+ Guía: plantilla estructural. Aquí defines el esqueleto de la obra: actos,
5
+ capítulos y los latidos mayores que sostienen el ritmo. No lleva frontmatter
6
+ indexado. Ajusta el número de actos a tu modelo (tres actos, cinco actos,
7
+ kishōtenketsu…). Ejemplo de fila del mapa de capítulos:
8
+
9
+ | Cap. | Acto | Función dramática | POV | Promesa/pago |
10
+ | --- | --- | --- | --- | --- |
11
+ | 1 | I | Detonante: rompe el statu quo | Ana | Promete el misterio del puente |
12
+ -->
13
+
14
+ ## Modelo estructural
15
+
16
+ <!-- Guía: declara el modelo (tres actos, cinco actos, viaje del héroe, etc.) y
17
+ por qué encaja con esta historia. -->
18
+
19
+ [PENDING: ¿Qué modelo estructural organiza la obra y por qué?]
20
+
21
+ ## Latidos mayores
22
+
23
+ <!-- Guía: los puntos de inflexión obligatorios del modelo elegido (detonante,
24
+ primer giro, punto medio, clímax, resolución) y a qué capítulo caen. -->
25
+
26
+ [PENDING: ¿Dónde caen el detonante, el punto medio y el clímax?]
27
+
28
+ ## Mapa de capítulos
29
+
30
+ <!-- Guía: una fila por capítulo con su función dramática y su POV; es la vista
31
+ de pájaro que evita capítulos sin propósito. -->
32
+
33
+ | Cap. | Acto | Función dramática | POV | Promesa/pago |
34
+ | --- | --- | --- | --- | --- |
35
+ | [PENDING: ¿Qué número de capítulo?] | | | | |
@@ -0,0 +1,25 @@
1
+ # Sinopsis
2
+
3
+ <!--
4
+ Guía: este documento mantiene dos resúmenes de la obra a distinta escala. La
5
+ sinopsis corta sirve de brújula y de texto de contraportada; la larga es el mapa
6
+ completo, con spoilers, para el autor y el agente. No lleva frontmatter indexado.
7
+ Mantén ambas sincronizadas con la trama real a medida que evoluciona. Ejemplo de
8
+ arranque de sinopsis corta: "Cuando el puente que sostiene Ardía empieza a
9
+ hundirse, Ana descubre que la única forma de salvarlo es traicionar a quien la
10
+ crió." -->
11
+
12
+ ## Sinopsis corta (250–350 palabras)
13
+
14
+ <!-- Guía: una pieza autónoma y seductora, sin spoilers del desenlace; presenta
15
+ protagonista, conflicto y apuesta. Apunta a entre 250 y 350 palabras. -->
16
+
17
+ [PENDING: ¿Quién es el protagonista, qué quiere, qué se lo impide y qué está en juego?]
18
+
19
+ ## Sinopsis larga (1000–2000 palabras)
20
+
21
+ <!-- Guía: el recorrido completo de la trama, acto por acto, **con** desenlace.
22
+ Es la referencia interna que mantiene la coherencia global. Apunta a entre
23
+ 1000 y 2000 palabras. -->
24
+
25
+ [PENDING: ¿Cómo se desarrolla la trama de principio a fin, incluido el desenlace?]
@@ -0,0 +1,19 @@
1
+ """Vendored, frozen schema resources (GOLEM ontology Turtle + provenance)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from importlib import resources
6
+
7
+ SCHEMA_DIR = "golem-1.1"
8
+ """Vendored schema directory name — the single source of truth for the stamp."""
9
+
10
+
11
+ def load_schema_version() -> str:
12
+ """Read the vendored schema's short version label (e.g. ``golem-1.1``).
13
+
14
+ Routed through this package's own anchor so the directory name lives in
15
+ exactly one place; both ``bookwright version`` and the ontology loader in
16
+ ``golem.namespaces`` resolve the schema location from here (D11).
17
+ """
18
+ resource = resources.files(__name__).joinpath(f"{SCHEMA_DIR}/VERSION")
19
+ return resource.read_text(encoding="utf-8").strip()
@@ -0,0 +1 @@
1
+ golem-1.1