$npx -y skills add alfredxw/denova --skill story-director-configUse when config_manager creates or updates Denova Story Director resources.
| 1 | # Story Director Config |
| 2 | |
| 3 | Use this skill before calling `write_story_directors`, `write_event_packages`, or `write_actor_states`. |
| 4 | |
| 5 | ## Workflow |
| 6 | |
| 7 | 1. Call `list_story_directors` first. For updates, call `read_story_directors` for the exact director IDs. |
| 8 | 2. Call `list_event_packages` before changing a director's event package references. For event-card content updates, call `read_event_packages` for exact package IDs. |
| 9 | 3. Call `list_actor_states` before changing a director's `actor_state_id`; call `read_actor_states` before editing state templates, fields, trait pools, or trait rules. |
| 10 | 4. Use `write_story_directors` for director create/update/delete, `write_event_packages` for event package create/update/delete, and `write_actor_states` for State System schema changes. Do not edit JSON files directly. |
| 11 | 5. Built-in story directors, event packages, and State Systems can be read and copied as examples. Deleting built-ins restores their built-in version. |
| 12 | 6. For update, preserve sections the user did not ask to change. |
| 13 | 7. For delete, require an explicit user request. |
| 14 | 8. When grounding event cards in the current work, call `list_lore_items` first, then `read_lore_items` for only the small relevant set. Do not claim concrete world, faction, character, or relationship facts unless they came from read lore, read director/package data, or explicit user input. |
| 15 | 9. Story Directors, event packages, TRPG Checks, and State Systems are Game Mode-only module types. Reusable Actor traits belong inside State Systems; do not add per-resource mode/scope fields. |
| 16 | |
| 17 | ## Shape |
| 18 | |
| 19 | Story Directors are Game Mode modules independent from shared narrative styles and shared image presets. They combine reusable modules through `module_refs` and keep expanded resolved sections for inspection. |
| 20 | |
| 21 | - `module_refs`: referenced module IDs plus switches. Use `narrative_style_id`, `event_package_ids`, `rule_system_id`, `actor_state_id`, and `image_preset_id`; set `narrative_style_disabled`, `event_packages_disabled`, `rule_system_disabled`, `actor_state_disabled`, or `image_preset_disabled` to `true` to turn a module off. When disabling, preserve IDs so the user can re-enable without reselecting. Actor traits live in the referenced State System. |
| 22 | - `strategy`: `enabled`, `mainline_strength`, `failure_policy`, `pacing_curve`, `random_event_rate`. Prefer the standard enum IDs used by the UI: `mainline_strength` is `soft_guidance`, `balanced`, or `strong_arc`; `failure_policy` is `reversible`, `consequence`, or `fail_forward`; `pacing_curve` is `progressive`, `wave`, or `goal-pressure-payoff`; `random_event_rate` is usually `0`, `0.08`, `0.15`, or `0.3`. |
| 23 | - `event_packages`: resolved event packages; used only by the background director planner and empty when event packages are disabled. |
| 24 | - `actor_state`: resolved State System schema with `templates`, `trait_pools`, and `initial_actors`. `templates[].fields[]` define `path`, `name`, `type`, `default`, optional `min`/`max`, `options`, and `update_instruction`; optional `group` and `display` are presentation-only hints for the stage state ledger (`display` is `stat`, `inline`, `block`, or `list`; empty falls back to shape-based layout) and never affect state updates. Object fields are generic JSON maps: use stable, readable story-language keys as record IDs, and do not duplicate or require an inner name unless the user explicitly defines that shape. `templates[].trait_rules[]` bind a `pool_id` and positive `draw_count`. `trait_pools[].traits[]` contain only `id`, `name`, `summary`, and `weight`. Initial and runtime-created Actors use the same backend creation flow: template defaults, instance overrides, then automatic trait draws. The assigned definitions are persisted as snapshots under `actors.<actor_id>.traits`. Every state field and assigned trait is available to the Agent and state panel; private future planning belongs in the Director's private files rather than Actor State. |
| 25 | - `trpg_system`: resolved fixed-d20 rule templates for checks only. Each rule uses `label`, `dice`, `modifier`, `failure_policy`, `difficulty_guidance`, `state_effect_guidance`, `trigger`, `success_hint`, and `failure_hint`. |
| 26 | Historical facts come from committed Turns and can be retrieved with `search_story_history`; current computable facts belong in Actor State, stable canon belongs in Lore, and future intent belongs in `director.md`. Do not create another writeable continuity store inside a Story Director preset. |
| 27 | |
| 28 | Traits are state snapshots only; ordinary numeric or field effects must remain typed Actor state patches. StateOps are an internal replay mechanism and are not part of the Story Director resource contract. |
| 29 | |
| 30 | Do not change `version`, `path`, `custom`, `invalid`, `error`, `created_at`, or `updated_at` unless preserving an existing complete object from `read_story_directors`. |
| 31 | Do not use emp |