仓库结构
text
skin.json 皮肤注册、ResourceLoader、Hooks
includes/
SkinChroma.php extends SkinMustache,注入 sitename/logo/search/edit 数据
Hooks.php Preferences 字段、body data-* 属性
templates/skin.mustache body-only Mustache 模板
resources/
styles/tokens.css 生成的 MD3 token(浅色/深色/auto)
styles/tokens-presets.css
styles/base.css 布局与组件
styles/extensions.css 扩展/特殊页覆盖
styles/codex-bridge.css
scripts/chroma.js 抽屉、主题、布局、阅读模式、scroll-spy、snackbar
i18n/ en / qqq / zh-hans / zh-hant
tools/ token / preset 生成器渲染链路
- MediaWiki 调用
SkinChroma::getTemplateData(); SkinChroma在父类数据上补充sitename、link-search、has-logo、is-editable、link-edit;templates/skin.mustache只输出 body 内容,<head>由 MediaWiki 核心负责;Hooks::onOutputPageBodyAttributes()把用户偏好写成data-chroma-*;resources/scripts/chroma.js只做渐进增强。
不要做的事
- 不要在模板里输出
<html>、<head>、<body>; - 不要把带
dependencies的模块放进 skinstyles选项(会被 ClientHtml 丢弃); - 不要硬编码颜色,优先
--md-sys-*; - 不要跨分支合并
skin.json的requires/menus配置。