计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
lov-mobile-infographic【效率与协作】把结论或材料整理成手机竖屏阅读的证据型信息图:输出永远是一张 1080 宽的 long 自适应卡片,内容多就把图加长、不拆卡;只有明确要求多张才做系列。交付可编辑 HTML 与 2× PNG。Use when the user says “把这个内容做成手机能读的信息图”“出一张竖版信息图”,or asks to "turn this into a mobile infographic".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: lov-mobile-infographic description: > 把结论或材料整理成手机竖屏阅读的证据型信息图:输出永远是一张 1080 宽的 long 自适应卡片,内容多就把图加长、不拆卡;只有明确要求多张才做系列。交付可编辑 HTML 与 2× PNG。Use when the user says “把这个内容做成手机能读的信息图”“出一张竖版信息图”,or asks to "turn this into a mobile infographic". license: MIT compatibility: > Portable Agent Skills format. Python 3.8+; PNG rendering requires Playwright for Python with Chromium or Google Chrome. Generated HTML is portable and embeds the resolved brand logo as a data URL. depends_on:
把一段已经有结论的内容,重排成手机上真的读得下去的证据型信息卡:单列阅读路径、 明确的字号下限、可核查的口径与来源,以及能从一张扩展到一组的系列结构。
这不是把咨询 Exhibit 缩小,也不是把整卡交给生图模型。文字、证据和排版全部由 DOM 生成,
PNG 由浏览器精确栅格化,交付时同时给出可编辑 card.html 与 2× PNG。
lov-professional-infographic。lov-gen-card。baoyu-xhs-images。lov-product-onepage。Every generated Skill is connected to the shared user-profile/v1 contract in
skill.yaml. Read the shared user, brand, workspace, preferences, and this
Skill's skills.<skill_id> namespace at the start of every run. Keep the source
portable: resolved personal values belong in the shared profile, never here.
When the user directly states a durable preference or brand fact, persist it
through scripts/profile_store.py and report the saved profile path. Put
Skill-specific values under records.<field>; use brand.<field> or
user.<field> for shared values. Do not persist inferred secrets or credentials.
See references/user-profile.md for the complete contract.
品牌解析顺序见 references/user-config.md。
Read references/skill-composition.md before deciding whether to invoke or
extend any adjacent capability. The record distinguishes optional upstream and
downstream handoffs from embedded Kit modules. Do not silently depend on a
sibling Skill that is not shipped with this source.
交付永远是一张卡:宽度恒为 1080,高度由内容决定(下限 1.2× 宽,不设上限)。
内容多的时候不加张数,把这一张加长——「一图读懂」本身就是长图形态。长卡用小节组织:
先给主排位(总览),再按领域分小节,每节一个小标题加一条细分割线,让读者在一张长图里
仍然有段落感;全卡仍然只有一个判断。矮内容不会被硬撑成固定比例。只有用户明确要求多张时,
才改用系列形态——系列是用户显式指定的例外,不是内容超长时的默认出口。固定比例(3:4/4:5/
9:16/1:1)是给渠道适配用的可选参数,不是默认值。
一张信息图是来源信息的重排,不是作者评论:读者先看到事实、数字与口径。排版前先固定这几件事:
audit 的 title_filler 会拦截。audit 的 title_is_subject 会拦截没有主题信息的标题。bar-ranking 的条形长度编码,
顺序从大到小(audit 的 bar_order 会拦截乱序);构成关系用色块,流程用 step-strip。
纯文字罗列(一行一个城市、一人一行)属于流水账,不构成信息图。刘*畅)或「群友 N」。
不要使用内部备注(备注是给作者看的,不是给读者的)。data-claim,小节标题、分组条形与口径行
都只给这个判断补证据。长卡允许放多个条形组(例如总览 + 分领域小节),每组在自己的
.chart 容器内按数值倒序;不同分母不要混进同一组。references/charts.md:
库要内联、文字留在 HTML 层、颜色与角度要有 data-encoding。
长卡的默认顺序:关键数字 → 构成与名单 → 时间线 → 手法/流程 → 专题;同一个信息不要拆成
两节(例如构成图与全名单合成一节),图表要带引线标注而不是留一列图例。data-claim 行是可选的
(最多一条),只有来源本身有一句必须原样呈现的结论时才用,否则不写。小节副标题不要复述
标题,不写「报告称/报告显示」这类来源提示,也不写「最该记住/值得关注」这类元话术——
要么给事实,要么给编码说明(如「角度 = 案例数」)。来源与工具放进页脚上方的附录区块(.appendix),用一条分割线起头,再用 bullets 写清
「谁提供数据、谁做的呈现」。不要写 Appendix、使用工具 这类标题词——分割线本身就够,
多一行标题只会抢主内容的注意力:
<div class="appendix" data-source-ref="S1">
<div class="appendix-rule"></div>
<ul class="appendix-list">
<li class="appendix-item" data-role="source" data-source-ref="S1">
<span class="appendix-key">数据来源</span>:Universal WeChat Key,https://lovstudio.ai/skills/wdb-cli
</li>
<li class="appendix-item" data-role="source" data-source-ref="S1">
<span class="appendix-key">信息图呈现</span>:Mobile Infographic,https://lovstudio.ai/skills/mobile-infographic
</li>
</ul>
</div>
行内标签用「数据来源」「信息图呈现」这类说明性词。每条写成 「网址对应页面的实际标题,完整网址」:
标题必须先去抓那个页面的 <title>/<h1>,不要自己起缩写或简称(把 Universal WeChat Key 写成
「WDBK」这种就是错的)。网址一律印成可读文本:
交付物是 PNG,超链接栅格化后不存在,禁止「点我」或只有能点才读得懂的锚文本。
页脚只放品牌,不放来源:单卡居中放 Logo,不显示页码(data-series-size="1" 已内置居中与隐藏页码);
系列卡才保留左 Logo + 右 n/N。需要带品牌 Tagline 时用左 Logo + 右 Tagline 的变体。
仍然禁止本机绝对路径、数据库文件名、表名与账号标识(以 .db 结尾的文件名、数据库目录名、加密库名、
wxid_ 账号、Msg_ 开头的表名)。audit 以 source_hygiene 拦截这些内部痕迹。
Read before authoring:
references/mobile-reading-standard.md — 字号下限、行宽、对比度、安全区、比例与一屏信息量。references/template-grammar.md — 六个语义模板的适用关系与选择规则。references/spec-schema.md — HTML data-* 契约与 audit 字段。Read references/series-and-export.md when the output is a series, a long image,
or platform-specific delivery.
You MUST follow these steps in order.
SKILL_DIR if the environment provides it.scripts/infographic_cli.py, assets/card-base.css, assets/templates/, and
the required references exist before work.context.profile on every invocation. The precedence is current request,
project context, Skill-specific profile records, shared preferences, shared
brand/user profile, then safe defaults.export SKILL_DIR="/path/to/lov-mobile-infographic"
python3 "$SKILL_DIR/scripts/infographic_cli.py" --help
source.md under an Exact input section. Append normalized
notes and calculations below it; never replace the supplied material.references/series-and-export.md).Write brief.md from the scaffold, then fill the evidence table:
| ID | 论点 / 判据 | 精确证据 | 编码方式 | 直接标注 |
|---|
For every visible mark record the source and location, unit, denominator, period, and whether it is fact, estimate, assumption, or interpretation. Never invent a proxy value or a score.
Pick exactly one template from references/template-grammar.md; when three or more comparable
items have to be rank-ordered, use bar-ranking so the ordering is read as length, not as prose.
Default ratio is
long: one card at 1080 width whose height follows the content (at least 1.2× width,
no ceiling). Switch to a fixed ratio only when the delivery surface
demands it — 3:4 for WeChat article embeds, 4:5 for feeds, 9:16 for full-screen
story, 1:1 for grid tiles — and say which surface forced it.
python3 "$SKILL_DIR/scripts/infographic_cli.py" scaffold \
--template single-claim \
--ratio long \
--filename card-01.html \
--series-index 1 --series-size 1 \
--eyebrow "运营手册 · 01" \
--title "优化 harness 的三步" \
--claim "模型是自变量,harness 是因变量" \
--source "来源:…" \
--output-dir "<project directory>"
The template is a semantic skeleton. Every element carrying data-skeleton
still holds placeholder copy.
data-skeleton element and remove the attribute once the copy is final.data-claim element per card: the single conclusion this card argues.data-source-ref; declare visual variables with data-encoding;
mark decision-changing evidence with data-annotation.n/N page mark.python3 "$SKILL_DIR/scripts/infographic_cli.py" render \
--input "<project>/card-01.html" \
--output "<project>/card-01.png" \
--scale 2
The renderer captures the [data-card] element at an exact pixel size and fails
when the PNG dimensions do not match the canvas.
python3 "$SKILL_DIR/scripts/infographic_cli.py" audit \
--input "<project>/card-01.html" \
--image "<project>/card-01.png" \
--report "<project>/card-01.audit.json" \
--ratio 3:4
The audit measures the rendered page in a real browser: font floors, characters per line, contrast, overflow, out-of-canvas elements, safe area, single claim, evidence linkage, brand footer, series page mark, remaining skeleton copy, and truncation. It writes a 100-point proxy with an 85 threshold and critical-dimension floors.
Then inspect the PNG at original detail and at thumbnail size (a 320px-wide downscale is enough). Answer:
Record the reviewed image and the concrete finding, then run the release gate:
python3 "$SKILL_DIR/scripts/infographic_cli.py" audit \
--input "<project>/card-01.html" \
--image "<project>/card-01.png" \
--report "<project>/card-01.audit.json" \
--ratio 3:4 \
--human-review passed \
--review-note "<what was verified at full size and thumbnail size>" \
--strict
passed without both --image and a specific review note is invalid. Do not report success
because audit.json shows zero machine errors — the machine proxy is not proof of readability.
A single card needs no manifest. Only when the user explicitly asks for several cards do you
scaffold a series with the same --series-size, write manifest.json from the case template,
and verify that every card keeps the same width, safe area, and footer position.
See references/series-and-export.md.
Return clickable paths to the PNG, the editable HTML, brief.md, source.md and
audit.json — plus manifest.json only for a series (a single card never needs one). State the
template, ratio, evidence mode, proxy score, and human-review result. Disclose assumptions,
omitted material, and any card that is still machine-only verified.
render and audit:python3 -m pip install "playwright>=1.45,<2"
python3 -m playwright install chromium
scaffold and init-brand need no browser and no network.python3 "$SKILL_DIR/scripts/infographic_cli.py" --help
python3 "$SKILL_DIR/scripts/infographic_cli.py" init-brand --help
python3 "$SKILL_DIR/scripts/infographic_cli.py" scaffold --help
python3 "$SKILL_DIR/scripts/infographic_cli.py" render --help
python3 "$SKILL_DIR/scripts/infographic_cli.py" audit --help
python3 "$SKILL_DIR/scripts/test_infographic_cli.py"
用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:
task-specific(仅本次)还是 reusable(可跨任务复用)。task-specific 只修改当前任务,不改 Skill。reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。