OpenWriterControle/novel/.opencode/command/init.md
cclohmar 3ce2d638a6
Some checks are pending
Create Release / Check if Version Bump PR Merged (push) Waiting to run
Create Release / Create Git Tag and GitHub Release (push) Blocked by required conditions
Post-Merge Version Bump / Check if Version Bump Needed (push) Waiting to run
Post-Merge Version Bump / Create Version Bump PR (push) Blocked by required conditions
feat(novel): add the OpenNovelWriter agent pack (10 agents, commands, schema, templates)
The novel-writing agent pack existed only as three byte-identical copies inside
Obsidian vaults (Die-Kessler-Zwillinge, Scruffy-der-Weltenhund, OpenNovelWriter),
with no version control anywhere. It is now versioned here as the single source
of truth.

Contents (novel/):
- .opencode/agent/  OpenNovelAgent (primary) + LineEditor, Proofreader,
  StyleAnalyst, ContinuityEditor, StoryReviewer, Translator, Importer,
  Illustrator, CopyrightWatchdog
- .opencode/command/  import.md, init.md
- .opencode/languages.yaml, .opencode/opencode.json (pristine: default_agent)
- docs/SCHEMA.md  canonical schema — the newer OpenNovelWriter revision, which
  supersedes the stale copy in the Scruffy vault (adds workspace = book,
  images/prompts + images/generated, parallel books, rewrites section 7)
- templates/  AGENTS.md placeholder + DATA/{wiki,timeline,glossary}.yaml.md, style.md
- sync-to-vault.sh  dry-run by default; --apply backs up what it replaces and
  never touches DATA/, AGENTS.md, chapters or a vault's own opencode.json
- PACK-NOTES.md  per-file md5 provenance and the verified cross-vault comparison

Verified before committing: all 10 agents, both commands, languages.yaml and
start.sh are md5-identical across the three vaults.
2026-10-16 23:18:30 +01:00

169 lines
6.3 KiB
Markdown

---
description: "Initialize a new novel project — interactive scaffolding wizard"
---
# /init — Project Scaffolding
Initializes a new novel/series project with the OpenNovelWriter structure.
## Concept: workspace = book
One book (or series) = one **workspace** = one vault folder. The user first
creates and names a vault (e.g. "Die Kessler Zwillinge") in Obsidian, then opens
that folder as a workspace in opencode, and runs `/init` THERE.
`/init` scaffolds **into the current directory** — it does NOT create a nested
subfolder. The vault's own name is the project name. The "series title" question
below is for metadata (and may differ from the folder name), not for creating a folder.
## Workflow
Run the wizard **interactively**. The first question determines the language;
all further questions are asked in that language.
### Step 0: Confirm the workspace
The current directory IS the book's workspace. Confirm the folder name with the
author (it is the project/series name). Do NOT create a subfolder — scaffold
directly into the current directory.
### Step 1: Ask the writing language (always first)
> "Which language will you write in? (e.g. Deutsch, English, Português)"
The author answers. From now on you ask **all** questions and produce **all**
content in that language. Map the language to its ISO code in
`.opencode/languages.yaml`.
### Step 2: Strategic questions (in the chosen language)
Ask these questions one at a time. Record the answers:
1. **Basic plot / premise** — the most important question:
> "Tell me the basic plot — what is the story about? What is to come?"
The author describes the story in a few sentences. This is the SEED: you will
use it to pre-fill the world wiki and timeline, and to start building the world.
2. **Series title** (for metadata; defaults to the folder/workspace name)
3. **Sequel or standalone?**
- Sequel → "How many books are planned?" (creates `01` … `NN`)
- Standalone → only `01`
4. **Publication languages** (multiple allowed; default: the writing language)
5. **Genre** (fantasy, sci-fi, mystery, …)
6. **Target audience / age** (children, young adult, adult)
7. **Author** (name)
8. *(optional)* **Target chapter length** (characters per chapter, if the author has one)
### Step 3: Generate the structure
Scaffold **into the current directory** (the workspace/vault the author already
created and named):
```
. (the workspace/vault, named by the author)
├── .opencode/
│ ├── agent/ (OpenNovelAgent + subagents, copied from the tool)
│ ├── command/ (init, chapter, translate)
│ └── opencode.json
├── 01/ (one per book, numbered; title optional, renamed later)
│ ├── DE/ (one folder per publication language, ISO code)
│ ├── EN/
│ └── images/
│ ├── prompts/ (image prompts, one .md per image)
│ └── generated/ (generated image files)
├── 02/ … (if a sequel)
├── DATA/
│ ├── wiki.yaml.md
│ ├── timeline.yaml.md
│ ├── glossary.yaml.md
│ └── style.md
├── AGENTS.md
└── README.md
```
- **Book folders:** numbers only (`01`, `02`). Titles are added later by renaming.
- **Language folders:** ISO codes only (`DE`, `EN`, `PT`).
- **Images:** each book gets `images/prompts/` and `images/generated/`.
- **Chapter files:** create NONE yet. They are created when writing.
### Step 4: Populate the DATA files
- **`wiki.yaml.md`** → `meta:` block with the answers from Step 2 (title, author,
canonical, languages, genre, audience). Also fill `concept.premise:` with the
basic plot from Step 2, question 1.
- **`timeline.yaml.md`** → `story:` MUST be seeded with the premise as the first
entry. Do NOT leave it empty. Example:
```yaml
story:
- event: "PREMISE from Step 2 question 1"
# date optional; add `book: 1` if a sequel
```
`history:` stays empty.
- **`glossary.yaml.md`** → empty `terms:` list.
- **`style.md`** → placeholder with a note that the StyleAnalyst will extract the
voice from sample chapters later.
**Verification (mandatory):** before finishing, re-read the generated
`timeline.yaml.md` and confirm `story:` contains the premise. If it is empty,
fill it before proceeding.
### Step 5: Generate AGENTS.md + README.md
- **`AGENTS.md`** → from the answers: canonical language, publication languages,
genre, audience, structure note (references `docs/SCHEMA.md`).
- **`README.md`** → human-readable project overview.
### Step 6: Finish
Report to the author:
```
Project "[Title]" created.
Structure:
- 0N books (numbers; add titles by renaming)
- languages: DE, EN
- DATA/ with wiki, timeline, glossary, style
The premise has been seeded into the world wiki and timeline.
Next steps:
1. Open the project in Obsidian.
2. Start telling the story right away:
"Write Chapter 001: [what should happen]".
(The world builds itself in the background as you write.)
```
### Step 7: Hand over to the author
After reporting, remind the author that the world is built **in the background** —
they do not need to answer world-building questions. They can simply start
telling the story:
```
You can start telling the story right away — I'll build the world in the
background as we go.
Just say: "Write Chapter 001: [what should happen]".
```
Do NOT offer an interactive world-building questionnaire. If the author wants to
define the world up front, they will say so — otherwise, infer it from the story
as chapters are written.
## Rules
- Scaffold INTO the current directory (the workspace/vault) — never create a nested
`[Series Title]/` subfolder. The vault's own name is the project name.
- The FIRST question is ALWAYS the writing language; everything after is in that language.
- The SECOND question is ALWAYS the basic plot/premise — it is the seed for the world.
- The premise MUST be written into BOTH `wiki.yaml.md` (`concept.premise`) AND
`timeline.yaml.md` (`story:` first entry). Never leave `story:` empty.
- Book/language folders ALWAYS as number resp. ISO code — never force a title.
- YAML keys English, values in the canonical language (see SCHEMA §4).
- No chapter files during init — they are created when writing.
- Copy the agent/command files from the tool repo (`.opencode/`) so the new
project runs standalone.