AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Thesis Figure Skill

skill-0xe1337-thesis-figure-skill-thesis-figure-skill · by 0xE1337

|

No reviews yet
0 installs
40 views
0.0% view→install

Install

$ agentstack add skill-0xe1337-thesis-figure-skill-thesis-figure-skill

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-0xe1337-thesis-figure-skill-thesis-figure-skill)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Thesis Figure Skill? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Academic Diagram Skill (TikZ + draw.io)

把论文中的系统架构/协议流程/技术方案转化为高质量配图。目标:高信息密度 + 设计感 + 一次过编译。失败模式:平庸、对齐松散、坐标凭感觉。

工具选择

| 维度 | TikZ | draw.io | |------|------|---------| | 适合 | 嵌入 LaTeX 论文、数学公式、结构化图表 | 技术路线图、汇报展示、装饰性强(渐变/3D) | | 精度 | 像素级 | 拖拽,坐标不如 TikZ 精确 | | 中文 | 需 ctex/fontspec,rotate=90 中文会崩溃 | 原生支持 | | 数学 | 原生 LaTeX 完美 | MathJax 一般 | | 编译 | xelatex + pdftoppm | drawio CLI → PDF → PNG | | 可编辑 | 代码即源 | .drawio 可在 app.diagrams.net 编辑 |

默认 TikZ。draw.io 用于:用户要求 / 参考图为 draw.io 风格 / 需要渐变-3D-空心字 / 内容简单且装饰 > 精确。 输出格式仅这两种——HTML/CSS/SVG 不可嵌入论文也无法在 draw.io 编辑。

Philosophy(每次画图前必读,所有规则之上)

The UNFORGETTABLE Question

画图前 + 交付前问自己:审稿人 5 秒看完,记住的是什么?

  • 一个独特的 hero 子结构?
  • 嵌入的真实热力图 / 曲线 / 图像?
  • 信息密集的 hyperparameters / loss panel?
  • 多色和谐的 zone 划分?

没有"记得住的东西" = 不要交付。

Naming the Gravitational Pull(你必须主动避开的统计中心)

模型默认会画出 "AI slop 学术图"——下面是统计中心的平庸默认,主动避开

  • ❌ box + arrow only,嵌入数据可视化
  • ❌ 3 色单调配色(蓝/橙/紫常见组合)
  • ❌ "FFN" / "Attention" 单字标签,不写公式 / 不写参数
  • ❌ hero 内只有 box list,无嵌入热力图/曲线/微图
  • ❌ 没有信息 panel(hyperparameters / loss curve / legend / metrics)
  • ❌ 平面布局无 visual hierarchy(核心和辅助同重量)
  • ❌ 看起来"像 AI 一次性生成的"——无设计痕迹

Permission for Creativity

Claude is capable of extraordinary academic figure design. Checklist 是 catching last-mile bugs,不是 safe defaults

你不是在练习画结构图。你在为 NeurIPS / ICML / Nature 投稿画 figure。 审稿人会用这张图判断作者的领域素养和认真程度。 box+arrow only 的平庸图 = desk reject。

创造空间 — 复杂档可调用的词汇(不强制,但应该考虑

| 维度 | 选项 | |---|---| | 嵌入可视化 | attention heatmap / loss curve / 真实图像色块 / signal waveform / 数学曲线 / N×N matrix / mel spectrogram / 散点分类 | | 信息 panel | hyperparameters 框 / metrics 表 (FID/BLEU/Acc) / color legend / glossary 注释 / 数学符号速查 | | 数学公式嵌入 | FFN(x) = max(0, xW₁+b₁)W₂+b₂ 直接写进 box 内部,不是只贴标签 | | 配色 | ≥5 种 zone tone + accent color;浅色 zone 背景 + 中饱和度 box + dark accent | | 层级 | hero ≥ 2× 辅助 box;"N=6 layers" 灰色透明栈背景 | | Cross-zone | dashed rail + 跨段标签 (如 "K, V") | | 学术 polish | dataset 标注 ("CIFAR-10") / 性能数字 ("FID=3.17") / 引用作者年份 |

视觉直觉法则(meta,在 ④.5 Step 0 应用)

  1. 0.1 秒直觉:视觉流向 ≠ 逻辑流向 = 必错(每写一条 \draw,问读者直觉对吗)
  2. 眼睛轨迹:沿主线走,任何"卡住"位置 = blocker
  3. 删除测试:能删的就该删;修一个 bug 不能引入新审美问题

最重要的一点

审美 + 信息密度 > 规则合规。 规则只是地板,审美是天花板。18 项 checklist 是 catching last-mile bugs——不是设计指南。设计指南是上面的 Philosophy。

复杂档画图捷径 — TikZ Snippet Library(21 个 + 预览 PNG)

Batch 17 fig153 教训:Philosophy 文本指南让 sub-agent 知道要嵌入 viz / panel / 公式,但写出来的视觉重量、留白、配色协调仍然失败——因为这些是 visual perception 而非 textual 任务。

解决方案references/tikz-snippets/ 提供 21 个手工精雕的 TikZ 片段 + 21 个 PNG 预览 + 1 个组合规则文档——sub-agent 看 PNG 选 + 复制粘贴 + 替换参数 + 按组合规则拼装即可达到 examples 标杆。

5 大类零件(详见 references/tikz-snippets/README.md inline gallery):

| 类别 | 数量 | 文件 | |---|---|---| | 1. 嵌入数据可视化 | 6 | attention-heatmap / confusion-matrix / mini-spectrogram / image-strip / scatter-plot / embedded-graph | | 2. 信息 panel / 图表 | 5 | bar-chart / line-chart / radar-chart / hyperparams-table / metrics-card | | 3. 数学 / 几何 | 3 | gaussian-curve / vector-arrows / formula-box | | 4. 结构 / 流程 | 4 | stage-container / pipeline-stages / layer-stack / feedback-loop | | 5. 整图骨架元素 | 3 | multi-zone-palette / color-legend / summary-bar |

组合规则必读):COMPOSITION-RULES.md — snippet 间留白 / 对齐 / Z-order / 整图骨架(双栏对称 / 5 stage 横向 / 中央 hero + 4 panels)

复杂档强制流程

  1. 先读 references/tikz-snippets/README.md —— inline gallery 含每个 snippet 的 PNG 预览
  2. 首选:复制完整 example-skeleton-B-horizontal.tex(pipeline 类)或 example-skeleton-C-centralhero.tex(hero+panels 类)作 figure.tex,改 content 不动 layout
  3. 次选(特殊布局需求):看 PNG 选 ≥ 3 snippet 自己拼装
  4. 必读 COMPOSITION-RULES.md —— 解决"snippets 都塞进去但仍乱"问题
  5. 底部必有 color-legend OR summary-bar
  6. 绝对不能"简化"snippet 核心结构 —— 简化 = 信息稀疏 = 平庸

硬约束(违反必失败)

🔴 工具铁律:只用 TikZ 或 draw.io,禁止 Python/matplotlib 替代(2026-05-22 Batch 17 fig153 教训:sub-agent 在执行 Module-First 时用 Python+matplotlib 生成 .py 文件 = 完全偏离 thesis-figure-skill 价值主张):

  • Module-First 子流程(③.A→③.D)必须保持 TikZ——即使 matplotlib 画嵌入 viz 更方便
  • 复杂嵌入 viz 仍用 TikZ 原生(\foreach 画 cell / pgfplots 包 / \draw 手画 patch)
  • 学术论文图嵌入仍是金标准\input{figure.tex}\includegraphics{fig.png} 在公式渲染、矢量缩放、风格统一上都优
  • 仅当用户明确要求 Python 时才允许 — 默认必 TikZ

🔴 配色铁律:默认 light background,dark theme 需用户明确请求

  • 学术论文标准是 white/light bg;dark theme 与正文风格断裂
  • Philosophy 段"≥5 种 zone tone"指 zone 浅色背景 + box 中饱和度,不是整图反转色
  • sub-agent 不要自作主张套 dark theme

⚠️ xelatex + rotate=90 中文 — 渲染为不可读色块,所有中文标注必须水平 ⚠️ \texttt 包裹中文 — 报错,纯英文代码才用 \texttt / code_block ⚠️ ctex 不可用 — 编译前 kpsewhich ctex.sty,否则切方案 B(fontspec) ⚠️ ucharclasses — tikz 节点内中英混排频繁 Missing character,禁用 ⚠️ xelatex 对缺失字体静默失败 — 编译后必须 grep "Missing character" *.log ⚠️ 单条 \draw + rounded corners 画长距离 U 型回路 — 路径异常,拆 3 段独立 \draw ⚠️ SVG clip-path + preserveAspectRatio="none" 模拟梯形 — 高度不可控,禁用 ⚠️ 空心描边字 stroke-width ≥ 1.2 — 笔画间隙被填满变模糊,控制 0.6-0.8

工作流(⓪→⑦)

⓪ 依赖检测 → ① 画图指令 → ② 加载规则 → ③ 生成代码 → ④ 编译验证 → ⑤ 评分 → ⑥ 迭代 → ⑦ 沉淀

⓪ 依赖检测(首次自动执行一次)

  • TeX / pdftoppm 缺失:只提示用户安装,不自动装。

which xelatex || echo "请装 mactex-no-gui (macOS) / texlive-xetex (Linux)" which pdftoppm || echo "请装 poppler"

  • Python 工具(小依赖,缺失自动 pip3 install):pdfplumberpymupdfpathfindingopencv-pythonscikit-image

pymupdf 不装 → line-through-node + node-overlap 两类几何检测会 ERROR 退出,不静默跳过——别忽略)

⓪.5 入口模式分流(⓪ 之后第一问,路径分叉点)

skill 现在支持 4 种生成路径——画图前必须先确定走哪条。默认走 A,其他路径由关键词触发

| 路径 | 触发关键词(用户原 prompt) | 说明 | 状态 | |---|---|---|---| | A — Skeleton 复用 | "画一张 X 图"、"帮我画 Y"、未明示其他 | 从已验证 skeleton (B/C/D/E/F/G) 选一个,复制全部 + 改 content + 不动 layout。最快、最稳。输出视觉与 skeleton 相近 | ✅ 默认 | | B — Remix(跨 skeleton 拼模块) | "组合 D 的雷达 + G 的图表那种"、"想要 X 的左半 + Y 的右半" | 多选 skeleton 部件,自动拼装 | 🚧 暂未实装,回退到 A | | C — 原创设计 | "独特版面"、"复刻这张 ref.png"、"从零设计"、"我没有合适的 skeleton" | 从零设计 layout(Module-First ③.A→③.D)→ 强制独立多镜头审查 gate(④.5 文末)。⚠️ mode C 最易在"图里最新、无 skeleton 先例的那个结构"上崩,且 generator 自审对此结构性失明 | ✅ 现有路径 | | D — 沉淀入库 | "把这张 .tex 存进库"、"作为新 skeleton"、"添加到 examples"、"沉淀到模板库" | 用户已有 .tex → 自动入库为 example-skeleton-{H..Z}-.tex | ✅ 走 Φ 沉淀通道 |

走 A → 继续 ① ② ③ ④ ④.5 ⑤ ⑥ ⑦(③ 走 A 路:从 6 个 skeleton 选最匹配的 → 复制全部 → 改 content / 不动 layout / 严格遵守 CONSTRAINTS section) 走 B → 当前不可用。报告用户"Remix 模式暂未实装,当前请用 A skeleton 复用;如果你想要的部件组合在某个 skeleton 里近似存在,可以直接走 A 选最接近的" 走 C → 继续 ① ② ③ ④ ④.5 ⑤ ⑥ ⑦(③ 走从零路 + Module-First ③.A→③.D 子流程;④.5 必走「mode C 独立多镜头审查 gate」——见 ④.5 文末,不可只靠 generator 自审) 走 D跳过 ①-⑦,直接进 Φ 沉淀通道(见文末)

判断规则(按优先级):

  1. 用户提到 "存进库 / 入库 / 作为模板 / save to examples" → 强 D(直接走 Φ)
  2. 用户提到 "组合 X 的 Y + Z 的 W" → 强 B(回退到 A + 提示)
  3. 用户提到 "独特 / 原创 / 复刻 / from scratch / 无参考图" → 弱 C(询问确认走 A 还是 C)
  4. 其余 → A(不需要询问,直接走 skeleton 路径)

模式选择对编译验证 / vision-audit 的影响:A 模式因为 skeleton 已经过版面验证,④.5 重点放在"内容是否完全脱离 skeleton 主题(renaming 漏掉、stale 标签)"上;C 模式走完整 18 项 checklist + 强制「独立多镜头审查 gate」(generator 自审在 mode C 实测 3/3 漏掉核心缺陷,必须外部对抗审查兜底);D 模式走 Φ.2 简化版 audit。

① 画图指令(强制显式输出,不可跳过)

加载 references/step1-instructions.md——里面有完整的 10 项要素清单、参考图测量规则、ASCII 草图法、嵌入可视化决策表、密度参考表(按论文复杂度选档位)、节点形状/连线速查、Pre-flight P1-P7。禁止"心里想好直接写代码"——跳过这步返工率 100%。

关键认识:步骤① 的输出不是"最大复杂度版本"。先判断论文实际复杂度(极简/中等/复杂/超复杂),再选画图档位。从复杂版起步然后修瑕疵从合适档位起步累计 token 高一个数量级——MMAlign 11 轮迭代就是反面教材。

🔴 强制物质化要求(fig126 Tacotron2 教训:sub-agent 加载 step1 但跳过实际输出,产生大块空白):

步骤 ① 必须以文字形式实际输出(不是"想了就过"),且第一段写进 figure.tex 头部注释块作为证据。形式两选一,按图复杂度选:

🔵 form A/B 选择前的先决条件(消除"节点数悖论"——判档依赖草图、草图依赖判档的循环):

1. 先粗估档位(无需精确节点数,先看明显信号):
   ① 含 hero 子结构 / 嵌入热力图 / 多 panel / ≥3 列 → 复杂档 → form B
   ② 含 fan-out / 时序生命线 / 12+ 模块 → 中等档 → form A 或 form B
   ③ 纯几何/单链/对比图(明显 | Attention |----->| Decoder   |
%   +-----------+      +-----------+      +-----------+
% 预防 issues:[2-3 个坑]

形式 B — Narrative 设计文字(复杂档 / hero 子结构 / 嵌入 viz / 多 panel)

复杂图 ASCII 表达不全,用叙述性空间描述——每列/每 zone 写一段:(a) x/y 范围 (b) 内部子结构 (c) 与相邻列关系 (d) 留白处理特别要预想哪里可能出现大块空白并写出应对 — fig126/137 教训)

写在 figure.tex 头部作为注释,sub-agent 在 ④.5 Step 0 时读取核验。若注释不存在 → blocker 回 ① 重做。注意:form B 不是必须填模板,是用"设计师的叙述思维"展开布局——重点是 Philosophy 段的 UNFORGETTABLE Question:你怎么布局让审稿人 5 秒记住一个独特结构?

①.5 图档判断(用户驱动 + 自动检测兜底)

🔴 复杂度按需而定,不是默认复杂(Batch 16 教训:Philosophy First 让 sub-agent 默认套 examples 06 复杂风格,但用户实际只想要中等清晰图时 = 过度发挥变乱)。

第 1 步:从用户原 prompt 关键词推断复杂度

| 用户 prompt 关键词 | 推断档位 | |---|---| | "详细 / 完整 / 含 benchmark / 发表级 / 总览 / hyperparams / 性能数字" | 复杂档(按 Philosophy 全套:嵌入 viz + panel + 公式 + 多色)| | "概览 / 主架构 / 流程图 / 主流程 / 示意" | 中等档(清晰主流 + zone,1-2 个嵌入元素)| | "几何示意 / 公式对比 / 曲线对比" | 极简档(单坐标系或纯结构,无 hero / 无 panel) |

第 2 步:如果用户原 prompt 不明确 → 主动询问用户

用户原 prompt 没明示复杂度时,使用 AskUserQuestion(或直接询问):

"这张图你想要哪种复杂度?

(A) 极简:单层主架构 / 几何示意,5 秒理解
(B) 中等:主流程 + 关键 zone,10 秒理解  
(C) 复杂:完整含 hyperparameters / benchmark / 公式嵌入,发表级"

禁止自作主张选复杂档画出"塞满 panel 的乱图"——按需才是审美

第 3 步:用户确认后,对照下表执行

| 档位 | 自动判断备选(用户没说时)| 该档应该有的元素(Philosophy 适度展开)| ④.5 自评策略 | |---|---|---|---| | 极简档 | ≤15 节点 + 无 hero + 无嵌入 viz | 单坐标系 / 纯结构 + 必要标注;不强加 hero / panel | 18 项中 S8/S9/M8/E3/E12/V1 一句话 N/A | | 中等档 | 15-30 节点 OR 有 hero | 主流 + 2-3 zone + 1-2 嵌入元素(可选)| 走全 18 项;E3/M8 0 候选一句过 | | 复杂档 | ≥30 节点 OR 嵌入 viz OR 多 hero | hero 子结构展开 + ≥2 嵌入 viz + ≥1 panel + 公式嵌入 + ≥5 色 zone | 走全 18 项,重点 V1 |

关键原则极简不等于平庸;复杂不等于必塞审美在 Philosophy(5 秒记住什么),密度在档位(按用户需求)。

② 加载专项规则

确定图表类型后,按需加载对应文件(见下方"按需加载索引")。同时加载 references/lessons.md 获取该类型已验证的基线参数和踩坑经验。 基线参数已经是 25 批次 157 张图的结晶——直接用,不要从零试错。要偏离基线必须有具体理由。

③ 生成代码(Module-First 子流程 + 两层决策门

🔴 复杂档强制 Module-First 子流程(Batch 16 教训:sub-agent 一次写 800 行 TikZ → 整图乱;先画一部分,验证好,再拼接 = 干净):

③.A — 先画 hero(最重要的中央子结构 + 嵌入 viz / 关键公式)
       - 单独输出 figure.tex(只含 hero + 一个极简 frame)
       - 编译 + 渲染 PNG → 单独审查 hero
       - hero 内部 sub-layers / 嵌入 viz / 公式都干净后才继续
       - 不要直接跳到完整图

③.B — 再加主流(管线 + zones 边界 + connecting arrows)
       - 在 ③.A 的 hero 周围扩展:左右上下的 supporting modules + zone 边框
       - 编译 + 渲染 → 审查框架是否清晰
       - canonical fan-out / fan-in 在此阶段引入

③.C — 再加 information panels(hyperparams / benchmark / legend / 公式注释)
       - 选**角落留白**放 panel(不是"塞满式填空白")
       - panel 之间间距 ≥ 1cm
       - 编译 + 渲染 → 审查 panel 是否补充而不喧宾夺主

③.D — 整体审查(→ 进入 ④.5)
       - 整图 Philosophy 检查(UNFORGETTABLE / 5 秒第一印象 / 主线眼睛轨迹)
       - 18 项 last-mile bug 检查

极简 / 中等档可以跳过 Module-First,单次写完即可。Module-First 只对复杂档强制——它的价值是分阶段验证,避免 800 行 TikZ 一次出错导致整图崩坏。


Module-First 之外的决策门(B 路 vs 从零路):

问 1:这张图是纯结构图吗?(框 + 线 + 分组,嵌入热力图/曲线/柱状/矩阵, hero 内部多子节点) → Yes:B 路(auto-layout)

  1. 加载 references/figure-spec.schema.md 看 schema
  2. 输出 figure-spec.json(节点、边、zones、layout 引擎)
  3. python3 references/dot-to-tikz.py figure-spec.json → 产出 figure.tex
  4. 走 ④ 编译 + ④.5 视觉反馈
  • 适用:架构图 / 流水线 / DAG / 协议时序 / 三栏映射 / 技术路线图 / 多实例汇聚
  • 优势:0 个 Claude 选的坐标,0 类微斜线/穿框/拥挤 bug

问 2:富视觉图(嵌入可视化 / 复杂 hero 子结构 / 不规则布局)从零路 + Module-First(③.A→③.D)

  1. 起点:references/tikz-template.tex(含 preamble / 字体 / 配色 / canonical 箭头 styles / 防御写法)
  2. 加载 references/visual-patterns.md(9 个模式:hero 子结构、热力图、折线图、柱状图等)
  3. 按 ③.A→③.D 子流程:先 hero → 加主流 → 加 panels → 整体审查
  4. 复杂连线(≥8 条交叉风险):可选 python3 references/tikz-path-router.py spec.json A* 避障

🎯 箭头/连线必用 canonical pattern(深度调研 2026-05-18,5 batches 教训): tikz-template.tex 中 6 个预定义 styles 是经过 PGF 官方文档 + PlotNeuralNet 业界实践 + arrows.meta + bending library 综合调研的最佳实践:

| style | 用途 | 何时用(铁律) | 关键差异 | |---|---|---|---| | arrow / arrow thick / arrow thin | 长连线 | ⚠️ 仅 ≥ 1.5cm — 短于此必须改用 arrow short | tip 6.5pt, `shorten >=2pt, shorten =1pt, shorten B.x1): A | +----→ B ← A 在 B 左上方,横线在 B 外部 OK

❌ (A.south) |- (B.west) 当 A.x ∈ [B.x0, B.x1]: A | | ↓ +→ B ← 横线穿过 B 的内部 = pierce bug

✅ 修复 1:用 named coordinate 显式 waypoint 绕开 B: \coordinate (wp) at (B.x0 - 0.5cm, B.center.y); \draw[arrow] (A.south) |- (wp) -- (B.west);

✅ 修复 2:换 anchor 让箭头从 B 的上方接入: \draw[arrow] (A.south) -- (B.north); % 直线,A 在 B 上方


PGF 不做 obstacle-aware routing([官方手册确认](https://tikz.dev/base-nodes)),所以必须自己保证 `|-` / `-|` 的中段不撞 obstacle。`pdf-overlap-checker.py --json` 的 line-through-node 检测会抓到这种 bug。

**编译前两个 checker(pre-flight,所有路径通用)**:
- `python3 references/tikz-validator.py ` — 几何/语法 gate:微斜线 / 溢出 / 碰撞 / 方向反转。**ERROR 必修**
- `python3 references/tikz-design-linter.py  [--type rich|sequence|simple]` — **advisory** 设计指标。**默认 WARN 不阻挡**——简单论文图可以简单,linter 只汇报指标供 Claude+用户判断是否匹配论文复杂度。仅当 ≥8 节点且尺寸比  "$(dirname file.pdf)/overlap.json"
# 跑完检查 overlap.json — 7 类检测:
#   基础 5 类(直接 fix): text-overlap / text-overflow / off-center / text-line / line-crossing
#   candidate 2 类(需 triage): line-through-node / node-overlap
# ERROR 类大概率是真 bug 直接修;candidate 类是几何线索(heatmap 矩阵 / fan-in 收敛
# / panel 边界等常误报),sub-agent 在 ④.5 自评时按坐标对照 PNG 决定 fix 还是 ignore。

draw.io:xmllint --noout file.drawio && drawio -x -f pdf -o out.pdf file.drawio && pdftoppm -png -r 300 out.pdf out

④.5 视觉反馈强制闭环(架构核心,不可跳过)

你的代码生成是"盲写"——写到第 800 行 TikZ 时你不知道渲染出来什么样。所有标签碰撞、轴标题压字、生命线超界、子模块挤压、数学符号渲染怪——这类问题闸门 1+2 都检测不到,只有看到 PNG 才能发现。

目标重述:用户要的不是"一次性生成",是"最终交到他手上的图必须完美"。中间迭代多少轮无关紧要,只要图最后是完美的就行

强制流程

0. Read 渲染出的 out-1.png + 视觉直觉先行(应用 3 大法则,见下)
1. Read overlap.json(路径 = .tex 同目录的 overlap.json,步骤 ④ 跑出来的结构化几何检测)
2. 加载 references/visual-review-checklist.md(18 项强制审查清单)
3. 逐项回答 46 个 Y/N:S1-S10(空间)/ T1-T7(文字)/ M1-M10(语义)/ E1-E14(连线精度)/ A1-A5(美学)
   每项必须有一句证据("我在 PNG 中看到…" 或 "overlap.json 中 N 处 line-through-node 我标为 …"),不允许凭印象
4. 任一项 N → 列入 blocker → 输出 patch → Edit → 回 ④ 重编译 → 回 0
5. Step 0 + 全部 18 项 Y → **把图给用户看**(用户终审,AI 视觉有盲区)
6. 用户也通过 → 交付

Step 0:视觉直觉先行(在 18 项 Y/N 之前必走)

把自己当成第一次看这张图的读者,用 3 大法则扫描整图,输出 5 段证据:

| Step 0 检查 | 输出要求 | 法则 | |---|---|---| | A. 3 秒第一印象 | 写出"3 秒内看到的 3 件事"(如 "蓝色主流左→右 / 中间有 hero / 右侧 3 个 head")| 法则 1 | | B. 主线眼睛轨迹 | 找出图中最重要的那条数据流,用眼睛沿它从起点走到终点。任何"卡住"位置 = blocker(如 fig97 Pedersen 框里跑出箭头 / fig118 tip 撞坐标 / fig120 孤立彩点) | 法则 2 | | C. 删除测试 | 列出疑似可删的元素(孤立装饰 / 多余 leader / 重复 label)。空则一句 "无可删元素" | 法则 3 | | D. 审美退步测试(round ≥ 2 时) | 对比上轮 PNG,本轮修了 X bug 但有没有引入新审美问题(对称丢 / 平行断 / 间距不均)? | 法则 3 | | E. 大块空白 + ①注释核验 | 扫描整图无 > 3cm × 2cm 大块空白(细线不算填充,必须有 box/text/viz);figure.tex 头部有 form A/B 注释块。fig137 教训:写"rail 填充"= 自欺。若有大空白 → 回 ① 重新规划布局,不是改 .tex | 法则 3 |

Step 0 任一项 fail = blocker,列入 patch 列表。Step 0 通过才开始 Step 3 的 18 项

为什么 Step 0 在 18 项之前:18 项是机械验证(细节体检),容易陷入"逐项 Y / 整体烂"。Step 0 是视觉直觉(整体心电图),强迫 sub-agent 以读者视角看图而不是 generator 视角。两者缺一不可。

overlap.json 处理(S8 + E12 配套):

  • errors[] 中的 text-overlap / text-overflow / off-center / text-line 大概率是真 bug——按坐标定位 PNG,修
  • errors[] 中的 line-through-node 是候选(E12)——逐条 triage:
  • 矩阵 cell / 热力图 / 神经网络收敛节点的 hit → ignore(semantic 故意,已知误报)
  • 路径绕路穿过无关元素(如 dashed leader 穿过 box / 长曲线压在 node 上) → fix,重新 routing 或换 z-order
  • errors[] 中的 node-overlap 是候选(S8)——逐条 triage:
  • drop-shadow / parent-child 都已被 filter,命中的几乎都是真问题
  • panel-overflow 边界节点(如 PGM 节点底部超 panel 1-3pt) → 调坐标
  • 两个 sibling node 真重叠 → 分开
  • 把 triage 决定写进 ④.5 自评的 S8 / E12 证据里("node-overlap N 处:X 处 fix(panel 边界),Y 处 ignore";"line-through-node N 处:M 处 fix(路径绕路),K 处 ignore(矩阵 cell)")

优化规则(Batch 9 实测:fig89 耗 32min / fig86 耗 55min,多数时间在重复 Read 和 triage):

  1. Reference 文档只首轮加载SKILL.md / lessons.md / visual-patterns.md / step1-instructions.md / visual-review-checklist.md 在 round 1 Read 一次后,后续 round 不要重复 Read(context 里已有)。只 Read 变化的:PNG + overlap.json + 你刚 Edit 的 figure.tex 片段
  2. 空检测跳过 triageoverlap.jsonline-through-node 数组为空 → E12 直接答 Y:"overlap.json 中 0 处 candidate"。node-overlap 同理 → S8 直接 Y。不要为空数组写 reasoning
  3. Triage 增量化 — round N 时只对 round N-1 之后新出现的 candidate 写 reasoning;之前 triage 过的复用结论("同 round 1 第 3 处,仍 ignore")
  4. ERROR 优先于 candidate — 先把 text-overlap / text-overflow / text-line / off-center 这 4 类 ERROR 修完(这些大概率是真 bug),再回头 triage candidate。避免一边修 ERROR 一边重新 tr

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.