用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/ccwq/infocard-pub --skill infocard-hardblue-style命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use before infocard .docs authoring to select a registered theme from content-aware candidates. Owns the only content-to-theme association, capability filtering, bounded reproducible variation, and theme-decision.json.
Use when one URL or a complete user brief should become one published infocard through the .docs promotion workflow.
Light-batch publish 2–3 cards in parallel without worktree.
正在显示 SKILL.md
| name | infocard-hardblue-style |
| description | 硬核蓝手册风格信息卡 — 用于技术手册/调查/观点拆解类内容,高密度多章节版式。模板位于 `theme/hardblue.html`,已更新为压缩版(Hero 更紧凑)。 |
| category | infocard-styles |
| tags | ["infocard","hardblue","red","blue","Swiss","high-density","manual"] |
用于重型多章节技术手册、调查、观点拆解、工具图鉴类内容。比 infocard-redswiss-style 多了蓝/红/黑三色 hero-bar + 网格底纹 + 96px 大编号块。
:root {
--bg: #f6f4ef; /* 暖灰网格背景 */
--paper: #fffdf8; /* 卡片背景 */
--ink: #111111; /* 主文字 */
--muted: #5f5950; /* 次要文字 */
--line: #111111; /* 边框 */
--red: #d80018; /* 红色强调 */
--blue: #1f63ff; /* 蓝色强调 */
--soft-red:#fde9eb; /* 浅红背景 */
--soft-blue:#e8f1ff; /* 浅蓝背景 */
--soft-ink:#f7f6f2; /* 浅灰背景 */
}
| 元素 | 值 |
|---|---|
hero-copy padding | 16px(旧 22px) |
hero-copy gap | 10px(旧 14px) |
h1 demo-title | clamp(24px,3.8vw,42px)(旧 clamp(30px,4.6vw,52px)) |
subtitle | 12.5px / 1.52(旧 14px / 1.6) |
kicker | padding 5px 9px,font-size 11.5px(旧 6px 10px / 12px) |
.badge min-height | 28px(旧 33px) |
.badge padding | 5px 9px(旧 6px 10px) |
.badge gap | 6px(旧 8px) |
.badge.ink | background:#111;color:#fff;font-size:11px;min-height:24px;padding:4px 8px |
alert border | 2px(旧 3px) |
alert padding | 10px 12px(旧 15px) |
alert gap | 8px(旧 10px) |
alert strong | 13.5px(旧 15px) |
alert p | 12.5px / 1.6(旧 14px / 1.68) |
| 元素 | 值 |
|---|---|
section-no(编号块) | 96×96px,3px border,font-size 34px |
section-head gap | 14px |
section margin-top | 30px |
card/.mini padding | 14px |
grid-3/.grid-4 gap | 12px |
matrix gap | 12px |
risk top accent bar | 8px |
1080px:hero 单栏,grid-4/matrix/risk-grid → 2列720px:全单栏,section-head → 堆叠For technical info cards, the save button must use position:static (normal flow). Never position:fixed — it always obscures content on mobile. Correct pattern:
.save{
display:block;width:fit-content;
position:static;margin:14px 0 0 auto;
z-index:1;border:0;border-radius:10px;
padding:11px 14px;
background:linear-gradient(135deg,#0036a3,#002a7a);
color:#fff;font:900 12px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
letter-spacing:.06em;box-shadow:0 10px 24px rgba(0,0,0,.35);cursor:pointer
}
@media(max-width:720px){
.page{padding-bottom:108px}
.quickline{padding-right:72px}
/* position:static stays — no fixed offsets */
}
<header class="hero">
<div class="hero-bar"></div>
<div class="hero-copy">
<div class="kicker">分类 · 子类</div>
<h1 class="demo-title">标题</h1>
<p class="subtitle">副标题</p>
<div class="badge-row">
<span class="badge red">主色 badge</span>
<span class="badge blue">蓝色 badge</span>
<span class="badge">普通 badge</span>
<span class="badge dark">深色 badge</span>
<span class="badge ink">内联数据点
Badge color CSS (add alongside other `.badge` rules):
```css
.badge.blue{background:var(--soft-blue);color:var(--blue)}
.badge.dark{background:#111;color:#fff}
.badge.ink{background:#111;color:#fff;font-size:11px;min-height:24px;padding:4px 8px}
.badge.red{background:var(--soft-red);color:var(--red)}
<div class="alert">
<strong>核心定位句</strong>
<p>展开说明。</p>
<div class="mini-row">
<span class="mini-tag">标签</span>
</div>
</div>
说明文字。
章节说明。
正文。
.meta.yaml 必填字段slug: "YYYYMMDD-slug-hardblue"
path: "docs/YYYYMMDD-slug-hardblue.html"
title: "标题"
desc: "摘要(80-210字符)"
date: "YYYY-MM-DDTHH:MM:SS+08:00"
updated: "YYYY-MM-DDTHH:MM:SS+08:00"
tags: ["Tag1", "Tag2"]
category: "knowledge"
source: "github"
source_url: "https://github.com/..."
author: "author"
⚠️ 注意:
theme/hardblue.html模板文件在 infocard-pub 仓库中存在(完整 475 行),优先从该文件复制结构,而非从 SKILL.md 内联模板复制。SKILL.md 中的 HTML 片段仅作快速参考,完整 CSS/HTML 以theme/hardblue.html为准。
/tmp/infocard-process-*.md 或 publish-bundle.json),先读过程文件,再抽取:标题、推荐 slug、关键事实、禁止混淆对象、风格建议theme/hardblue.html 复制完整模板到 docs/<slug>.html,替换内容;CSS 变量和组件结构保持不变date +'%Y-%m-%dT%H:%M:%S+08:00' 获取时间戳docs/<slug>.html(从本技能模板复制,替换内容;过程文件建议可直接转成主文案结构)docs/<slug>.html.meta.yamlnpm run build && npm run verify && npm test && node scripts/check-info-leak.js docs/<slug>.html
npm run build:生成 _index.yaml 和注入 index.html,同步 meta.yaml 的 updated 时间戳npm run verify:校验索引一致性npm test:运行 scripts/test/*.test.js 原生测试node scripts/check-info-leak.js docs/<slug>.html:单文件扫描(不用 npm run check-leak,那是全仓库扫描)git add docs/<slug>.html docs/<slug>.html.meta.yaml docs/<slug>.md
git add _index.yaml index.html # 构建产物,必须一并提交
git commit -m "feat: publish <title> (<version>)"
⚠️ push 由用户控制,不要默认 push;如用户明确要求不 push,跳过 push 即可
sleep 80 && curl -sI <URL> 验收 HTTP 200(仅 push 后需要)browser_vision 移动端截图验收(390px scrollWidth=390)(仅 push 后需要)相关细节见:references/process-file-card-authoring.md
相关细节见:references/worktree-draft-pattern.md(草稿阶段用独立 worktree 隔离,不污染 main)
.stats / .stat — 已删除,改用 .badge.ink 内联theme/hardblue.html — 文件不存在,CSS 需从 SKILL.md 或 references/hardblue-css-snapshot.md 获取存在两套不同的 hardblue 视觉系统,必须区分使用:
变量:--bg:#f6f4ef(暖灰网格背景)/ --paper:#fffdf8(卡片白)/ --ink:#111 / --blue:#1f63ff / --red:#d80018 / --line:#111
风格:暖灰网格底 + 纯黑边框 + 红色/蓝色/黑色 hero-bar + 3px 黑色边框
来源:references/hardblue-css-snapshot.md 和本 SKILL.md
变量:自定义 --hb-bg / --hb-accent / --hb-surface 等
来源:部分已发布旧卡的内联 CSS(LTX-2.3、uTools vs ZTools 等 2026-07-26 发布)
问题:这个变体从未被 skill 正式定义,是历史遗留的自定义 CSS。新卡不要基于旧卡的 embed CSS 套用,应从 references/hardblue-css-snapshot.md 取正式版 CSS。
验证方法:发布前检查 :root 变量 — 如出现 --hb-* 变量则是旧变体,应替换为正式版 --bg/--ink/--blue 体系。
npm run build 依赖 fix-meta-date.js 扫描所有 docs/**/*.meta.yamlgrid-2/grid-3 中的卡片同时使用 2px border + offset shadow(如 6-8px)时,gap 小于 16px 容易在视觉上形成“黑线粘连 / 边框合并”。修复优先级:先加大 gap,再收紧 shadow,最后才考虑减弱 border。详见 references/grid-density-border-shadow-gap.md。margin:-... 这类写法,最后用截图确认四边都有呼吸感。案例与检查方法见 references/border-overlap-shell-vs-content.md。shell 的内边距并重新截图验收;不要在首次假设未验证时就把规则写进主 SKILL.md。具体流程见 references/border-spacing-verification-order.md。现象:push 后立即 curl -sI https://ccwq.github.io/infocard-pub/docs/... 返回 HTTP 200,但浏览器仍显示旧内容(或 accessibility tree 看不到新元素)。
根因:GitHub Pages 部署完成后,CDN 层(Cloudflare 等)缓存 TTL 约 60-120s,期间 cache-busting 不生效。
解法:
sleep 80 && curl -sI <URL> 等待 80s 后验证(适合顺序流程)?v=N 查询参数 curl -sI https://.../slug.html?v=2,强制绕过 CDN 缓存读取源站(适合调试)browser_navigate 后的 snapshot):GitHub Pages 缓存恢复后,snapshot 中会出现新元素的 text content(如 Star 16.1k、分类 7),旧版则没有fix-meta-date.js 导致 CI verify 失败现象:npm run build + npm run verify 本地通过,但 CI(如 pages.yml / index.yml)报 _index.yaml out of date。
根因:build-site.js 内调用 fix-meta-date.js,后者用 fs.utimes() 修改所有 meta.yaml 的 mtime(即使内容不变)。这导致 _sort_ts(由 HTML 和 meta.yaml 的 mtime 推导)发生变化,与 git 提交时的 _sort_ts 不一致。
解法(标准流程):
每个新卡的 meta.yaml 必须包含 updated 字段:
date: "2026-06-07T15:18:25+08:00"
updated: "2026-06-07T15:18:25+08:00"
当 updated 已存在时,fix-meta-date.js 的 --write 模式不修改文件(SKIP ... 无需变更),所以 _sort_ts 不变。不加 updated 则每次 build 都会 touch 文件,导致 CI verify 报不一致。
| 风格 | 适用内容 | 特征 |
|---|---|---|
infocard-hardblue-style | 知识手册、工具图鉴、技术调查、提示词库 | 网格底纹、96px 编号块、红/蓝/黑三色 hero-bar |
infocard-redswiss-style | 开源工具图鉴、重型工具对比、CLI 生态 | 红黑斜切 hero、category-dot 色点、纯红黑无蓝 |
infocard-q-style | 单一工具介绍、轻量笔记、教程类 | 纸感暖白、贴纸标签、宽松排版 |
infocard-hardblue-style;如果是 Agent workflow / 调研类,优先选 infocard-blue-technical-manual-style当用户说「调整 infocard-hardblue-style 的样式参数」时,这句话存在作用域歧义,必须先澄清再做修改:
| 解读 | 影响范围 |
|---|---|
A. 只改 theme/hardblue.html 模板 | 所有未来 hardblue 卡 |
| B. 只改当前这张卡的 HTML | 仅这一张卡 |
| A+B. 两个都改 | 两者都变 |
用户说"调整 hardblue 样式",AI 直接改:
theme/hardblue.html 模板 ✅
→ 违反命令边界:用户只授权了当前卡,模板不在授权范围内Round 1: 澄清作用域
"你说调整样式,范围是 A(只改模板,影响未来所有卡)、B(只改当前这张卡)、还是 A+B(两个都改)?"
Round 2(若 A+B): 逐项确认参数值
"确认:模板和当前卡都改以下参数:hero padding 22→16px / h1 clamp→clamp(24px,3.8vw,42px) / alert border 3px→2px?"
Round 3: 执行(得到明确授权后)
theme/hardblue.htmldocs/YYYYMMDD-slug-hardblue.html核心原则: 不在授权范围内(模板)的修改,必须显式问,不能"顺手改"。
当用户说"继续"时,意思是"按默认方案执行",这不算一轮 grill-me。直接执行默认方案。
| 用户说 | 含义 | AI 动作 |
|---|---|---|
| "A" / "B" / 选数字 | 明确选项 | 执行对应方案 |
| "继续" / "继续吧" / "OK" | 接受默认方案 | 执行默认,轮次不+1 |
| "不是这个,另外的" | 拒绝当前轮 | 继续下一轮追问 |