From GlyphPact
Audit, compile, repair, wire, update, and visually verify one or many SVG files as stable Flutter IconData fonts with GlyphPact. Use when adding or replacing Flutter icons, migrating an existing icon font, processing large SVG collections, isolating malformed or unsupported artwork, preserving codepoints and public Dart constants, configuring layered alpha or text fonts, fixing font registration, or proving generated glyphs in a running Flutter target.
How this skill is triggered — by the user, by Claude, or both
Slash command
/glyphpact:sync-flutter-svg-iconsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a reproducible Flutter icon-font integration with explicit fidelity
Produce a reproducible Flutter icon-font integration with explicit fidelity policy, stable codepoints, and rendered proof. Treat a successful compilation as artifact evidence, not visual evidence.
Resolve absolute paths for:
pubspec.yamlInspect repository status before editing and preserve unrelated changes. Keep source artwork under project control by default. Do not make builds depend on Downloads, Desktop, or another machine-local directory.
Read configuration.md before creating or changing a config. Read fidelity-policy.md when the audit reports any issue or the sources contain text, alpha, paint servers, masks, filters, external content, or other complex SVG features. Read flutter-verification.md before wiring a new font or claiming completion.
Prefer the GlyphPact MCP server bundled with this plugin. Do not search for or depend on a GlyphPact source checkout.
Use the MCP operations in this order:
audit_icon_pack with exactly one absolute input_path or absolute
config_path. Keep lossy="error" and unrepresentable="error" first.
Start at offset=0. If the response contains snapshot.id, call the same
tool with that snapshot_id and each findings.nextOffset until every
bounded findings page has been reviewed. Then release it with
release_snapshot=true.build_icon_font with the absolute checked-in config path.check_icon_font with the same config after publication.read_icon_report to page through the published report after a successful
build.The audit uses disposable output and removes it before returning, so it does not
produce a persistent report path for read_icon_report. Review its typed audit
findings pages through the stable local snapshot. Do not rerun compilation for
each page. Snapshots expire automatically after a bounded idle or maximum age,
but release them explicitly after review. Pages contain at most 500 findings and
1 MiB. Each snapshot is capped at 64 MiB, expires after 15 idle minutes or one
hour total, and shares a cache limited to 8 snapshots and 128 MiB. Use report
paging only after build_icon_font publishes the configured report.
Pass absolute paths because the MCP server is installed outside the user's
workspace. Use jobs=1 only when the execution environment blocks worker
processes; otherwise leave automatic parallelism enabled. Increase timeouts
proportionally for large sets instead of splitting them arbitrarily.
If MCP tools are unavailable but the plugin files are accessible, locate the
plugin root two directories above this SKILL.md and run the packaged CLI:
python <plugin-root>/scripts/run_glyphpact.py \
--config /absolute/project/tool/icon_font.json --json
Use --check for the artifact-non-rewriting reproducibility gate. It may create
the output parent directory and leaves a persistent .<output>.glyphpact.lock
coordination file. If the packaged wheel is missing or its checksum fails,
report an incomplete plugin installation. Do not silently substitute an
editable checkout or a globally installed version.
Inventory the SVG tree and record:
Keep exact duplicates unless the user requests consolidation. Different public names may intentionally point to identical artwork.
Run the strict audit before editing project files. Classify each source from GlyphPact's typed result:
lossy="convert" approvalunrepresentable="skip" approvalDo not weaken safety checks to get a partial result. For a truly broken source, use a temporary mirror that preserves relative paths and excludes only the confirmed file, then report the required re-export, font, linked resource, or redraw action.
For an existing integration:
For a new integration:
read_icon_report in bounded pages for the published glyphs, skipped
sources, and diagnostic set.check_icon_font and require a clean result.Use adopt_output=true only when the user explicitly intends GlyphPact to
replace a non-empty directory that lacks its ownership marker. Resolve the
exact target and inspect it first.
Register the primary font and every reported layer font using the exact
families and files in iconfont.report.json. Set fontPackage only for a
reusable Flutter package. Import the generated provider instead of duplicating
numeric codepoints.
After Dart or pubspec.yaml edits:
dart format on edited Dartdart analyze in proportion to the changeInspect every icon for small sets. For larger sets, render a complete searchable gallery, scan every card for tofu, clipping, emptiness, and shifts, then compare all diagnostics and a representative sample directly. Include the first, last, repaired, approximated, skipped, directional, and layered cases.
Compare silhouette, holes, winding, stroke caps and joins, proportions, padding, clipping, baseline, direction, and alpha. Validate the generated layered widget separately from its documented single-glyph fallback.
Do not claim visual fidelity from a cmap check, analyzer result, successful build, or widget construction alone.
Report:
Use the generated report as the machine log and the final response as the human summary. Do not add a second persistent project log without an existing convention or an explicit request.
npx claudepluginhub omar-hanafy/glyphpact --plugin glyphpactGuides reception of code review feedback: verify before implementing, avoid performative agreement, push back with technical reasoning when needed.
Design banners for social media, ads, website heroes, and print with multiple art direction options and AI-generated visuals.