Skip to content

fix: ship the Claude plugin icon as PNG (0.1.0-canary.6) - #21

Merged
bntvllnt merged 1 commit into
mainfrom
fix/claude-icon-png
Sep 29, 2026
Merged

bntvllnt merged 1 commit into
mainfrom
fix/claude-icon-png

Conversation

@bntvllnt

Copy link
Copy Markdown
Contributor

Problem

The Claude marketplace rejected .claude-plugin/icon.svg with ICON_INVALID. The generator wrapped the PNG logo as a base64 data: <image> inside the SVG, and listings reject SVGs that embed images. The listing therefore fell back to the GitHub avatar.

Fix

  • scripts/sync.py: replace icon_svg with icon_png, which checks for a square PNG of at least 128px that is at most 2 MiB. The Claude package now ships .claude-plugin/icon.png, and plugin.json sets "icon": "./.claude-plugin/icon.png".
  • The old SVG is removed from the generated package.
  • Version bumped to 0.1.0-canary.6. README and CHANGELOG are updated, and README records the remaining evidence gap.

Verification

  • python3 -m unittest discover -s tests -v: 38 tests OK. The updated tests fail on the old generator.
  • python3 scripts/sync.py --check and git diff --check pass.
  • claude plugin validate --strict passes for plugins/claude and for the marketplace.
  • Not verified: whether the marketplace listing accepts and renders the PNG. That can only be seen after a re-scan.

https://claude.ai/code/session_01VhX66NukkK9PC2hT9Zp8h1

The marketplace rejected .claude-plugin/icon.svg as ICON_INVALID because
the generator embedded the PNG logo as a data-URI image inside the SVG.
Ship assets/vllnt-logo.png as .claude-plugin/icon.png and name it with
`icon` in plugin.json.

Claude-Session: https://claude.ai/code/session_01VhX66NukkK9PC2hT9Zp8h1
@bntvllnt bntvllnt self-assigned this Sep 29, 2026
@bntvllnt
bntvllnt merged commit b2c43af into main Sep 29, 2026
4 checks passed
@bntvllnt
bntvllnt deleted the fix/claude-icon-png branch September 29, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant