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
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.
56 lines
3.5 KiB
Markdown
56 lines
3.5 KiB
Markdown
# OpenNovelWriter agent pack — provenance
|
|
|
|
Committed 2026-10-16 by Hermes. Before this, the pack existed **only** as three byte-identical copies inside Obsidian vaults, with no version control.
|
|
|
|
## Sources
|
|
|
|
| file | md5 | source |
|
|
|---|---|---|
|
|
| `.opencode/agent/ContinuityEditor.md` | `5083c6929bd2` | agent |
|
|
| `.opencode/agent/CopyrightWatchdog.md` | `0457635edecc` | agent |
|
|
| `.opencode/agent/Illustrator.md` | `e8dc9e1c5fd8` | agent |
|
|
| `.opencode/agent/Importer.md` | `67d2434b980e` | agent |
|
|
| `.opencode/agent/LineEditor.md` | `cdb3f8b1e69c` | agent |
|
|
| `.opencode/agent/OpenNovelAgent.md` | `15b891682a34` | agent |
|
|
| `.opencode/agent/Proofreader.md` | `7572ea57ef75` | agent |
|
|
| `.opencode/agent/StoryReviewer.md` | `a4a9249b1401` | agent |
|
|
| `.opencode/agent/StyleAnalyst.md` | `b19f9cba3eff` | agent |
|
|
| `.opencode/agent/Translator.md` | `8efac4a757f7` | agent |
|
|
| `.opencode/command/import.md` | `edfd797b99ce` | command |
|
|
| `.opencode/command/init.md` | `19f0c1670b64` | command |
|
|
| `.opencode/languages.yaml` | `0a33e641d04c` | language map |
|
|
| `.opencode/opencode.json` | `65438515bec8` | pristine config (default_agent) |
|
|
| `LICENSE` | `538dbda71eed` | pack doc |
|
|
| `README.md` | `805f1d95a2f3` | pack doc |
|
|
| `docs/SCHEMA.md` | `e28c37ae2ada` | canonical schema (newest) |
|
|
| `start.sh` | `841b0997a053` | launcher |
|
|
| `templates/AGENTS.md` | `ba5da851f769` | template |
|
|
| `templates/DATA/glossary.yaml.md` | `af92947f7799` | template |
|
|
| `templates/DATA/style.md` | `61dd239ac643` | template |
|
|
| `templates/DATA/timeline.yaml.md` | `06fa5d2c0fc6` | template |
|
|
| `templates/DATA/wiki.yaml.md` | `ffbb023a0a18` | template |
|
|
| `templates/README.md` | `937b06aaa694` | template |
|
|
|
|
## What was verified before committing
|
|
|
|
- All **10 agents**, both **commands** (`import.md`, `init.md`), `languages.yaml` and `start.sh` are **md5-identical** in all three vaults (`Die-Kessler-Zwillinge`, `Scruffy-der-Weltenhund`, `OpenNovelWriter`) — so there was no divergence to reconcile for them.
|
|
- `docs/SCHEMA.md` **did** diverge: OpenNovelWriter's copy (9477 B, 257 lines, 2026-09-08 21:30) is newer and a superset of Scruffy's (5812 B, 182 lines, 17:45). The newer one is committed; it adds the *workspace = book* concept, `images/prompts` + `images/generated`, multiple-books-in-parallel, and a rewritten section 7 (Images & Illustrations).
|
|
- `AGENTS.md` in the Scruffy vault is a *filled-in instance* (real series title/author/genre), not the template — the placeholder version is committed as `templates/AGENTS.md`; instances stay in their vault.
|
|
- `opencode.json` is committed pristine (`$schema` + `default_agent`). The permission block added to the Kessler vault (external_directory allow for `/Users/Shared/Novels/**`) is machine-local and deliberately **not** in the pack.
|
|
|
|
## Sync direction
|
|
|
|
The repo is now the source of truth. Vaults pull from here:
|
|
|
|
```sh
|
|
novel/sync-to-vault.sh /Users/Shared/Vaults/Die-Kessler-Zwillinge # dry run
|
|
novel/sync-to-vault.sh /Users/Shared/Vaults/Die-Kessler-Zwillinge --apply # write (backs up what it replaces)
|
|
```
|
|
|
|
`sync-to-vault.sh` overwrites only agent/command files, `docs/SCHEMA.md`, `languages.yaml` and `start.sh`. It never touches `DATA/`, `AGENTS.md`, `01/`, `Notizen/` or the vault's own `opencode.json` — your content and instance config are safe.
|
|
|
|
## Known open items
|
|
|
|
- Scruffy's `docs/SCHEMA.md` is stale — run the sync to bring it up to date.
|
|
- The Scruffy vault is the test bed for the Kessler run; no book-specific DATA was committed.
|
|
- `Importer` is a subagent: invoke via the primary agent or `/import`, not `opencode run --agent Importer`.
|