scriveno 2.0.5
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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/agents/continuity-checker.md +85 -0
- package/agents/drafter.md +248 -0
- package/agents/plan-checker.md +209 -0
- package/agents/researcher.md +114 -0
- package/agents/translator.md +204 -0
- package/agents/voice-checker.md +154 -0
- package/bin/install.js +1620 -0
- package/commands/scr/add-note.md +51 -0
- package/commands/scr/add-unit.md +101 -0
- package/commands/scr/art-direction.md +225 -0
- package/commands/scr/autopilot-publish.md +210 -0
- package/commands/scr/autopilot-translate.md +237 -0
- package/commands/scr/autopilot.md +200 -0
- package/commands/scr/back-matter.md +630 -0
- package/commands/scr/back-translate.md +197 -0
- package/commands/scr/beta-reader.md +97 -0
- package/commands/scr/blurb.md +149 -0
- package/commands/scr/book-proposal.md +210 -0
- package/commands/scr/build-ebook.md +448 -0
- package/commands/scr/build-poetry-submission.md +202 -0
- package/commands/scr/build-print.md +598 -0
- package/commands/scr/build-smashwords.md +171 -0
- package/commands/scr/build-world.md +158 -0
- package/commands/scr/cast-list.md +104 -0
- package/commands/scr/chapter-header.md +158 -0
- package/commands/scr/character-arc.md +108 -0
- package/commands/scr/character-ref.md +160 -0
- package/commands/scr/character-sheet.md +143 -0
- package/commands/scr/character-touch.md +157 -0
- package/commands/scr/character-voice-sample.md +111 -0
- package/commands/scr/check-notes.md +50 -0
- package/commands/scr/cleanup.md +159 -0
- package/commands/scr/compare.md +112 -0
- package/commands/scr/complete-draft.md +49 -0
- package/commands/scr/continuity-check.md +129 -0
- package/commands/scr/copy-edit.md +118 -0
- package/commands/scr/cover-art.md +382 -0
- package/commands/scr/cultural-adaptation.md +177 -0
- package/commands/scr/demo.md +93 -0
- package/commands/scr/dialogue-audit.md +143 -0
- package/commands/scr/discuss.md +118 -0
- package/commands/scr/discussion-questions.md +129 -0
- package/commands/scr/do.md +68 -0
- package/commands/scr/draft.md +97 -0
- package/commands/scr/editor-review.md +466 -0
- package/commands/scr/export.md +942 -0
- package/commands/scr/fast.md +65 -0
- package/commands/scr/front-matter.md +696 -0
- package/commands/scr/health.md +113 -0
- package/commands/scr/help.md +121 -0
- package/commands/scr/history.md +92 -0
- package/commands/scr/illustrate-scene.md +211 -0
- package/commands/scr/import.md +95 -0
- package/commands/scr/insert-unit.md +108 -0
- package/commands/scr/line-edit.md +146 -0
- package/commands/scr/manager.md +77 -0
- package/commands/scr/manuscript-stats.md +139 -0
- package/commands/scr/map-illustration.md +213 -0
- package/commands/scr/map-manuscript.md +134 -0
- package/commands/scr/merge-units.md +136 -0
- package/commands/scr/multi-publish.md +344 -0
- package/commands/scr/new-character.md +167 -0
- package/commands/scr/new-revision.md +50 -0
- package/commands/scr/new-work.md +148 -0
- package/commands/scr/next.md +125 -0
- package/commands/scr/originality-check.md +170 -0
- package/commands/scr/outline.md +131 -0
- package/commands/scr/pacing-analysis.md +170 -0
- package/commands/scr/panel-layout.md +225 -0
- package/commands/scr/pause-work.md +88 -0
- package/commands/scr/plan.md +112 -0
- package/commands/scr/plant-seed.md +57 -0
- package/commands/scr/plot-graph.md +199 -0
- package/commands/scr/polish.md +141 -0
- package/commands/scr/profile-writer.md +154 -0
- package/commands/scr/progress.md +51 -0
- package/commands/scr/publish.md +455 -0
- package/commands/scr/query-letter.md +183 -0
- package/commands/scr/quick-write.md +82 -0
- package/commands/scr/relationship-map.md +129 -0
- package/commands/scr/remove-unit.md +120 -0
- package/commands/scr/reorder-units.md +126 -0
- package/commands/scr/resume-work.md +97 -0
- package/commands/scr/sacred/annotation-layer.md +105 -0
- package/commands/scr/sacred/chronology.md +121 -0
- package/commands/scr/sacred/concordance.md +88 -0
- package/commands/scr/sacred/cross-reference.md +97 -0
- package/commands/scr/sacred/doctrinal-check.md +129 -0
- package/commands/scr/sacred/genealogy.md +107 -0
- package/commands/scr/sacred/source-tracking.md +101 -0
- package/commands/scr/sacred/verse-numbering.md +103 -0
- package/commands/scr/sacred-numbering-format.md +103 -0
- package/commands/scr/save.md +109 -0
- package/commands/scr/scan.md +291 -0
- package/commands/scr/sensitivity-review.md +169 -0
- package/commands/scr/series-bible.md +127 -0
- package/commands/scr/session-report.md +80 -0
- package/commands/scr/settings.md +58 -0
- package/commands/scr/split-unit.md +123 -0
- package/commands/scr/spread-layout.md +187 -0
- package/commands/scr/storyboard.md +262 -0
- package/commands/scr/subject-touch.md +168 -0
- package/commands/scr/submit.md +50 -0
- package/commands/scr/subplot-map.md +147 -0
- package/commands/scr/sync.md +116 -0
- package/commands/scr/synopsis.md +137 -0
- package/commands/scr/theme-tracker.md +128 -0
- package/commands/scr/thread.md +83 -0
- package/commands/scr/timeline.md +141 -0
- package/commands/scr/track.md +564 -0
- package/commands/scr/translate.md +260 -0
- package/commands/scr/translation-glossary.md +298 -0
- package/commands/scr/translation-memory.md +310 -0
- package/commands/scr/troubleshoot.md +59 -0
- package/commands/scr/undo.md +106 -0
- package/commands/scr/validate.md +133 -0
- package/commands/scr/versions.md +94 -0
- package/commands/scr/voice-check.md +133 -0
- package/commands/scr/voice-test.md +68 -0
- package/data/CONSTRAINTS.json +1606 -0
- package/data/demo/.manuscript/BRIEF.md +37 -0
- package/data/demo/.manuscript/CHARACTERS.md +90 -0
- package/data/demo/.manuscript/OUTLINE.md +46 -0
- package/data/demo/.manuscript/PLOT-GRAPH.md +75 -0
- package/data/demo/.manuscript/STATE.md +44 -0
- package/data/demo/.manuscript/STYLE-GUIDE.md +119 -0
- package/data/demo/.manuscript/THEMES.md +51 -0
- package/data/demo/.manuscript/WORK.md +51 -0
- package/data/demo/.manuscript/config.json +59 -0
- package/data/demo/.manuscript/drafts/body/1-the-letter-DRAFT.md +51 -0
- package/data/demo/.manuscript/drafts/body/2-the-workshop-DRAFT.md +51 -0
- package/data/demo/.manuscript/drafts/body/3-the-pier-DRAFT.md +45 -0
- package/data/demo/.manuscript/drafts/body/4-the-clock-DRAFT.md +59 -0
- package/data/demo/.manuscript/plans/5-the-reunion-PLAN.md +52 -0
- package/data/demo/.manuscript/reviews/2-the-workshop-REVIEW.md +61 -0
- package/data/export-templates/scriveno-academic.latex +184 -0
- package/data/export-templates/scriveno-acm.latex +67 -0
- package/data/export-templates/scriveno-apa7.latex +83 -0
- package/data/export-templates/scriveno-book.typst +175 -0
- package/data/export-templates/scriveno-chapbook.typst +121 -0
- package/data/export-templates/scriveno-elsevier.latex +76 -0
- package/data/export-templates/scriveno-epub.css +386 -0
- package/data/export-templates/scriveno-fixed-layout-epub.css +76 -0
- package/data/export-templates/scriveno-fixed-layout.opf +23 -0
- package/data/export-templates/scriveno-ieee.latex +77 -0
- package/data/export-templates/scriveno-lncs.latex +79 -0
- package/data/export-templates/scriveno-picturebook.typst +113 -0
- package/data/export-templates/scriveno-poetry-submission-styles.md +45 -0
- package/data/export-templates/scriveno-poetry-submission.docx +0 -0
- package/data/export-templates/scriveno-smashwords-styles.md +45 -0
- package/data/export-templates/scriveno-smashwords.docx +0 -0
- package/data/export-templates/scriveno-stageplay.typst +129 -0
- package/data/proof/creative-context/README.md +79 -0
- package/data/proof/voice-dna/GUIDED-SAMPLE.md +19 -0
- package/data/proof/voice-dna/README.md +45 -0
- package/data/proof/voice-dna/STYLE-GUIDE-EXCERPT.md +43 -0
- package/data/proof/voice-dna/UNGUIDED-SAMPLE.md +11 -0
- package/data/proof/watchmaker-flow/README.md +78 -0
- package/docs/architecture.md +425 -0
- package/docs/command-reference.md +2384 -0
- package/docs/configuration.md +228 -0
- package/docs/context-protocol.md +81 -0
- package/docs/contributing.md +430 -0
- package/docs/creative-context.md +158 -0
- package/docs/development.md +152 -0
- package/docs/drafter-quality.md +127 -0
- package/docs/getting-started.md +198 -0
- package/docs/history-protocol.md +96 -0
- package/docs/proof-artifacts.md +56 -0
- package/docs/publishing.md +296 -0
- package/docs/release-notes.md +457 -0
- package/docs/runtime-support.md +77 -0
- package/docs/sacred-texts.md +296 -0
- package/docs/shipped-assets.md +129 -0
- package/docs/testing.md +156 -0
- package/docs/translation.md +343 -0
- package/docs/voice-dna.md +297 -0
- package/docs/work-types.md +339 -0
- package/lib/architectural-profiles.js +134 -0
- package/package.json +54 -0
- package/templates/BRIEF.md +51 -0
- package/templates/CHARACTERS.md +64 -0
- package/templates/CONTEXT.md +56 -0
- package/templates/OUTLINE.md +36 -0
- package/templates/RECORD.md +68 -0
- package/templates/STATE.md +50 -0
- package/templates/STYLE-GUIDE.md +121 -0
- package/templates/THEMES.md +36 -0
- package/templates/WORK.md +67 -0
- package/templates/WORLD.md +62 -0
- package/templates/WRITING-RULES.md +156 -0
- package/templates/academic/ARGUMENT-MAP.md +40 -0
- package/templates/academic/CONCEPTS.md +34 -0
- package/templates/academic/CONTEXT.md +29 -0
- package/templates/academic/PROPOSAL.md +37 -0
- package/templates/academic/QUESTIONS.md +24 -0
- package/templates/config.json +72 -0
- package/templates/pitfalls/comic.md +54 -0
- package/templates/pitfalls/commentary.md +62 -0
- package/templates/pitfalls/memoir.md +48 -0
- package/templates/pitfalls/novel.md +53 -0
- package/templates/pitfalls/poetry_collection.md +63 -0
- package/templates/pitfalls/research_paper.md +66 -0
- package/templates/pitfalls/runbook.md +64 -0
- package/templates/pitfalls/screenplay.md +54 -0
- package/templates/platforms/README.md +16 -0
- package/templates/platforms/apple/manifest.yaml +20 -0
- package/templates/platforms/bn/manifest.yaml +20 -0
- package/templates/platforms/d2d/manifest.yaml +20 -0
- package/templates/platforms/google/manifest.yaml +20 -0
- package/templates/platforms/ingram/manifest.yaml +44 -0
- package/templates/platforms/kdp/manifest.yaml +42 -0
- package/templates/platforms/kobo/manifest.yaml +20 -0
- package/templates/platforms/smashwords/manifest.yaml +26 -0
- package/templates/sacred/COSMOLOGY.md +88 -0
- package/templates/sacred/DOCTRINES.md +45 -0
- package/templates/sacred/FIGURES.md +69 -0
- package/templates/sacred/FRAMEWORK.md +98 -0
- package/templates/sacred/LINEAGES.md +52 -0
- package/templates/sacred/README.md +20 -0
- package/templates/sacred/THEOLOGICAL-ARC.md +69 -0
- package/templates/sacred/catholic/manifest.yaml +93 -0
- package/templates/sacred/islamic-hafs/manifest.yaml +134 -0
- package/templates/sacred/islamic-warsh/manifest.yaml +134 -0
- package/templates/sacred/jewish/manifest.yaml +56 -0
- package/templates/sacred/orthodox/manifest.yaml +98 -0
- package/templates/sacred/pali/manifest.yaml +20 -0
- package/templates/sacred/protestant/manifest.yaml +86 -0
- package/templates/sacred/sanskrit/manifest.yaml +20 -0
- package/templates/sacred/tewahedo/manifest.yaml +106 -0
- package/templates/sacred/tibetan/manifest.yaml +20 -0
- package/templates/technical/AUDIENCE.md +26 -0
- package/templates/technical/DEPENDENCIES.md +19 -0
- package/templates/technical/DOC-BRIEF.md +45 -0
- package/templates/technical/PROCEDURES.md +37 -0
- package/templates/technical/REFERENCES.md +36 -0
- package/templates/technical/SYSTEM.md +25 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# Work Types Guide
|
|
2
|
+
|
|
3
|
+
Scriveno adapts itself to what you're writing. When you run `/scr:new-work` and tell Scriveno you're writing a novel, a screenplay, a runbook, a Quran commentary, or a research paper, it changes its vocabulary, commands, file names, and available features to match your tradition. A novel has chapters and scenes. A screenplay has acts and sequences. A runbook has procedures and steps. A Quranic text has surahs and ayahs. You never have to force your work into someone else's structure.
|
|
4
|
+
|
|
5
|
+
This guide covers all 50 work types Scriveno supports, organized into 9 groups.
|
|
6
|
+
|
|
7
|
+
## How Work Types Adapt Scriveno
|
|
8
|
+
|
|
9
|
+
When you set a work type (via `/scr:new-work --type <work_type>` or during onboarding), Scriveno adapts in four ways:
|
|
10
|
+
|
|
11
|
+
### 1. Hierarchy vocabulary
|
|
12
|
+
|
|
13
|
+
Every work type defines a three-level structural hierarchy: **top level**, **mid level**, and **atomic unit**. A novel's hierarchy is part > chapter > scene. A screenplay's is act > sequence > scene. A Torah project's is chumash > parashah > pasuk. Scriveno uses these terms everywhere -- in commands, outlines, progress reports, and file names.
|
|
14
|
+
|
|
15
|
+
### 2. Command terminology
|
|
16
|
+
|
|
17
|
+
Scriveno adapts the vocabulary around a command to match your domain. `/scr:draft` talks about drafting a surah for Quranic work, an act for screenplays, a section for research papers, and a procedure for runbooks. Some commands also get domain-specific labels in help and output when that base command is available for the current group -- for example, `voice-check` is presented as `register-check` for sacred work types, and `plot-graph` is presented as `procedure-map` for technical work. See the [Command Adaptations](#command-adaptations) section below.
|
|
18
|
+
|
|
19
|
+
### 3. File names
|
|
20
|
+
|
|
21
|
+
Context files rename per group. The default `CHARACTERS.md` becomes `FIGURES.md` for sacred work types, `CONCEPTS.md` for academic work, and `AUDIENCE.md` for technical writing. `PLOT-GRAPH.md` becomes `THEOLOGICAL-ARC.md` for sacred, `ARGUMENT-MAP.md` for academic, and `PROCEDURES.md` for technical work. See [File Adaptations](#file-adaptations) below.
|
|
22
|
+
|
|
23
|
+
### 4. Available commands
|
|
24
|
+
|
|
25
|
+
Not every command makes sense for every work type. Poetry collections don't need `/scr:subplot-map`. Academic papers don't need `/scr:dialogue-audit`. Runbooks don't need query-package exports. Scriveno hides irrelevant commands and shows only what applies to your work type. Sacred work types get 8 exclusive commands (concordance, cross-reference, genealogy, etc.) that don't appear for other groups.
|
|
26
|
+
|
|
27
|
+
## Work Type Groups
|
|
28
|
+
|
|
29
|
+
Scriveno organizes its 50 work_types into 9 groups. Each group shares command adaptations and file naming conventions.
|
|
30
|
+
|
|
31
|
+
### Prose
|
|
32
|
+
|
|
33
|
+
Traditional narrative and nonfiction forms. This is the largest group, covering everything from novels to essays.
|
|
34
|
+
|
|
35
|
+
**Members:** Novel, Novella, Short Story, Flash Fiction, Memoir, Creative Nonfiction, Biography, Essay, Essay Collection
|
|
36
|
+
|
|
37
|
+
Prose work types use the default command names and file names. Most Scriveno features are available to prose.
|
|
38
|
+
|
|
39
|
+
### Script
|
|
40
|
+
|
|
41
|
+
Performance-oriented writing where formatting and structure follow industry conventions.
|
|
42
|
+
|
|
43
|
+
**Members:** Screenplay, Stage Play, TV Pilot, TV Series Bible, Audio Drama / Podcast Script, Libretto / Musical
|
|
44
|
+
|
|
45
|
+
Script work types use act-based hierarchies. Screenplays and TV scripts can export to Fountain and FDX formats.
|
|
46
|
+
|
|
47
|
+
### Academic
|
|
48
|
+
|
|
49
|
+
Research and scholarly writing with emphasis on argumentation, citation, and peer review.
|
|
50
|
+
|
|
51
|
+
**Members:** Research Paper, Thesis / Dissertation, Journal Article, White Paper, Literature Review, Monograph
|
|
52
|
+
|
|
53
|
+
Academic work types relabel selected always-available review commands in help and output: `/scr:editor-review` appears as `peer-review`, `/scr:beta-reader` appears as `reviewer-simulation`, and `/scr:sensitivity-review` appears as `ethics-review`. Context files also adapt -- `CHARACTERS.md` becomes `CONCEPTS.md`, `THEMES.md` becomes `QUESTIONS.md`.
|
|
54
|
+
|
|
55
|
+
### Technical Writing
|
|
56
|
+
|
|
57
|
+
Task-oriented documentation and system explanation work where accuracy, audience fit, and procedure clarity matter more than narrative structure.
|
|
58
|
+
|
|
59
|
+
**Members:** Technical Guide / User Guide, Runbook / SOP, API or CLI Reference, Design Spec / Architecture Doc
|
|
60
|
+
|
|
61
|
+
Technical-writing work types keep the core discuss -> plan -> draft flow, but relabel context and review surfaces to match docs work. `WORLD.md` becomes `SYSTEM.md`, `PLOT-GRAPH.md` becomes `PROCEDURES.md`, `/scr:build-world` is presented as `map-system`, and `/scr:editor-review` is presented as `technical-review`.
|
|
62
|
+
|
|
63
|
+
### Visual
|
|
64
|
+
|
|
65
|
+
Works where text and image are co-equal. Layout, illustration, and visual pacing matter as much as prose.
|
|
66
|
+
|
|
67
|
+
**Members:** Comic / Graphic Novel, Graphic Novel, Children's Book, Picture Book
|
|
68
|
+
|
|
69
|
+
Visual work types unlock illustration-specific commands like `/scr:spread-layout` and `/scr:storyboard`. Comics and graphic novels additionally use `/scr:panel-layout`, which stays hidden for non-comic visual projects.
|
|
70
|
+
|
|
71
|
+
### Poetry
|
|
72
|
+
|
|
73
|
+
Verse-based forms where line, rhythm, and musicality drive structure.
|
|
74
|
+
|
|
75
|
+
**Members:** Poetry Collection, Single Poem, Lyric / Song
|
|
76
|
+
|
|
77
|
+
Poetry work types use stanza/line hierarchies. Many structural commands (plot-graph, subplot-map, timeline) are hidden since they don't apply to verse.
|
|
78
|
+
|
|
79
|
+
### Interactive
|
|
80
|
+
|
|
81
|
+
Branching narrative forms for games and interactive fiction.
|
|
82
|
+
|
|
83
|
+
**Members:** Interactive Fiction, Game Narrative
|
|
84
|
+
|
|
85
|
+
Interactive work types use node/quest/dialogue_tree hierarchies to handle branching story paths.
|
|
86
|
+
|
|
87
|
+
### Speech and Song
|
|
88
|
+
|
|
89
|
+
Performed spoken-word forms.
|
|
90
|
+
|
|
91
|
+
**Members:** Speech
|
|
92
|
+
|
|
93
|
+
Speech uses section/beat hierarchy. Most structural and illustration commands are hidden.
|
|
94
|
+
|
|
95
|
+
### Sacred and Historical
|
|
96
|
+
|
|
97
|
+
Sacred texts, historical chronicles, and religious literature. This is the most heavily adapted group, with exclusive commands, voice registers, and tradition-specific configurations.
|
|
98
|
+
|
|
99
|
+
**Members:** Scripture (Biblical), Scripture (Quranic), Scripture (Torah), Scripture (Vedic), Scripture (Buddhist), Scripture (Generic), Commentary / Exegesis, Devotional, Liturgical Text, Historical Chronicle, Historical Account, Mythological Collection, Religious Epic, Sermon / Homily, Homiletic Collection
|
|
100
|
+
|
|
101
|
+
Sacred work types relabel selected review commands (`/scr:editor-review` becomes `scholarly-review`, `/scr:voice-check` becomes `register-check`), unlock 8 exclusive commands (`/scr:sacred:concordance`, `/scr:sacred:cross-reference`, `/scr:sacred:genealogy`, `/scr:sacred:chronology`, `/scr:sacred:annotation-layer`, `/scr:sacred:verse-numbering`, `/scr:sacred:source-tracking`, `/scr:sacred:doctrinal-check`), and support 10 voice registers in STYLE-GUIDE.md.
|
|
102
|
+
|
|
103
|
+
Sacred projects also use a shipped tradition profile slug in the top-level `tradition` config key. The current shipped slugs are `catholic`, `orthodox`, `tewahedo`, `protestant`, `jewish`, `islamic-hafs`, `islamic-warsh`, `pali`, `tibetan`, and `sanskrit`.
|
|
104
|
+
|
|
105
|
+
## Word Count and Page Ranges
|
|
106
|
+
|
|
107
|
+
Every work type includes industry-standard word count and page range guidance. These are guides, not gates -- a literary novel can exceed 100,000 words. But the system has informed defaults instead of writing blind.
|
|
108
|
+
|
|
109
|
+
Ranges flow into three places:
|
|
110
|
+
- **`/scr:outline`** -- plans the right number of units at the right length
|
|
111
|
+
- **`/scr:manuscript-stats`** -- shows progress against word and page targets
|
|
112
|
+
- **`/scr:draft`** -- drafter knows target length per unit for natural pacing
|
|
113
|
+
|
|
114
|
+
Page counts use ~250 words/page (standard manuscript format).
|
|
115
|
+
|
|
116
|
+
### Prose
|
|
117
|
+
|
|
118
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
119
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
120
|
+
| Novel | 70,000-100,000 | 280-400 | 20-35 chapters | 2,500-5,000 | 10-20 |
|
|
121
|
+
| Novella | 17,500-40,000 | 70-160 | 5-15 chapters | 2,000-4,000 | 8-16 |
|
|
122
|
+
| Short Story | 1,000-7,500 | 4-30 | 1-5 sections | 500-2,500 | 2-10 |
|
|
123
|
+
| Flash Fiction | 100-1,000 | 1-4 | 1-3 beats | 100-500 | 1-2 |
|
|
124
|
+
| Memoir | 60,000-90,000 | 240-360 | 15-30 chapters | 2,500-5,000 | 10-20 |
|
|
125
|
+
| Creative Nonfiction | 50,000-90,000 | 200-360 | 12-25 chapters | 2,500-5,000 | 10-20 |
|
|
126
|
+
| Biography | 70,000-120,000 | 280-480 | 15-35 chapters | 3,000-5,000 | 12-20 |
|
|
127
|
+
| Essay | 1,500-10,000 | 6-40 | 3-8 sections | 500-2,000 | 2-8 |
|
|
128
|
+
| Essay Collection | 40,000-80,000 | 160-320 | 10-25 essays | 2,000-6,000 | 8-24 |
|
|
129
|
+
|
|
130
|
+
### Script
|
|
131
|
+
|
|
132
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
133
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
134
|
+
| Screenplay | 7,500-12,500 | 90-120 | 3-5 acts | 2,000-4,000 | 25-35 |
|
|
135
|
+
| Stage Play | 10,000-15,000 | 60-120 | 1-5 acts | 3,000-7,000 | 15-40 |
|
|
136
|
+
| TV Pilot | 5,000-10,000 | 30-60 | 4-6 acts | 1,000-2,500 | 6-12 |
|
|
137
|
+
| TV Series Bible | 15,000-40,000 | 60-160 | 6-13 episodes | 1,500-3,000 | 6-12 |
|
|
138
|
+
| Audio Drama | 3,000-8,000 | 12-32 | 1-10 episodes | 2,000-5,000 | 8-20 |
|
|
139
|
+
| Libretto | 5,000-12,000 | 20-48 | 2-3 acts | 2,000-5,000 | 8-20 |
|
|
140
|
+
|
|
141
|
+
### Academic
|
|
142
|
+
|
|
143
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
144
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
145
|
+
| Research Paper | 5,000-15,000 | 20-60 | 4-8 sections | 1,000-3,000 | 4-12 |
|
|
146
|
+
| Thesis | 40,000-100,000 | 160-400 | 5-10 chapters | 5,000-15,000 | 20-60 |
|
|
147
|
+
| Journal Article | 3,000-8,000 | 12-32 | 4-7 sections | 500-2,000 | 2-8 |
|
|
148
|
+
| White Paper | 3,000-10,000 | 12-40 | 4-8 sections | 500-2,000 | 2-8 |
|
|
149
|
+
| Literature Review | 5,000-15,000 | 20-60 | 4-8 sections | 1,000-3,000 | 4-12 |
|
|
150
|
+
| Monograph | 50,000-100,000 | 200-400 | 8-15 chapters | 4,000-8,000 | 16-32 |
|
|
151
|
+
|
|
152
|
+
### Technical Writing
|
|
153
|
+
|
|
154
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
155
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
156
|
+
| Technical Guide | 3,000-25,000 | 12-100 | 4-12 sections | 500-2,500 | 2-10 |
|
|
157
|
+
| Runbook | 1,500-12,000 | 6-48 | 3-10 procedures | 300-1,500 | 1-6 |
|
|
158
|
+
| API / CLI Reference | 2,000-30,000 | 8-120 | 5-40 resources | 150-1,000 | 1-4 |
|
|
159
|
+
| Design Spec | 2,000-15,000 | 8-60 | 4-12 sections | 500-2,000 | 2-8 |
|
|
160
|
+
|
|
161
|
+
### Visual
|
|
162
|
+
|
|
163
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
164
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
165
|
+
| Comic | 2,000-5,000 | 22-32 | 1-6 issues | 500-1,500 | 22-32 |
|
|
166
|
+
| Graphic Novel | 5,000-20,000 | 80-200 | 5-12 chapters | 500-2,500 | 10-25 |
|
|
167
|
+
| Children's Book | 500-5,000 | 24-48 | 12-24 spreads | 20-200 | 2 |
|
|
168
|
+
| Picture Book | 200-1,000 | 24-40 | 12-20 spreads | 10-60 | 2 |
|
|
169
|
+
|
|
170
|
+
### Poetry
|
|
171
|
+
|
|
172
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
173
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
174
|
+
| Poetry Collection | 5,000-15,000 | 48-120 | 3-8 sections | 1,000-3,000 | 8-20 |
|
|
175
|
+
| Single Poem | 20-2,000 | 1-8 | 1-20 stanzas | 10-200 | 1 |
|
|
176
|
+
| Song Lyric | 100-600 | 1-3 | 3-6 sections | 20-150 | 1 |
|
|
177
|
+
|
|
178
|
+
### Interactive
|
|
179
|
+
|
|
180
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
181
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
182
|
+
| Interactive Fiction | 20,000-100,000 | 80-400 | 20-100 nodes | 500-2,000 | 2-8 |
|
|
183
|
+
| Game Narrative | 30,000-150,000 | 120-600 | 10-40 quests | 2,000-5,000 | 8-20 |
|
|
184
|
+
|
|
185
|
+
### Speech
|
|
186
|
+
|
|
187
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
188
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
189
|
+
| Speech | 500-5,000 | 2-20 | 3-6 sections | 150-1,000 | 1-4 |
|
|
190
|
+
|
|
191
|
+
### Sacred & Historical
|
|
192
|
+
|
|
193
|
+
Sacred scriptures (Biblical, Quranic, Torah, Vedic, Buddhist, Generic) have no meaningful total word/page ranges because scope varies enormously (a single surah vs. the full Quran). They include per-unit ranges only.
|
|
194
|
+
|
|
195
|
+
| Work Type | Words | Pages | Units | Words/Unit | Pages/Unit |
|
|
196
|
+
|-----------|-------|-------|-------|------------|------------|
|
|
197
|
+
| Commentary | 20,000-150,000 | 80-600 | 5-30 sections | 2,000-8,000 | 8-32 |
|
|
198
|
+
| Devotional | 15,000-50,000 | 60-200 | 30-366 entries | 200-800 | 1-3 |
|
|
199
|
+
| Liturgical Text | 5,000-30,000 | 20-120 | 5-20 sections | 500-3,000 | 2-12 |
|
|
200
|
+
| Historical Chronicle | 50,000-150,000 | 200-600 | 10-40 chapters | 3,000-6,000 | 12-24 |
|
|
201
|
+
| Historical Account | 40,000-100,000 | 160-400 | 10-30 chapters | 3,000-5,000 | 12-20 |
|
|
202
|
+
| Mythological Collection | 30,000-100,000 | 120-400 | 10-50 tales | 1,500-5,000 | 6-20 |
|
|
203
|
+
| Religious Epic | 50,000-300,000 | 200-1,200 | 10-100 cantos | 2,000-8,000 | 8-32 |
|
|
204
|
+
| Sermon | 1,500-4,000 | 6-16 | 3-5 movements | 400-1,000 | 2-4 |
|
|
205
|
+
| Homiletic Collection | 50,000-150,000 | 200-600 | 30-60 sermons | 1,500-4,000 | 6-16 |
|
|
206
|
+
|
|
207
|
+
## Complete Work Type Table
|
|
208
|
+
|
|
209
|
+
Every work type Scriveno supports, with its group and structural hierarchy. Data sourced from `data/CONSTRAINTS.json`.
|
|
210
|
+
|
|
211
|
+
| Work Type | Group | Top Level | Mid Level | Atomic Unit | Command Unit |
|
|
212
|
+
|-----------|-------|-----------|-----------|-------------|--------------|
|
|
213
|
+
| novel | Prose | part | chapter | scene | chapter |
|
|
214
|
+
| novella | Prose | -- | chapter | scene | chapter |
|
|
215
|
+
| short_story | Prose | -- | section | beat | section |
|
|
216
|
+
| flash_fiction | Prose | -- | -- | beat | beat |
|
|
217
|
+
| memoir | Prose | part | chapter | vignette | chapter |
|
|
218
|
+
| creative_nonfiction | Prose | part | chapter | scene | chapter |
|
|
219
|
+
| biography | Prose | part | chapter | scene | chapter |
|
|
220
|
+
| essay | Prose | -- | section | paragraph_block | section |
|
|
221
|
+
| essay_collection | Prose | part | -- | essay | essay |
|
|
222
|
+
| screenplay | Script | act | sequence | scene | act |
|
|
223
|
+
| stage_play | Script | act | scene | beat | act |
|
|
224
|
+
| tv_pilot | Script | act | scene | beat | act |
|
|
225
|
+
| tv_series_bible | Script | season | episode | scene | episode |
|
|
226
|
+
| audio_drama | Script | season | episode | scene | episode |
|
|
227
|
+
| libretto | Script | act | scene | number | act |
|
|
228
|
+
| research_paper | Academic | -- | section | subsection | section |
|
|
229
|
+
| thesis | Academic | part | chapter | section | chapter |
|
|
230
|
+
| journal_article | Academic | -- | section | subsection | section |
|
|
231
|
+
| white_paper | Academic | -- | section | subsection | section |
|
|
232
|
+
| literature_review | Academic | -- | section | subsection | section |
|
|
233
|
+
| monograph | Academic | part | chapter | section | chapter |
|
|
234
|
+
| technical_guide | Technical Writing | -- | section | procedure | section |
|
|
235
|
+
| runbook | Technical Writing | -- | procedure | step | procedure |
|
|
236
|
+
| api_reference | Technical Writing | -- | resource | endpoint | resource |
|
|
237
|
+
| design_spec | Technical Writing | system | section | decision | section |
|
|
238
|
+
| comic | Visual | volume | issue | panel | issue |
|
|
239
|
+
| graphic_novel | Visual | volume | chapter | panel | chapter |
|
|
240
|
+
| childrens_book | Visual | -- | spread | page | spread |
|
|
241
|
+
| picture_book | Visual | -- | spread | illustration_text | spread |
|
|
242
|
+
| poetry_collection | Poetry | section | -- | poem | section |
|
|
243
|
+
| single_poem | Poetry | -- | stanza | line | stanza |
|
|
244
|
+
| song_lyric | Poetry | -- | section | line | section |
|
|
245
|
+
| interactive_fiction | Interactive | -- | node | choice_branch | node |
|
|
246
|
+
| game_narrative | Interactive | act | quest | dialogue_tree | quest |
|
|
247
|
+
| speech | Speech & Song | -- | section | beat | section |
|
|
248
|
+
| scripture_biblical | Sacred & Historical | testament | book | verse | book |
|
|
249
|
+
| scripture_quranic | Sacred & Historical | -- | surah | ayah | surah |
|
|
250
|
+
| scripture_torah | Sacred & Historical | chumash | parashah | pasuk | parashah |
|
|
251
|
+
| scripture_vedic | Sacred & Historical | veda | mandala | sukta | mandala |
|
|
252
|
+
| scripture_buddhist | Sacred & Historical | pitaka | nikaya | sutta | sutta |
|
|
253
|
+
| scripture_generic | Sacred & Historical | testament | book | verse | book |
|
|
254
|
+
| commentary | Sacred & Historical | -- | section | annotation_block | section |
|
|
255
|
+
| devotional | Sacred & Historical | -- | theme | entry | entry |
|
|
256
|
+
| liturgical | Sacred & Historical | rite | section | rubric | section |
|
|
257
|
+
| historical_chronicle | Sacred & Historical | era | chapter | event | chapter |
|
|
258
|
+
| historical_account | Sacred & Historical | part | chapter | scene | chapter |
|
|
259
|
+
| mythological_collection | Sacred & Historical | cycle | -- | tale | tale |
|
|
260
|
+
| religious_epic | Sacred & Historical | book | canto | verse | canto |
|
|
261
|
+
| sermon | Sacred & Historical | -- | movement | beat | sermon |
|
|
262
|
+
| homiletic_collection | Sacred & Historical | liturgical_year | -- | sermon | sermon |
|
|
263
|
+
|
|
264
|
+
## File Adaptations
|
|
265
|
+
|
|
266
|
+
Context files rename based on your work type group. This keeps the vocabulary natural -- a sacred text project has FIGURES.md instead of CHARACTERS.md, because you're writing about historical and religious figures, not fictional characters.
|
|
267
|
+
|
|
268
|
+
| Default File | Academic | Technical Writing | Sacred & Historical |
|
|
269
|
+
|-------------|----------|-------------------|-------------------|
|
|
270
|
+
| BRIEF.md | PROPOSAL.md | DOC-BRIEF.md | FRAMEWORK.md |
|
|
271
|
+
| CHARACTERS.md | CONCEPTS.md | AUDIENCE.md | FIGURES.md |
|
|
272
|
+
| RELATIONSHIPS.md | RELATIONSHIPS.md | DEPENDENCIES.md | LINEAGES.md |
|
|
273
|
+
| WORLD.md | CONTEXT.md | SYSTEM.md | COSMOLOGY.md |
|
|
274
|
+
| PLOT-GRAPH.md | ARGUMENT-MAP.md | PROCEDURES.md | THEOLOGICAL-ARC.md |
|
|
275
|
+
| THEMES.md | QUESTIONS.md | REFERENCES.md | DOCTRINES.md |
|
|
276
|
+
|
|
277
|
+
All other groups (Prose, Script, Visual, Poetry, Interactive, Speech & Song) use the default file names.
|
|
278
|
+
|
|
279
|
+
## Command Adaptations
|
|
280
|
+
|
|
281
|
+
Certain commands get adapted labels for academic, technical, and sacred work type groups. The canonical runnable command remains the file-backed base command unless a runtime explicitly installs an alias, and an adapted label only surfaces when the base command is actually available for that group.
|
|
282
|
+
|
|
283
|
+
### Academic Adaptations
|
|
284
|
+
|
|
285
|
+
| Base Command | Adapted Label | Focus |
|
|
286
|
+
|-----------------|--------------|-------|
|
|
287
|
+
| editor-review | peer-review | Scholarly critique and reviewer framing |
|
|
288
|
+
| beta-reader | reviewer-simulation | Methodology critique and argument-strength review |
|
|
289
|
+
| sensitivity-review | ethics-review | Ethics, audience, and institutional review lens |
|
|
290
|
+
|
|
291
|
+
### Technical Writing Adaptations
|
|
292
|
+
|
|
293
|
+
| Base Command | Adapted Label | Description |
|
|
294
|
+
|-----------------|--------------|-------------|
|
|
295
|
+
| build-world | map-system | System boundaries, environments, and operating context |
|
|
296
|
+
| plot-graph | procedure-map | Procedure flow, escalation path, and task sequence |
|
|
297
|
+
| editor-review | technical-review | Accuracy, clarity, and audience-fit review |
|
|
298
|
+
| beta-reader | usability-review | Reader/operator task-completion review |
|
|
299
|
+
| continuity-check | consistency-check | Terminology, procedure, and version consistency |
|
|
300
|
+
|
|
301
|
+
### Sacred Adaptations
|
|
302
|
+
|
|
303
|
+
| Base Command | Adapted Label | Description |
|
|
304
|
+
|-----------------|--------------|-------------|
|
|
305
|
+
| voice-check | register-check | Voice register consistency |
|
|
306
|
+
| editor-review | scholarly-review | Academic review |
|
|
307
|
+
| beta-reader | theological-review | Doctrinal/pastoral review |
|
|
308
|
+
| sensitivity-review | interfaith-review | Sensitivity across traditions |
|
|
309
|
+
|
|
310
|
+
Sacred-specific workflows like chronology, doctrinal review, and verse numbering are available through the dedicated `/scr:sacred:*` command family rather than by relabeling hidden base commands.
|
|
311
|
+
|
|
312
|
+
## Choosing Your Work Type
|
|
313
|
+
|
|
314
|
+
When you run `/scr:new-work`, Scriveno asks what you're writing and picks the best work type from your answer. You can also set it explicitly:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
/scr:new-work --type screenplay
|
|
318
|
+
/scr:new-work --type scripture_quranic
|
|
319
|
+
/scr:new-work --type research_paper
|
|
320
|
+
/scr:new-work --type runbook
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
If you're not sure which type fits:
|
|
324
|
+
|
|
325
|
+
- **Writing fiction?** Start with `novel`, `novella`, `short_story`, or `flash_fiction` depending on length.
|
|
326
|
+
- **Writing for performance?** Use `screenplay`, `stage_play`, `tv_pilot`, or `audio_drama`.
|
|
327
|
+
- **Writing scholarship?** Use `research_paper`, `thesis`, or `journal_article`.
|
|
328
|
+
- **Writing technical docs?** Use `technical_guide`, `runbook`, `api_reference`, or `design_spec` depending on whether you're teaching, operating, documenting, or deciding.
|
|
329
|
+
- **Writing sacred or religious text?** Pick the tradition-specific type (e.g., `scripture_biblical`, `scripture_quranic`) or use `scripture_generic`.
|
|
330
|
+
- **Writing poetry?** Use `poetry_collection` for a book of poems, `single_poem` for one poem, or `song_lyric` for lyrics.
|
|
331
|
+
- **Writing for children?** Use `childrens_book` or `picture_book` -- these unlock illustration and spread layout tools.
|
|
332
|
+
|
|
333
|
+
Your work type is stored in `.manuscript/config.json` and can be changed later by editing the file directly or starting a new project with `/scr:new-work`.
|
|
334
|
+
|
|
335
|
+
## See Also
|
|
336
|
+
|
|
337
|
+
- [Getting Started](getting-started.md) -- Install Scriveno and write your first draft
|
|
338
|
+
- [Command Reference](command-reference.md) -- Full list of all 112 commands with usage and examples
|
|
339
|
+
- [Voice DNA Guide](voice-dna.md) -- How Scriveno profiles and preserves your writing voice
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// lib/architectural-profiles.js
|
|
2
|
+
// Phase 29 (v1.7) -- runtime validator + default-inference for the tradition/platform project-spec keys.
|
|
3
|
+
// Zero dependencies. Uses only Node built-ins (fs, path).
|
|
4
|
+
//
|
|
5
|
+
// Reads authoritative seed list + defaults from data/CONSTRAINTS.json.
|
|
6
|
+
// Reads accepted-at-runtime list from templates/sacred/<slug>/ and templates/platforms/<slug>/
|
|
7
|
+
// directory listings -- a contributor dropping a new subdirectory with a manifest.yaml
|
|
8
|
+
// extends the accepted set with no edit to this file or to CONSTRAINTS.json.
|
|
9
|
+
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const path = require('path');
|
|
12
|
+
|
|
13
|
+
const ROOT = path.join(__dirname, '..');
|
|
14
|
+
const SACRED_DIR = path.join(ROOT, 'templates', 'sacred');
|
|
15
|
+
const PLATFORMS_DIR = path.join(ROOT, 'templates', 'platforms');
|
|
16
|
+
const PITFALLS_DIR = path.join(ROOT, 'templates', 'pitfalls');
|
|
17
|
+
const CONSTRAINTS_PATH = path.join(ROOT, 'data', 'CONSTRAINTS.json');
|
|
18
|
+
const SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
19
|
+
// Work-type slugs (used in pitfall pack filenames) allow underscores per CONSTRAINTS.json conventions
|
|
20
|
+
// (e.g., research_paper, poetry_collection). Keep this distinct from SLUG_PATTERN so existing
|
|
21
|
+
// sacred/platform validation is not relaxed.
|
|
22
|
+
const PITFALL_FILE_PATTERN = /^([a-z][a-z0-9_-]*)\.md$/;
|
|
23
|
+
|
|
24
|
+
function loadConstraints() {
|
|
25
|
+
// Re-read each call so tests that mutate a temp fixture see the update.
|
|
26
|
+
// Cheap -- file is ~45KB and hot on disk. If a perf issue ever surfaces, cache here.
|
|
27
|
+
const raw = fs.readFileSync(CONSTRAINTS_PATH, 'utf8');
|
|
28
|
+
return JSON.parse(raw);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function listProfiles(dir) {
|
|
32
|
+
// Returns slugs of subdirectories of `dir` that contain a manifest.yaml.
|
|
33
|
+
// Filters by SLUG_PATTERN to reject junk names (spaces, dots, etc.).
|
|
34
|
+
if (!fs.existsSync(dir)) return [];
|
|
35
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
36
|
+
const out = [];
|
|
37
|
+
for (const e of entries) {
|
|
38
|
+
if (!e.isDirectory()) continue;
|
|
39
|
+
if (!SLUG_PATTERN.test(e.name)) continue;
|
|
40
|
+
const manifest = path.join(dir, e.name, 'manifest.yaml');
|
|
41
|
+
if (fs.existsSync(manifest)) out.push(e.name);
|
|
42
|
+
}
|
|
43
|
+
return out.sort();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function listTraditions() {
|
|
47
|
+
return listProfiles(SACRED_DIR);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function listPlatforms() {
|
|
51
|
+
return listProfiles(PLATFORMS_DIR);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function validateTradition(value) {
|
|
55
|
+
const valid = listTraditions();
|
|
56
|
+
if (valid.includes(value)) return { valid: true };
|
|
57
|
+
return {
|
|
58
|
+
valid: false,
|
|
59
|
+
error: `Unknown tradition '${value}'. Valid options: ${valid.join(', ')}`
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function validatePlatform(value) {
|
|
64
|
+
const valid = listPlatforms();
|
|
65
|
+
if (valid.includes(value)) return { valid: true };
|
|
66
|
+
return {
|
|
67
|
+
valid: false,
|
|
68
|
+
error: `Unknown platform '${value}'. Valid options: ${valid.join(', ')}`
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function inferTradition(workType) {
|
|
73
|
+
try {
|
|
74
|
+
const c = loadConstraints();
|
|
75
|
+
const m = c.architectural_profiles && c.architectural_profiles.defaults_by_work_type && c.architectural_profiles.defaults_by_work_type.tradition;
|
|
76
|
+
if (!m) return null;
|
|
77
|
+
const v = m[workType];
|
|
78
|
+
return v == null ? null : v;
|
|
79
|
+
} catch (_err) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function inferPlatform(workType) {
|
|
85
|
+
try {
|
|
86
|
+
const c = loadConstraints();
|
|
87
|
+
const m = c.architectural_profiles && c.architectural_profiles.defaults_by_work_type && c.architectural_profiles.defaults_by_work_type.platform;
|
|
88
|
+
if (!m) return null;
|
|
89
|
+
const v = m[workType];
|
|
90
|
+
return v == null ? null : v;
|
|
91
|
+
} catch (_err) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function listPitfallPacks() {
|
|
97
|
+
// Returns sorted slugs of templates/pitfalls/<work_type>.md files.
|
|
98
|
+
// A contributor dropping a new <work_type>.md extends the accepted set with no
|
|
99
|
+
// edit to this file or to CONSTRAINTS.json.
|
|
100
|
+
if (!fs.existsSync(PITFALLS_DIR)) return [];
|
|
101
|
+
const entries = fs.readdirSync(PITFALLS_DIR, { withFileTypes: true });
|
|
102
|
+
const out = [];
|
|
103
|
+
for (const e of entries) {
|
|
104
|
+
if (!e.isFile()) continue;
|
|
105
|
+
const m = PITFALL_FILE_PATTERN.exec(e.name);
|
|
106
|
+
if (!m) continue;
|
|
107
|
+
out.push(m[1]);
|
|
108
|
+
}
|
|
109
|
+
return out.sort();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function getPitfallPackPath(workType) {
|
|
113
|
+
// Returns the absolute path to the installed pitfall pack for a given work_type,
|
|
114
|
+
// or null if no pack exists. Callers should fall back gracefully when null.
|
|
115
|
+
if (typeof workType !== 'string' || !PITFALL_FILE_PATTERN.test(`${workType}.md`)) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
const candidate = path.join(PITFALLS_DIR, `${workType}.md`);
|
|
119
|
+
return fs.existsSync(candidate) ? candidate : null;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
module.exports = {
|
|
123
|
+
listTraditions,
|
|
124
|
+
listPlatforms,
|
|
125
|
+
validateTradition,
|
|
126
|
+
validatePlatform,
|
|
127
|
+
inferTradition,
|
|
128
|
+
inferPlatform,
|
|
129
|
+
listPitfallPacks,
|
|
130
|
+
getPitfallPackPath,
|
|
131
|
+
// Private helpers exposed for tests:
|
|
132
|
+
_paths: { SACRED_DIR, PLATFORMS_DIR, PITFALLS_DIR, CONSTRAINTS_PATH },
|
|
133
|
+
_loadConstraints: loadConstraints
|
|
134
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "scriveno",
|
|
3
|
+
"version": "2.0.5",
|
|
4
|
+
"description": "Spec-driven creative writing, publishing, and translation pipeline for AI coding agents. From blank page to published book.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"scriveno": "bin/install.js"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"start": "node bin/install.js",
|
|
10
|
+
"test": "node --test test/*.test.js",
|
|
11
|
+
"pack:check": "npm pack --dry-run",
|
|
12
|
+
"release:check": "npm test && npm run pack:check",
|
|
13
|
+
"prepublishOnly": "npm run release:check"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"writing",
|
|
20
|
+
"creative-writing",
|
|
21
|
+
"ai",
|
|
22
|
+
"claude",
|
|
23
|
+
"claude-code",
|
|
24
|
+
"novel",
|
|
25
|
+
"screenplay",
|
|
26
|
+
"publishing",
|
|
27
|
+
"kdp",
|
|
28
|
+
"translation"
|
|
29
|
+
],
|
|
30
|
+
"author": "Scriveno contributors",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/aihxp/scriveno.git"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/aihxp/scriveno#readme",
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/aihxp/scriveno/issues"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=20.0.0"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"bin/",
|
|
45
|
+
"lib/",
|
|
46
|
+
"data/",
|
|
47
|
+
"commands/",
|
|
48
|
+
"agents/",
|
|
49
|
+
"templates/",
|
|
50
|
+
"docs/",
|
|
51
|
+
"README.md",
|
|
52
|
+
"LICENSE"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
creative_pillar: work
|
|
3
|
+
always_load_for: [discuss, plan]
|
|
4
|
+
authority: project
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Creative brief
|
|
8
|
+
|
|
9
|
+
## Vision
|
|
10
|
+
|
|
11
|
+
{{VISION}}
|
|
12
|
+
|
|
13
|
+
## Why this, why now
|
|
14
|
+
|
|
15
|
+
{{RATIONALE}}
|
|
16
|
+
|
|
17
|
+
## Intended reader
|
|
18
|
+
|
|
19
|
+
{{READER}}
|
|
20
|
+
|
|
21
|
+
## Reader journey
|
|
22
|
+
|
|
23
|
+
**Before reading:** {{READER_BEFORE}}
|
|
24
|
+
**After reading:** {{READER_AFTER}}
|
|
25
|
+
|
|
26
|
+
## Subject movement
|
|
27
|
+
|
|
28
|
+
**What the reader is trying to understand or do:** {{READER_PROBLEM}}
|
|
29
|
+
**Main pressure:** {{MAIN_PRESSURE}} (confusion, risk, counterclaim, grief, uncertainty, complexity, practical failure)
|
|
30
|
+
**Important interaction:** {{MAIN_INTERACTION}} (idea against idea, step against failure mode, doctrine against lived practice, image against meaning)
|
|
31
|
+
**What should change by the end:** {{READER_CHANGE}}
|
|
32
|
+
|
|
33
|
+
## Emotional goals
|
|
34
|
+
|
|
35
|
+
{{EMOTIONAL_GOALS}}
|
|
36
|
+
|
|
37
|
+
## Key craft choices
|
|
38
|
+
|
|
39
|
+
{{CRAFT_CHOICES}}
|
|
40
|
+
|
|
41
|
+
## Constraints
|
|
42
|
+
|
|
43
|
+
{{CONSTRAINTS}}
|
|
44
|
+
|
|
45
|
+
## Success criteria
|
|
46
|
+
|
|
47
|
+
{{SUCCESS}}
|
|
48
|
+
|
|
49
|
+
## Open questions
|
|
50
|
+
|
|
51
|
+
{{OPEN_QUESTIONS}}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
creative_pillar: cast
|
|
3
|
+
always_load_for: [discuss, plan, draft, editor-review, continuity-check]
|
|
4
|
+
authority: project
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Characters
|
|
8
|
+
|
|
9
|
+
*One entry per character. Each character gets a voice anchor that drafter agents use for dialogue consistency.*
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## {{CHARACTER_NAME}}
|
|
14
|
+
|
|
15
|
+
**Role:** {{ROLE}}
|
|
16
|
+
**Age:** {{AGE}}
|
|
17
|
+
**Physical:** {{PHYSICAL}}
|
|
18
|
+
|
|
19
|
+
### Want and need
|
|
20
|
+
- **Wants (conscious):** {{WANT}}
|
|
21
|
+
- **Needs (unconscious):** {{NEED}}
|
|
22
|
+
- **Internal lie:** {{LIE}}
|
|
23
|
+
- **Truth they must learn:** {{TRUTH}}
|
|
24
|
+
|
|
25
|
+
### Arc
|
|
26
|
+
- **Starting state:** {{START_STATE}}
|
|
27
|
+
- **Turning points:** {{TURNING_POINTS}}
|
|
28
|
+
- **Ending state:** {{END_STATE}}
|
|
29
|
+
|
|
30
|
+
### Voice anchor
|
|
31
|
+
*5-line dialogue sample showing how this character speaks. Drafter agents load this when drafting scenes with this character.*
|
|
32
|
+
|
|
33
|
+
{{VOICE_SAMPLE}}
|
|
34
|
+
|
|
35
|
+
### Speech patterns
|
|
36
|
+
- **Register:** {{CHAR_REGISTER}}
|
|
37
|
+
- **Verbal tics:** {{TICS}}
|
|
38
|
+
- **Vocabulary:** {{CHAR_VOCAB}}
|
|
39
|
+
- **Sentence length:** {{CHAR_SENTENCES}}
|
|
40
|
+
- **Avoids saying:** {{AVOIDS}}
|
|
41
|
+
|
|
42
|
+
### Persona under pressure
|
|
43
|
+
- **When afraid:** {{AFRAID_BEHAVIOR}}
|
|
44
|
+
- **When angry:** {{ANGER_BEHAVIOR}}
|
|
45
|
+
- **When lying or avoiding truth:** {{LYING_BEHAVIOR}}
|
|
46
|
+
- **When vulnerable:** {{VULNERABLE_BEHAVIOR}}
|
|
47
|
+
- **Physical tells:** {{PHYSICAL_TELLS}}
|
|
48
|
+
|
|
49
|
+
### Relationships
|
|
50
|
+
{{RELATIONSHIPS_SUMMARY}}
|
|
51
|
+
|
|
52
|
+
### Relationship-specific interactions
|
|
53
|
+
For each important relationship, note how this character changes with that person.
|
|
54
|
+
|
|
55
|
+
- **With {{OTHER_CHARACTER}}:** {{INTERACTION_DYNAMIC}}
|
|
56
|
+
- **Trust posture:** {{TRUST_POSTURE}}
|
|
57
|
+
- **Conflict pattern:** {{CONFLICT_PATTERN}}
|
|
58
|
+
- **Speech shift:** {{SPEECH_SHIFT}}
|
|
59
|
+
- **Hidden agenda or fear:** {{HIDDEN_AGENDA}}
|
|
60
|
+
|
|
61
|
+
### Backstory relevant to this work
|
|
62
|
+
{{BACKSTORY}}
|
|
63
|
+
|
|
64
|
+
---
|