creating-explainer-videos-skill 2.0.0__py3-none-any.whl

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.
Files changed (79) hide show
  1. creating_explainer_videos_skill/__init__.py +3 -0
  2. creating_explainer_videos_skill/__main__.py +4 -0
  3. creating_explainer_videos_skill/assets/creating-explainer-videos/SKILL.md +114 -0
  4. creating_explainer_videos_skill/assets/creating-explainer-videos/agents/openai.yaml +4 -0
  5. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/extension.json +15 -0
  6. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/profile.json +12 -0
  7. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/reference.md +6 -0
  8. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/assets/style-tokens.css +11 -0
  9. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/extension.json +15 -0
  10. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/profile.json +12 -0
  11. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/reference.md +5 -0
  12. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/extension.json +15 -0
  13. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/profile.json +14 -0
  14. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/reference.md +6 -0
  15. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/assets/style-tokens.css +11 -0
  16. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/extension.json +15 -0
  17. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/profile.json +12 -0
  18. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/reference.md +5 -0
  19. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/extension.json +15 -0
  20. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/profile.json +11 -0
  21. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/reference.md +5 -0
  22. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/assets/style-tokens.css +10 -0
  23. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/extension.json +15 -0
  24. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/profile.json +16 -0
  25. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/reference.md +5 -0
  26. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/extension.json +15 -0
  27. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/profile.json +9 -0
  28. creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/reference.md +6 -0
  29. creating_explainer_videos_skill/assets/creating-explainer-videos/presets/ai-principle-series/preset.json +21 -0
  30. creating_explainer_videos_skill/assets/creating-explainer-videos/presets/general-mechanism/preset.json +19 -0
  31. creating_explainer_videos_skill/assets/creating-explainer-videos/references/agent-forward-validation.md +17 -0
  32. creating_explainer_videos_skill/assets/creating-explainer-videos/references/content-and-script-contract.md +75 -0
  33. creating_explainer_videos_skill/assets/creating-explainer-videos/references/engineering-pipeline.md +75 -0
  34. creating_explainer_videos_skill/assets/creating-explainer-videos/references/extension-api.md +65 -0
  35. creating_explainer_videos_skill/assets/creating-explainer-videos/references/install-and-portability.md +68 -0
  36. creating_explainer_videos_skill/assets/creating-explainer-videos/references/release-qc-and-publishing.md +69 -0
  37. creating_explainer_videos_skill/assets/creating-explainer-videos/references/visual-systems-and-motion.md +34 -0
  38. creating_explainer_videos_skill/assets/creating-explainer-videos/references/visual-template-collection.md +186 -0
  39. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/cli.mjs +211 -0
  40. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/constants.mjs +27 -0
  41. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/extensions.mjs +106 -0
  42. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/gates.mjs +127 -0
  43. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/json.mjs +40 -0
  44. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/media.mjs +262 -0
  45. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/narration.mjs +75 -0
  46. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/process.mjs +41 -0
  47. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/project.mjs +186 -0
  48. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/renderer.mjs +107 -0
  49. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/state.mjs +196 -0
  50. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/templates.mjs +107 -0
  51. creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/toolchain.mjs +127 -0
  52. creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/.npmignore +2 -0
  53. creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/explainer-video.mjs +11 -0
  54. creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/extension_catalog.py +156 -0
  55. creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/test_extensions.py +46 -0
  56. creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/test_skill.py +70 -0
  57. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/cover.css +1 -0
  58. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/motion.mjs +32 -0
  59. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/scene.css +2 -0
  60. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/template.json +48 -0
  61. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/cover.css +1 -0
  62. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/motion.mjs +20 -0
  63. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/scene.css +2 -0
  64. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/template.json +45 -0
  65. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/cover.css +1 -0
  66. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/motion.mjs +39 -0
  67. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/scene.css +2 -0
  68. creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/template.json +48 -0
  69. creating_explainer_videos_skill/assets/skill-manifest.json +333 -0
  70. creating_explainer_videos_skill/cli.py +177 -0
  71. creating_explainer_videos_skill/dist_audit.py +135 -0
  72. creating_explainer_videos_skill/installer.py +351 -0
  73. creating_explainer_videos_skill/integrity.py +77 -0
  74. creating_explainer_videos_skill/resources.py +26 -0
  75. creating_explainer_videos_skill-2.0.0.dist-info/METADATA +180 -0
  76. creating_explainer_videos_skill-2.0.0.dist-info/RECORD +79 -0
  77. creating_explainer_videos_skill-2.0.0.dist-info/WHEEL +4 -0
  78. creating_explainer_videos_skill-2.0.0.dist-info/entry_points.txt +3 -0
  79. creating_explainer_videos_skill-2.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,3 @@
1
+ """Python distribution for the Creating Explainer Videos Skill."""
2
+
3
+ __version__ = "2.0.0"
@@ -0,0 +1,4 @@
1
+ from .cli import main
2
+
3
+
4
+ raise SystemExit(main())
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: creating-explainer-videos
3
+ description: Use when researching, planning, scripting, animating, rendering, auditing, or packaging a mechanism, process, system, or scientific explainer video with executable project state, narration-identical captions, cue-synchronized motion, dedicated covers, and release evidence.
4
+ ---
5
+
6
+ # Creating Explainer Videos
7
+
8
+ Create a traceable teaching product, not just an MP4. The Agent must drive the executable state machine, call the required tools, inspect their evidence, and stop at unresolved gates.
9
+
10
+ ## Start with the executable project
11
+
12
+ Use the installed CLI `explainer-video-skill`. From a copied Skill directory use `node <skill-dir>/scripts/explainer-video.mjs` instead. Run `doctor --json` before promising a render.
13
+
14
+ Create a project only after the exact question, audience, language, platform, and aspect ratio are known:
15
+
16
+ ```powershell
17
+ explainer-video-skill new <project-dir> --title "标题" --topic "要解释的精确问题" --template spatial-chamber --preset general-mechanism --json
18
+ explainer-video-skill status --json <project-dir>
19
+ explainer-video-skill next --json <project-dir>
20
+ ```
21
+
22
+ For every stage, repeat this loop:
23
+
24
+ 1. Run `status --json` and `next --json`.
25
+ 2. Read the listed required inputs and gate.
26
+ 3. Perform the real research, writing, generation, render, or review action.
27
+ 4. Write the requested evidence file; do not invent success.
28
+ 5. Run `validate <current-stage> <project-dir> --json`.
29
+ 6. Continue only when validation moves the project forward.
30
+
31
+ The stages are `discovery -> brief -> evidence -> mechanism_map -> narration_and_cues -> real_audio_timing -> scene_spec -> runnable_renderer -> render -> automated_qc -> human_listen -> publishing_package -> human_release_decision`.
32
+
33
+ ## Content contract
34
+
35
+ Read [content-and-script-contract.md](references/content-and-script-contract.md) when defining the promise, evidence, mechanism, narration, or cue map.
36
+
37
+ - Explain `input -> internal state changes -> output`, including why each step follows.
38
+ - Include one worked example and one relevant boundary, cost, control, or failure chain.
39
+ - Treat duration, scene count, and word count as depth alarms, never padding targets.
40
+ - Keep the public topic no broader than the mechanism actually taught.
41
+ - For a series, the opening sentence connects the previous output to this exact topic; the final sentence previews the next exact question. For a standalone video, open with the exact question and close with the reusable conclusion.
42
+ - Store one canonical spoken string. Captions and TTS must be character-identical after normalization.
43
+ - Remove `\_`, snake_case underscores, Markdown syntax, and other characters a TTS engine may pronounce literally. Keep technical spelling in a separate on-screen label.
44
+ - Bind every cue's narration, visible title, mechanism label, focus, action, and handoff to the same local claim.
45
+
46
+ Use primary evidence for mechanism facts. Keep source, source type, verification date, simplification, and planned visual expression in the evidence table. Community sources may expose confusion or edge cases but do not establish the mechanism by themselves.
47
+
48
+ ## Select from the visual template collection
49
+
50
+ Read [visual-template-collection.md](references/visual-template-collection.md) before choosing or modifying a template. Inspect the executable manifests with:
51
+
52
+ ```powershell
53
+ explainer-video-skill templates list --json
54
+ explainer-video-skill templates inspect paper-theatre --json
55
+ explainer-video-skill templates inspect spatial-chamber --json
56
+ explainer-video-skill templates inspect ink-explainer --json
57
+ ```
58
+
59
+ - `paper-theatre`: object identity, physical processing, evidence, sorting, comparison, and editorial transformation.
60
+ - `spatial-chamber`: systems, routes, layers, pipelines, queues, transfer, and high-impact spatial state changes.
61
+ - `ink-explainer`: derivation, formulas, causal relations, dense annotations, comparisons, and correction.
62
+
63
+ Select by knowledge structure, not decoration. A project may combine primitives, but one grammar must remain dominant. Do not copy an old scene and swap text. Do not use full-frame scanning lines, narration-length sweeps, meaningless particles, or repeated cards as substitute motion.
64
+
65
+ Use DingTalk JinBuTi/DingTalk Sans for display roles when locally licensed and installed, and Noto Sans SC or a tested CJK fallback for captions. Never package font binaries or commercial GSAP plugins without redistribution rights. Every premium plugin needs the fallback declared by its template.
66
+
67
+ ## Narration, timing, and render
68
+
69
+ Read [engineering-pipeline.md](references/engineering-pipeline.md) before implementation.
70
+
71
+ ```powershell
72
+ explainer-video-skill narration prepare <project-dir> --json
73
+ # Produce narration with the selected provider only after any required cost/credential authorization.
74
+ explainer-video-skill narration import-timing <project-dir> --timing <measured-timing.json> --json
75
+ explainer-video-skill build <project-dir> --json
76
+ explainer-video-skill render <project-dir> --json
77
+ explainer-video-skill cover <project-dir> --json
78
+ explainer-video-skill mux <project-dir> --audio <narration.wav> --json
79
+ ```
80
+
81
+ Real measured narration timing is the only final animation clock. Use deterministic paused timelines, local assets, fixed viewBoxes, and explicit cue anchors. Never use runtime randomness, remote assets, wall-clock timers, or estimated timings in a release render.
82
+
83
+ Generate a dedicated cover, not a random frame. The cover must state the exact topic and remain readable in a phone-size preview. Series/season/episode labels are preset rules, not core-package branding.
84
+
85
+ ## QC and release boundary
86
+
87
+ Read [release-qc-and-publishing.md](references/release-qc-and-publishing.md) before calling a candidate complete.
88
+
89
+ ```powershell
90
+ explainer-video-skill audit <project-dir> --json
91
+ explainer-video-skill package <project-dir> --json
92
+ ```
93
+
94
+ Automated checks must include full decode, media specifications, black/freeze/silence diagnostics, representative frames, warning frames, overflow/layout inspection, cover preview, and artifact hashes. Automation may only write `release_candidate_pending_human_listen`.
95
+
96
+ Complete three human passes on the exact hashed candidate: muted visual, audio-only, and normal watch. Record title/narration/caption/focus mismatches, clipping, unreadable text, accidental symbol speech, timing drift, dead motion, repeated composition, dirty transitions, and mixing defects with timestamps.
97
+
98
+ Only after a named reviewer listened to the whole hashed candidate may the Agent run:
99
+
100
+ ```powershell
101
+ explainer-video-skill release record-human-decision <project-dir> --decision passed --actor "<reviewer>" --complete-listen --listened-sha256 "<sha256>" --json
102
+ ```
103
+
104
+ Never infer `passed` from a render, a provider success, green tests, or file presence.
105
+
106
+ ## Extensions, presets, and portability
107
+
108
+ Read [extension-api.md](references/extension-api.md) before adding a visual, voice, research, QC, or publishing profile. Extensions are declarative, permission-listed, hash-locked, and cannot run arbitrary hooks. `general-mechanism` is domain-neutral; topic-specific behavior belongs in an explicit preset such as the included `ai-principle-series` example.
109
+
110
+ Read [install-and-portability.md](references/install-and-portability.md) for npm, Codex, other Agent hosts, migration, update, rollback, and asset-license rules.
111
+
112
+ ## Stop conditions
113
+
114
+ Stop and report the exact blocker when facts are unverified, the topic promise is broader than the explanation, canonical narration is not fixed, real audio timing is missing, title/card/narration/focus diverge, text clips or overflows, the selected template does not express the mechanism, media decode fails, licensed assets are unresolved, or human review is incomplete.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "解释型视频制作脚手架"
3
+ short_description: "调研、脚本、三套视觉模板、确定性渲染、音画同步和发布质检的一体化工作流"
4
+ default_prompt: "使用 $creating-explainer-videos 创建并执行一个机制解释视频工程;按状态机推进,依据知识结构选择模板,使用真实旁白时间,并停在未完成的人工发布门禁。"
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "douyin-release",
4
+ "type": "publishing",
5
+ "version": "1.0.0",
6
+ "displayName": "抖音发布包",
7
+ "description": "Douyin title, independent cover hierarchy, copy, topics, and pinned-comment profile.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": []
12
+ },
13
+ "capabilities": ["publishing.title", "publishing.cover", "publishing.copy", "publishing.pinned-comment"],
14
+ "permissions": ["filesystem:project-read", "filesystem:project-write"]
15
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "platform": "douyin",
3
+ "titlePattern": "主题:具体问题或核心结论",
4
+ "coverRules": [
5
+ "series-at-top-left",
6
+ "season-episode-immediately-after-series",
7
+ "exact-topic-visible",
8
+ "top-right-clean",
9
+ "phone-preview-required"
10
+ ],
11
+ "deliverables": ["title", "description", "topics", "pinned-comment", "video-path", "cover-path", "phone-cover-preview"]
12
+ }
@@ -0,0 +1,6 @@
1
+ # 抖音发布包
2
+
3
+ Use `主题:具体问题或核心结论` for the title. The independent cover shows the series label at top left, season/episode immediately after it, the exact topic, one concrete question, and one mechanism graphic; the top right remains clean.
4
+
5
+ Deliver the video path, cover path, phone preview, title, concise description, relevant topics, pinned comment, and next-episode teaser. Publishing copy cannot make claims or quote performance numbers absent from the reviewed episode.
6
+
@@ -0,0 +1,11 @@
1
+ :root {
2
+ --sheet: #f8f3e8;
3
+ --paper-2: #fffaf0;
4
+ --ink: #201e1b;
5
+ --blue: #264ac7;
6
+ --red: #dc3f36;
7
+ --yellow: #f0c331;
8
+ --green: #24845c;
9
+ --caption-bg: rgba(255, 250, 240, .96);
10
+ }
11
+
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "ink-explainer",
4
+ "type": "visual",
5
+ "version": "1.0.0",
6
+ "displayName": "Ink Explainer 手绘动态图解",
7
+ "description": "Ruled-paper, hand-drawn mechanism explanation for dense mechanisms and derivations.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": ["assets/style-tokens.css"]
12
+ },
13
+ "capabilities": ["visual.tokens", "visual.semantic-motion", "visual.cover-grammar"],
14
+ "permissions": []
15
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "style": "ink",
3
+ "styleName": "Ink Explainer 手绘动态图解",
4
+ "tokenAsset": "assets/style-tokens.css",
5
+ "motionPlugins": ["DrawSVGPlugin", "SplitText", "CustomEase"],
6
+ "coverGrammar": "top-left-series-cluster-clean-top-right",
7
+ "fontRoles": {
8
+ "displayZh": "钉钉进步体 Regular",
9
+ "latinAndNumbers": "DingTalk Sans",
10
+ "caption": "Noto Sans SC"
11
+ }
12
+ }
@@ -0,0 +1,5 @@
1
+ # Ink Explainer
2
+
3
+ Use for derivation, encoding, formulas, comparisons, relationships, and high-density mechanism teaching. Build on ruled paper with thick rounded SVG paths, blue structure, red action/error, yellow annotation, and green verified conclusions.
4
+
5
+ Each cue must visibly write, connect, split, calculate, compare, reject, or circle the current knowledge state. Redesign the scene DOM and core SVG for every episode. Never use a narration-length full-area scanning edge.
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "neutral-technical-zh",
4
+ "type": "voice",
5
+ "version": "1.0.0",
6
+ "displayName": "中文中性技术讲师",
7
+ "description": "Natural, clear Mandarin teaching voice profile for technical mechanisms.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": []
12
+ },
13
+ "capabilities": ["voice.tts-profile", "voice.pronunciation", "voice.caption-identity"],
14
+ "permissions": ["provider:tts"]
15
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "providerClass": "configurable-tts",
3
+ "language": "zh-CN",
4
+ "voiceId": "configure-on-host",
5
+ "role": "neutral-technical-teacher",
6
+ "rate": "+10%",
7
+ "pitch": "+0Hz",
8
+ "captionSource": "same-as-tts",
9
+ "pronunciationPolicy": {
10
+ "codeIdentifiers": "keep-on-screen-speak-naturally",
11
+ "underscore": "forbidden-in-spoken-text",
12
+ "abbreviations": "record-and-listen-before-timing-lock"
13
+ }
14
+ }
@@ -0,0 +1,6 @@
1
+ # 中文中性技术讲师
2
+
3
+ Use a natural Mandarin teaching delivery: clear logic, restrained emotion, short single-action sentences, and stable pace. The voice ID remains host-configurable so the package does not assume a paid provider or account entitlement.
4
+
5
+ Caption and TTS come from one string. Keep code spelling on screen but replace `_` and other symbol names with natural spoken wording. Listen to English terms, abbreviations, formulas, numbers, the first sentence, and the final preview before timing is locked.
6
+
@@ -0,0 +1,11 @@
1
+ :root {
2
+ --cream: #efe1c1;
3
+ --sheet: #fff8e8;
4
+ --ink: #211e19;
5
+ --red: #df4637;
6
+ --blue: #2766bd;
7
+ --yellow: #efbd38;
8
+ --green: #2f8d63;
9
+ --caption-bg: rgba(255, 248, 232, .96);
10
+ }
11
+
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "paper-theatre",
4
+ "type": "visual",
5
+ "version": "1.0.0",
6
+ "displayName": "Paper Theatre 纸艺编辑剧场",
7
+ "description": "Physical paper-object transformation for process, evidence, identity, and rules.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": ["assets/style-tokens.css"]
12
+ },
13
+ "capabilities": ["visual.tokens", "visual.semantic-motion", "visual.cover-grammar"],
14
+ "permissions": []
15
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "style": "paper",
3
+ "styleName": "Paper Theatre 纸艺编辑剧场",
4
+ "tokenAsset": "assets/style-tokens.css",
5
+ "motionPlugins": ["DrawSVGPlugin", "MorphSVGPlugin", "Flip", "CustomEase"],
6
+ "coverGrammar": "top-left-series-cluster-clean-top-right",
7
+ "fontRoles": {
8
+ "displayZh": "钉钉进步体 Regular",
9
+ "latinAndNumbers": "DingTalk Sans",
10
+ "caption": "Noto Sans SC"
11
+ }
12
+ }
@@ -0,0 +1,5 @@
1
+ # Paper Theatre
2
+
3
+ Use when the mechanism is best understood as objects being cut, stamped, sorted, folded, compressed, or handed forward. Preserve identity while the object changes state.
4
+
5
+ Different mechanism roles require different silhouettes and operations. Do not turn every idea into the same paper card. Keep shadows, torn edges, tape, and rotation subordinate to readable knowledge actions.
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "primary-source-research",
4
+ "type": "research",
5
+ "version": "1.0.0",
6
+ "displayName": "一手资料研究",
7
+ "description": "Primary-source evidence profile for explaining mechanisms, systems, and scientific processes.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": []
12
+ },
13
+ "capabilities": ["research.primary-sources", "research.fact-table", "research.current-verification"],
14
+ "permissions": ["network:read"]
15
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "sourcePriority": [
3
+ "original-research-or-primary-record",
4
+ "official-documentation-or-standard",
5
+ "official-repository-or-dataset"
6
+ ],
7
+ "communityRole": "discovery-or-counterexample-only",
8
+ "evidenceFields": ["claim", "source", "sourceType", "verifiedAt", "teachingSimplification", "visualExpression"],
9
+ "currentVerification": "required-for-versioned-products-APIs-standards-benchmarks-and-prices",
10
+ "illustrativeNumbers": "label-as-teaching-example-not-measurement"
11
+ }
@@ -0,0 +1,5 @@
1
+ # Primary-source research
2
+
3
+ Use primary records, original research, official documentation, standards, repositories, and authoritative datasets for mechanism facts. Community material may reveal confusing cases or failure symptoms, but does not establish a mechanism by itself.
4
+
5
+ For every key claim record the source, source type, verification date, teaching simplification, and planned visual expression. Label invented numbers as teaching examples rather than measurements. Recheck time-sensitive APIs, products, standards, prices, and performance claims immediately before scripting.
@@ -0,0 +1,10 @@
1
+ :root {
2
+ --void: #080b12;
3
+ --panel: #121a29;
4
+ --ink: #eef4ff;
5
+ --cyan: #56d8ff;
6
+ --violet: #9b7cff;
7
+ --amber: #ffc457;
8
+ --alert: #ff5f70;
9
+ --caption-bg: rgba(8, 11, 18, .92);
10
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "spatial-chamber",
4
+ "type": "visual",
5
+ "version": "1.0.0",
6
+ "displayName": "Spatial Chamber 空间叙事舱",
7
+ "description": "Perspective, path, depth, and occlusion grammar for systems, routing, and multi-stage flows.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": ["assets/style-tokens.css"]
12
+ },
13
+ "capabilities": ["visual.tokens", "visual.semantic-motion", "visual.spatial-depth", "visual.cover-grammar"],
14
+ "permissions": []
15
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "style": "spatial",
3
+ "styleName": "Spatial Chamber 空间叙事舱",
4
+ "tokenAsset": "assets/style-tokens.css",
5
+ "motionPlugins": ["MotionPathPlugin", "DrawSVGPlugin", "Flip", "CustomEase"],
6
+ "fallbacks": {
7
+ "MotionPathPlugin": "svg-path-sampling",
8
+ "DrawSVGPlugin": "stroke-dashoffset"
9
+ },
10
+ "coverGrammar": "top-left-identity-central-spatial-mechanism-clean-edge",
11
+ "fontRoles": {
12
+ "displayZh": "钉钉进步体 Regular",
13
+ "latinAndNumbers": "DingTalk Sans",
14
+ "caption": "Noto Sans SC"
15
+ }
16
+ }
@@ -0,0 +1,5 @@
1
+ # Spatial Chamber
2
+
3
+ Use when the explanation depends on location, route, layers, transfer, queues, or several components acting in sequence. Put one state-changing object on an intentional path through a spatial system instead of stacking interchangeable cards.
4
+
5
+ Depth and camera movement must encode knowledge: foreground establishes the current state, the mid-ground shows transformation, and the background previews destination or consequence. Keep labels facing the viewer, protect caption and title safe areas, and use static SVG path sampling when premium motion plugins are unavailable.
@@ -0,0 +1,15 @@
1
+ {
2
+ "apiVersion": 1,
3
+ "id": "strict-release-qc",
4
+ "type": "qc",
5
+ "version": "1.0.0",
6
+ "displayName": "严格发布质检",
7
+ "description": "Automated media evidence plus muted, audio-only, and normal-watch human gates.",
8
+ "entrypoints": {
9
+ "reference": "reference.md",
10
+ "profile": "profile.json",
11
+ "assets": []
12
+ },
13
+ "capabilities": ["qc.media", "qc.visual", "qc.audio", "qc.release-decision"],
14
+ "permissions": ["filesystem:project-read", "filesystem:project-write", "process:ffmpeg", "process:ffprobe"]
15
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "blackDetectSeconds": 0.2,
3
+ "freezeDetectSeconds": 6.5,
4
+ "silenceDetectSeconds": 0.6,
5
+ "durationToleranceSeconds": 0.35,
6
+ "requiredHumanPasses": ["muted-visual", "audio-only", "normal-watch"],
7
+ "candidateState": "release_candidate_pending_human_listen",
8
+ "publishState": "passed"
9
+ }
@@ -0,0 +1,6 @@
1
+ # 严格发布质检
2
+
3
+ Run content/source checks, page/runtime/layout checks, full MP4 decode, media specification probing, black/freeze/silence detection, representative frames, warning-time frames, and a contact sheet.
4
+
5
+ Then complete muted visual, audio-only, and normal-watch reviews. Automation can only produce a release candidate. A named human must complete all passes before `release_decision: passed`.
6
+
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "ai-principle-series",
4
+ "version": "1.0.0",
5
+ "displayName": "AI 底层原理图解系列示例",
6
+ "description": "Example preset preserving the production rules learned from the AI principle explainer series without branding the core package.",
7
+ "template": null,
8
+ "extensions": {
9
+ "voice": "neutral-technical-zh",
10
+ "research": "primary-source-research",
11
+ "qc": "strict-release-qc",
12
+ "publishing": "douyin-release"
13
+ },
14
+ "seriesRules": {
15
+ "opening": "one-sentence-recap-and-exact-topic",
16
+ "closing": "one-sentence-next-episode-preview",
17
+ "cover": "series-season-episode-topic-in-top-left-cluster",
18
+ "depth": "teach-input-state-change-output-boundary-and-failure",
19
+ "captionSource": "canonical-narration"
20
+ }
21
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "id": "general-mechanism",
4
+ "version": "1.0.0",
5
+ "displayName": "通用机制解释",
6
+ "description": "Domain-neutral starting point for explaining inputs, internal state changes, outputs, boundaries, and failures.",
7
+ "template": null,
8
+ "extensions": {
9
+ "voice": "neutral-technical-zh",
10
+ "research": "primary-source-research",
11
+ "qc": "strict-release-qc",
12
+ "publishing": "douyin-release"
13
+ },
14
+ "contentRules": {
15
+ "requiredMechanismFields": ["input", "internalChanges", "output", "boundaries", "failures"],
16
+ "opening": "state-the-exact-question",
17
+ "closing": "summarize-the-mechanism-and-preview-the-next-question"
18
+ }
19
+ }
@@ -0,0 +1,17 @@
1
+ # Agent forward validation
2
+
3
+ Use fresh Agent sessions with one process topic, one science topic, and one domain-specific preset topic. The test passes only when the Agent performs the workflow, not when it merely repeats the documentation.
4
+
5
+ Record whether each run:
6
+
7
+ - calls `doctor`, `status`, `next`, and `validate`;
8
+ - chooses a template from the knowledge structure and explains the choice;
9
+ - completes the mechanism/evidence contract before implementing scenes;
10
+ - produces a runnable renderer and dedicated cover;
11
+ - normalizes canonical narration and imports measured timing;
12
+ - keeps captions identical to narration;
13
+ - runs media/visual evidence checks;
14
+ - reports missing tools and paid-provider boundaries honestly;
15
+ - stops at `human_listen` until a named reviewer assesses the exact artifact hash.
16
+
17
+ A generated file, successful provider response, or passing automated test is not forward-validation success if the Agent bypassed state, evidence, or human gates.
@@ -0,0 +1,75 @@
1
+ # Content and script contract
2
+
3
+ ## 1. Exact promise
4
+
5
+ Complete `brief.json` before scripting:
6
+
7
+ - one exact viewer question;
8
+ - one answer the viewer can repeat;
9
+ - audience and prior knowledge;
10
+ - evidence and uncertainty requirements;
11
+ - scope and exclusions;
12
+ - platform, aspect ratio, language, and depth profile;
13
+ - previous/next connection only when the project is part of a series.
14
+
15
+ The public topic must cover exactly what the video teaches. If the mechanism explains only one stage of a broader concept, name that stage in the title and cover.
16
+
17
+ ## 2. Mechanism completeness
18
+
19
+ `mechanism-map.json` must include:
20
+
21
+ 1. input objects and representations;
22
+ 2. internal state changes in causal order;
23
+ 3. output and why it follows;
24
+ 4. one worked numerical, symbolic, sample, or system-state example;
25
+ 5. one relevant failure, boundary, cost, or control;
26
+ 6. a reconstruction that lets the viewer restate the chain.
27
+
28
+ Use `1700–2200` Chinese characters, `30–45` cues, `10–11` scenes, and `300–420` seconds as a deep-video baseline when the brief calls for a full lesson. They are depth alarms rather than mandatory padding. A shorter result needs a written completeness rationale; a longer result needs a pacing and platform rationale.
29
+
30
+ ## 3. Evidence table
31
+
32
+ For every important claim record `claim`, `source`, `sourceType`, `verifiedAt`, `teachingSimplification`, and `visualExpression`. Prefer primary records, original research, standards, official documentation, repositories, or datasets. Mark invented numbers as teaching examples. Recheck anything versioned, priced, regulated, scheduled, benchmarked, or otherwise time-sensitive immediately before the script is frozen.
33
+
34
+ ## 4. Scene and cue contracts
35
+
36
+ Every scene in `scene-spec.json` needs:
37
+
38
+ ```text
39
+ id, title, knowledgePoint, input, transformation, output, compositionTask
40
+ ```
41
+
42
+ Every row in `script/narration.json` and `script/cues.json` needs:
43
+
44
+ ```text
45
+ id, sceneId, text, focus, from, action, to, handoff
46
+ ```
47
+
48
+ `text` is the canonical TTS and caption string. Cue start and duration are added only from measured audio. The visible scene title, active mechanism label, narration, caption, and animation focus must answer the same local question.
49
+
50
+ ## 5. Writing rules
51
+
52
+ - One cue explains one action or judgment.
53
+ - Introduce the effect before its formal term.
54
+ - Split long thoughts in canonical narration; never shorten only the caption.
55
+ - Keep code/formula spelling in an on-screen field separate from spoken text.
56
+ - Normalize escaped underscores, snake_case, Markdown markers, raw URLs, and punctuation that TTS may pronounce literally.
57
+ - Record pronunciation decisions for English terms, abbreviations, formulas, numbers, and names.
58
+ - Generate speech at a natural rate. Never slow it to meet an arbitrary duration.
59
+
60
+ For a series, the first sentence joins the previous result to this exact question and the final sentence states the next exact topic plus its value. For standalone work, the first sentence states the exact question and the final sentence reconstructs the reusable answer.
61
+
62
+ ## 6. Authoring order
63
+
64
+ 1. Verify the question and facts.
65
+ 2. Complete the mechanism and failure chain.
66
+ 3. Write understanding beats.
67
+ 4. Choose the dominant visual grammar.
68
+ 5. Map beats to varied composition tasks.
69
+ 6. Write single-action canonical cues.
70
+ 7. Validate semantic alignment and depth.
71
+ 8. Generate/listen to real narration.
72
+ 9. Import measured timing.
73
+ 10. Implement final animation anchors.
74
+
75
+ Never infer knowledge completeness from scene count and never begin final motion from estimated narration time.