Skip to content
Design
Skill

/figedit

将位图图形重建为高保真可编辑 SVG 与原生 PowerPoint,支持仅文字可编辑、文字/结构/公式可编辑、源图素材保真混合、选择性或完整前景拆分,以及复杂连续背景的 AI 清版底重建。当用户希望把截图、论文插图、流程图、架构图、信息图、UI、图表/地图、海报或封面转成可编辑图形,或提到“图片转可编辑 SVG/PPT”“仅文字可编辑”“图表重建”“FigEdit”时使用。

BOOST
From plugin
figedit
1901 skill
Install
$ npx -y skills add giszzt/figedit --skill figedit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/figedit

Context preview

The summary Claude sees to decide when to auto-load this skill.

将位图图形重建为高保真可编辑 SVG 与原生 PowerPoint,支持仅文字可编辑、文字/结构/公式可编辑、源图素材保真混合、选择性或完整前景拆分,以及复杂连续背景的 AI 清版底重建。当用户希望把截图、论文插图、流程图、架构图、信息图、UI、图表/地图、海报或封面转成可编辑图形,或提到“图片转可编辑 SVG/PPT”“仅文字可编辑”“图表重建”“FigEdit”时使用。

SKILL.md

figedit.SKILL.md
name: figedit-v2
description: 将位图图形重建为高保真可编辑 SVG 与原生 PowerPoint,支持仅文字可编辑、文字/结构/公式可编辑、源图素材保真混合、选择性或完整前景拆分,以及复杂连续背景的 AI 清版底重建。当用户希望把截图、论文插图、流程图、架构图、信息图、UI、图表/地图、海报或封面转成可编辑图形,或提到“图片转可编辑 SVG/PPT”“仅文字可编辑”“图表重建”“FigEdit”时使用。

FigEdit

把不可编辑的位图图形重建为高保真、可维护、可继续编辑的 SVG 与原生 PPTX 包。

**主流程:勘察 → 备料 → 组装 → 验收。**先判断,后执行。判断阶段不碰坐标也不跑脚本,只回答“每一部分从哪来”;执行阶段才按已定路线调工具。

核心原则

输出画面上的每一块像素只可能有四个来源:

1. **SVG 画的** —— 结构、文字、公式 2. **从源图切的** —— `crop` 3. **AI 生成的** —— 区域清版底(背景)、色键版再生(前景对象) 4. **整块原样保留的** —— `preserve-raster`

路由就是给每一部分指派来源,每部分有且只有一个。指派完成即可开工;指派不全就是漏了东西。

重绘门槛

只有“用三五笔基础图元能画得像”的图形才允许 `redraw`:朴素箭头、方框、分隔线、圆点、加减号、对勾、简单节点圆。有定制轮廓、渐变、阴影、多色细节、品牌或角色身份的对象一律按素材处理(切、再生或压平),哪怕它看起来简单。拿不准时按素材处理,不重画。重画产物必须与源图形状可对照,画不像就是路由错误,不是绘画技术问题。

工作位置

所有命令在用户项目目录运行,每张图建任务目录(`figure-task/work` 证据、`figure-task/out` 交付),绝不写回 skill 目录。Windows 路径用正斜杠,非 ASCII 路径先经文件系统验证。

1 勘察

看一次足够清晰的源图,产出一份**重建路径概要**。这是本阶段唯一的交付物,纯文字,**零坐标**,二十行以内,写给人看。槽位固定,缺项写“无”:

图型与分区    每个区域一行:这是什么、底子从哪来
需要生成的    清版底张数 + 色键版张数 = 计费调用总数,或“无”
不可重画的对象  可直接裁的一堆、需再生的一堆,按名字和位置点出来,或“无”
公式          有无、大致数量 → 验证档位
工作量重心    这张图的时间主要花在哪
需要用户定    具体问题,或“无”

对象用名字和空间关系指认(“标题右边那个地球仪,骑在面板边框上”),不写 bbox。坐标属于备料阶段。

概要写完路线即锁定,后续不翻案。写不出“工作量重心”说明没看懂图;“不可重画的对象”分不出两堆说明污染扫描没做。

图型速查表(按区域查,不是按整图)

| 看到的 | 底子从哪来 | 里面的对象从哪来 | | -------------------- | -------- | --------------------------------- | | 白底或平色底的流程图、架构图、论文插图 | SVG 画 | 通用图元画;专有图标按窗口干净与否切或再生 | | 多面板拼接的复合图 | 每个面板分别查 | 同上,按面板成批扫 | | 截图、图表主体、缩略图网格,内部不需要改 | 整块保留 | 不拆 | | 地图、照片、插画上压着要改的标注 | 区域 AI 清版 | 要能单独动的再生;不用动的压平进底板 | | 海报、封面、场景图,文字压在连续画面上 | AI 清版 | 同上 | | 公式密集的论文图 | 按上面几行查底子 | 公式一律 `math`,验证档锁 `pptx-triggered` |

一张图的不同区域各查各的,不要用一个标签盖住整幅。判不准时回到四来源指派。

素材两堆

过不了重绘门槛的对象只分两堆,一次扫完,不逐个走流程:

  • **窗口干净的** → 切。轮廓完整、四周无异物、外接矩形不含别人的像素。
  • **被压盖的** → 边框、文字、箭头、连接线、邻居穿过或遮住它。需要单独动就再生;不需要单独动且落在清版区就压平进底板。确定性 SVG 区没有底板可压,那里的污染对象只能再生。

判据细则见 `references/routing.md`,元素语义见 `references/element_decision_matrix.md`。

编辑深度与提问

用户原话优先:说“仅文字可编辑”锁 `text-only`(连续场直接压平);点名对象锁 `selective-assets`;要求全部可动锁 `full-extract`;检出公式且用户未表态时默认 `text+structure` 并锁 `pptx-triggered`。

**提问一次问完。**概要写完后若有待决项,把前景深度选项、生成预算和 PPTX 附着预授权(含公式时)合并成一次提问。只有不同选择会显著改变费用或交付能力时才问;能自己定的不问。拿到附着预授权后验收阶段直接用 `--allow-attach`,不再二次提问。

**用户确认前不得发起任何计费生成调用,也不得裁剪或合成。**OCR 不在此列,见下。

2 备料

按概要指派的来源把素材做出来。开头无条件先跑一次取证——不计费、输出无论走哪条路都要用,可以和提问并行。新任务用 `--init` 一并建目录:

python scripts/prepare_measurements.py input.png --init figure-task

一次跑出 OCR、风格采样和结构证据(`work/geometry.json`:面板 bbox 与颜色、每行文字的槽位与字号色值)。画布尺寸、OCR 条数、面板与文字槽数量、低置信文字清单直接打印在屏幕上,**不要再写代码去读这些 JSON**。看一次 `work/diagnostics/geometry_overlay.png` 做整体校验,别逐框打开。

**此后任何像素问题都走 `measure.py`,一次问完。**紧边界、区域颜色、四边净空、透明图边界、反算字号、两图对齐残差,还有"我想看看这块长什么样",都是它的查询类型。一次问十个和问一个花的时间一样,问完拿到一张数字表加一张放大拼图。**不要手写 `python -c` 数像素,也不要自己裁图存盘再打开看。**

python scripts/measure.py input.png --exclude-text figure-task/work/ocr_results.json --q "logo:bbox@1850,1600,300,240" "hdr:color@0,0,2400,180" "t1:fontfit@340,881,275,31" "card:zoom@1290,1550,360,300" --sheet figure-task/work/measure_sheet.png

量图标一律带 `--exclude-text`。粗窗口几乎总会把旁边的标题文字圈进来,不排除就会量成"图标加标题"的外接矩形。量得结果会用红框画在拼图上,一眼能看出量对没量对。

**结构证据是候选不是结论,也不改路由。**勘察锁定的路线不因为看到 overlay 就翻案。照片、插画、海报这类非平面设计图会标 `abstained: true` 并只给极少候选,这是设计行为:那里本就没有面板可找,该由人工量或走清版。各项候选的可信程度见 `references/scripts.md`。

以下分支按概要执行,互不依赖,能并行就并行。**概要没指派到的分支直接跳过**——纯 SVG 图不跑任何生成,纯清版压平图不跑任何裁剪。

确定性 SVG 图(白底流程图、架构图、论文插图,无 crop 无生成)三个分支一个都不进:备料就是上面那条取证命令加若干 `measure.py` 查询,跑完直接进组装。这类图的时间应当以分钟计。

有 crop 素材

此时才为这些对象点粗框(一眼精度,允许 10–20px 偏差),写进 `work/inventory.json`,只含走切或再生的对象;文字框来自 OCR,结构框在组装时确定,都不进来。路线已锁,点框是执行动作。

python scripts/snap_boxes.py input.png --inventory figure-task/work/inventory.json --exclude-text figure-task/work/ocr_results.json --out figure-task/work/snap_report.json --sheet figure-task/work/snap_sheet.png

看一次 `snap_sheet.png` 总览。判定写进各资产的 `crop_window`,人工只复看脚本点名项:`contaminated` 的改路由(改走再生或压平),`snap-failed`、带 warning 的和概要点名看不清的用 `inspect_regions.py` 局部放大。三值语义——`clean` 窗口余量是画布底色;`clean-on-fill` 余量是单一均匀实色且四边有净空,manifest 用同色重画承载面;`contaminated` 不得继续切。`quality_audit.py` 的事后核验是兜底。切图由 `crop_assets.py` 在组装时执行。

有清版区

`prepare_clean_plate_mask.py` 准备掩膜,生成区域底板,`check_plate_registration.py` 验配准(scale ≈ 1.00 / offset ≈ 0)。底板必须是对源区域的编辑——移除待重建前景并补全其后像素,其余保持对齐和身份一致,不是新场景。细则见 `references/background_reconstruction.md` 与 `references/image_generation.md`。

有再生对象

`probe_palette.py --boxes` 定键色与 sheet 数,生成色键版,`chroma_key.py` 抠出,`slice_grid.py` 切分。全部候选合并到尽量少的 sheet 上,重复元素只生成一次、按共享 id 多处放置。细则见 `references/chroma_regeneration.md`。禁止 rembg、GrabCut、阈值抠图等即兴替代。

无可用图像后端或底板不合格时停止并报告,不静默降级。

**生成是长杆,不要干等。**调用发出后立即并行推进文字清单、连接线和 manifest 草稿。

3 组装

必读 `references/manifest_spec.md`、`references/svg_authoring.md`、`references/quality_checklist.md`,脚本接口查 `references/scripts.md`,其余按路线加载(各文件开头有适用说明)。公式密集图必读 `references/formula-reconstruction.md`。把勘察结论记进 manifest 顶层 `reconstruction_plan`,写文字 `retype`、公式拆 `math`、结构 `redraw`、素材按备料结果落 `decision` 与 `crop_window`。

**首版允许用一次性生成器写出来**,元素多时这是正当做法。生成器写完 manifest 落盘后立即改名 `*.py.retired` 退场,后续修改一律走 `manifest_edit.py`——生成器留着会覆盖手工修复。

文字和面板可以先采纳草稿再改,比从零写快:

python scripts/draft_elements.py figure-task/work/geometry.json --out figure-task/work/draft_elements.json
python scripts/manifest_edit.py manifest.json --adopt figure-task/work/draft_elements.json
python scripts/compose_svg_package.py manifest.json --out figure-task/out --stage svg

**采纳即担责,采纳后必须立即 compose 一次并看差异热力图。**这是唯一的审阅路径:逐条读草稿 JSON 比手写还慢,看一张合成图错的地方自己会浮出来。草稿的 `font_size` 和 `fill` 是估计值,靠 `fit_text.py` 和视觉比对收敛,和手写值一样要改。审阅完清掉 `provenance` 或置 `review_status`,否则质量门会拦。

修复走批量通道,不手编大 JSON、不写临时 patch 脚本:

python scripts/manifest_edit.py manifest.json --apply-snap figure-task/work/snap_report.json
python scripts/manifest_edit.py manifest.json --set "label-3,label-4:y+=4"
Read more
Ships withfigedit

Turn raster figures into editable SVG and native PowerPoint files.

Get the whole plugin
Stats
190
Stars
16
Forks
Active
Maintenance
Python
Language
MIT
License
1mo ago
Last commit
4mo ago
Created
3d ago
Added

Repo: giszzt/figedit