Registers the fight-scene-director skill for designing AI-video fight scenes, ported from the Codex skill of the same name. Emits structured Chinese prompts for Seedance 2.0/2.5 and MiniMax H3, plus trajectory-map and initial-position image prompts.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:hatsuyuki0103/dsh-fight-scene-director
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Use the Codex skill 多画风打戏导演 / fight-scene-director inside DeepSeek Harness.
It turns your characters, weapons, abilities, scene, references, story goal, duration, and trajectory controls into an executable AI-video fight prompt — action causality and spatial movement first, shots second. Output is structured Chinese prompts aimed at Seedance 2.0, Seedance 2.5, and MiniMax H3.
Original skill by AIZAO Aloong — ZzzAloong/fight-scene-director (MIT). This repository is the DeepSeek Harness port. See NOTICE and the port report for exactly what changed.
What it does
- Designs a complete fight from a text brief, or revises an existing one.
- Emits image prompts for an initial-position map, a character-trajectory map, and a character-plus-camera dual-trajectory map.
- Reads your supplied character / scene / initial-position / trajectory images and applies each by its role.
- Adapts action and camera work to melee, ranged, spell, group, summon, and transformation encounters.
- Supports 15 s, 30 s, and custom durations, and appends an adjustable rhythm panel after the copyable prompt.
- Keeps characters, weapons, abilities, destruction, and spatial position continuous across cuts.
Install
Option A — straight from GitHub (recommended)
dsh plugin --profile web add github:hatsuyuki0103/dsh-fight-scene-director
dsh plugin add forwards to pnpm add, and pnpm understands the
github:user/repo spec — no npm account or published package is required.
Append #<tag> to pin a revision for reproducibility:
dsh plugin --profile web add github:hatsuyuki0103/dsh-fight-scene-director#v1.1.3
Then restart the harness so the new profile layer is composed.
Option A2 — prebuilt tarball (no git, no build step)
Every release attaches the packed artifact, which pnpm installs directly:
dsh plugin --profile web add https://github.com/hatsuyuki0103/dsh-fight-scene-director/releases/download/v1.1.3/dsh-fight-scene-director-1.1.3.tgz
Use this when git-over-HTTPS is blocked on your network, or when you want a byte-pinned artifact rather than a branch.
Option B — from a local checkout
git clone https://github.com/hatsuyuki0103/dsh-fight-scene-director.git
dsh plugin --profile web add /absolute/path/to/dsh-fight-scene-director
Option C — manual link
Add the checkout to your profile dependencies and bundle list yourself
(~/.dsh/profiles/web/package.json):
{
"dependencies": {
"dsh-fight-scene-director": "link:/absolute/path/to/dsh-fight-scene-director"
},
"dsh": {
"profile": {
"bundles": ["…existing bundles…", "dsh-fight-scene-director"]
}
}
}
Verify the install
After restarting, confirm the plugin joined the profile's bundle layers — this is the check that actually distinguishes "installed" from "installed and mounted":
# 1. the dependency is present
dsh plugin --profile web list
# 2. the composed profile tree carries the plugin's row
dsh --profile web --dump-config > tree.yml
grep -B1 -A2 'id: dsh-fight-scene-director' tree.yml # macOS / Linux
Select-String 'id: dsh-fight-scene-director' tree.yml -Context 1,2 # Windows PowerShell
Step 2 must print the row with id: dsh-fight-scene-director and
name: dsh-fight-scene-director. A dependency without a composed row is
installed but never mounted. (The skill provider's own internal name is
fsd-skills; that appears in logger output, never as a patch row id.)
Inside a session, ask for a fight scene in plain words — the skill is
model-invocable, so 帮我设计一段 30 秒的剑客对决打戏 is enough. To invoke it
explicitly, type the skill as its own word:
/fight-scene-director
If the skill does not appear:
- confirm the plugin landed as a bundle layer (step 2 above) — a dependency
without
dsh.bundleis installed but never mounted; - confirm you restarted the harness (profile bundles compose at boot);
- check
package.json→dsh.bundle.patchresolves tocordis.patch.yml; - look for
dsh-fight-scene-director: skipped …warnings in the harness log — a skill file that fails the frontmatter contract is skipped with a reason rather than silently dropped.
Adding or changing skills needs a restart
The skill registry caches the collected catalogue, and the provider can only ask for a re-collection from inside a call the registry has already made. So:
- Editing or removing the bundled skill while a session is live is picked up automatically — the next load notices the file changed, drops the stale entry, and asks the registry to re-collect.
- Adding a brand-new skill file (including via
extraSkillDirs) does not appear until you restart the harness. There is no filesystem watcher in this provider; it reads the directory only when the registry asks it to.
Configure
The plugin accepts inline config in your profile's cordis.patch.yml / agent
preset. The row id is the package name:
- id: dsh-fight-scene-director
name: dsh-fight-scene-director
config:
enableSkills: true # set false to unmount this package's skill
extraSkillDirs: [] # additional skill roots served by this provider
maxSkills: 100 # catalog entry cap, integer >= 1
Invalid values are rejected loudly rather than ignored: maxSkills must be an
integer >= 1 (0 would silently empty the catalog), extraSkillDirs must be
an array of non-empty strings, and enableSkills must be a boolean. null or a
missing config means "use defaults".
Uninstall
dsh plugin --profile web remove dsh-fight-scene-director
Then restart. Removing the dependency drops the bundle layer on the next boot; no files are written outside the installed package.
Two caveats worth knowing:
- Do not mount this plugin more than once per profile. Cordis loader entry ids are global to the composed tree, so a second row with the same id fails at boot. The id is the package name precisely so that this is the only reachable collision.
- Installing from a local checkout (
link:) then moving or deleting that directory leaves the profile unable to boot (cannot resolve profile bundle). Remove the profile entry first, or install from GitHub instead. dsh plugin removeremoves the dependency and the bundle layer but can leave thenode_moduleslink behind; it is inert once the bundle layer is gone.
Repository layout
index.mjs host plugin entry (name / inject / apply)
lib/skills-provider.mjs embedded, lazy skill provider
skills/fight-scene-director/ the skill itself (SKILL.md + references/)
cordis.patch.yml profile bundle patch
test/ contract + knowledge-fidelity gates
docs/ port report, upstream copies, repro recipe
Development
node --test "test/*.test.mjs"
No dependencies to install — the tests use Node built-ins only. The suite enforces two things worth knowing about:
references/*.mdmust stay byte-identical to the pinned upstream commit (gate T3.4, hashes intest/fixtures/upstream-hashes.json). Changing them on purpose means updating that fixture and saying so inCHANGELOG.md.- The provider must reject forged candidates (gates T2.5–T2.7). Skill definitions are borrowed by object identity, so only candidates this provider produced can be loaded.
License
MIT. The port is © 2026 hatsuyuki0103; the original skill is
© 2026 AIZAO Aloong, also MIT. Both license texts ship in this repository
(LICENSE, LICENSE.upstream).
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-skill-explorer★ 9959
Skill center for the dsh web GUI: browse all loaded skills grouped by source, enable or disable model invocation, create new skills, and delete into a recoverable trash.
iflytek/skillhub#dsh★ 5358
Browse and search a SkillHub registry and manage local skill installation, updates, and removal inside DeepSeek Harness. Targets DSH 0.2.0-rc.2 and 0.2.1-rc.2; not yet compatible with 0.2.1-rc.3.
QingYunA/answer-me-with-html★ 5085
Answers a question with a one-page visual HTML explainer: the model writes a short Markdown draft and the bundled `am` CLI builds the page, with flow, sequence, tree, timeline and ER diagrams, tables and callouts.
hyhmrright/brooks-lint★ 1556
Provides six code quality skills for code review, architecture audits, technical debt, test quality, health dashboards, and remediation.
GanyuanRan/Aegis★ 1411
Software-engineering method pack for coding agents, with skills for baseline-first planning, systematic debugging, prompt hygiene, verification before completion, and repair/retirement tracking.
superdesigndev/superdesign-skill★ 935
Design skill for UI and marketing graphics on the Superdesign canvas: reads the repo for context, extracts its design system, then generates and iterates branchable design drafts, flow pages, and reusable components through the Superdesign CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.