关于 brand-yml
brand-yml 是用于创建和使用 `_brand.yml` 的技能,面向需要在 Shiny 应用和 Quarto 文档中统一品牌设置的用户。它指导配置颜色、字体、标志和元信息,并提供相应集成与故障排查参考。
主要功能
- 01创建和修改 `_brand.yml`
- 02配置颜色、字体、标志与元信息
- 03指导 Shiny for R 集成
- 04指导 Shiny for Python 集成
- 05指导 Quarto 集成
- 06验证配置并排查问题
适用场景
- 01从品牌指南生成 `_brand.yml`
- 02为 Shiny 应用应用品牌主题
- 03在 Quarto 文档中统一品牌样式
- 04排查颜色、字体或 YAML 配置问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posit-dev/ skills --skill brand-yml安装后在 Claude Code 中输入/brand-yml确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/brand-yml-in-r.mdbrand-yml-spec.mdquarto.mdshiny-python.mdshiny-r.md详细介绍
brand.yml 技能
创建并使用 _brand.yml 文件,在 Shiny 应用和 Quarto 文档中保持品牌风格一致。
什么是 brand.yml?
brand.yml 是一种基于 YAML 的格式,可将品牌指南转换为机器可读的文件,供 Shiny 和 Quarto 使用。单个 _brand.yml 文件可定义:
- 颜色 - 调色板和语义颜色(主要颜色、成功、警告等)
- 排版 - 字体、字号、字重、行高
- 徽标 - 多种尺寸以及浅色/深色变体
- 元数据 - 公司名称、链接、身份信息
文件命名约定
- 标准名称:
_brand.yml(Shiny 和 Quarto 会自动发现) - 自定义名称:任意名称,例如
company-brand.yml(需要显式指定路径) - 位置:通常位于项目根目录,或
_brand/、brand/子目录中
决策树
确定用户的目标,并遵循相应的工作流:
- 要创建新的 _brand.yml 文件? → 遵循“创建 brand.yml 文件”
- 要在 Shiny for R 中使用 brand.yml? → 阅读
references/shiny-r.md - 要在 Shiny for Python 中使用 brand.yml? → 阅读
references/shiny-python.md - 要在 Quarto 中使用 brand.yml? → 阅读
references/quarto.md - 要在 R 中通用地使用 brand.yml? → 阅读
references/brand-yml-in-r.md(R Markdown、主题设置函数、程序化访问) - 要修改现有的 _brand.yml? → 遵循“修改现有文件”
- 要排查集成问题? → 遵循“故障排除”
创建 brand.yml 文件
根据品牌指南创建 _brand.yml 文件时:
步骤 1:收集信息
收集品牌信息:
- 颜色:主要颜色、次要颜色、强调色及其十六进制值
- 字体:字体系列及其来源(Google Fonts、本地文件等)
- 徽标:不同尺寸的徽标文件路径或 URL
- 公司信息:名称、网站、社交链接(可选)
步骤 2:阅读规范
加载 references/brand-yml-spec.md,了解完整的 brand.yml 结构、字段选项和语法。
步骤 3:逐步构建文件
先添加必要部分,再添加可选元素:
最小可用的 _brand.yml:
color:
palette:
brand-blue: "#0066cc"
primary: brand-blue
background: "#ffffff"
typography:
fonts:
- family: Inter
source: google
weight: [400, 600]
base: Inter
按需添加颜色:
color:
palette:
brand-blue: "#0066cc"
brand-orange: "#ff6600"
brand-gray: "#666666"
primary: brand-blue
secondary: brand-gray
warning: brand-orange
foreground: "#333333"
background: "#ffffff"
添加排版详情:
typography:
fonts:
- family: Inter
source: google
weight: [400, 600, 700]
style: [normal, italic]
- family: Fira Code
source: google
weight: [400, 500]
base:
family: Inter
size: 16px
line-height: 1.5
headings:
family: Inter
weight: 600
monospace: Fira Code
添加徽标:
logo:
small: logos/icon.png
medium: logos/header.png
large: logos/full.svg
添加元数据信息:
meta:
name: Company Name
link: https://example.com
步骤 4:遵循最佳实践
遵循 references/brand-yml-spec.md 中的规则:
- 所有字段均为可选项,只包含所需内容
- 使用十六进制颜色格式:
"#0066cc" - 尽可能使用简单语法(字符串优先于对象)
- 使用小写名称并以连字符分隔:
brand-blue、success-green - 所有 URL 都包含
https:// - 在引用颜色/字体之前先定义它们
- 对于颜色范围(深浅变化),选择中间色
步骤 5:验证结构
检查以下内容:
- YAML 语法有效(缩进正确,十六进制颜色使用引号)
- 颜色引用与调色板名称一致
- 字体系列在使用前已定义
- 文件路径相对于
_brand.yml所在位置 - 所有 URL 都包含协议(
https://)
修改现有文件
修改现有的 _brand.yml 文件时:
- 读取当前文件,了解现有结构
- 查阅 brand-yml-spec.md,了解有效的字段选项
- 保持一致性,遵循现有的命名模式
- 保留引用关系 - 如果其他颜色/元素引用了某个名称,请一致地更新
- 测试集成 - 确认更改在 Shiny/Quarto 中正确生效
常见修改:
- 添加颜色:添加到
color.palette,然后在语义颜色中引用 - 更改字体:在
typography.fonts中更新,并确保所需字重/样式可用 - 添加徽标变体:使用
light/dark结构来定义多个变体 - 浅色/深色模式:为颜色添加
light和dark变体
与 Shiny for R 搭配使用
当用户希望将 brand.yml 应用于 Shiny for R 应用时:
- 阅读
references/shiny-r.md,了解完整的集成指南 - 关键函数:
bs_theme(brand = TRUE)或bs_theme(brand = "path") - 自动发现:将
_brand.yml放在应用根目录 - 页面函数:适用于
page_fluid()、page_sidebar()等函数
快速示例:
library(shiny)
library(bslib)
ui <- page_fluid(
theme = bs_theme(brand = TRUE),
# ... UI elements
)
与 Shiny for Python 搭配使用
当用户希望将 brand.yml 应用于 Shiny for Python 应用时:
- 阅读
references/shiny-python.md,了解完整的集成指南 - 关键函数:
ui.Theme.from_brand(__file__) - 自动发现:将
_brand.yml放在应用根目录 - 安装:需要运行
pip install "shiny[theme]"
快速示例(Shiny Express):
from shiny.express import ui
ui.page_opts(theme=ui.Theme.from_brand(__file__))
快速示例(Shiny Core):
from shiny import App, ui
app_ui = ui.page_fluid(
theme=ui.Theme.from_brand(__file__),
# ... UI elements
)
与 Quarto 搭配使用
当用户希望将 brand.yml 应用于 Quarto 文档时:
- 阅读
references/quarto.md,了解完整的集成指南 - 自动发现:将
_brand.yml与_quarto.yml一起放在项目根目录 - 支持的格式:HTML、仪表板、RevealJS、Typst PDF
- 主题叠加:使用
brand关键字控制优先级
快速示例(文档):
---
title: "My Document"
format:
html:
brand: _brand.yml
---
快速示例(_quarto.yml 中的项目):
project:
brand: _brand.yml
format:
html:
theme: default
故障排除
品牌未生效
Shiny:
- 确认文件名为
_brand.yml(带下划线) - 检查文件位置(应用目录或父目录)
- 尝试指定路径:
bs_theme(brand = "path/to/_brand.yml")或ui.Theme.from_brand("path") - 对于 Python:确保已安装
libsass
Quarto:
- 确认
_brand.yml位于项目根目录 - 确保项目级品牌设置存在
_quarto.yml - 尝试在文档前置元数据中指定路径
- 如果使用自定义主题,请检查主题叠加顺序
颜色不匹配
- 确保十六进制颜色值带引号:
"#0066cc",而不是#0066cc - 确认颜色名称与调色板定义完全一致
- 检查语义颜色(primary、success 等)是否引用了有效的调色板名称
- 确保先定义调色板,再定义语义颜色
字体未加载
- 确认 Google Fonts 的拼写正确且字体可用
- 检查网络连接(Google Fonts 需要联网)
- 确保指定了
source: google或source: bunny - 确认排版元素中的字体系列名称完全一致
- 对于 Typst:使用
quarto typst fonts检查字体缓存
YAML 语法错误
- 检查缩进(使用空格,不要使用制表符)
- 确保十六进制颜色值带引号:
"#447099" - 确保冒号后有空格:
primary: blue - 检查列表项是否带有连字符:
- family: Inter - 如果语法问题仍未解决,请使用 YAML 验证器
参考文档
根据需要加载以下文档,了解详细信息:
references/brand-yml-spec.md:完整的 brand.yml 规范,包含所有章节、字段、示例和验证规则references/shiny-r.md:通过 bslib 在 Shiny for R 中使用 brand.yml(bs_theme、自动发现、Shiny 专属集成)references/shiny-python.md:通过 ui.Theme 在 Shiny for Python 中使用 brand.yml(from_brand()、安装、性能)references/quarto.md:在 Quarto 中使用 brand.yml(格式、浅色/深色模式、叠加、扩展、Typst)references/brand-yml-in-r.md:R 的常规用法,包括 R Markdown 集成、主题设置函数(ggplot2、gt、flextable、plotly、thematic)以及以编程方式访问品牌设置
关键原则
- 从简单开始:先使用颜色和一种字体系列
- 保持简洁:仅包含与品牌直接相关的字段
- 优先使用标准名称:尽可能使用 Bootstrap 颜色名称(blue、green、red 等)
- 使用自动发现:将文件命名为
_brand.yml,以便自动检测 - 在不同目标中测试:确认品牌设置在所有预期格式中均正确生效
- 版本控制:将
_brand.yml纳入 git 仓库
常见模式
浅色/深色模式颜色
color:
primary:
light: "#0066cc"
dark: "#3399ff"
background:
light: "#ffffff"
dark: "#1a1a1a"
foreground:
light: "#333333"
dark: "#e0e0e0"
Quarto 1.8 版本新增了浅色/深色颜色模式,目前 R 或 Python 的 brand.yml 包尚不支持。
Logo 变体
logo:
images:
logo-dark: logos/logo-dark.svg
logo-white: logos/logo-white.svg
icon: logos/icon.png
small: icon
medium:
light: logo-dark
dark: logo-white
多种字体粗细
typography:
fonts:
- family: Inter
source: google
weight: [300, 400, 500, 600, 700]
style: [normal, italic]
base:
family: Inter
weight: 400
headings:
family: Inter
weight: 600
颜色别名
color:
palette:
navy: "#003366"
ocean-blue: "#0066cc"
sky-blue: "#3399ff"
primary-color: ocean-blue # Alias
brand-blue: ocean-blue # Alias
blue: sky-blue # Alias for primary colors
primary: brand-blue
尽可能包含 Bootstrap 颜色名称,可直接定义,也可用作别名:blue、indigo、purple、pink、red、orange、yellow、green、teal、cyan、white、black。这有助于保持一致性,而且使用 brand.yml 的工具会自动识别这些颜色。
提示
- 先阅读规范:创建或修改文件时,务必查阅
brand-yml-spec.md - 针对框架的指南:加载相应的参考文档(shiny-r.md、shiny-python.md、quarto.md),了解集成详情
- 逐步验证:从最简结构开始,测试后再逐步增加复杂度
- 使用引用:在调色板中定义颜色,再在语义颜色中按名称引用
- 标准文件名:使用
_brand.yml,以便自动发现 - 显式路径:仅在必要时(共享品牌、多个变体)使用自定义文件名