#243 by GitHub stars
eternityspring/shuohao-skills
AI 短剧制作的 skill 集合:拆角色、排大纲、出场景与道具设定、写剧本、切分镜 | Agent skills for AI short-drama production — character bibles, adaptation outlines, art bibles, screenplays, storyboards. Runs in Claude Code & codex.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/character-refs/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-art/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-characters/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-outline/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-script/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-staging/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
skills/novel-storyboard/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5612d2a0bd5f → 5612d2a0bd5f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5612d2a0bd5f
No earlier version was observed for comparison.
Verified commit 5612d2a0bd5f19d978c3ee19d1e42840335e3b4b
git clone --filter=blob:none --no-checkout https://github.com/eternityspring/shuohao-skills.git .hotskills/eternityspring-shuohao-skills && git -C .hotskills/eternityspring-shuohao-skills checkout --detach 5612d2a0bd5f19d978c3ee19d1e42840335e3b4b
# Copy each selected skill directory from .hotskills/eternityspring-shuohao-skills into .agents/skills/<skill-name>/Heat
8.2- Star growth, last 7 daysAhead of 97% of tracked repositories
- Star growth, last 24 hoursAhead of 98% of tracked repositories
- Rank movement, last 7 daysAhead of 90% of tracked repositories
- Commits, last 30 daysAhead of 83% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- character-refs
skills/character-refs - novel-art
skills/novel-art - novel-characters
skills/novel-characters - novel-outline
skills/novel-outline - novel-script
skills/novel-script - novel-staging
skills/novel-staging - novel-storyboard
skills/novel-storyboard
How it works
character-refs
When your agent uses it
给任何故事里的角色真出参考图(小说改编、自己原创的故事、单独设计一个角色都行,不需要小说原文): 一段话描述角色,拆成分层字段、补全后确认, 先出一张正面全身锚点,其余视图(大头照、90° 侧面、背面、细节、45° 大头照)都只参考这张锚点, 按需分档出图。每张图带标识、可单独重出,重出后自动标出哪些图过期。 支持 Qwen Image(ComfyUI)、codex 内置出图、OpenAI Images API(GPT Image 2)和自定义命令,主图与派生图可以使用不同模型。 产出 asset.json + 一组 PNG + 双击就能开的报告。零依赖。 只要提示词、不出图的话使用 novel-characters。 Use when asked to 出角色图、做角色参考图、给我的角色出图、定妆照、真出三视图、character reference images。
What it loads into context
Frontmatter
386 tokensAlways available to the agent
SKILL.md
3,880 tokensWhen the skill is activated
Reference documents
11,622 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- character-refs
- 落地结构
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/character-refs.mjsscripts/core.mjsscripts/i18n.mjsscripts/looks.mjsscripts/models.mjsscripts/png.mjsscripts/selftest.mjs
Files
README.en.mddoc7,265 bytesREADME.mddoc7,778 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesSKILL.mdcore13,071 bytesassets/report.webpasset94,858 bytesexamples/阿禾-intake.jsonasset2,832 bytesexamples/阿禾-描述.txtdoc324 bytesreferences/intake.mddoc5,845 bytesreferences/models.mddoc5,215 bytesreferences/prompting.mddoc8,156 bytesreferences/schema.mddoc4,491 bytesscripts/character-refs.mjsruns35,273 bytesscripts/core.mjsruns32,645 bytesscripts/i18n.mjsruns11,536 bytesscripts/looks.mjsruns5,009 bytesscripts/models.mjsruns19,274 bytesscripts/png.mjsruns7,050 bytesscripts/selftest.mjsruns40,367 bytes
Read SKILL.md
## character-refs
输入一段角色描述,输出一组角色参考图——**角色从哪来都行**:小说改编、自己编的故事、临时想到的一个人。**一张正面全身锚点,其余每张都只参考这张锚点**。
给视频模型(H3 / Wan / Seedance)当参考图使用,也给人看。
`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/character-refs.mjs`,零依赖,`node` 直接跑。
**这是仓库里唯一真出图的 skill。**其余 skill 只交提示词,因为出图那一刻才能决定模型和画风;
这个 skill 就是「那一刻」——模型在 Step 0 由用户选定,画风在建角色时选择(默认动漫,另有写实预设,也能挂自定义画风)。
### 核心规则(先读懂再动手)
- **一组图只有一个根:正面全身锚点。**只有它是文生图,其余全是「锚点 + 一句改图指令」。
头发、脸、领口三类细节额外挂确认过的正脸大头照。图与图之间不再互相参考——View the complete source on GitHubnovel-art
When your agent uses it
给 AI 短剧出美术设定集(场景 + 叙事道具):场景的设计意图、一致性锚点、光照时段变体、 空景提示词;道具的戏剧功能、状态变体、尺度参照、白底无手提示词。 产出 art.json + Markdown + 单页评审报告(含导出 JSON)。 为 AI 生成而设计,不是实拍——环境和道具都是生成资产,交付的是让它们跨集长一样的一致性方案; 10 道质量门全部由脚本确定性检查(锚点 3–5、无人无手、白底可抠、尺度短语、提示词英文……)。 有 novel-outline 的 outline.json 就用 seed 预填场景清单与出现集。 零依赖、零 API key、不出图——交付的是提示词,出图在下游。 Use when asked to 场景设定、出场景、环境设定集、场景一致性、scene bibles for AI short drama。
What it loads into context
Frontmatter
399 tokensAlways available to the agent
SKILL.md
2,498 tokensWhen the skill is activated
Reference documents
9,753 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-art
- 三个 skill 的接力
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/novel-art.mjsscripts/selftest.mjs
Files
README.en.mddoc4,726 bytesREADME.mddoc5,761 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesSKILL.mdcore8,297 bytesassets/report.webpasset154,436 bytesexamples/渡口-art.jsonasset16,839 bytesreferences/prop-pass.mddoc3,527 bytesreferences/report-style.mddoc2,512 bytesreferences/scene-pass.mddoc6,793 bytesreferences/schema.mddoc5,592 bytesreferences/sheet.mddoc3,858 bytesreferences/test-fixtures/upstream/README.mddoc481 bytesreferences/test-fixtures/upstream/渡口-cast.jsonasset42,544 bytesreferences/test-fixtures/upstream/渡口-outline.jsonasset9,659 bytesscripts/novel-art.mjsruns50,633 bytesscripts/selftest.mjsruns19,878 bytes
Read SKILL.md
## novel-art
给 AI 短剧出**美术设定集**:场景 + 叙事道具。**前提刻在骨子里:这是 AI 生成,不是实拍**——没有堪景搭景置景采买,环境和道具都是要被生成几十次还得长一样的资产,所以交付物全部围绕一致性:
| 交付 | 解决什么 |
| --- | --- |
| 一致性锚点(每景 3–5 个) | 观众靠它认场景,QC 靠它核对生成镜头有没有漂 |
| 光照时段变体 | AI 换时段是重新生成不是重新打灯,每个状态落成完整提示词 |
| 空景出图提示词 | 环境和角色是两层资产,参考图里混进人,一致性全毁 |
| 变体机制(variantOf) | 生成新景便宜,但变体复用母场景资产更一致 |
| 道具状态变体 | 皮箱的合上与打开是两张参考图——道具有状态弧,场景没有 |
| 道具尺度参照 | AI 经常把手持道具画成家具尺寸,提示词必须带尺度短语 |
| 道具白底无手 | 道具图要被贴进各种镜头,必须可抠;拿着道具的手是最常见污染 |
View the complete source on GitHubnovel-characters
When your agent uses it
从小说或短故事里拆出角色表、人物画像、形象提示词、音色提示词, 其中形象提示词含一张角色设定图的完整版面指令(左半身像 + 右全身三视图 + 细节条), 产出 JSON + Markdown + 可交互的 report.html。 报告语言可指定(--lang),默认中文,任意语言都支持;零依赖、零 API key、不出图。 Use when asked to 拆小说角色、分析人物、生成角色卡、character sheets from a novel。
What it loads into context
Frontmatter
276 tokensAlways available to the agent
SKILL.md
3,471 tokensWhen the skill is activated
Reference documents
27,256 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-characters
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/novel-characters.mjsscripts/selftest.mjs
Files
README.en.mddoc11,518 bytesREADME.mddoc10,265 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesSKILL.mdcore11,764 bytesassets/report.webpasset129,052 bytesassets/sheet.jpgasset169,114 bytesexamples/渡口-cast.jsonasset42,544 bytesexamples/渡口-cast.mddoc40,248 bytesexamples/渡口.txtdoc2,349 bytesreferences/profile-pass.mddoc18,726 bytesreferences/report-style.mddoc8,771 bytesreferences/roster-pass.mddoc1,944 bytesreferences/schema.mddoc5,992 bytesreferences/sheet.mddoc3,912 bytesreferences/test-fixtures/upstream/README.mddoc411 bytesreferences/test-fixtures/upstream/渡口-outline.jsonasset9,659 bytesscripts/novel-characters.mjsruns85,445 bytesscripts/selftest.mjsruns41,973 bytes
Read SKILL.md
## novel-characters
输入一篇小说/短故事,输出每个角色的:人物画像、形象提示词、音色提示词、角色设定图的版面指令。
**本 skill 不出图,只产提示词。**出图是下游的事——它要选模型、选画风、选画幅,那三件事在这里一个都答不了。
`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/novel-characters.mjs`,零依赖,`node` 直接跑。
**运行环境**:Claude Code 和 codex 都能跑,没有差别——这条管线全是 node 脚本加模型读写,不碰任何本机可执行文件。
---
### Step 0 — 确定报告语言
View the complete source on GitHubnovel-outline
When your agent uses it
把一本小说改编成短剧大纲五件套:改编说明、人物表、爽点表、分集梗概、资产清单, 产出 outline.json + Markdown + 单页评审报告(KPI 带、关键决策、爽点时间轴、调度矩阵、场景概览、质量门)。 14 道质量门全部由脚本确定性检查(角色分档上限、主场景上限随集数动态、爽点间隔≤3集、每集钩子悬念必填……),不靠模型自觉; 支持体检模式:贴一份现成大纲进来,只跑质量门给诊断。 零依赖、零 API key,用当前会话额度。 Use when asked to 改编大纲、短剧大纲、拆大纲、小说转短剧、adaptation outline。
What it loads into context
Frontmatter
344 tokensAlways available to the agent
SKILL.md
2,697 tokensWhen the skill is activated
Reference documents
10,519 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-outline
- 体检模式
- 联动更新
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/novel-outline.mjsscripts/selftest.mjs
Files
README.en.mddoc7,489 bytesREADME.mddoc8,969 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesSKILL.mdcore8,991 bytesassets/report.webpasset46,594 bytesexamples/渡口-outline.jsonasset9,659 bytesreferences/episode-pass.mddoc1,627 bytesreferences/outline-pass.mddoc3,515 bytesreferences/report-style.mddoc5,311 bytesreferences/schema.mddoc7,464 bytesreferences/volume-pass.mddoc1,392 bytesscripts/novel-outline.mjsruns82,516 bytesscripts/selftest.mjsruns31,150 bytes
Read SKILL.md
## novel-outline
输入一本小说 + 目标参数,输出短剧改编大纲五件套。**四件模型写、一件脚本算**(资产清单从分集数据自动汇总)。
`{baseDir}` = 本文件所在目录。脚本 `{baseDir}/scripts/novel-outline.mjs`,零依赖,`node` 直接跑。
**边界(不做的事)**:不写剧本台词、不做分镜、不出图像/TTS 提示词。梗概是叙述体,出现引号对白就是越界——`validate` 会拦。想从小说拆角色设定(画像/形象提示词/设定图),那是 `novel-characters` 的活。
---
### Step 0 — 收参数 ⛔ 缺了不开工
一次问完,别轮流盘问。两件必问 + 两件给默认值待确认:
View the complete source on GitHubnovel-script
When your agent uses it
给 AI 短剧写剧本:把 novel-outline 的分集梗概落成结构化的场次 + 节拍流(动作节拍与台词行交替), 台词逐句带说话人与语气,时长逐集按语速确定性折算。产出 script.json + Markdown + 单页评审报告 (时长仪表 / 分集剧本 / 场次总表 / 按角色聚合的台词本,含导出 JSON)。 剧本管戏,分镜管拍——本 skill 不分镜头、无镜号、不写生成提示词,那些是下一层分镜 skill 的活。 10 道质量门全部由脚本确定性检查(每集时长 ±15%、单句 ≤35 字、说话人合法、钩子悬念落纸、 钩子具象前 3 拍内兑现(hookBeat 认领冷开场)、每场至少一个动作节拍、爽点认领、 角色/场景/光照/道具对账上游……)。 有 outline.json 就用 seed 预填每集骨架;给 --art 连光照状态一起对账。 零依赖、零 API key,用当前会话额度。 Use when asked to 写剧本、出剧本、台词、场次、写戏、screenwriting for AI short drama。
What it loads into context
Frontmatter
458 tokensAlways available to the agent
SKILL.md
2,818 tokensWhen the skill is activated
Reference documents
8,180 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-script
- 四个 skill 的接力
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/novel-script.mjsscripts/selftest.mjs
Files
README.en.mddoc7,375 bytesREADME.mddoc7,605 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesSKILL.mdcore9,204 bytesassets/report.webpasset106,104 bytesexamples/渡口-script.jsonasset38,592 bytesreferences/report-style.mddoc3,192 bytesreferences/schema.mddoc3,589 bytesreferences/script-pass.mddoc5,515 bytesreferences/test-fixtures/upstream/README.mddoc542 bytesreferences/test-fixtures/upstream/渡口-art.jsonasset16,839 bytesreferences/test-fixtures/upstream/渡口-cast.jsonasset42,544 bytesreferences/test-fixtures/upstream/渡口-outline.jsonasset9,659 bytesscripts/novel-script.mjsruns53,238 bytesscripts/selftest.mjsruns18,366 bytes
Read SKILL.md
## novel-script
给 AI 短剧写**剧本**。**前提刻在骨子里:剧本管戏,分镜管拍**——「爽不爽」和「怎么拍」是两种迭代节奏,台词要反复推翻重写,绑上镜头分解每改一句都得重排镜头。所以这层只有集、场次、节拍流,没有镜号;镜头、首帧提示词、生成批次都是下一层分镜 skill 的活。
但有一条底线:**台词必须是结构化数据,不能写成散文**。每句台词是独立条目(说话人 + 台词 + 语气),动作是独立节拍——这是全部确定性检查的地基:
| 交付 | 解决什么 |
| --- | --- |
| 逐集时长预算 | 一集三分钟就是三分钟:台词按语速折算、动作按节拍估时,写超写欠当场拦下,不流到生成环节才发现 |
| 节拍流(动作 ⇄ 台词) | 台词直接对接 TTS 逐句生成;动作节拍就是画面要发生的事。混成散文两头都喂不进管线 |
| 每场至少一个动作节拍 | 纯对白的场是广播剧——AI 生成时没有画面可写 |
| 开场钩子 + 结尾悬念 | 短剧的生死线,每集都要落在纸面;**钩子不是标签是第一拍**——`hookBeat` 认领具象位置,必须落在全集前 3 拍内(冷开场) |
| 爽点认领 | 大纲说这一集有大爆点,剧本必须有戏认领它——防止改着改着把爆点改丢 |
| 上游对账 | 场景/光照/道具对 art.json、角色对 outline.json,写了美术没登记的光照状态当场报 |View the complete source on GitHubnovel-staging
When your agent uses it
给 AI 短剧的每一场排开场站位:先从场景图里认出能站能坐的东西(推算到俯视平面上), 再按剧本给每一场排谁在哪件东西的哪一侧、坐还是站、面朝哪、有没有群演, 程序写出每一场的开场走位句,分镜这一场第一段照抄它。 默认交付能拖动调整站位的 HTML 工具报告,页面内可导出 staging.json;JSON 同时作为工作数据保存,Markdown 按需导出。 8 道质量门全部由脚本确定性检查(认图件数、东西在图上、出场人物不多不少、在场的人落在认出来的东西上、 同一侧不叠人、群演写明在哪……)。吃 novel-script 的 script.json 和 novel-art 的 art.json 预填骨架。 零依赖、零 API key。 Use when asked to 站位、开场站位、群戏站位、谁坐在哪、排座位、走位、blocking、staging for AI short drama。
What it loads into context
Frontmatter
407 tokensAlways available to the agent
SKILL.md
3,031 tokensWhen the skill is activated
Reference documents
8,935 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-staging
- 在管线里的位置
- 边界
- 自测
- 自带样例
Scripts executed separately
scripts/novel-staging.mjsscripts/selftest.mjs
Files
README.en.mddoc5,903 bytesREADME.mddoc6,459 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesSKILL.mdcore10,393 bytesassets/report-en.jpgasset160,584 bytesassets/report.webpasset68,278 bytesexamples/渡口-staging.jsonasset17,789 bytesreferences/read-pass.mddoc4,218 bytesreferences/report-style.mddoc4,137 bytesreferences/schema.mddoc4,995 bytesreferences/staging-pass.mddoc4,342 bytesreferences/test-fixtures/upstream/README.mddoc613 bytesreferences/test-fixtures/upstream/渡口-art.jsonasset16,839 bytesreferences/test-fixtures/upstream/渡口-outline.jsonasset9,659 bytesreferences/test-fixtures/upstream/渡口-script.jsonasset38,592 bytesscripts/novel-staging.mjsruns70,992 bytesscripts/selftest.mjsruns17,604 bytes
Read SKILL.md
## novel-staging
给 AI 短剧的每一场排**开场站位**:这一场一开始,每个出场的人在哪件东西旁、坐还是站、面朝哪。
**为什么要单独排**:短剧的每一段视频是一次独立生成,各段自己决定谁坐哪。群戏里六个人围一张长桌,第一段桌边多出五个没名字的宾客,第三段端酒坐着的人穿着主角的衣服。分镜的走位句一段接一段地交接,可每一场**第一段**的那一句是分镜自己编的,人看不到、改不动。所以在分镜之前,每场先定一份站位,分镜照抄。
| 交付 | 解决什么 |
| --- | --- |
| 认图结果(每个地点 4–20 件东西) | 站位只落在图上真有的东西旁——提示词里写了、图上没画的高台,人坐上去,每段视频都不一样 |
| 俯视平面 | 在透视的场景图上「桌子北侧」只是桌子后面一小条,前后深浅说不清;摆平了从上往下看,方位一目了然 |
| 开场站位(每场) | 谁开场就在、谁后来才进;坐还是站跟着剧本;主位、对立、孤立用位置说出来 |
| 开场走位句 | 程序按站位写,一字不差交给分镜:「胡二爷坐在第三排坐板上,面朝北;其余座位空着,没有其他人。」 |
| 能调整的报告 | 人在页面上拖动、改坐站和朝向,改完导出就是新的 staging.json,不用手改 JSON |
View the complete source on GitHubnovel-storyboard
When your agent uses it
给 AI 短剧出分镜:三层结构——段(一次视频生成,≤15 秒)→ 分镜(段内 2–5 秒的剪切,认领剧本节拍) → 分镜图(每切一张关键帧:主分镜图钉 0.00 秒,子分镜图钉各自切点)。 每段自带一条 MiniMax H3 视频提示词(官方口径默认英文、逐镜换行,promptLang 可切中文):对齐指令和 [Shot k] 切点时刻由分镜结构推导、逐字对账,台词逐字进 <d> 块(写法规范已内化为 references/h3-prompt.md,不依赖外部 skill)。 产出 storyboard.json + Markdown + 单页评审报告(分镜节奏带 / 分集分镜表 / 生成批次单 / 配音对齐单,含导出 JSON)。不出图——交付的是每格的画面提示词和它该挂哪些参考图。 18 道质量门全部由脚本确定性检查(第 18 道 shot-recipe 可选:挂上 shot-recipes 卡库才查,不挂就明说跳过); export 一键导出 H3 投产包(每段提示词 + 按 Picture 序的分镜图清单)。零依赖、零 API key,用当前会话额度。 Use when asked to 分镜、出分镜、镜头表、切镜、storyboard for AI short drama。
What it loads into context
Frontmatter
494 tokensAlways available to the agent
SKILL.md
4,329 tokensWhen the skill is activated
Reference documents
19,371 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- novel-storyboard
- 五个 skill 的接力(管线到此闭环)
- 边界
- 门失败会累积
- 自测
- 自带样例
Scripts executed separately
scripts/novel-storyboard.mjsscripts/selftest.mjs
Files
README.en.mddoc12,148 bytesREADME.mddoc12,545 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesSKILL.mdcore14,449 bytesassets/report.webpasset190,454 bytesexamples/渡口-storyboard.jsonasset51,772 bytesreferences/frame.mddoc3,729 bytesreferences/h3-prompt.mddoc4,094 bytesreferences/report-style.mddoc3,619 bytesreferences/schema.mddoc8,189 bytesreferences/seedance-prompt.mddoc7,466 bytesreferences/shot-writing.mddoc6,188 bytesreferences/storyboard-pass.mddoc6,557 bytesreferences/test-fixtures/shot-recipes/hands-tell.mddoc180 bytesreferences/test-fixtures/shot-recipes/insert-beat.mddoc185 bytesreferences/test-fixtures/shot-recipes/ots-shot-reverse.mddoc217 bytesreferences/test-fixtures/upstream/README.mddoc612 bytesreferences/test-fixtures/upstream/渡口-art.jsonasset16,839 bytesreferences/test-fixtures/upstream/渡口-cast.jsonasset42,544 bytesreferences/test-fixtures/upstream/渡口-outline.jsonasset9,659 bytesreferences/test-fixtures/upstream/渡口-script.jsonasset38,592 bytesscripts/novel-storyboard.mjsruns110,165 bytesscripts/selftest.mjsruns48,739 bytes
Read SKILL.md
## novel-storyboard
给 AI 短剧出**分镜**——管线里第一个直接面对视频模型的层。**前提刻在骨子里:镜头是生成出来的,多切一镜的成本几乎为零**,所以这里不心疼镜头数量,上限只有一个:视频模型单段生成的时长(默认 15 秒)。
**核心机制:镜头认领节拍。** 每个镜头声明它覆盖剧本某场的哪几个连续节拍(`sceneIndex` + `beats: [起, 止]`),镜头不许跨场次——换景必换镜。这让分镜和剧本的关系变成可机械对账的:
| 交付 | 解决什么 |
| --- | --- |
| 节拍认领 | 每个节拍被恰好一个镜头认领、顺序不乱——剧本改了重跑 validate,失效的镜头当场点名 |
| 单镜头 ≤ 15 秒 | AI 视频单段生成上限,长对话在这里被强制拆镜(`params.maxShotSeconds` 按模型改) |
| 台词装得下 | 认领节拍的台词秒数 ≤ 镜头秒数——逐镜检查,不是拍脑袋 |
| 分镜图提示词 + 镜头正文 | 分镜图提示词(`frame`,中文,直呼角色名)给图像模型配合设定图出图;镜头正文(`shot`,中文,通用身份)写这几秒发生什么。景别是枚举,中文景别词必须写进分镜图提示词 |
| **H3 视频提示词(每段一条)** | MiniMax H3 的 I2VA 结构:固定对齐指令 + integrated_multimodal_description + overall_soundscape + non_diegetic_music。**认领节拍的台词逐字进 `<d>[Chinese] …</d>` 块**——对白、声景、配乐一段提示词全带上 |
| **Seedance 视频提示词(每段一条,程序拼)** | 跟 H3 并列。由脚本按官方结构拼:参考图声明、段级走位、逐镜量化字段、台词 `{}`、音效 `<>`、配乐 `()`、编号约束。模型只写每切的 `shot`,不写秒数、编号和图片引用 |View the complete source on GitHubSkills included
- character-refs
- novel-art
- novel-characters
- novel-outline
- novel-script
- novel-staging
- novel-storyboard
Repository facts
- License
- Apache-2.0
- Created
- Aug 6, 2026
- Last pushed
- Oct 26, 2026
- Forks
- 848
- Open issues
- 0
- Project activity
- Active
Rank over the last 12 weeks
Now #243 · best #242 · up 21 in 30 days
- #248 on Oct 31
- #246 from Nov 1 to Nov 2
- #248 on Nov 3
- #244 on Nov 4
- #242 on Nov 5
- #243 since Nov 6
72 earlier periods
- #888 on Aug 2
- #859 on Aug 7
- #847 on Aug 8
- #788 on Aug 9
- #754 on Aug 10
- #579 on Aug 11
- #502 on Aug 12
- #491 on Aug 13
- #461 on Aug 14
- #441 from Aug 15 to Aug 16
- #436 from Aug 17 to Aug 18
- #427 on Aug 19
- #411 on Aug 20
- #409 on Aug 21
- #400 on Aug 22
- #402 on Aug 23
- #396 on Aug 24
- #392 on Aug 25
- #377 on Aug 26
- #369 on Aug 27
- #361 on Aug 28
- #356 on Aug 29
- #346 on Aug 30
- #355 from Aug 31 to Sep 1
- #350 on Sep 2
- #346 on Sep 3
- #310 on Sep 4
- #299 from Sep 5 to Sep 6
- #306 on Sep 7
- #303 on Sep 8
- #302 on Sep 9
- #301 on Sep 10
- #298 on Sep 11
- #301 on Sep 12
- #291 on Sep 13
- #289 on Sep 14
- #285 on Sep 15
- #280 on Sep 16
- #277 on Sep 17
- #281 on Sep 18
- #275 on Sep 19
- #276 on Sep 20
- #275 from Sep 21 to Sep 22
- #274 from Sep 23 to Sep 24
- #267 on Sep 25
- #265 from Sep 26 to Sep 27
- #268 on Sep 28
- #269 on Sep 29
- #264 on Sep 30
- #265 on Oct 1
- #266 on Oct 2
- #261 on Oct 3
- #258 on Oct 4
- #262 from Oct 5 to Oct 6
- #264 on Oct 7
- #262 on Oct 8
- #264 on Oct 9
- #261 from Oct 10 to Oct 11
- #264 on Oct 12
- #265 on Oct 13
- #264 on Oct 14
- #262 on Oct 15
- #257 on Oct 16
- #258 from Oct 17 to Oct 18
- #257 from Oct 19 to Oct 20
- #259 on Oct 21
- #257 from Oct 22 to Oct 23
- #258 on Oct 24
- #260 on Oct 25
- #246 on Oct 28
- #249 on Oct 29
- #250 on Oct 30
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 120 notes
skills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/character-refs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/novel-art/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/novel-art/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/novel-art/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/novel-art/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/novel-art/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 7 broad permissionsin 7 files: character-refs/SKILL.md:1 novel-art/SKILL.md:1 novel-characters/SKILL.md:1 and 4 more
- No dangerous shell commands
- 67 network referencesin 18 files: character-refs/scripts/selftest.mjs:321 character-refs/scripts/models.mjs:39 character-refs/README.en.md:1 and 15 more
- No hidden or obfuscated text
- No instruction overrides
- 19 executable scriptsin 19 files: character-refs/scripts/character-refs.mjs:1 character-refs/scripts/core.mjs:1 character-refs/scripts/i18n.mjs:1 and 16 more
- 14 references to secretsin 4 files: character-refs/scripts/models.mjs:3 character-refs/scripts/selftest.mjs:324 character-refs/SKILL.md:80 and 1 more
- No requests to vote in Hot
Show all 107 signals by file
skills/character-refs/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/character-refs/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/character-refs/SKILL.md
skills/character-refs/references/models.md
skills/character-refs/scripts/character-refs.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/character-refs/scripts/core.mjs
- Executable scriptline 1
Executable file
skills/character-refs/scripts/i18n.mjs
- Executable scriptline 1
Executable file
skills/character-refs/scripts/looks.mjs
- Executable scriptline 1
Executable file
skills/character-refs/scripts/models.mjs
- Executable scriptline 1
Executable file - Access to secretsline 3
[Credential-related source omitted] - Access to secretsline 32
[Credential-related source omitted] - Network accessline 39
openai: { // OpenAI Images API(GPT Image 2);也可指向兼容 OpenAI 格式的中转 envFile: null, // 可选:从这个 .env 读 OPENAI_API_KEY(与 OPENAI_BASE_URL) baseUrl: 'https://api.openai.com/v1', - Network accessline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 41
baseUrl: 'https://api.openai.com/v1', - Network accessline 136
[Credential-related source omitted] - Network accessline 137
[Credential-related source omitted] - Network accessline 138
const r = await fetch(ep.url + path, { method, headers, body: body && !(body instanceof FormData) ? JSON.stringify(body) : body, signal: AbortSignal.timeout(timeoutMs) }); - Access to secretsline 244
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Network accessline 263
const ep = openaiEndpoint(cfg.models.openai); const req = openaiRequest(job, cfg.models.openai); const r = await fetch(ep.base + req.path, { - Network accessline 264
const req = openaiRequest(job, cfg.models.openai); const r = await fetch(ep.base + req.path, { method: 'POST', - Network accessline 265
const r = await fetch(ep.base + req.path, {
skills/character-refs/scripts/png.mjs
- Executable scriptline 1
Executable file
skills/character-refs/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 321
ok(ed.pos.class_type === 'TextEncodeQwenImageEditPlus' && ed.pos.inputs.image2[0] === 'ref2' && !ed.pos.inputs.image3, '派生:两张参考图接进编码器'); for (const [r, [w, h]] of Object.entries(QWEN_SIZES)) ok(w % 16 === 0 && h % 16 === 0 && w * h >= 655 - Network accessline 322
for (const [r, [w, h]] of Object.entries(QWEN_SIZES)) ok(w % 16 === 0 && h % 16 === 0 && w * h >= 655360 && w * h <= 8294400, `${r} 尺寸也满足 gpt-image-2 的规则`); eq(parseEnv('# x\nCOMFY_URL=http://h:1/\nCOMFY_PASS="p w"\n').COMFY_PASS, 'p w', - Network accessline 323
eq(parseEnv('# x\nCOMFY_URL=http://h:1/\nCOMFY_PASS="p w"\n').COMFY_PASS, 'p w', '读 .env:去引号、跳注释'); - Network accessline 324
[Credential-related source omitted] - Access to secretsline 324
[Credential-related source omitted] - Network accessline 325
writeFileSync(envf, 'COMFY_URL=http://example:8188/\nCOMFY_USER=u\nCOMFY_PASS=secret\n'); - Network accessline 326
const ep = qwenEndpoint({ ...q, envFile: envf }, {}); ok(ep.url === 'http://example:8188' && ep.auth === 'Basic ' + Buffer.from('u:secret').toString('base64'), '从 .env 取地址与账号'); assert.throws(() => qwenEndpoint(q, {}), /COMFY_URL/); pas - Network accessline 327
[Credential-related source omitted] - Access to secretsline 327
[Credential-related source omitted] - Network accessline 372
}); const cfg = loadConfig(join(TMP, 'none.json')); cfg.models.qwen.url = `http://127.0.0.1:${srv.address().port}`; - Network accessline 373
const cfg = loadConfig(join(TMP, 'none.json')); cfg.models.qwen.url = `http://127.0.0.1:${srv.address().port}`; const f = join(TMP, 'ref.png'); - Network accessline 374
cfg.models.qwen.url = `http://127.0.0.1:${srv.address().port}`; - Network accessline 393
}); const cfg = loadConfig(join(TMP, 'none.json')); cfg.models.openai.baseUrl = `http://127.0.0.1:${srv.address().port}/v1`; - Network accessline 394
[Credential-related source omitted] - Network accessline 395
cfg.models.openai.baseUrl = `http://127.0.0.1:${srv.address().port}/v1`; - Access to secretsline 396
[Credential-related source omitted] - Access to secretsline 399
[Credential-related source omitted]
skills/novel-art/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-art/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-art/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-art/scripts/novel-art.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-art/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-characters/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-characters/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-characters/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-characters/scripts/novel-characters.mjs
skills/novel-characters/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-outline/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-outline/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-outline/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-outline/scripts/novel-outline.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-outline/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-script/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-script/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-script/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-script/scripts/novel-script.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-script/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-staging/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-staging/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-staging/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-staging/scripts/novel-staging.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-staging/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-storyboard/README.en.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-storyboard/README.md
- Network accessline 1
[](README.md) - Network accessline 2
[](README.en.md) - Network accessline 3
[](https://x.com/eternityspring)
skills/novel-storyboard/SKILL.md
- Broad permissionsline 1
Bash
skills/novel-storyboard/scripts/novel-storyboard.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/novel-storyboard/scripts/selftest.mjs
- Executable scriptline 1
#!/usr/bin/env node
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 1 fact
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentioncharacter-refs/scripts/models.mjs:41High confidence
Signal confidence: 107 facts
- Network access in prose of documentationcharacter-refs/README.en.md:1Low confidence
- Network access in prose of documentationcharacter-refs/README.en.md:2Low confidence
- Network access in prose of documentationcharacter-refs/README.en.md:3Low confidence
- Network access in prose of documentationcharacter-refs/README.md:1Low confidence
- Network access in prose of documentationcharacter-refs/README.md:2Low confidence
- Network access in prose of documentationcharacter-refs/README.md:3Low confidence
- Broad permissions in the frontmatter of the SKILL.mdcharacter-refs/SKILL.md:1High confidence
- Access to secrets in prose of the SKILL.mdcharacter-refs/SKILL.md:80Low confidence
- Access to secrets in prose of the SKILL.mdcharacter-refs/SKILL.md:82Low confidence
- Access to secrets in prose of the SKILL.mdcharacter-refs/SKILL.md:94Low confidence
- Access to secrets in prose of documentationcharacter-refs/references/models.md:18Low confidence
- Network access in prose of documentationcharacter-refs/references/models.md:39Low confidence
- Access to secrets in prose of documentationcharacter-refs/references/models.md:39Low confidence
- Executable script in code of a file that runscharacter-refs/scripts/character-refs.mjs:1High confidence
- Executable script in a comment of a file that runscharacter-refs/scripts/core.mjs:1Low confidence
- Executable script in a comment of a file that runscharacter-refs/scripts/i18n.mjs:1Low confidence
- Executable script in a comment of a file that runscharacter-refs/scripts/looks.mjs:1Low confidence
- Executable script in a comment of a file that runscharacter-refs/scripts/models.mjs:1Low confidence
- Access to secrets in a comment of a file that runscharacter-refs/scripts/models.mjs:3Low confidence
- Access to secrets in code of a file that runscharacter-refs/scripts/models.mjs:32High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:39High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:40High confidence
- Access to secrets in code of a file that runscharacter-refs/scripts/models.mjs:40High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:41High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:136High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:137High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:138High confidence
- Access to secrets in code of a file that runscharacter-refs/scripts/models.mjs:244High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecharacter-refs/scripts/models.mjs:245Low confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:263High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:264High confidence
- Network access in code of a file that runscharacter-refs/scripts/models.mjs:265High confidence
- Executable script in a comment of a file that runscharacter-refs/scripts/png.mjs:1Low confidence
- Executable script in code of a file that runscharacter-refs/scripts/selftest.mjs:1High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:321High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:322High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:323High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:324High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecharacter-refs/scripts/selftest.mjs:324Low confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:325High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:326High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:327High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecharacter-refs/scripts/selftest.mjs:327Low confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:372High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:373High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:374High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:393High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:394High confidence
- Network access in code of a file that runscharacter-refs/scripts/selftest.mjs:395High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuecharacter-refs/scripts/selftest.mjs:396Low confidence
and 57 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/character-refs/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/character-refs/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/character-refs/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/character-refs/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/character-refs/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/eternityspring-shuohao-skills/)