# eternityspring/shuohao-skills architecture

> Architecture diagram of the GitHub repository eternityspring/shuohao-skills, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/eternityspring/shuohao-skills
- Repository: https://github.com/eternityspring/shuohao-skills

## Overview

shuohao-skills is a collection of agent-operated AI short-drama production skills, not a single runtime pipeline. Its main workflow adapts a novel into an outline, then develops cast, art assets, and screenplay in parallel iteration; storyboard turns those decisions into production-ready shots and image/prompt packages. The README documents these handoffs and the report assembler’s calls to each skill’s HTML renderer. Character references are a separate, optional image-generation workflow. Source excerpts are partial, so internal links are limited to documented handoffs and sampled behavior.

Main entry points: [`skills/novel-storyboard/scripts/novel-storyboard.mjs`](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-storyboard/scripts/novel-storyboard.mjs) (Storyboard Skill), [`skills/novel-outline`](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-outline) (Adaptation Outline), [`skills/novel-script/scripts/novel-script.mjs`](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-script/scripts/novel-script.mjs) (Screenplay Skill), [`scripts/report.mjs`](https://github.com/eternityspring/shuohao-skills/blob/main/scripts/report.mjs) (Report Assembler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_adaptation["Story Adaptation"]
  node_outline["Outline Skill<br/>[novel-outline.mjs]"]
  node_outline_data["Adaptation Outline"]
end

subgraph group_development["Production Development"]
  node_characters["Cast Skill"]
  node_cast_data["Cast Data"]
  node_art["Art Skill<br/>[novel-art.mjs]"]
  node_art_data["Art Assets"]
  node_script["Screenplay Skill<br/>[novel-script.mjs]"]
  node_script_data["Screenplay Data"]
end

subgraph group_delivery["Storyboard Delivery"]
  node_storyboard["Storyboard Skill"]
  node_storyboard_data["Storyboard Data"]
  node_shot_export["Shot Export"]
  node_production_package["Production Package"]
end

subgraph group_references["Character References"]
  node_char_refs["Reference Image Skill<br/>[character-refs.mjs]"]
  node_refs_core["Asset &amp; Prompt Core<br/>[core.mjs]"]
  node_model_adapters["Image Model Adapters<br/>[models.mjs]"]
end

subgraph group_reporting["Report Assembly"]
  node_reporter["Report Assembler<br/>[report.mjs]"]
  node_skill_reports["Skill HTML Reports"]
  node_combined_report["Combined Report<br/>[report.mjs]"]
end

node_agent(("AI Agent"))
node_novel["Novel / Story"]
node_image_services{{"Image Providers"}}

node_agent -->|"runs"| node_outline
node_novel -->|"provides source"| node_outline
node_outline -->|"writes"| node_outline_data
node_agent -->|"runs"| node_characters
node_agent -->|"runs"| node_art
node_agent -->|"runs"| node_script
node_outline_data -->|"seeds cast"| node_characters
node_outline_data -->|"seeds assets"| node_art
node_outline_data -->|"seeds episodes"| node_script
node_characters -->|"writes"| node_cast_data
node_art -->|"writes"| node_art_data
node_script -->|"writes"| node_script_data
node_cast_data -->|"supplies voices"| node_script
node_art_data -->|"checks references"| node_script
node_agent -->|"runs"| node_storyboard
node_outline_data -->|"supplies context"| node_storyboard
node_cast_data -->|"supplies cast"| node_storyboard
node_art_data -->|"supplies references"| node_storyboard
node_script_data -->|"supplies scenes"| node_storyboard
node_storyboard -->|"writes"| node_storyboard_data
node_storyboard -->|"exports"| node_shot_export
node_shot_export -->|"writes prompts and frames"| node_production_package
node_agent -->|"runs"| node_char_refs
node_char_refs -->|"builds asset prompts"| node_refs_core
node_char_refs -->|"requests generation"| node_model_adapters
node_model_adapters -.->|"calls providers"| node_image_services
node_agent -->|"runs"| node_reporter
node_reporter -->|"invokes HTML renderers"| node_skill_reports
node_skill_reports -->|"returns HTML"| node_reporter
node_reporter -->|"assembles panels"| node_combined_report

click node_outline "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-outline/scripts/novel-outline.mjs"
click node_outline_data "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-outline"
click node_characters "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-characters/scripts/novel-characters.mjs"
click node_cast_data "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-characters"
click node_art "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-art/scripts/novel-art.mjs"
click node_art_data "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-art"
click node_script "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-script/scripts/novel-script.mjs"
click node_script_data "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script"
click node_storyboard "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-storyboard/scripts/novel-storyboard.mjs"
click node_storyboard_data "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-storyboard"
click node_shot_export "https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-storyboard/scripts/novel-storyboard.mjs"
click node_production_package "https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-storyboard"
click node_char_refs "https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/character-refs.mjs"
click node_refs_core "https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/core.mjs"
click node_model_adapters "https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/models.mjs"
click node_reporter "https://github.com/eternityspring/shuohao-skills/blob/main/scripts/report.mjs"
click node_skill_reports "https://github.com/eternityspring/shuohao-skills/tree/main/skills"
click node_combined_report "https://github.com/eternityspring/shuohao-skills/blob/main/scripts/report.mjs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_outline,node_outline_data toneBlue
class node_characters,node_cast_data,node_art,node_art_data,node_script,node_script_data toneAmber
class node_storyboard,node_storyboard_data,node_shot_export,node_production_package toneMint
class node_char_refs,node_refs_core,node_model_adapters toneRose
class node_reporter,node_skill_reports,node_combined_report,node_agent,node_novel,node_image_services toneIndigo
```

## Components

### Story Adaptation

- [Outline Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-outline/scripts/novel-outline.mjs): `skills/novel-outline/scripts/novel-outline.mjs`
- [Adaptation Outline](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-outline): `skills/novel-outline`

### Production Development

- [Cast Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-characters/scripts/novel-characters.mjs): `skills/novel-characters/scripts/novel-characters.mjs`
- [Cast Data](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-characters): `skills/novel-characters`
- [Art Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-art/scripts/novel-art.mjs): `skills/novel-art/scripts/novel-art.mjs`
- [Art Assets](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-art): `skills/novel-art`
- [Screenplay Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-script/scripts/novel-script.mjs): `skills/novel-script/scripts/novel-script.mjs`
- [Screenplay Data](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-script): `skills/novel-script`

### Storyboard Delivery

- [Storyboard Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-storyboard/scripts/novel-storyboard.mjs): `skills/novel-storyboard/scripts/novel-storyboard.mjs`
- [Storyboard Data](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-storyboard): `skills/novel-storyboard`
- [Shot Export](https://github.com/eternityspring/shuohao-skills/blob/main/skills/novel-storyboard/scripts/novel-storyboard.mjs): `skills/novel-storyboard/scripts/novel-storyboard.mjs`
- [Production Package](https://github.com/eternityspring/shuohao-skills/tree/main/skills/novel-storyboard): `skills/novel-storyboard`

### Character References

- [Reference Image Skill](https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/character-refs.mjs): `skills/character-refs/scripts/character-refs.mjs`
- [Asset & Prompt Core](https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/core.mjs): `skills/character-refs/scripts/core.mjs`
- [Image Model Adapters](https://github.com/eternityspring/shuohao-skills/blob/main/skills/character-refs/scripts/models.mjs): `skills/character-refs/scripts/models.mjs`

### Report Assembly

- [Report Assembler](https://github.com/eternityspring/shuohao-skills/blob/main/scripts/report.mjs): `scripts/report.mjs`
- [Skill HTML Reports](https://github.com/eternityspring/shuohao-skills/tree/main/skills): `skills`
- [Combined Report](https://github.com/eternityspring/shuohao-skills/blob/main/scripts/report.mjs): `scripts/report.mjs`

### Other components

- **AI Agent**
- **Novel / Story**
- **Image Providers**

## Connections

- AI Agent → Outline Skill: runs
- Novel / Story → Outline Skill: provides source
- Outline Skill → Adaptation Outline: writes
- AI Agent → Cast Skill: runs
- AI Agent → Art Skill: runs
- AI Agent → Screenplay Skill: runs
- Adaptation Outline → Cast Skill: seeds cast
- Adaptation Outline → Art Skill: seeds assets
- Adaptation Outline → Screenplay Skill: seeds episodes
- Cast Skill → Cast Data: writes
- Art Skill → Art Assets: writes
- Screenplay Skill → Screenplay Data: writes
- Cast Data → Screenplay Skill: supplies voices
- Art Assets → Screenplay Skill: checks references
- AI Agent → Storyboard Skill: runs
- Adaptation Outline → Storyboard Skill: supplies context
- Cast Data → Storyboard Skill: supplies cast
- Art Assets → Storyboard Skill: supplies references
- Screenplay Data → Storyboard Skill: supplies scenes
- Storyboard Skill → Storyboard Data: writes
- Storyboard Skill → Shot Export: exports
- Shot Export → Production Package: writes prompts and frames
- AI Agent → Reference Image Skill: runs
- Reference Image Skill → Asset & Prompt Core: builds asset prompts
- Reference Image Skill → Image Model Adapters: requests generation
- Image Model Adapters → Image Providers: calls providers
- AI Agent → Report Assembler: runs
- Report Assembler → Skill HTML Reports: invokes HTML renderers
- Skill HTML Reports → Report Assembler: returns HTML
- Report Assembler → Combined Report: assembles panels
