create-bitfun-skin 是面向当前 BitFun Appearance 皮肤系统的 Codex Skill。它告诉模型哪些界面表面可以修改、如何编写声明式 .bitfun-appearance 包、怎样验证包与当前 BitFun 宿主,并通过风格示例指导具体的视觉实现。
这个仓库只描述当前契约,不维护其他格式或内部重构历史。
- 查询当前注册的 Scenes、Components、Parts、States、Facets 和 Renderer。
- 查询 Style IR 属性、CSS Token 和 Widget Token。
- 初始化、检查、打包和分析稀疏 Appearance 覆盖包。
- 检查资源引用、完整性哈希、ZIP 安全和包体限制。
- 使用真实 BitFun checkout 的 Validator 和 Compiler 进行严格验证。
- 创建带 VP9 动态背景、静态 poster 和派生 WebP 资产的电影感皮肤。
- 记录构建输入、媒体编码选择、输出哈希和运行时检查状态。
- 从
skin-build.json重建,并检查资源或 manifest 漂移。
仓库按三层组织:
- 根 Skill 是当前 BitFun Appearance 契约的入口和任务路由器。
scripts/提供与视觉风格无关的确定性工具。examples/只描述特定风格如何使用当前契约。
Registry 决定“能不能改”,风格示例决定“这类设计怎么改”。示例中的组件覆盖、颜色、透明度、裁剪和材质不是其他皮肤的默认规则。
create-bitfun-skin/
├── SKILL.md
├── agents/
│ └── openai.yaml
├── references/
│ ├── appearance-registry.json
│ ├── package-contract.md
│ ├── renderer-contracts.md
│ ├── authoring-workflow.md
│ ├── media-quality-policy.md
│ └── style-example-contract.md
├── scripts/
│ ├── bitfun_appearance.py
│ ├── build_support.py
│ ├── media_support.py
│ ├── sync_registry.py
│ ├── verify_host.py
│ └── test_*.py
└── examples/
└── cinematic-animated-wallpaper/
├── SKILL.md
├── references/
└── scripts/
- Python 3.10+
- Git
- Pillow:
python -m pip install Pillow - FFmpeg 和 FFprobe:生成或检查动态壁纸时需要
- BitFun 源码 checkout:只在同步 Registry 或执行生产宿主验证时需要
执行宿主验证前,应确保目标 BitFun checkout 已安装其 Node/pnpm 依赖。
克隆到 Codex Skills 目录:
git clone https://github.com/kev1n77/create-bitfun-skin.git `
"$env:USERPROFILE\.codex\skills\create-bitfun-skin"macOS 或 Linux:
git clone https://github.com/kev1n77/create-bitfun-skin.git \
~/.codex/skills/create-bitfun-skin安装后可以在请求中显式使用:
使用 $create-bitfun-skin 检查这个 BitFun 皮肤包。
使用 $create-bitfun-skin 和我提供的视频创建一个电影感 BitFun 皮肤。
在仓库根目录运行:
python scripts/bitfun_appearance.py contract list components
python scripts/bitfun_appearance.py contract list scenes
python scripts/bitfun_appearance.py contract list renderers
python scripts/bitfun_appearance.py contract show components <component-id>
python scripts/bitfun_appearance.py contract show scenes <scene-id>
python scripts/bitfun_appearance.py contract properties
python scripts/bitfun_appearance.py contract tokens css
python scripts/bitfun_appearance.py contract tokens widget不要根据 DOM、另一个皮肤或示例 surface plan 推测 Part。只有当前 Registry 返回的表面、Part、状态和属性可以写入包中。
初始化稀疏覆盖:
python scripts/bitfun_appearance.py init <project-dir> `
--id <skin-id> `
--name "<Skin name>" `
--mode dark编辑 <project-dir>/appearance.json 后验证并打包:
python scripts/bitfun_appearance.py validate <project-dir>
python scripts/bitfun_appearance.py build <project-dir> `
--output <skin-id>.bitfun-appearance
python scripts/bitfun_appearance.py validate <skin-id>.bitfun-appearance分析已有项目或归档:
python scripts/bitfun_appearance.py inspect <project-or-archive>当前内置的风格示例是 cinematic-animated-wallpaper。它适合动画角色壁纸、透明电影感材质、图片卡片和插画弹窗。
先生成时间戳接触表:
python examples/cinematic-animated-wallpaper/scripts/build_cinematic_skin.py contact `
--source <wallpaper.mp4> `
--output <skin-root>检查 contact-sheet.png 并选择合适的时间和裁剪,再执行完整构建:
python examples/cinematic-animated-wallpaper/scripts/build_cinematic_skin.py build `
--source <wallpaper.mp4> `
--output <skin-root> `
--id <skin-id> `
--name "<Skin name>" `
--frame-time <seconds> `
--palette <palette.json> `
--bitfun-repo <bitfun-repo>重建或检查:
python examples/cinematic-animated-wallpaper/scripts/build_cinematic_skin.py rebuild `
--output <skin-root>
python examples/cinematic-animated-wallpaper/scripts/build_cinematic_skin.py check `
--output <skin-root>默认视频策略为 --video-quality auto:
- 小型素材先尝试 VP9 编码级无损。
- 大型素材从 CRF 20 开始。
- 只有输出超过 64 MiB 时才逐步提高 CRF。
- 最终选择和每次尝试都会记录在
skin-build.json。
默认静态策略为 --static-quality-mode auto:先尝试无损 WebP,超限后按质量从高到低回退。
可显式指定:
--video-quality lossless
--video-quality high
--video-quality balanced
--video-crf 24
--static-quality-mode lossless
--static-quality 95编码级无损不代表派生文件与原视频完全一致。宿主处理仍会限制时长和分辨率、转换为 30 FPS / yuv420p,并移除音频和元数据。
- 归档扩展名:
.bitfun-appearance - 归档格式:ZIP
- 根 manifest:
appearance.json - 单个背景视频:最大 64 MiB
- 压缩归档:最大 96 MiB
- 展开内容:最大 128 MiB
- 单张普通图片:最大 16 MiB
- Preview 图片:最大 4 MiB
- 背景视频:最长 60 秒,单边最大 4096 像素,总像素最大 900 万
包是声明式的,不支持 CSS 文件、选择器、HTML、脚本、字体、远程 URL、SVG 或可执行内容。视频只能通过顶层 backgroundMedia 使用,并且必须提供图片 poster。
确认 Registry 与目标 checkout 一致:
python scripts/sync_registry.py <bitfun-repo> --check该检查比较实际导出的 Appearance 契约;如果 Registry 内容未变,BitFun 中无关提交造成的 revision 差异不会使检查失败。
使用生产 Validator 和 Compiler:
python scripts/verify_host.py <bitfun-repo> `
<skin>.bitfun-appearance `
--report host-verification.json `
--strict-warningsValidator 和 Compiler 通过只代表包可以被当前宿主接受。最终仍需导入 BitFun,检查实际界面、长内容、弹窗、独立窗口、明暗动态帧和 reduced-motion poster。
python -B scripts/test_bitfun_appearance.py
python -B scripts/test_cinematic_tools.py同步 Registry 时必须使用干净的 BitFun checkout。不要手工编辑 references/appearance-registry.json。
提交新风格示例前,请先阅读 references/style-example-contract.md。新示例必须只使用当前 Registry 注册的表面,并将通用构建和媒体能力留在根 scripts/ 中。