dsh-hyperframes 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +30 -1
- package/README.md +34 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.js +35 -2
- package/package.json +63 -63
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 stardustlc
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.en.md
CHANGED
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
# dsh-hyperframes
|
|
4
4
|
|
|
5
|
+
[](https://awesome-dsh-plugin.com)
|
|
6
|
+
|
|
5
7
|
DSH (DeepSeek Harness) video-creation skill plugin: installing it registers the five official HyperFrames by HeyGen skills into DSH (video from HTML: compositions, GSAP animation, captions, voiceovers, audio-reactive visuals, website-to-video).
|
|
6
8
|
|
|
9
|
+
## Compatibility
|
|
10
|
+
|
|
11
|
+
Verified against `@deepseek-ai/dsh@0.1.1-rc.2` on 2026-08-26. Built for the cordis patch-bundle plugin model (`cordis.patch.yml` + `dsh.bundle.patch`). No runtime imports of `@deepseek-ai/*` internals.
|
|
12
|
+
|
|
7
13
|
## Installation
|
|
8
14
|
|
|
9
15
|
```bash
|
|
@@ -12,6 +18,15 @@ dsh plugin --profile web add dsh-hyperframes
|
|
|
12
18
|
|
|
13
19
|
After restarting, say "turn this website into a HyperFrames video" to trigger it.
|
|
14
20
|
|
|
21
|
+
## Uninstall
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
dsh plugin --profile web remove dsh-hyperframes
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Then restart the web service. To clean up fully, also remove the plugin entry from your profile `cordis.patch.yml` if you overrode it.
|
|
28
|
+
|
|
29
|
+
|
|
15
30
|
## Skills
|
|
16
31
|
|
|
17
32
|
| Skill | Purpose |
|
|
@@ -30,6 +45,20 @@ Node.js ≥ 22 + FFmpeg (`npx hyperframes`).
|
|
|
30
45
|
|
|
31
46
|
Ported from the official OpenAI Codex HyperFrames by HeyGen plugin cache: frontmatter converted to the DSH format, Codex-only `agents/` stripped, and all internal references verified.
|
|
32
47
|
|
|
48
|
+
## Multi-harness
|
|
49
|
+
|
|
50
|
+
Skills use the open Agent Skills (SKILL.md) format — **not just DSH**. Copy the directories under `skills/` into another agent's skills directory:
|
|
51
|
+
|
|
52
|
+
| Agent | Skills directory |
|
|
53
|
+
| :-- | :-- |
|
|
54
|
+
| Claude Code | `~/.claude/skills/` |
|
|
55
|
+
| Cursor | `.cursor/skills/` (or project-local `skills/`) |
|
|
56
|
+
| Gemini CLI | `~/.gemini/skills/` |
|
|
57
|
+
| OpenAI Codex | `~/.codex/skills/` |
|
|
58
|
+
|
|
59
|
+
Port once, use everywhere.
|
|
60
|
+
|
|
61
|
+
|
|
33
62
|
## License
|
|
34
63
|
|
|
35
|
-
MIT for the porting arrangement; skill content copyright remains with HeyGen.
|
|
64
|
+
MIT for the porting arrangement; skill content copyright remains with HeyGen.
|
package/README.md
CHANGED
|
@@ -2,8 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
# dsh-hyperframes
|
|
4
4
|
|
|
5
|
+
> **在 20+ 个 agent 里写视频**:HyperFrames by HeyGen 五件套,HTML 即视频。
|
|
6
|
+
|
|
7
|
+
   
|
|
8
|
+
|
|
9
|
+
[](https://awesome-dsh-plugin.com)
|
|
10
|
+
|
|
11
|
+
|
|
5
12
|
DSH(DeepSeek Harness)视频创作技能插件:**安装即把 HyperFrames by HeyGen 官方移植技能五件套注册进 DSH**(HTML 写视频:合成、GSAP 动画、字幕、配音、音频响应、网址转视频)。
|
|
6
13
|
|
|
14
|
+
## 兼容性
|
|
15
|
+
|
|
16
|
+
在 `@deepseek-ai/dsh@0.1.1-rc.2` 上验证(2026-08-26)。遵循 cordis 组合包补丁模型(`cordis.patch.yml` + `dsh.bundle.patch`),运行时不 import 任何 `@deepseek-ai/*` 内部模块。
|
|
17
|
+
|
|
7
18
|
## 安装
|
|
8
19
|
|
|
9
20
|
```bash
|
|
@@ -12,6 +23,15 @@ dsh plugin --profile web add dsh-hyperframes
|
|
|
12
23
|
|
|
13
24
|
重启后说「把这个网址做成 HyperFrames 视频」即可触发。
|
|
14
25
|
|
|
26
|
+
## 卸载
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
dsh plugin --profile web remove dsh-hyperframes
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
卸载后重启 Web 服务。如需彻底清理,可再手动删除自己 profile `cordis.patch.yml` 中覆盖的插件行。
|
|
33
|
+
|
|
34
|
+
|
|
15
35
|
## 技能清单
|
|
16
36
|
|
|
17
37
|
| 技能 | 用途 |
|
|
@@ -30,6 +50,20 @@ Node.js ≥ 22 + FFmpeg(`npx hyperframes`)。
|
|
|
30
50
|
|
|
31
51
|
技能移植自 OpenAI Codex 官方 HyperFrames by HeyGen 插件缓存:frontmatter 已转换为 DSH 格式,codex 专属 `agents/` 已剔除,全部内部引用校验。
|
|
32
52
|
|
|
53
|
+
## 跨平台使用
|
|
54
|
+
|
|
55
|
+
技能采用开放的 Agent Skills(SKILL.md)格式,**不止 DSH 能用**——把 `skills/` 下的目录复制到其他 agent 的技能目录即可:
|
|
56
|
+
|
|
57
|
+
| Agent | 技能目录 |
|
|
58
|
+
| :-- | :-- |
|
|
59
|
+
| Claude Code | `~/.claude/skills/` |
|
|
60
|
+
| Cursor | `.cursor/skills/`(或项目内 `skills/`)|
|
|
61
|
+
| Gemini CLI | `~/.gemini/skills/` |
|
|
62
|
+
| OpenAI Codex | `~/.codex/skills/` |
|
|
63
|
+
|
|
64
|
+
一次移植,处处可用。
|
|
65
|
+
|
|
66
|
+
|
|
33
67
|
## License
|
|
34
68
|
|
|
35
69
|
MIT(移植编排);技能内容版权归 HeyGen。
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** cordis 服务注入:apply 里要用 ctx.skills,必须显式声明。 */
|
|
2
|
+
export declare const name = "hyperframes-skills";
|
|
2
3
|
export declare const inject: string[];
|
|
3
4
|
/** 技能注册定义(最小面)。 */
|
|
4
5
|
export interface SkillRegistration {
|
|
@@ -16,12 +17,21 @@ export interface SkillsPluginContext {
|
|
|
16
17
|
skills: {
|
|
17
18
|
register(definition: SkillRegistration): () => void;
|
|
18
19
|
};
|
|
20
|
+
tools?: {
|
|
21
|
+
register(definition: Record<string, unknown>): () => void;
|
|
22
|
+
};
|
|
19
23
|
on?(event: string, listener: () => void): () => void;
|
|
20
24
|
}
|
|
21
25
|
/** 随包分发的技能清单。 */
|
|
22
26
|
export declare const SKILL_NAMES: readonly ["hyperframes", "hyperframes-cli", "hyperframes-registry", "website-to-hyperframes", "gsap"];
|
|
23
27
|
/** 打包技能目录的绝对路径。 */
|
|
24
28
|
export declare function bundledSkillsDir(): string;
|
|
29
|
+
/** 检查随包技能资源完整性:每个技能的 SKILL.md 是否存在。 */
|
|
30
|
+
export declare function checkBundledSkills(): Array<{
|
|
31
|
+
name: string;
|
|
32
|
+
ok: boolean;
|
|
33
|
+
detail: string;
|
|
34
|
+
}>;
|
|
25
35
|
/** 拆分 SKILL.md 的 frontmatter 与正文。 */
|
|
26
36
|
export declare function parseSkillFile(text: string): {
|
|
27
37
|
name: string;
|
package/lib/index.js
CHANGED
|
@@ -6,18 +6,27 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module dsh-hyperframes
|
|
8
8
|
*/
|
|
9
|
-
import { readFileSync } from 'node:fs';
|
|
9
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
12
|
import YAML from 'yaml';
|
|
13
13
|
/** cordis 服务注入:apply 里要用 ctx.skills,必须显式声明。 */
|
|
14
|
-
export const
|
|
14
|
+
export const name = 'hyperframes-skills';
|
|
15
|
+
export const inject = ['skills', 'tools'];
|
|
15
16
|
/** 随包分发的技能清单。 */
|
|
16
17
|
export const SKILL_NAMES = ["hyperframes", "hyperframes-cli", "hyperframes-registry", "website-to-hyperframes", "gsap"];
|
|
17
18
|
/** 打包技能目录的绝对路径。 */
|
|
18
19
|
export function bundledSkillsDir() {
|
|
19
20
|
return fileURLToPath(new URL('../skills/', import.meta.url));
|
|
20
21
|
}
|
|
22
|
+
/** 检查随包技能资源完整性:每个技能的 SKILL.md 是否存在。 */
|
|
23
|
+
export function checkBundledSkills() {
|
|
24
|
+
return SKILL_NAMES.map((skillName) => {
|
|
25
|
+
const file = join(bundledSkillsDir(), skillName, 'SKILL.md');
|
|
26
|
+
const ok = existsSync(file);
|
|
27
|
+
return { name: skillName, ok, detail: ok ? file : 'SKILL.md 缺失:' + file };
|
|
28
|
+
});
|
|
29
|
+
}
|
|
21
30
|
/** 拆分 SKILL.md 的 frontmatter 与正文。 */
|
|
22
31
|
export function parseSkillFile(text) {
|
|
23
32
|
const match = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(text);
|
|
@@ -65,6 +74,30 @@ export function apply(ctx) {
|
|
|
65
74
|
console.warn('[dsh-hyperframes] 技能 ' + skillName + ' 加载失败:' + (error instanceof Error ? error.message : String(error)));
|
|
66
75
|
}
|
|
67
76
|
}
|
|
77
|
+
if (typeof ctx.tools?.register === 'function') {
|
|
78
|
+
disposers.push(ctx.tools.register({
|
|
79
|
+
name: 'hyperframes_health',
|
|
80
|
+
description: 'dsh-hyperframes 自检:检查随包技能资源(SKILL.md)是否完整。遇到问题时先运行本工具定位。',
|
|
81
|
+
parameters: { type: 'object', properties: {} },
|
|
82
|
+
output: {
|
|
83
|
+
schema: { type: 'object', additionalProperties: true },
|
|
84
|
+
render(_args, value) {
|
|
85
|
+
const rec = (value ?? {});
|
|
86
|
+
const skills = Array.isArray(rec.skills) ? rec.skills : [];
|
|
87
|
+
const lines = ['dsh-hyperframes 自检' + (rec.ok === true ? ':技能资源完整。' : ':发现缺失。')];
|
|
88
|
+
for (const item of skills) {
|
|
89
|
+
const s = (item ?? {});
|
|
90
|
+
lines.push('- ' + String(s.name) + ':' + (s.ok === true ? '✅' : '❌ ' + String(s.detail ?? '')));
|
|
91
|
+
}
|
|
92
|
+
return [{ type: 'text', text: lines.join('\n') }];
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
async execute() {
|
|
96
|
+
const skills = checkBundledSkills();
|
|
97
|
+
return { ok: skills.every((s) => s.ok), plugin: 'dsh-hyperframes', skills };
|
|
98
|
+
},
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
68
101
|
if (typeof ctx.on === 'function') {
|
|
69
102
|
ctx.on('dispose', () => {
|
|
70
103
|
for (const dispose of disposers)
|
package/package.json
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "dsh-hyperframes",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "DSH 视频创作技能插件:注册 HyperFrames by HeyGen 官方移植技能五件套(hyperframes / hyperframes-cli / hyperframes-registry / website-to-hyperframes / gsap),安装即用。",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "lib/index.js",
|
|
7
|
-
"types": "lib/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./lib/index.d.ts",
|
|
11
|
-
"default": "./lib/index.js"
|
|
12
|
-
},
|
|
13
|
-
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
14
|
-
"./package.json": "./package.json"
|
|
15
|
-
},
|
|
16
|
-
"files": [
|
|
17
|
-
"lib",
|
|
18
|
-
"skills",
|
|
19
|
-
"cordis.patch.yml",
|
|
20
|
-
"README.md",
|
|
21
|
-
"README.en.md"
|
|
22
|
-
],
|
|
23
|
-
"scripts": {
|
|
24
|
-
"build": "tsc -p tsconfig.json",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
],
|
|
42
|
-
"license": "MIT",
|
|
43
|
-
"engines": {
|
|
44
|
-
"node": ">=
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"yaml": "^2.9.0"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"@types/node": "^24.0.0",
|
|
51
|
-
"typescript": "^5.6.0"
|
|
52
|
-
},
|
|
53
|
-
"repository": {
|
|
54
|
-
"type": "git",
|
|
55
|
-
"url": "https://github.com/STARDUSTLC666/dsh-hyperframes"
|
|
56
|
-
},
|
|
57
|
-
"bugs": {
|
|
58
|
-
"url": "https://github.com/STARDUSTLC666/dsh-hyperframes/issues"
|
|
59
|
-
},
|
|
60
|
-
"homepage": "https://github.com/STARDUSTLC666/dsh-hyperframes#readme",
|
|
61
|
-
"author": "stardustlc",
|
|
62
|
-
"packageManager": "pnpm@11.7.0"
|
|
63
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-hyperframes",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "DSH 视频创作技能插件:注册 HyperFrames by HeyGen 官方移植技能五件套(hyperframes / hyperframes-cli / hyperframes-registry / website-to-hyperframes / gsap),安装即用。",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/index.d.ts",
|
|
11
|
+
"default": "./lib/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"lib",
|
|
18
|
+
"skills",
|
|
19
|
+
"cordis.patch.yml",
|
|
20
|
+
"README.md",
|
|
21
|
+
"README.en.md"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc -p tsconfig.json",
|
|
25
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
26
|
+
"test": "pnpm run build && node --test \"test/*.test.mjs\"",
|
|
27
|
+
"prepublishOnly": "pnpm run build"
|
|
28
|
+
},
|
|
29
|
+
"dsh": {
|
|
30
|
+
"bundle": {
|
|
31
|
+
"patch": "./cordis.patch.yml"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"dsh",
|
|
36
|
+
"deepseek-harness",
|
|
37
|
+
"plugin",
|
|
38
|
+
"skills",
|
|
39
|
+
"video",
|
|
40
|
+
"dsh-plugin"
|
|
41
|
+
],
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=22"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"yaml": "^2.9.0"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/node": "^24.0.0",
|
|
51
|
+
"typescript": "^5.6.0"
|
|
52
|
+
},
|
|
53
|
+
"repository": {
|
|
54
|
+
"type": "git",
|
|
55
|
+
"url": "git+https://github.com/STARDUSTLC666/dsh-hyperframes.git"
|
|
56
|
+
},
|
|
57
|
+
"bugs": {
|
|
58
|
+
"url": "https://github.com/STARDUSTLC666/dsh-hyperframes/issues"
|
|
59
|
+
},
|
|
60
|
+
"homepage": "https://github.com/STARDUSTLC666/dsh-hyperframes#readme",
|
|
61
|
+
"author": "stardustlc",
|
|
62
|
+
"packageManager": "pnpm@11.7.0"
|
|
63
|
+
}
|