Short Drama Routing
This is a lightweight project router. It does not write stories, asset prompts, shots, video prompts, or final review conclusions within this skill.
Content intended for the creator to read follows the project's short-drama.json#/language (this includes status, differences, choices, next steps, etc.); the prompt body sent to image/video generators follows #/format/prompt_language (defaults to en).
These are two separate fields; do not infer one from the other. status will report both values simultaneously.
Full rules are in the output language contract of contract-and-ownership.md.
Starting Point for Each Request
- Use the user's explicit path, or search upward from the current directory for the nearest
short-drama.json. - Find other skills in the same suite from this skill's installation directory and read
suite-manifest.json; stop changes if skills are missing or versions are mixed. - Read only the
short-drama.jsonand.short-drama/state.jsonsummary; do not load all creation files at once. - Run transaction recovery before executing
statusor writing. If an external edit conflict is found, preserve the original file and offer three options:adopt,restore, ormerge. Do not overwrite silently. - Route based on the creator's current task; do not force a full pipeline walkthrough.
See creator-workflow.md for entry points, checkpoints, revisions, and delivery.
Execute runtime-preflight.md at every entry point to uniformly verify installation, recover transactions, and read project status.
Read contract-and-ownership.md for questions about ownership, the stale file expiration marker, privacy, or recovery.
Read routing-examples.md when intent is ambiguous.
Read knowhow-index.md only when you need to map a rule ID to the responsible skill; the router only dispatches and does not replace the creative skill's judgment.
See reference-roles.md for what a single reference image can determine and the first/last frame contract;
see audience-reveal.md for what the audience can know at any given moment;
see pickup-and-alternate.md for the relationship between pickups, alternates, and the master version.
See production-form-profiles.md for translation of different production forms.
Read look-development.md when a unified visual language needs to be established using characters, locations, and high-pressure representative frames before formal storyboarding.
Intent Routing
| Creator Intent | Route |
|---|---|
| Develop idea, story promise, series, episode map | $short-drama-develop |
| Import novel/long material with traceable episode and asset candidate preview | $short-drama-novel-analyze → $short-drama-develop → accept adaptation/episodes → $short-drama-write → accept script → $short-drama-assets |
| Judge if a long work is worth adapting; first see sampled quick critique | $short-drama-novel-analyze |
| Write/revise episode contract, causal beats, script | $short-drama-write |
| Break down characters/appearances, locations/views, props/states | $short-drama-assets |
| Write image prompts for characters, locations, props, or localized edits | $short-drama-image-prompts |
| Do text coverage, shots, or freeze keyframes | $short-drama-storyboard |
| Write video prompts for action, performance, camerawork, sound | $short-drama-video-prompts |
| Set art style, production form, or visual direction | $short-drama itself: locate a profile card per production-form-profiles.md, generate candidates, ask the creator to accept, then promote to creator_authority. Assets, image prompts, storyboards, and video prompts all require a fixed production form and none of them choose it autonomously, so this step must be completed here |
| Do Look Development / style frames | $short-drama first clarifies and accepts observable visual direction → $short-drama-image-prompts writes lookdev_frame text spec; does not generate images, nor allow style references to override identity, geography, or story state |
| Calibrate this project with authorized production observations | $short-drama-review binds the exact version and diagnoses → the corresponding owner performs targeted revisions with preserve_set → re-accept and fresh re-review; if there are no authorized observations, only report textual risks |
| Verify, review, or send revision requests | $short-drama-review |
| Only check or diagnose template feel, AI-ism | fresh $short-drama-review, send only evidence-backed findings |
| Directly remove AI-ism, polish, or do targeted text revisions | $short-drama-write, preserve author voice and show semantic diffs |
| Check first, then revise | fresh review → write owner makes targeted revisions → fresh re-review |
| Open Dashboard, Short Drama Workbench, or manage creation content | $short-drama dashboard: execute the "Local Dashboard" startup contract below |
The creator's explicit intent takes priority over the nominal "next checkpoint." Look Development is an optional project-level branch, not a universal prerequisite; after C2 asset acceptance, image prompts and storyboarding are parallel branches; when the creator only wants one branch, do not force waiting for the other.
If the current context has participated in creating the target file, the review route must prioritize starting a fresh reviewer agent/context, passing only the target, accepted constraints, and review checklist; if the runtime does not support fresh agents, transparently degrade to PROVISIONAL self-check. Do not treat switching Skill names as an independent review.
"Looks like a template/AI wrote it" is a diagnostic request; "change it" is an owner revision request. Do not let the write owner self-diagnose and then self-issue a conclusion, nor let the reviewer overstep and directly edit the text. For combined requests, freeze the target version, have a fresh reviewer locate evidence and damage, then hand to the write owner to change only the accepted scope, and finally have a different fresh reviewer do a re-review on the new hash; any link that cannot obtain an independent context keeps PROVISIONAL.
Initialization
When there is no project and the user wants to initialize:
- Only confirm or reasonably infer default values for reversible formats: title, language, prompt language, aspect ratio, paths;
leave episode count/duration blank if unknown. Language defaults to the creator's current language; prompt language defaults to
en; if the creator explicitly asks for prompts in the project language, follow the creator's choice without judging quality consequences. - Copy the project template without overwriting existing creator files.
- Create empty stage directories and non-public input boundaries.
- In
short-drama.json#/creator_authority, create empty creator constraints, visual direction, and production configuration; they are initiallyunset, and assets and their downstream all require a fixed production form—so after initialization, inform the creator: Setting the production form is the most useful next action, the entry point is in this skill (see intent routing table), not in any sub-skill; write actual choices to the decision record as shown in creator-decision.example.jsonl. - Record suite version, contract version, and five mutually independent empty states.
- Inform the project path and the most useful creator action.
Initialization does not generate story engines, scripts, or asset specification tables.
If a project development/director-brief.md is submitted during development, first show the creator its semantic differences relative to the current visual_direction / production_profile; only after explicit acceptance does the route promote the corresponding choices to short-drama.json#/creator_authority. Candidate files themselves do not have creator authority.
Local Dashboard
When the user calls $short-drama dashboard, do not forward to sub-skills; directly start the built-in local Short Drama Workbench:
-
First, verify the suite and recover unfinished transactions per runtime-preflight.md.
-
If the working directory is inside a project, use that project's root as
workspace; otherwise, use the container directory explicitly given by the user, or the current directory if none is given. Do not scan outside the workspace. -
Run from this skill's installation directory:
python3 <short-drama-skill-dir>/scripts/dashboard_server.py --workspace <workspace> --port 0 --open -
Keep the process running and report the full loopback address (including the session fragment for this launch) and stop method returned by the script. If the browser cannot be opened automatically, keep the service and have the user open the full address.
Dashboard has only one creation page: a content directory sorted by project and episode on the left, and the main text on the right. Opening a project automatically loads the script; switching content only replaces the main text, without opening new pages or overlays. To-dos and export appear only as brief hints below the main text. The interface does not display file trees, real paths, structured formats, lifecycle, or project details entry points. Markdown is read and edited as draft text; structured data is converted to cards; images and videos are only previewed. short-drama.json, .short-drama/**, creator decisions, review evidence, and export validation are managed by the system and are not navigable by the creator. Saving only saves modifications; it cannot replace the creator's explicit adoption of a version. It does not connect to external data sources, call media generation interfaces, or inject keys into the browser. Each launch generates an independent session token and API path; the browser exchanges the address fragment for an HttpOnly local session, and the project API only accepts that session. See lifecycle-commands.md for specific parameters.
Deterministic Tools
Call scripts/project_tool.py from this skill's installation directory, independent of the current working directory:
| Command | Purpose |
|---|---|
init | Initialize a minimal project |
status | Read lifecycle and recovery summary |
recover | Recover all or specified transactions |
publish | Publish candidate via a write-ahead log, without accompanying acceptance or review conclusions |
accept | Accept an exact candidate target using a creator decision record |
review | Update verification and review status with an independent review conclusion |
package | After re-verifying the five axes, dependencies, and evidence, generate a text delivery package |
verify | Re-verify the delivery package using its built-in checksum and report any new unregistered files |
Only read the full call examples, write-ahead log, acceptance, review, downstream staleness effects, and packaging constraints in lifecycle-commands.md when actually invoking these commands, diagnosing failures, or checking record formats.
Status and Next Steps
State in the creator's language:
- Sources that exist and are in
acceptedstatus; - Items in
provisional,stale,blocked, or pending creator acceptance; - Branches that can be entered in parallel;
- The minimal action to move the user's desired result forward.
Unless the user requests diagnostics, do not print hash, transaction IDs, internal data structures, or raw state content.
The five states are mutually independent: building, verification, creator acceptance, independent review, and delivery check; do not use a single accepted to represent all of them.
Recovery and Revision
Recover the earliest incomplete operation in the area the user is asking about, not the earliest stage in the whole project. Before changing confirmed content:
- Identify the skill responsible for the modification;
- Show the proposed semantic changes;
- List the exact downstream items affected;
- Obtain creator acceptance when necessary;
- Hand off to the responsible person for modification and re-review the new
hash.
Roll back incomplete transactions without a COMMIT to the last saved version; continue incomplete transactions with a COMMIT to candidate and fill in the status. Recovery must read-before-write and be idempotent; external changes whose source cannot be confirmed must be marked as conflict and cannot be overwritten.
Delivery
First route to a fresh review context in $short-drama-review for verification, then package when the delivery check is ready. Include only scripts, inventories, prompts, review records, creator notes, and checksums that are in accepted status. Exclude binary media, non-public input, machine states, absolute paths, credentials, non-public source materials, and unapproved drafts.
Boundaries
- Only use the current agent's text reasoning; do not call media generation or service interfaces.
- Do not retrieve external or non-public production sources at runtime.
- Do not elevate cases seen elsewhere into creative laws.
- The responsible person cannot review their own work.
- Do not silently resolve semantic conflicts.