board
项目看板生成 Skill
触发条件
用户说「创建项目看板」「做个看板」「项目板」「看板生成」「board」时触发。
用户会以以下形式之一提供内容:
- 一段口述/散乱的思考(对话中的聊天文字)
- 一份逻辑大纲(已有结构的项目描述)
- 混合模式:既有大纲又有口述补充
SVG 图标资源
看板中涉及品牌/工具/平台名称时,使用 thesvg MCP 获取高质量品牌 SVG 图标,而非手绘占位符。
MCP 工具调用
search_icons(query: "github") → 搜索图标,返回 slug + variants
get_icon(slug: "github", variant: "mono") → 获取原始 SVG 代码
get_icon_url(slug: "github") → 获取 CDN 嵌入 URL
list_categories() → 浏览所有分类
使用规则
| 场景 | 做法 |
|---|---|
| 品牌名出现(GitHub、Notion、飞书等) | 调 search_icons 找到对应 slug,get_icon 取 mono 或 default variant |
| 人在/角色占位图标 | 不用品牌图标,用纯 CSS 圆点/色块 |
| 装饰性小图标(箭头、勾选等) | 用内联 SVG 原语(<svg> + <path>),保持单文件零依赖 |
嵌入方式
<!-- 方式 1:内联 SVG(推荐,零依赖) -->
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
<!-- 从 get_icon 获取的 path 内容 -->
</svg>
<!-- 方式 2:CDN URL(图标多时减少文件体积) -->
<img src="https://cdn.thesvg.org/icons/{slug}.svg" alt="{name}" width="18" height="18" style="opacity:0.7" />
变体选择:深色模式优先 default 或 light variant;浅色模式优先 default 或 dark。mono variant 在两种模式下都可使用,用 CSS filter 或直接调整 fill/stroke 适配主题。
不适用的场景
- 人名/角色 → 用色块圆点,不用图标
- 抽象概念(如"壁垒""时间窗口")→ 用语义色标记,不用图标
- 图标库中找不到的 → 用简洁的内联 SVG 原语,不要硬凑
第一步:结构梳理
收到用户内容后,不要立即写代码。先做结构梳理,输出一份「看板蓝图」给用户确认:
分析框架
从用户提供的内容中提取以下维度:
- 已决项(Decided):已经确定、不再讨论的决策/事实
- 待决项(Open Questions):需要回答的问题,标注紧急度(must / can-wait / confirm)
- 依赖链(Dependencies):哪些事是另一些事的前提,上下游关系
- 行动路线(Actions):具体要做的事,按时间/阶段分组
- 交付物(Deliverables):做完后手里应该有的东西
蓝图输出格式
## 看板蓝图:{项目名}
### 板块规划
1. {板块名} — {一句话说明}
2. {板块名} — {一句话说明}
...
### 信息密度
- 已决项:{数量} 条
- 待决项:{数量} 条(must: X / can-wait: X)
- 依赖链:{层级数} 层
- 行动项:{数量} 条
- 交付物:{数量} 项
### 缺失信息
- {指出用户内容中模糊或缺失的地方,一次性列出}
→ 确认后开始生成看板。
用户确认蓝图后进入第二步。用户说「就这样」「直接做」「没问题」即视为确认。
第二步:看板生成
技术约束
- 格式:单个
.html文件,零依赖,浏览器直接打开 - 字体:MiSans 本地 + Outfit Google Fonts + CJK 系统回退
- 主题:深色/浅色双主题,localStorage 持久化用户选择
- 尺寸:max-width 1200px,响应式(< 960px 单列折叠)
- 打印:
@media print隐藏 footer/toggle,卡片break-inside: avoid
Design System(强制)
必须严格遵循以下设计系统,这是 taste-skill 校准后的参数化规范:
色彩体系
:root 变量(深色模式为默认):
:root {
--bg: #0e0e14;
--surface: rgba(255,255,255,0.04);
--surface-hover: rgba(255,255,255,0.06);
--surface-elevated: rgba(255,255,255,0.08);
--border: rgba(255,255,255,0.08);
--border-hover: rgba(255,255,255,0.14);
--text-primary: #e8e6e1;
--text-secondary: #8a8680;
--text-tertiary: #4a4744;
--accent: #4ade80;
--accent-dim: rgba(74,222,128,0.15);
--accent-glow: rgba(74,222,128,0.08);
--amber: #f59e0b;
--amber-dim: rgba(245,158,11,0.12);
--rose: #f43f5e;
--rose-dim: rgba(244,63,94,0.12);
--blue: #60a5fa;
--blue-dim: rgba(96,165,250,0.12);
--purple: #a78bfa;
--purple-dim: rgba(167,139,250,0.12);
--radius: 16px;
--radius-sm: 10px;
--font: 'MiSans', 'Outfit', 'PingFang SC', 'Noto Sans SC', system-ui, sans-serif;
--mono: 'MiSans', 'SF Mono', 'Fira Code', ui-monospace, monospace;
--transition: 0.3s cubic-bezier(0.16, 1, 0.3, 1);
--shadow-tinted: 0 8px 32px -8px rgba(14,14,20,0.6);
--shadow-elevated: 0 20px 60px -12px rgba(14,14,20,0.8);
}
浅色模式通过 html[data-theme="light"] 覆盖,详见参考实现。
语义色彩映射
| 语义 | 色彩 | dim | 用途 |
|---|---|---|---|
| 完成/通过/积极 | accent (绿) | accent-dim | 已决项、已完成、产出物 |
| 警告/进行中 | amber | amber-dim | 进行中、待确认、需关注 |
| 紧急/未决/阻塞 | rose | rose-dim | 未决、must关、阻塞项 |
| 信息/正常/参考 | blue | blue-dim | 一般信息、参考、链接 |
| 补充/特殊 | purple | purple-dim | 分类标签、日期标记 |
排版层级
- 页面标题:
1.8rem; font-weight: 700; letter-spacing: -0.04em - 板块标题:
1.1rem; font-weight: 600; letter-spacing: -0.01em - 卡片标题:
1rem; font-weight: 600; letter-spacing: -0.01em - 正文:
0.88rem; color: var(--text-secondary); line-height: 1.6 - 辅助文字:
0.82rem; color: var(--text-secondary) - 标签/元数据:
0.72rem; font-weight: 700; font-family: var(--mono); letter-spacing: 0.05em - 列头标签:
0.65rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase
粗体修正
strong, b { font-weight: 600; font-size: 0.92em; letter-spacing: -0.01em; }
Surface 层级
| 层级 | 处理 | 用途 |
|---|---|---|
| 标准卡片 | background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 28px 32px; backdrop-filter: blur(20px) |
主要内容容器 |
| 紧凑项 | padding: 14px 16px; border-radius: var(--radius-sm) |
已决项、交付物小卡片 |
| 内联条 | padding: 10px 14px; border-radius: var(--radius-sm); border: 1px solid var(--border) |
产出物、标注条 |
交互态
- 卡片 hover:
border-color: var(--border-hover); box-shadow: var(--shadow-tinted) - 按钮/标签
:active:transform: scale(0.96)(触觉反馈) - 高亮卡片:
border-color: rgba(accent,0.25)或语义色对应值 - 主题切换:右上角圆形按钮,SVG 太阳/月亮图标
板块组件库
根据蓝图规划,从以下组件中选取并组合:
1. Header(必须)
<header class="header">
<div class="header-left">
<h1>{项目名}</h1>
<p>{一句话定位}</p>
</div>
<div class="header-meta">
<span class="meta-badge amber">{周期标记}</span>
<button class="theme-toggle" onclick="toggleTheme()">
<!-- 太阳/月亮 SVG -->
</button>
</div>
</header>
2. Section 容器(必须)
每个板块用 <section class="section">,内部结构:
<section class="section">
<div class="section-header">
<span class="section-num" style="color:var(--{语义色})">{序号}</span>
<span class="section-title">{板块名}</span>
<span class="section-sub">{一句话说明}</span>
</div>
<!-- 板块内容 -->
</section>
3. 已决项网格
3列网格,每项带绿色勾选圆点 + 主文字 + 灰色补充说明:
<div class="decided-grid">
<div class="decided-item">
<div>{主文字}<div class="decided-detail">{补充说明}</div></div>
</div>
</div>
4. 依赖链
层级式节点 + 箭头连接,节点按语义色分级:
<div class="dep-chain">
<div class="dep-row">
<div class="dep-node {critical|important|normal|output}">
<span class="dep-num">{序号}</span>{名称}
<span class="dep-sub">{补充}</span>
</div>
</div>
<div class="dep-arrow-down">↓</div>
<!-- 下游节点 -->
</div>
5. 泳道对比表(Swim Lane)
多维度对比卡片,左侧 ID 标签 + 主内容 + 多列属性:
<div class="lane-thead">
<div class="lane-th">#</div>
<div class="lane-th">{列1标题}</div>
<div class="lane-th">{列2标题}</div>
<div class="lane-th">{列3标题}</div>
</div>
<div class="lane-grid">
<div class="lane-card">
<div class="lane-id" style="background:var(--{色}-dim);color:var(--{色})">{ID}</div>
<div class="lane-main">
<div class="lane-name">{名称}</div>
<div class="lane-desc">{描述}</div>
</div>
<div class="lane-cell">
<div class="lane-cell-label">{列标签}</div>
<div class="lane-cell-value {strong|warn|weak|neutral}">{值}</div>
</div>
<!-- 更多 lane-cell -->
</div>
</div>
单元格值语义色:strong = accent(强优势)、warn = amber(有风险)、weak = rose(弱/短窗口)、neutral = text-secondary(中性)
6. 状态表格
表格形式展示问题/任务列表,带状态胶囊:
<div class="card" style="padding:0;overflow:hidden">
<table class="q-table">
<thead>
<tr><th style="width:40%">{列1}</th><th style="width:20%">{列2}</th><th style="width:25%">{列3}</th><th>{列4}</th></tr>
</thead>
<tbody>
<tr>
<td class="q-name">{问题名}</td>
<td><span class="q-status {undecided|waiting|progress|minor|已决}">{状态}</span></td>
<td class="q-urgency {must|can-wait|confirm}">{紧急度描述}</td>
<td style="color:var(--text-tertiary);font-size:0.82rem">{归属}</td>
</tr>
</tbody>
</table>
</div>
状态胶囊样式:
undecided:rose-dim 背景waiting:amber-dim 背景progress:blue-dim 背景已决:accent-dim 背景(内联style)minor:surface 背景
7. 时间/阶段卡片
按时间线或阶段分组,每个阶段一张大卡片:
<div class="schedule-grid"> <!-- 2列 -->
<div class="schedule-day">
<div class="day-header">
<span class="day-badge {sat|sun|自定义色}">{标签}</span>
{阶段名}
</div>
<div class="session-card">
<div class="session-header">
<div class="session-num s{N}">{编号}</div>
<div class="session-title">{标题}</div>
</div>
<div class="session-desc">{描述}</div>
<div class="session-tasks">
<div class="session-task">{任务项}</div>
</div>
<div class="session-output">{产出物}</div>
</div>
</div>
</div>
session-num 颜色循环:s1=rose, s2=amber, s3=purple, s4=blue, s5=amber, s6=accent(可按需分配)
任务项支持完成标记:
- 完成:
style="color:var(--accent)"+✓前缀 - 进行中:
style="color:var(--amber)"+◐前缀 - 未开始:无额外样式 +
○前缀
8. 交付物网格
3列小卡片,编号 + 名称 + 来源说明:
<div class="deliverable-grid">
<div class="deliverable">
<div class="deliverable-num">{序号}</div>
<div class="deliverable-name">{名称}</div>
<div class="deliverable-for">{← 来源}</div>
</div>
</div>
9. Footer(必须)
<footer class="footer">
<span>{品牌} · {项目名} · {日期}</span>
<span>{署名}</span>
</footer>
组件选取规则
根据蓝图自动判断使用哪些组件:
| 蓝图中有此内容 | 使用组件 |
|---|---|
| 已决项 | 已决项网格 |
| 待决问题列表 | 状态表格 |
| 上下游依赖 | 依赖链 |
| 多方案/多维度对比 | 泳道对比表 |
| 按时间/阶段划分 | 时间卡片 |
| 做完后手里有什么 | 交付物网格 |
板块顺序原则:已决地基 → 依赖链/全景 → 核心决策 → 开放问题 → 行动路线 → 交付物
交互特性
- 主题切换:深色/浅色,localStorage 持久化
- 卡片 hover:边框变亮 + 投影浮起
:active触觉:scale(0.96) 模拟物理按压- 可点击行:
cursor: pointer+ onclick 跳转(如有链接) - status badge 可点击切换(可选):点击循环切换状态
第三步:输出
- 将完整 HTML 写入
00_专注区/目录,文件名格式:{项目名}.html - 告知用户文件位置
- 询问是否需要微调
反模式(禁止)
- 禁止使用 emoji,用语义色标记 + 图标替代
- 禁止使用纯黑
#000或纯白#fff文字 - 禁止使用实色灰色卡片背景(必须用 rgba 白色叠加层)
- 禁止使用实色边框(必须用 rgba 透明度边框)
- 禁止使用 Inter 字体
- 禁止使用三列等宽卡片布局(除非是 decided-grid 或 deliverable-grid 的紧凑项)
- 禁止使用
h-screen(必须用min-height: 100dvh) - 禁止在深色模式下使用通用
rgba(0,0,0,x)阴影(必须用色调阴影) - 禁止泛化 AI 话术("elevate"、"seamless"、"next-gen"等)
参考实现
完整的 CSS + HTML 组件参考:assets/component-reference.html(包含所有组件的视觉效果和 HTML 结构示例)
生成看板时,直接复制此文件中的 CSS 和组件 HTML 结构,替换占位内容为实际项目内容。这是权威样式源——不要自行发明 CSS,从这个文件里取。
More from 43college/43-agent-skills
email-invoice-processor
邮箱发票处理器。按日期范围从邮箱中筛选发票邮件,下载PDF/图片附件(含链接下载),提取发票字段,按购买方分sheet生成Excel汇总。当用户需要处理发票、整理发票、从邮箱提取发票时使用此技能。
14follow-builders
AI 构建者日报 — 追踪 X 和 YouTube 播客上的顶尖 AI 构建者,将内容混编为易读摘要。当用户想了解 AI 行业动态、构建者近况或调用 /ai 时使用。无需 API 密钥或依赖 — 所有内容从中央 feed 获取。
12find-skills
帮助用户发现和安装 Claude Code 技能。当用户问"怎么做 X"、"找一个能做 X 的技能"、"有没有技能可以……"或想扩展 AI 能力时使用此技能。通过 skills.sh 生态搜索、验证质量、协助安装。
9chat-archiver
对话入库器。当用户说"入库"、"归档对话"、"把这次对话存下来"或"/chat-archiver"时触发。回顾当前对话,提取有价值的内容,分类后存入用户的知识库。支持 config 映射和自动发现两种模式。
9feishu-assistant
飞书助手:消息、文档、知识库、通讯录、日历、群聊、任务、多维表格(Base)、邮箱。当用户提到飞书相关操作(发消息、写文档、查知识库、看群聊、管理任务、操作多维表格、查邮件、发邮件、收件箱)时使用此技能。
8web-browser
浏览器联网工具。当需要真实浏览器环境时使用此 skill,包括:需要登录态的操作、反爬严格的平台(小红书、微信公众号等)、页面交互操作、动态渲染内容抓取等。简单搜索和公开页面抓取可直接使用内置的 WebSearch/WebFetch,无需加载此 skill。
8