--- name: create-wot-ui-theme description: '为 wot-ui 生成单文件主题 SCSS,并在用户明确要求接入时追加 App.vue 的 `@use`。当用户要做品牌主题、语义变量落地、单文件主题接入时使用。' argument-hint: '主题名、主题风格、主色阶、自定义范围、是否需要接入 App.vue' --- # Create Wot-ui Theme Skill 这个 skill 用于在 `wot-ui` 项目中生成“单文件主题 SCSS”方案。它约束主题文件在 `src/themes/styles` 下完成语义变量定义与挂载,`App.vue` 只负责 `@use` 引入,不扩展成 light/dark 双文件结构,也不改造 `uni_modules/wot-ui/styles/theme/index.scss`。 ## 适用场景 - 用户明确要求为 `wot-ui` 生成品牌主题、业务主题或定制语义变量主题。 - 用户希望新增 `src/themes/styles/{主题名}.scss`,并把挂载逻辑也收进主题文件。 - 用户要求 `App.vue` 只保留 `@use './themes/styles/{主题名}.scss' as {主题名};` 这一类引入。 - 用户强调不要生成 dark 主题文件、不要拆成双文件主题结构、不要改内置主题入口。 ## 不适用场景 - 用户只是想知道 `wd-config-provider` 或普通 CSS 变量怎么用,这种情况优先使用 `wot-ui-v2` skill。 - 用户要做 light/dark 双主题、动态换肤系统、运行时 token 注入,这不属于本 skill 的目标结构。 - 当前仓库没有实际业务 `src/App.vue` 或主题目录时,不要臆造文件;应基于用户目标项目路径执行,或先向用户确认目标工程位置。 ## 核心约束 - 只生成一个主题文件:`src/themes/styles/{主题名}.scss`。 - 主题文件内必须同时包含: - 一个 `@mixin {主题名}-theme-vars` - `page`、`.wot-theme-{主题名}`、`.wot-theme-{主题名} .wd-root-portal` 的挂载选择器 - `App.vue` 只负责 `@use` 引入,不重复写挂载选择器。 - 所有语义变量都必须填写固定色值或 `transparent`,不要写成 `var(--wot-xxx)`。 - 不生成 `dark.scss`,不修改 `uni_modules/wot-ui/styles/theme/index.scss`。 - 如果用户没有明确要求接入 `App.vue`,默认只生成主题文件并给出应追加的 `@use` 语句。 ## 执行前确认 生成前优先确认这些信息;缺少时先问清楚再动手: 1. 主题名称,例如 `antd`、`ocean`、`forest` 2. 主题风格描述,例如品牌化、偏中性、偏高对比 3. 主色 10 阶是否全部自定义 4. `danger`、`success`、`warning` 是否沿用默认值 5. 文本、边框、填充、反馈态是否需要整体调性调整 6. 是否需要同步接入 `src/App.vue` ## 推荐流程 1. 先查看项目里是否已存在 `src/themes/styles/*.scss` 与 `src/App.vue`,确认接入位置和现有顺序。 2. 若用户未给足主题信息,先收集主题名、风格和 token 调整范围。 3. 创建 `src/themes/styles/{主题名}.scss`,按本 skill 的完整模板输出全部语义变量。 4. 如用户明确要求接入,再在 `src/App.vue` 的 `