Not in the top 1,000 by GitHub stars

anneheartrecord/charles-video-maker

Agent skill: script to narrated vertical video — code animation or real footage underneath, voiceover, subtitles, fact-check, Anatomy machines, optional Lemo-Opuscar styles

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/charles-video-maker/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 27e9d732b5f0

No earlier version was observed for comparison.

Compare on GitHub

skills/charles-video-maker/anatomy/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 27e9d732b5f0

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 27e9d732b5f01ecde2095ab642f6ae3b8e878b7e

74GitHub stars
Not availablestars in 7 days
2skills in this repository
8commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 4, 2026Nov 6, 202674

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

charles-video-maker

When your agent uses it

Make videos with code and explain ideas with machines: code-rendered videos (Canvas / SVG / WebGL / Three.js / Remotion / Manim via Playwright + FFmpeg), narrated vertical shorts from a script, isometric Anatomy figures and machine-explainer videos, optionally over real footage or in one of the 53 Lemo-Opuscar art styles. Also the Douyin mode: remake a trending 抖音 video end to end and find topics for it. Use whenever someone wants to make, animate or render a video, motion graphic, explainer or promo, turn an article or script into a video, or draw how something works, including「做抖音视频」「复刻这条抖音」「用某某风格做一期抖音」「找抖音选题」「抓 Vibe 热点」 「做个视频」「用代码做视频」「做个动效」「把这篇文章做成视频」「文字稿转视频」「口播稿做成视频」「画个原理图」 「做个等距插图」「用机器讲清楚这个概念」「做个油画风 / 水彩 / 浮世绘 / 水墨风的短片」「用原片 / 实录 / 空镜做视频」 「画面不要全是插图」. For a named Lemo-Opuscar style as a narrated vertical short, prefer this over lemo-opuscar. Not for generating footage with video models, editing in Premiere/CapCut/AE, or subtitling an existing video.

What it loads into context

Frontmatter

348 tokens

Always available to the agent

SKILL.md

5,881 tokens

When the skill is activated

Reference documents

32,946 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 先分流:要做哪一种
  2. 视频流程
  3. 文案一律交给本地 Gemini 写
  4. 工作目录
  5. 第 0 步:检查环境
  6. 第 1 步:问清楚要做什么
  7. 第 2 步:给三个方案
  8. 第 3 步:给每个方案做预览
  9. 第 4 步:写 brief.md
  10. 第 5 步:制作
  11. 第 6 步:渲染和验收
  12. 交付
  13. 遇到这些情况

Scripts executed separately

  • bridge/clock.js
  • bridge/overlay.js
  • bridge/wrap_figure.py
  • scripts/agy_image.py
  • scripts/analyze_video.py
  • scripts/audio_tools.py
  • scripts/check_env.py
  • scripts/douyin_comments.py
  • scripts/douyin_publish.py
  • scripts/douyin_radar.py
  • scripts/douyin_stats.py
  • scripts/factcheck.py
  • scripts/footage/compose.py
  • scripts/footage/genimage.py
  • scripts/footage/record.py
  • scripts/footage/source.py
  • scripts/footage/stock.py
  • scripts/gemini_copy.py
  • scripts/lemo/setup.sh
  • scripts/master_static.py
  • scripts/qa_stills.py
  • scripts/render.py
  • scripts/render_parallel.py
  • scripts/still_check.py
  • scripts/topic_name.py
  • scripts/voice/align.py
  • scripts/voice/mix.py
  • scripts/voice/score.py
  • scripts/voice/timeline.py
  • scripts/voice/tts.py
  • templates/vertical-explainer/stage.js

Files

  • SKILL.mdcore20,650 bytes
  • SKILL.mdcore20,650 bytes
  • bridge/clock.jsruns3,387 bytes
  • bridge/example/README.mddoc1,079 bytes
  • bridge/example/audio/narration.txtdoc277 bytes
  • bridge/example/audio/scenes.jsonasset345 bytes
  • bridge/example/video.jsonasset838 bytes
  • bridge/overlay.jsruns10,663 bytes
  • bridge/wrap_figure.pyruns2,728 bytes
  • references/anatomy-video.mddoc6,606 bytes
  • references/brief-template.mddoc3,478 bytes
  • references/code-stack.mddoc4,794 bytes
  • references/craft-rules.mddoc10,519 bytes
  • references/douyin-opening.mddoc9,525 bytes
  • references/douyin-remake.mddoc22,300 bytes
  • references/douyin-series.mddoc4,576 bytes
  • references/fact-check.mddoc4,437 bytes
  • references/footage-layer.mddoc7,856 bytes
  • references/gemini-copy.mddoc8,384 bytes
  • references/lemo-styles.mddoc10,054 bytes
  • references/opening-and-cover.mddoc6,375 bytes
  • references/plan-format.mddoc3,343 bytes
  • references/voiceover-pipeline.mddoc5,573 bytes
  • scripts/agy_image.pyruns4,749 bytes
  • scripts/analyze_video.pyruns3,407 bytes
  • scripts/audio_tools.pyruns8,863 bytes
  • scripts/check_env.pyruns2,526 bytes
  • scripts/douyin_comments.pyruns1,953 bytes
  • scripts/douyin_publish.pyruns6,661 bytes
  • scripts/douyin_radar.pyruns15,373 bytes
  • scripts/douyin_stats.pyruns1,305 bytes
  • scripts/factcheck.pyruns6,395 bytes
  • scripts/footage/compose.pyruns14,167 bytes
  • scripts/footage/genimage.pyruns2,625 bytes
  • scripts/footage/record.pyruns5,285 bytes
  • scripts/footage/source.pyruns5,199 bytes
  • scripts/footage/stock.pyruns6,277 bytes
  • scripts/gemini_copy.pyruns8,649 bytes
  • scripts/lemo/setup.shruns1,352 bytes
  • scripts/master_static.pyruns1,435 bytes
  • scripts/qa_stills.pyruns1,751 bytes
  • scripts/render.pyruns6,047 bytes
  • scripts/render_parallel.pyruns4,974 bytes
  • scripts/still_check.pyruns4,222 bytes
  • scripts/topic_name.pyruns1,243 bytes
  • scripts/voice/align.pyruns2,259 bytes
  • scripts/voice/mix.pyruns9,047 bytes
  • scripts/voice/score.pyruns6,207 bytes
  • scripts/voice/timeline.pyruns5,472 bytes
  • scripts/voice/tts.pyruns10,740 bytes
  • templates/vertical-explainer/audio/narration.txtdoc258 bytes
  • templates/vertical-explainer/audio/scenes.jsonasset302 bytes
  • templates/vertical-explainer/index.htmlasset1,997 bytes
  • templates/vertical-explainer/stage.jsruns9,830 bytes
Read SKILL.md

# charles-video-maker:用代码和真实素材做视频,用机器讲概念

这个 skill 起步于两个开源项目的合并:用代码逐帧渲染视频的 [xilo-opus-video](https://github.com/Kianzzz/xilo-opus-video)(含本仓库加的配音流水线),和用等距机器解释概念的 [Anatomy](https://github.com/wheresryan22/anatomy)(原样收在 `anatomy/`),再用一层桥接(`bridge/`)把 Anatomy 的机器变成可以逐帧渲染的视频画面。之后又加了素材层(真实画面打底,`scripts/footage/`)和可选的 Lemo-Opuscar 风格库。

## 先分流:要做哪一种

| 用户要的 | 走哪条路 | 从哪读起 |
|---|---|---|
| 一条视频(宣传片、动效、知识讲解、文字稿转视频) | 下面的视频流程(第 0–6 步) | 本文件 |
| 一张插图 / 交互图 / 原理图(给文档、博客、落地页用),不是视频 | Anatomy 的流程,产出 HTML、SVG 或 React 组件 | `anatomy/SKILL.md`,kit 在 `anatomy/kit/` |
| 抖音视频(「做抖音视频」「复刻这条」、给了抖音链接或原片、「用 <风格名> 做一期」;「找选题」「抓热点」「Vibe 有什么在火」先走其中的 D-1 找选题) | 复刻爆款、一锅出:蒸馏原片风格 → 重写文案 → 先测配乐再排画面 → 交付,中途不问,覆盖下面流程的多项默认值 | `references/douyin-remake.md` |
| 一条讲原理的视频,概念能对应到一台会动的机器 | 先按 Anatomy 造机器,再按视频流程配音、包装、渲染 | `references/anatomy-video.md` |

用户嫌画面全是插图、不够精美,或者手上有原视频、要讲的是产品或游戏:照样走视频流程,开工四选的「画面」选「素材打底」,见 [references/footage-layer.md](references/footage-layer.md)。
View the complete source on GitHub

Skills included

  • charles-video-maker
  • anatomy

Repository facts

License
MIT
Created
Oct 19, 2026
Last pushed
Nov 4, 2026
Forks
10
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 63 notes
  • skills/charles-video-maker/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet-light.html:158 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet-light.html:156 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet-light.html:157 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet-light.html:2222 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet.html:158 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet.html:156 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet.html:157 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet.html:2222 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer-light.html:137 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer-light.html:135 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer-light.html:136 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer.html:137 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer.html:135 Analysis incomplete: physical or joined line exceeds character limit
  • skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer.html:136 Analysis incomplete: physical or joined line exceeds character limit
Show all 462 signals by file

skills/charles-video-maker/SKILL.md

  • Network accessline 18
    这个 skill 起步于两个开源项目的合并:用代码逐帧渲染视频的 [xilo-opus-video](https://github.com/Kianzzz/xilo-opus-video)(含本仓库加的配音流水线),和用等距机器解释概念的 [Anatomy](https://github.com/wheresryan22/anatomy)(原样收在 `anatomy/`),再用一层桥接(`bridge/`)把 Anatomy 的机器变成可以逐帧渲染的视频画面。之后又加了素材层

skills/charles-video-maker/anatomy/.github/ISSUE_TEMPLATE/config.yml

  • Network accessline 2
    contact_links:   - name: Security problem     url: https://github.com/wheresryan22/anatomy/security/advisories/new
  • Network accessline 3
    - name: Security problem     url: https://github.com/wheresryan22/anatomy/security/advisories/new     about: Report security problems privately, not in a public issue.
  • Network accessline 4
    url: https://github.com/wheresryan22/anatomy/security/advisories/new

skills/charles-video-maker/anatomy/.github/workflows/ci.yml

  • Dangerous shell operationline 31
    trap 'rm -rf "$test_deps"' EXIT

skills/charles-video-maker/anatomy/.gitignore

  • Access to secretsline 5
    [Credential-related source omitted]

skills/charles-video-maker/anatomy/CHANGELOG.md

  • Network accessline 3
    All notable changes to Anatomy are recorded here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Releases follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html); entries from before the first release
  • Network accessline 14
    - A Figure no longer quotes a time to the user. The 30–90 minute estimate was often far longer than the build itself ([#41](https://github.com/wheresryan22/anatomy/issues/41)).

skills/charles-video-maker/anatomy/CODE_OF_CONDUCT.md

  • Network accessline 61
    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by direct message to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does
  • Network accessline 62
    reported to the community leaders responsible for enforcement by direct message to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does not need to be private, through an issue on the
  • Network accessline 63
    to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does
  • Network accessline 64
    not need to be private, through an issue on the [GitHub repository](https://github.com/wheresryan22/anatomy/issues). All complaints will be reviewed and investigated promptly and fairly.
  • Network accessline 65
    [GitHub repository](https://github.com/wheresryan22/anatomy/issues).
  • Network accessline 119
    This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 121
    [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 126
    For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
  • Network accessline 127
    [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
  • Network accessline 128
    [https://www.contributor-covenant.org/translations][translations].
  • Network accessline 130
    [homepage]: https://www.contributor-covenant.org
  • Network accessline 131
    [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
  • Network accessline 132
    [Mozilla CoC]: https://github.com/mozilla/diversity
  • Network accessline 133
    [FAQ]: https://www.contributor-covenant.org/faq
  • Network accessline 134
    [translations]: https://www.contributor-covenant.org/translations

skills/charles-video-maker/anatomy/CONTRIBUTING.md

  • Network accessline 16
    git clone https://github.com/wheresryan22/anatomy.git
  • Network accessline 167
    Use the [issue forms](https://github.com/wheresryan22/anatomy/issues/new/choose). For a figure that came out wrong, include the prompt, the theme, where the figure lives (HTML, SVG or React), and a screenshot or close-up of the fault.

skills/charles-video-maker/anatomy/README.md

  • Network accessline 5
    <p align="center">   <a href="https://code.claude.com/docs/en/skills"><img src="https://img.shields.io/badge/Claude_Code-skill-1b1b19?style=flat-square&logo=claude&logoColor=white" alt="Claude Code skill"></a>
  • Network accessline 6
    <a href="https://code.claude.com/docs/en/skills"><img src="https://img.shields.io/badge/Claude_Code-skill-1b1b19?style=flat-square&logo=claude&logoColor=white" alt="Claude Code skill"></a>
  • Network accessline 7
    <a href="https://agentskills.io"><img src="https://img.shields.io/badge/Agent_Skills-compatible-1b1b19?style=flat-square" alt="Agent Skills compatible"></a>
  • Network accessline 8
    <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-1b1b19?style=flat-square" alt="MIT license"></a>
  • Network accessline 9
    <a href="#requirements"><img src="https://img.shields.io/badge/node-%E2%89%A5%2020.10-1b1b19?style=flat-square&logo=nodedotjs&logoColor=white" alt="Node 20.10 or later"></a>
  • Network accessline 10
    <a href="#requirements"><img src="https://img.shields.io/badge/dependencies-0-1b1b19?style=flat-square" alt="No dependencies"></a>
  • Network accessline 11
    <a href="https://github.com/wheresryan22/anatomy/actions/workflows/ci.yml"><img src="https://github.com/wheresryan22/anatomy/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  • Network accessline 14
    <p align="center">   <a href="https://skills.wheresryan.sh/anatomy"><img src="https://img.shields.io/badge/Website-skills.wheresryan.sh%2Fanatomy-1b1b19?style=for-the-badge" alt="Website: skills.wheresryan.sh/anatomy"></a>
  • Network accessline 15
    <a href="https://skills.wheresryan.sh/anatomy"><img src="https://img.shields.io/badge/Website-skills.wheresryan.sh%2Fanatomy-1b1b19?style=for-the-badge" alt="Website: skills.wheresryan.sh/anatomy"></a>   &nbsp;   <a href="https://github.com
  • Network accessline 16
    &nbsp;   <a href="https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip"><img src="https://img.shields.io/badge/Download-ZIP-1b1b19?style=for-the-badge&logo=github&logoColor=white" alt="Download ZIP"></a>   &nbsp;
  • Network accessline 17
    <a href="https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip"><img src="https://img.shields.io/badge/Download-ZIP-1b1b19?style=for-the-badge&logo=github&logoColor=white" alt="Download ZIP"></a>
  • Network accessline 18
    &nbsp;   <a href="#install"><img src="https://img.shields.io/badge/Install-npx_skills_add-d7d7d0?style=for-the-badge&labelColor=1b1b19&logo=npm&logoColor=white" alt="Install with npx"></a> </p>
  • Network accessline 19
    <a href="#install"><img src="https://img.shields.io/badge/Install-npx_skills_add-d7d7d0?style=for-the-badge&labelColor=1b1b19&logo=npm&logoColor=white" alt="Install with npx"></a>
  • Network accessline 100
    Anatomy is a standard [Agent Skill](https://agentskills.io): a folder with a `SKILL.md` at its root. This repository is that folder. Pick one way in:
  • Network accessline 108
    | **skills CLI**, for you (MiniMax Code) | `npx skills add wheresryan22/anatomy -g -a minimax-code` | `~/.minimax/skills/anatomy` | | **skills CLI**, for one project | `npx skills add wheresryan22/anatomy` | `.claude/skills/anatomy` for Cla
  • Network accessline 109
    | **skills CLI**, for one project | `npx skills add wheresryan22/anatomy` | `.claude/skills/anatomy` for Claude Code, `.agents/skills/anatomy` for Antigravity, OpenCode and Codex, `.minimax/skills/anatomy` for MiniMax Code | | **git**, for 
  • Network accessline 110
    | **git**, for you (Claude Code) | `git clone https://github.com/wheresryan22/anatomy.git ~/.claude/skills/anatomy` | `~/.claude/skills/anatomy` |
  • Network accessline 111
    | **git**, for you (Antigravity) | `git clone https://github.com/wheresryan22/anatomy.git ~/.gemini/antigravity/skills/anatomy` | `~/.gemini/antigravity/skills/anatomy` |
  • Network accessline 112
    | **git**, for you (OpenCode) | `git clone https://github.com/wheresryan22/anatomy.git ~/.config/opencode/skills/anatomy` | `~/.config/opencode/skills/anatomy` |
  • Network accessline 113
    | **git**, for you (Codex) | `git clone https://github.com/wheresryan22/anatomy.git ~/.agents/skills/anatomy` | `~/.agents/skills/anatomy` |
  • Network accessline 114
    | **git**, for you (MiniMax Code) | `git clone https://github.com/wheresryan22/anatomy.git ~/.minimax/skills/anatomy` | `~/.minimax/skills/anatomy` | | **git**, for one project | `git clone https://github.com/wheresryan22/anatomy.git .claud
  • Network accessline 115
    | **git**, for one project | `git clone https://github.com/wheresryan22/anatomy.git .claude/skills/anatomy` | `.claude/skills/anatomy` (Claude Code and OpenCode) or `.agents/skills/anatomy` (Antigravity, OpenCode, Codex and MiniMax Code) |
  • Network accessline 123
    The [`skills`](https://github.com/vercel-labs/skills) CLI finds the `SKILL.md` at the root of this repository and installs it as `anatomy`. By default it installs into the current project and asks which agents to set up. `-g` installs it fo
  • Network accessline 143
    [Download the ZIP](https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip), unpack it, rename the folder from `anatomy-main` to `anatomy`, and move it into `~/.claude/skills/` (Claude Code), `~/.gemini/antigravity/skills/` (Ant
  • Network accessline 148
    mkdir -p ~/.claude/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.claude/skills/anatomy
  • Network accessline 154
    mkdir -p ~/.gemini/antigravity/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.gemini/antigravity/skills/anatomy
  • Network accessline 158
    mkdir -p ~/.config/opencode/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.config/opencode/skills/anatomy
  • Network accessline 297
    | | Needed for | Notes | |---|---|---| | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/sk
  • Network accessline 298
    |---|---|---| | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/skills) or [MiniMax Code](h
  • Network accessline 299
    | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/skills) or [MiniMax Code](https://github.
  • Network accessline 316
    Made something good? Ask your agent to *"publish this figure to the Anatomy community gallery"*. It asks for a title and your GitHub name, shows what it will send, and after your yes opens a pull request on [anatomy-community](https://githu
  • Network accessline 322
    - [Report a bug](https://github.com/wheresryan22/anatomy/issues/new?template=bug_report.yml)
  • Network accessline 323
    - [Request a figure](https://github.com/wheresryan22/anatomy/issues/new?template=figure_request.yml)
  • Network accessline 328
    [MIT](LICENSE) © 2026 Ryan · [@wheresryan22](https://x.com/wheresryan22)

skills/charles-video-maker/anatomy/SECURITY.md

  • Network accessline 15
    Please don't open a public issue for a security problem. Report it privately through GitHub's [private vulnerability reporting](https://github.com/wheresryan22/anatomy/security/advisories/new) for this repository. If that link does not work

skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet-light.html

  • Network accessline 156
    .ac-marquee[data-on] .ac-marquee-art{fill:var(--anatomy-lit)} .ac-marquee-frame{fill:none;stroke:var(--anatomy-lo);stroke-width:.5px;vector-effect:non-scaling-stroke} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso
  • Network accessline 157
    .ac-marquee-frame{fill:none;stroke:var(--anatomy-lo);stroke-width:.5px;vector-effect:non-scaling-stroke} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corn
  • Network accessline 158
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 4</span><span class="iso-plate-corner" data-corner="title">Upright cabinet, sid
  • Network accessline 689
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 690
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 691
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/arcade-cabinet/arcade-cabinet.html

  • Network accessline 156
    .ac-marquee[data-on] .ac-marquee-art{fill:var(--anatomy-lit)} .ac-marquee-frame{fill:none;stroke:var(--anatomy-lo);stroke-width:.5px;vector-effect:non-scaling-stroke} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso
  • Network accessline 157
    .ac-marquee-frame{fill:none;stroke:var(--anatomy-lo);stroke-width:.5px;vector-effect:non-scaling-stroke} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corn
  • Network accessline 158
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 4</span><span class="iso-plate-corner" data-corner="title">Upright cabinet, sid
  • Network accessline 689
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 690
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 691
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/arcade-cabinet/build.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/arcade-cabinet/live.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/arcade-cabinet/parts.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/arcade-cabinet/screen.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/desk-computer/build.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer-light.html

  • Network accessline 135
    .iso-stage:focus{outline:none} .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-
  • Network accessline 136
    .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig"
  • Network accessline 137
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 2</span><span class="iso-plate-corner" data-corner="title">Desk computer</span>
  • Network accessline 668
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 669
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 670
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/desk-computer/desk-computer.html

  • Network accessline 135
    .iso-stage:focus{outline:none} .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-
  • Network accessline 136
    .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig"
  • Network accessline 137
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 2</span><span class="iso-plate-corner" data-corner="title">Desk computer</span>
  • Network accessline 668
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 669
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 670
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/dial-indicator/build.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/dial-indicator/dial-indicator-light.html

  • Network accessline 112
    body{margin:0;background:var(--anatomy-page);color:var(--anatomy-text);font:14px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased} .iso-page{width:min(650px,100% - 32px);margin:64px auto 96p
  • Network accessline 113
    .iso-page{width:min(650px,100% - 32px);margin:64px auto 96px} </style></head><body class="iso" data-theme="light"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><sp
  • Network accessline 114
    </style></head><body class="iso" data-theme="light"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><spa
  • Network accessline 645
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 646
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 647
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/dial-indicator/dial-indicator.html

  • Network accessline 112
    body{margin:0;background:var(--anatomy-page);color:var(--anatomy-text);font:14px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased} .iso-page{width:min(650px,100% - 32px);margin:64px auto 96p
  • Network accessline 113
    .iso-page{width:min(650px,100% - 32px);margin:64px auto 96px} </style></head><body class="iso" data-theme="dark"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><spa
  • Network accessline 114
    </style></head><body class="iso" data-theme="dark"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span
  • Network accessline 645
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 646
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 647
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/raptor-engine/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 889
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL_TEXT, body: back, className: "rp-back" }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-front" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g clas
  • Network accessline 890
    const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-front" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g class="rp-engine">${groups.join("")}</g></svg>`;
  • Network accessline 923
    const corners = `<div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">Raptor 2 · test stand</span><span class="iso-plate-corner" da
  • Network accessline 924
    const controls = `<div class="rp-controls"><button type="button" class="rp-fire" data-fire><span class="rp-lamp" aria-hidden="true"></span><span data-fire-label>Ignite</span></button><span class="rp-hint">Hover the engine to take it apart</
  • Network accessline 925
    const glowSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-glow" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g class="rp-glow-g"><path class="rp-rim rp-rim-soft" d="${LIP}"/><path class="rp-rim" d="${LIP}"/></g></svg>`;

skills/charles-video-maker/anatomy/examples/raptor-engine/live.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/raptor-engine/raptor-engine-light.html

  • Network accessline 471
    stroke: none; } </style><figure class="iso-figure rp"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">R
  • Network accessline 473
    </style><figure class="iso-figure rp"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">Raptor 2 · test s

skills/charles-video-maker/anatomy/examples/raptor-engine/raptor-engine.html

  • Network accessline 471
    stroke: none; } </style><figure class="iso-figure rp"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">R
  • Network accessline 473
    </style><figure class="iso-figure rp"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">Raptor 2 · test s

skills/charles-video-maker/anatomy/examples/ripple-tank/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 529
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL_TEXT, body: back, className: "rt-back" }); const layerSvg = (name, body) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rt-layer ${name}" viewBox="0 0 ${W} ${H}" ar
  • Network accessline 530
    const layerSvg = (name, body) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rt-layer ${name}" viewBox="0 0 ${W} ${H}" aria-hidden="true">${body.join("")}</svg>`;

skills/charles-video-maker/anatomy/examples/ripple-tank/live.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/ripple-tank/model.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/ripple-tank/ripple-tank-light.html

  • Network accessline 215
    } } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">
  • Network accessline 216
    } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ri
  • Network accessline 217
    </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ripp
  • Network accessline 748
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 749
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 750
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/ripple-tank/ripple-tank.html

  • Network accessline 215
    } } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">
  • Network accessline 216
    } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ri
  • Network accessline 217
    </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ripp
  • Network accessline 748
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 749
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 750
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/examples/spot-plate/art.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/drops.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/fan.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/figure.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/geometry.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/live.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/spot-plate/rig.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/art.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/figure.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/geometry.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/live.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/pose.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/rig.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/test-rig/view.ts

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/turning-dial/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 449
    const LABEL = "A combination dial on a raised door plate. A small robot hand lies on the dial's hub and turns with it: a palm with a cover plate, a connector block, a piston on two saddles with a ball joint, three jointed fingers whose tips
  • Network accessline 450
    const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: LABEL, body: BACK }); const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${li
  • Network accessline 451
    const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${list.join("")}</svg>`;

skills/charles-video-maker/anatomy/examples/turning-dial/live.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/examples/turning-dial/stress.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 191
    for (let f = 0; f < 5; f++) {     const tag = f < 4 ? `f${f}` : "thumb";     const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;
  • Network accessline 192
    const tag = f < 4 ? `f${f}` : "thumb";     const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;     out[`${tag}.j0`] = -5 + 10 * curl;
  • Network accessline 193
    const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;
  • Network accessline 223
    const BACK = [`<path class="iso-halo" d="${k.haloOf(BENCH, BENCH_TOP - 6, 6, P)}"/>`, ...layerOf("back")]; const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: "A dense robot hand on a turntable in a workshop: a stress scene f
  • Network accessline 224
    const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: "A dense robot hand on a turntable in a workshop: a stress scene for the 3D mode.", body: BACK }); const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class
  • Network accessline 225
    const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${list.join("")}</svg>`;

skills/charles-video-maker/anatomy/examples/turning-dial/turning-dial-light.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

skills/charles-video-maker/anatomy/examples/turning-dial/turning-dial-verify-light.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

skills/charles-video-maker/anatomy/examples/turning-dial/turning-dial.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

skills/charles-video-maker/anatomy/examples/turning-dial/turning-stress-light.html

  • Network accessline 157
    .iso-turn{position:relative} .iso-turn>.iso-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none} .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robo
  • Network accessline 158
    .iso-turn>.iso-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none} .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robot hand turning on a turntable
  • Network accessline 159
    .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robot hand turning on a turntable"><svg xmlns="http://www.w3.org/2000/svg" class="iso-svg" viewBox="0 0 760 560" role="img" 

skills/charles-video-maker/anatomy/kit/audit.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 230
    const rm = Math.max(...poly.map(([, r]) => r));
  • Dangerous shell operationline 233
    const spread = [0, 1, 2].map((i) => rm * Math.sqrt(Math.max(0, 1 - F.a[i] * F.a[i])));
  • Dangerous shell operationline 340
    const { aV, uV, vV, s0, s1, rm } = shape._f;
  • Dangerous shell operationline 356
    const qc = xc * xc + yc * yc - rm * rm;
  • Dangerous shell operationline 362
    } else if (xc * xc + yc * yc > rm * rm) return null;

skills/charles-video-maker/anatomy/kit/canvas-painter.mjs

  • Network accessline 1
    const CP_Q = 64; const CP_SVG = "http://www.w3.org/2000/svg";
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    const CP_SVG = "http://www.w3.org/2000/svg";
  • Network accessline 689
    const theme = holder ? holder.getAttribute("data-theme") : "dark";       const card = getComputedStyle(stage.closest(".iso-plate") || stage).getPropertyValue("--anatomy-card").trim() || "#fff";       return `<svg xmlns="http://www.w3.org/20
  • Network accessline 690
    const card = getComputedStyle(stage.closest(".iso-plate") || stage).getPropertyValue("--anatomy-card").trim() || "#fff";       return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${W} ${H}" width="${W}" height="${H}"><style>${css.r
  • Network accessline 691
    return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${W} ${H}" width="${W}" height="${H}"><style>${css.replace(/<\/style/gi, "")}</style><g class="iso" data-theme="${theme}"><g class="iso-plate" style="padding:0;box-shadow:none">${

skills/charles-video-maker/anatomy/kit/gl-shared.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/gl.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/iso-kit.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 532
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 533
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 534
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/kit/iso-kit.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 669
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";   return `<svg${attrs({     xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 670
    return `<svg${attrs({     xmlns: "http://www.w3.org/2000/svg",     class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 671
    xmlns: "http://www.w3.org/2000/svg",

skills/charles-video-maker/anatomy/kit/lathe.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/react/draw.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/react/live.tsx

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/tube.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/kit/turn-audit.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 763
    for (const Rm of rotations) {
  • Dangerous shell operationline 764
    const t = Rm ? apply(Rm, t0) : t0;

skills/charles-video-maker/anatomy/kit/turn-build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 1275
    };   const out = { svg: markup, data: packed, css: TURN_CSS, report, scene, frames, planesByName };   out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-l
  • Network accessline 1276
    const out = { svg: markup, data: packed, css: TURN_CSS, report, scene, frames, planesByName };   out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-live="
  • Network accessline 1277
    out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-live="${esc(name)}" viewBox="0 0 ${width} ${height}" aria-hidden="true"${label ? ` aria-label="${esc(la

skills/charles-video-maker/anatomy/kit/turn-fixed.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 463
    const text = atob(value);

skills/charles-video-maker/anatomy/kit/turn.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 428
    const text = atob(value);

skills/charles-video-maker/anatomy/references/verify.md

  • Network accessline 14
    node scripts/capture.mjs page.html --out shots/joint.png --zoom 200,80,220,170  # close-up at 4x, in card px node scripts/capture.mjs page.html --out shots/still.png --reduced              # reduced motion node scripts/capture.mjs http://lo
  • Network accessline 16
    node scripts/capture.mjs http://localhost:3000/docs --select "figure:nth-of-type(3) .iso-plate"   # one figure on a dev-server page

skills/charles-video-maker/anatomy/references/webgl.md

  • Network accessline 166
    const DATA = { W, H, camera: glCamera(P), plateR: 40, deck: [DECK.w / 2, DECK.r] }; const backSvg = k.figureSvg({ width: W, height: H, label: LABEL, body: back }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-
  • Network accessline 167
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL, body: back }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-layer" viewBox="0 0 ${W} ${H}" aria-hidden="true">${front.join("")}</svg>`; const st
  • Network accessline 168
    const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-layer" viewBox="0 0 ${W} ${H}" aria-hidden="true">${front.join("")}</svg>`;

skills/charles-video-maker/anatomy/scripts/audit-affine-bounds.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-cache.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-clearance-envelope.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-empty-clipping.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    try{   const page=join(directory,"figure.html");await writeFile(page,'<!doctype html><div class="iso-plate"></div>');   const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fi
  • Network accessline 22
    const page=join(directory,"figure.html");await writeFile(page,'<!doctype html><div class="iso-plate"></div>');   const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fixtures)
  • Network accessline 23
    const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fixtures){const svg='<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">'+m+'</svg>';const

skills/charles-video-maker/anatomy/scripts/audit-order-convergence.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-path-origin.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-profile.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-projection.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-slide-clearance.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-svg-attributes.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-taper.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/audit-tube-support.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/capture-current-geometry.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/capture-selector.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    const out = join(directory, "capture.png");     const content = svgOnly       ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'
  • Network accessline 16
    const content = svgOnly       ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'       : `<div class="iso-plate" tabindex="0" id="first" style="width:100px;height:80px;backgr
  • Network accessline 17
    ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'

skills/charles-video-maker/anatomy/scripts/capture.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 145
    };   try {     const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 146
    try {     const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();     const socket = new WebSocket(target.webSocketDebuggerUrl);
  • Network accessline 147
    const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();

skills/charles-video-maker/anatomy/scripts/capture.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/chrome-port.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/chrome-startup.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/curve-density.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/drive-actions.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/drive-async-until.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/drive-page-load.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    const { port } = server.address();     const actions = JSON.stringify([["eval", "document.readyState + ' ' + Boolean(window.slowScriptRan)"]]);     const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions]
  • Network accessline 26
    const actions = JSON.stringify([["eval", "document.readyState + ' ' + Boolean(window.slowScriptRan)"]]);     const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions], { timeout: 30000 });     assert.match
  • Network accessline 27
    const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions], { timeout: 30000 });

skills/charles-video-maker/anatomy/scripts/drive-turn-controller.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/drive.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 143
    };   try {     const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 144
    try {     const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();     const socket = new WebSocket(page.webSocketDebuggerUrl);
  • Network accessline 145
    const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();

skills/charles-video-maker/anatomy/scripts/drive.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/enter-key.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/fidelity-cut.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/fidelity-tube-coverage.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/fingerprint.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/inline-kit.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/line-ends.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 116
    }       else if (C === "A") {         const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");
  • Network accessline 117
    else if (C === "A") {         const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");         arc.setAttribute("d", `M${x} ${y}${command}${args}`);
  • Network accessline 118
    const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");
  • Network accessline 306
    problems.sort((a, b) => b.gap - a.gap);   if (show) {     const ns = "http://www.w3.org/2000/svg";
  • Network accessline 307
    if (show) {     const ns = "http://www.w3.org/2000/svg";     const overlay = document.createElementNS(ns, "svg");
  • Network accessline 308
    const ns = "http://www.w3.org/2000/svg";

skills/charles-video-maker/anatomy/scripts/lines-arcs.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/lines-bezier.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/lines-round.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/lines-rounded-rect.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/lines.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/lines.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/navigation.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    const server = createServer();       await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));       target = `http://127.0.0.1:${server.address().port}/`;
  • Network accessline 20
    await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));       target = `http://127.0.0.1:${server.address().port}/`;       await new Promise((resolve) => server.close(resolve));
  • Network accessline 21
    target = `http://127.0.0.1:${server.address().port}/`;

skills/charles-video-maker/anatomy/scripts/orbit-sampling.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/publish.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 251
    ...(canPush ? [] : [{ say: `make (or reuse) your fork, ${target}`, gh: ["repo", "fork", upstream, "--clone=false"] }]),     { say: "let git use your GitHub CLI login", gh: ["auth", "setup-git"] },     { say: `start ${branch} from the galler
  • Network accessline 252
    { say: "let git use your GitHub CLI login", gh: ["auth", "setup-git"] },     { say: `start ${branch} from the gallery's latest main`, git: ["fetch", "--quiet", `https://github.com/${upstream}.git`, "main"] },     { git: ["switch", "--quiet"
  • Network accessline 253
    { say: `start ${branch} from the gallery's latest main`, git: ["fetch", "--quiet", `https://github.com/${upstream}.git`, "main"] },
  • Network accessline 256
    { git: ["add", "--", folder] },     { git: ["commit", "--quiet", "-m", `Add ${title}`, "--", folder] },     { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] 
  • Network accessline 257
    { git: ["commit", "--quiet", "-m", `Add ${title}`, "--", folder] },     { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] },     { say: `open the pull request
  • Network accessline 258
    { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] },
  • Network accessline 275
    const repo = resolve(options.into);   const who = gh(["api", "user", "--jq", ".login"]);   if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth 
  • Network accessline 276
    const who = gh(["api", "user", "--jq", ".login"]);   if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth login");   const login = who.stdout.tr
  • Network accessline 277
    if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth login");

skills/charles-video-maker/anatomy/scripts/publish.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/react-dots-opacity.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/react-readout-first-write.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/react-readout-target.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/react-solid-seamless.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/react-visibility-target.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/session.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/session.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-audit-samples.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-bench.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 62
    const chrome = spawn(binary, ["--headless=new", ...(process.platform === "linux" ? ["--no-sandbox"] : []), ...(process.platform === "win32" ? ["--do-not-de-elevate"] : []), "--remote-debugging-port=0", `--user-data-dir=${profile}`, "--no-fi
  • Network accessline 63
    const port = await chromePort(chrome, profile);   const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();   const socket = new WebSocket(page.webSocketDebuggerUrl);
  • Network accessline 64
    const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 297
    }     }     return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";
  • Network accessline 298
    }     return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";   };
  • Network accessline 299
    return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";
  • Network accessline 369
    const h = H * SCALE;   let hidden = null;   const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anat
  • Network accessline 370
    let hidden = null;   const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anatomy-paper:var(--anatomy
  • Network accessline 371
    const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anatomy-paper:var(--anatomy-card)"><style>' + cs
  • Network accessline 613
    if (argv.includes("--lines")) {       const angles = Array.from({ length: 24 }, (_, i) => i * 15);       const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); 
  • Network accessline 614
    const angles = Array.from({ length: 24 }, (_, i) => i * 15);       const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); const el = document.createElementNS("h
  • Network accessline 615
    const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); const el = document.createElementNS("http://www.w3.org/2000/svg", "path"); el.setAttribute("class", "iso-

skills/charles-video-maker/anatomy/scripts/turn-convex-check.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-fidelity.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-group-reference.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-rounded-polygon.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/anatomy/scripts/turn-split-owner.test.mjs

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/bridge/clock.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/bridge/overlay.js

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/bridge/wrap_figure.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/references/footage-layer.md

  • Access to secretsline 54
    [Credential-related source omitted]

skills/charles-video-maker/references/lemo-styles.md

  • Network accessline 3
    [Lemo-Opuscar](https://github.com/lemomo-ai/lemo-opuscar)(MIT)是一套用代码拍短片的风格库:53 种画风,每种有一份 `STYLE.md`(画面、配色、字体、运动、镜头语法、声音、这种媒介独有的动作、常见坑)和一条示范片。它的渲染原理和本 skill 一样(页面暴露 `render(t)`,逐帧截图),所以能直接接进来。
  • Access to secretsline 57
    [Credential-related source omitted]

skills/charles-video-maker/references/voiceover-pipeline.md

  • Dangerous shell operationline 68
    | 批量删除临时文件时卡住 | shell 里 `rm` 被设成了交互确认 | 脚本里一律用 `rm -f` |

skills/charles-video-maker/scripts/agy_image.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 60
    a = ap.parse_args()     out = os.path.abspath(a.out); os.makedirs(os.path.dirname(out), exist_ok=True)     env = dict(os.environ, https_proxy='http://127.0.0.1:7890', http_proxy='http://127.0.0.1:7890')
  • Network accessline 61
    out = os.path.abspath(a.out); os.makedirs(os.path.dirname(out), exist_ok=True)     env = dict(os.environ, https_proxy='http://127.0.0.1:7890', http_proxy='http://127.0.0.1:7890')     k = 0
  • Network accessline 62
    [Credential-related source omitted]
  • Access to secretsline 62
    [Credential-related source omitted]
  • Instruction override signalline 69
    ask = (f'Use your image generation tool to create exactly one image, aspect ratio {a.aspect}: {a.prompt}{RULES} '                    f'Save it into the current directory as img.png. Do not write code. Then print the absolute path.')        
  • Instruction override signalline 70
    f'Save it into the current directory as img.png. Do not write code. Then print the absolute path.')             r = subprocess.run([AGY, '-p', ask, '--dangerously-skip-permissions', '--print-timeout', '300s'],                               
  • Instruction override signalline 71
    r = subprocess.run([AGY, '-p', ask, '--dangerously-skip-permissions', '--print-timeout', '300s'],

skills/charles-video-maker/scripts/analyze_video.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/audio_tools.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/check_env.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/douyin_comments.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 28
    pass         pg = ctx.new_page(); pg.on('response', on)         pg.goto(f'https://www.douyin.com/video/{aid}', timeout=60000); time.sleep(10)
  • Network accessline 29
    pg = ctx.new_page(); pg.on('response', on)         pg.goto(f'https://www.douyin.com/video/{aid}', timeout=60000); time.sleep(10)         for _ in range(4):
  • Network accessline 30
    pg.goto(f'https://www.douyin.com/video/{aid}', timeout=60000); time.sleep(10)

skills/charles-video-maker/scripts/douyin_publish.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 60
    locale='zh-CN', user_agent=UA)         pg = ctx.new_page()         nick = ctx.request.get('https://creator.douyin.com/web/api/media/user/info/').json() \
  • Network accessline 61
    pg = ctx.new_page()         nick = ctx.request.get('https://creator.douyin.com/web/api/media/user/info/').json() \             .get('user', {}).get('nickname')
  • Network accessline 62
    nick = ctx.request.get('https://creator.douyin.com/web/api/media/user/info/').json() \
  • Access to secretsline 64
    [Credential-related source omitted]
  • Network accessline 68
    pg.goto('https://creator.douyin.com/creator-micro/content/upload', timeout=180000, wait_until='domcontentloaded')

skills/charles-video-maker/scripts/douyin_radar.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 64
    tmp = COOKIE + '.all'     for k in range(tries):         subprocess.run(['yt-dlp', '--cookies-from-browser', 'chrome', '--cookies', tmp, '--skip-download', 'https://www.douyin.com/'],
  • Network accessline 65
    for k in range(tries):         subprocess.run(['yt-dlp', '--cookies-from-browser', 'chrome', '--cookies', tmp, '--skip-download', 'https://www.douyin.com/'],                        capture_output=True)
  • Network accessline 66
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 80
    try:         j = ctx.request.get('https://creator.douyin.com/web/api/media/user/info/', timeout=20000).json()
  • Network accessline 81
    j = ctx.request.get('https://creator.douyin.com/web/api/media/user/info/', timeout=20000).json()
  • Network accessline 109
    if page is not None and wait_scan:         ctx.clear_cookies()         page.goto('https://creator.douyin.com/', timeout=60000)
  • Network accessline 110
    ctx.clear_cookies()         page.goto('https://creator.douyin.com/', timeout=60000)         print(f'>>> 请在弹出的浏览器窗口里用抖音 App 扫码登录({wait_scan // 60} 分钟内),登录一次之后会一直保存', flush=True)
  • Network accessline 111
    page.goto('https://creator.douyin.com/', timeout=60000)
  • Network accessline 126
    user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36')             page = ctx.new_page(); login(ctx, page, 0 if HEADLESS else 300); page.on('response', on)        
  • Network accessline 128
    page.goto('https://www.douyin.com/search/' + urllib.parse.quote(TAG) + f'?type=video&sort_type={SORT}&publish_time={DAYS}', timeout=60000)
  • Network accessline 135
    for name in ['hashtag']:                     stage['name'] = name                     page.goto(f"https://www.douyin.com/hashtag/{hid['id']}", timeout=60000); time.sleep(6)
  • Network accessline 136
    stage['name'] = name                     page.goto(f"https://www.douyin.com/hashtag/{hid['id']}", timeout=60000); time.sleep(6)                     scroll(page, 40, name)
  • Network accessline 137
    page.goto(f"https://www.douyin.com/hashtag/{hid['id']}", timeout=60000); time.sleep(6)
  • Network accessline 176
    out = f"{D}/refs/{name + '-' if name else ''}{aid}.mp4"         for u in urls:             subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])
  • Network accessline 177
    for u in urls:             subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])             if subprocess.run(['ffprobe', '-v', 'error', out], capture_output=True)
  • Network accessline 178
    subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])
  • Network accessline 182
    def fetch(D, args):
  • Network accessline 189
    page = ctx.new_page(); login(ctx, page, 0 if HEADLESS else 300); page.on('response', on)         for aid, name in pairs:             page.goto(f'https://www.douyin.com/video/{aid}', timeout=60000)
  • Network accessline 190
    for aid, name in pairs:             page.goto(f'https://www.douyin.com/video/{aid}', timeout=60000)             for _ in range(20):
  • Network accessline 191
    page.goto(f'https://www.douyin.com/video/{aid}', timeout=60000)
  • Network accessline 222
    out = f"{D}/refs/{name + '-' if name else ''}{aid}.mp4"             for u in urls:                 subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])
  • Network accessline 223
    for u in urls:                 subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])                 if subprocess.run(['ffprobe', '-v', 'error', out], capture_outp
  • Network accessline 224
    subprocess.run(['curl', '-sL', '--max-time', '180', '-o', out, '-H', 'Referer: https://www.douyin.com/', '-A', 'Mozilla/5.0', u])
  • Network accessline 238
    ctx = p.chromium.launch_persistent_context(PROFILE, headless=HEADLESS, locale='zh-CN')             login(ctx, ctx.new_page(), 0 if HEADLESS else 300); ctx.close()     {'crawl': lambda: crawl(a.out), 'rank': lambda: rank(a.out), 'get': lambd
  • Network accessline 240
    {'crawl': lambda: crawl(a.out), 'rank': lambda: rank(a.out), 'get': lambda: get(a.out, a.ids), 'login': do_login, 'fetch': lambda: fetch(a.out, a.ids)}[a.cmd]()

skills/charles-video-maker/scripts/douyin_stats.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 9
    with sync_playwright() as p:     ctx = p.chromium.launch_persistent_context(PROFILE, headless=True, locale='zh-CN', user_agent=UA)     pg = ctx.new_page(); pg.goto('https://creator.douyin.com/creator-micro/content/manage', timeout=60000); t
  • Network accessline 10
    ctx = p.chromium.launch_persistent_context(PROFILE, headless=True, locale='zh-CN', user_agent=UA)     pg = ctx.new_page(); pg.goto('https://creator.douyin.com/creator-micro/content/manage', timeout=60000); time.sleep(5)     rows, cur = [], 
  • Network accessline 11
    pg = ctx.new_page(); pg.goto('https://creator.douyin.com/creator-micro/content/manage', timeout=60000); time.sleep(5)
  • Network accessline 12
    rows, cur = [], 0     for _ in range(10):         j = ctx.request.get('https://creator.douyin.com/janus/douyin/creator/pc/work_list',
  • Network accessline 13
    for _ in range(10):         j = ctx.request.get('https://creator.douyin.com/janus/douyin/creator/pc/work_list',                             params={'status': 0, 'count': 12, 'max_cursor': cur, 'scene': 'star_atlas',
  • Network accessline 14
    j = ctx.request.get('https://creator.douyin.com/janus/douyin/creator/pc/work_list',

skills/charles-video-maker/scripts/factcheck.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/footage/compose.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/footage/genimage.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 6
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 22
    body = {'contents': [{'parts': [{'text': a.prompt + RULES}]}],             'generationConfig': {'responseModalities': ['IMAGE'], 'imageConfig': {'aspectRatio': a.aspect}}}     req = urllib.request.Request(f'https://generativelanguage.google
  • Network accessline 23
    'generationConfig': {'responseModalities': ['IMAGE'], 'imageConfig': {'aspectRatio': a.aspect}}}     req = urllib.request.Request(f'https://generativelanguage.googleapis.com/v1beta/models/{a.model}:generateContent',                         
  • Network accessline 24
    req = urllib.request.Request(f'https://generativelanguage.googleapis.com/v1beta/models/{a.model}:generateContent',
  • Network accessline 25
    [Credential-related source omitted]
  • Network accessline 26
    try:         parts = json.load(urllib.request.urlopen(req, timeout=300))['candidates'][0]['content']['parts']     except urllib.error.HTTPError as e:
  • Network accessline 27
    parts = json.load(urllib.request.urlopen(req, timeout=300))['candidates'][0]['content']['parts']
  • Network accessline 28
    except urllib.error.HTTPError as e:         msg = json.loads(e.read() or b'{}').get('error', {}).get('message', '')[:200]         sys.exit(f'{a.model}: HTTP {e.code} {msg}' + ('\n  image quota used up: enable billing for this key (https://a
  • Network accessline 29
    msg = json.loads(e.read() or b'{}').get('error', {}).get('message', '')[:200]         sys.exit(f'{a.model}: HTTP {e.code} {msg}' + ('\n  image quota used up: enable billing for this key (https://ai.dev/rate-limit), or fill the shot with sto
  • Network accessline 30
    sys.exit(f'{a.model}: HTTP {e.code} {msg}' + ('\n  image quota used up: enable billing for this key (https://ai.dev/rate-limit), or fill the shot with stock or a recording' if e.code == 429 else ''))
  • Possible obfuscationline 33
    open(a.out, 'wb').write(base64.b64decode(img['data']))

skills/charles-video-maker/scripts/footage/record.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 4
    record.py https://example.com source/footage/demo.mp4 --actions actions.json --size 1600x900
  • Possible obfuscationline 45
    open(path, 'wb').write(base64.b64decode(e['data']))

skills/charles-video-maker/scripts/footage/source.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 28
    def fetch(a):

skills/charles-video-maker/scripts/footage/stock.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 8
    [Credential-related source omitted]
  • Access to secretsline 8
    [Credential-related source omitted]
  • Network accessline 16
    def get_json(url, headers=None):     return json.load(urllib.request.urlopen(urllib.request.Request(url, headers={**UA, **(headers or {})}), timeout=60))
  • Network accessline 17
    return json.load(urllib.request.urlopen(urllib.request.Request(url, headers={**UA, **(headers or {})}), timeout=60))
  • Network accessline 20
    def download(url, path):     with urllib.request.urlopen(urllib.request.Request(url, headers=UA), timeout=300) as r, open(path, 'wb') as f:
  • Network accessline 21
    with urllib.request.urlopen(urllib.request.Request(url, headers=UA), timeout=300) as r, open(path, 'wb') as f:
  • Network accessline 26
    def pexels(q, n, orient):     key = os.environ['PEXELS_API_KEY']     d = get_json(f'https://api.pexels.com/videos/search?query={urllib.parse.quote(q)}&per_page={n}&orientation={orient}&size=medium',
  • Network accessline 27
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Network accessline 28
    d = get_json(f'https://api.pexels.com/videos/search?query={urllib.parse.quote(q)}&per_page={n}&orientation={orient}&size=medium',
  • Network accessline 36
    def pixabay(q, n, orient):     key = os.environ['PIXABAY_API_KEY']     d = get_json(f'https://pixabay.com/api/videos/?key={key}&q={urllib.parse.quote(q)}&per_page={max(3, n)}&safesearch=true')
  • Network accessline 37
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Network accessline 38
    d = get_json(f'https://pixabay.com/api/videos/?key={key}&q={urllib.parse.quote(q)}&per_page={max(3, n)}&safesearch=true')
  • Access to secretsline 50
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]

skills/charles-video-maker/scripts/gemini_copy.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 7
    Brief format and the writing rules: references/gemini-copy.md (the prompt is read from that file). agy needs the proxy in env (it ignores the macOS system proxy); set GEMINI_PROXY to override http://127.0.0.1:7890.
  • Network accessline 8
    agy needs the proxy in env (it ignores the macOS system proxy); set GEMINI_PROXY to override http://127.0.0.1:7890.
  • Access to secretsline 14
    [Credential-related source omitted]
  • Network accessline 25
    def call_agy(prompt, model, timeout=300):     px = os.environ.get('GEMINI_PROXY', 'http://127.0.0.1:7890')
  • Network accessline 26
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]

skills/charles-video-maker/scripts/lemo/setup.sh

  • Executable scriptline 1
    #!/bin/sh
  • Network accessline 2
    # Lemo-Opuscar style library (MIT, https://github.com/lemomo-ai/lemo-opuscar): find it or download it, then hand
  • Network accessline 15
    git clone --quiet --depth 1 --filter=blob:none --sparse --branch main https://github.com/lemomo-ai/lemo-opuscar.git "$LIB"

skills/charles-video-maker/scripts/master_static.py

  • Executable scriptline 1
    Executable file

skills/charles-video-maker/scripts/qa_stills.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/render.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/render_parallel.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/still_check.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/topic_name.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/voice/align.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/voice/mix.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/voice/score.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 24
    [Credential-related source omitted]

skills/charles-video-maker/scripts/voice/timeline.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/charles-video-maker/scripts/voice/tts.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 4
    [Credential-related source omitted]
  • Access to secretsline 41
    [Credential-related source omitted]
  • Access to secretsline 43
    [Credential-related source omitted]
  • Network accessline 45
    'generationConfig': {'responseModalities': ['AUDIO'],                                  'speechConfig': {'voiceConfig': {'prebuiltVoiceConfig': {'voiceName': voice}}}}}     req = urllib.request.Request(f'https://generativelanguage.googleapis
  • Network accessline 46
    'speechConfig': {'voiceConfig': {'prebuiltVoiceConfig': {'voiceName': voice}}}}}     req = urllib.request.Request(f'https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent',                                  data=json
  • Network accessline 47
    req = urllib.request.Request(f'https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent',
  • Network accessline 48
    [Credential-related source omitted]
  • Network accessline 49
    try:         resp = urllib.request.urlopen(req, timeout=600)     except urllib.error.HTTPError as e:   # a 429 body names the exhausted quota (per minute / per day) and its limit
  • Network accessline 50
    resp = urllib.request.urlopen(req, timeout=600)
  • Possible obfuscationline 57
    raw, mime = base64.b64decode(part['data']), part.get('mimeType', '')
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]
  • Network accessline 79
    for _ in range(40):             try:                 socket.create_connection(('127.0.0.1', port), timeout=1).close(); break
  • Network accessline 80
    try:                 socket.create_connection(('127.0.0.1', port), timeout=1).close(); break             except OSError:
  • Network accessline 81
    socket.create_connection(('127.0.0.1', port), timeout=1).close(); break
  • Network accessline 82
    except OSError:                 time.sleep(0.5)         base = f'http://127.0.0.1:{port}'
  • Network accessline 83
    time.sleep(0.5)         base = f'http://127.0.0.1:{port}'     try:
  • Network accessline 84
    base = f'http://127.0.0.1:{port}'
  • Network accessline 86
    body = {'task': 'text-to-speech', 'target_id': target,                 'params': {'text': text, 'voice_id': voice, 'output_format': 'mp3'}}         req = urllib.request.Request(base.rstrip('/') + '/tln/cap/v1/invoke', data=json.dumps(body).
  • Network accessline 87
    'params': {'text': text, 'voice_id': voice, 'output_format': 'mp3'}}         req = urllib.request.Request(base.rstrip('/') + '/tln/cap/v1/invoke', data=json.dumps(body).encode(),                                      headers={'Authorization'
  • Network accessline 88
    req = urllib.request.Request(base.rstrip('/') + '/tln/cap/v1/invoke', data=json.dumps(body).encode(),
  • Network accessline 89
    [Credential-related source omitted]
  • Network accessline 90
    try:             r = json.load(urllib.request.urlopen(req, timeout=300))         except urllib.error.HTTPError as e:
  • Network accessline 91
    r = json.load(urllib.request.urlopen(req, timeout=300))
  • Network accessline 97
    url = r['results'][0]['url']         mp3 = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': 'hush-app-api/1.0'}), timeout=120).read()
  • Network accessline 98
    mp3 = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': 'hush-app-api/1.0'}), timeout=120).read()
  • Access to secretsline 120
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]

skills/charles-video-maker/templates/vertical-explainer/stage.js

  • Executable scriptline 1
    Executable file

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: 15 facts
Signal confidence: 393 facts

and 343 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md skills/charles-video-maker/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/charles-video-maker/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/charles-video-maker/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/charles-video-maker/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/charles-video-maker/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/charles-video-maker/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.