Skip to content

Add craft-skills plugin with sprite skills - #4

Merged
github-actions[bot] merged 2 commits into
mainfrom
ditto/relaxed-turing-x1qf5m
Oct 16, 2026
Merged

github-actions[bot] merged 2 commits into
mainfrom
ditto/relaxed-turing-x1qf5m

Conversation

@whoamimi

@whoamimi whoamimi commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Add the craft-skills plugin under plugins/craft-skills, with its manifest and marketplace entry.
  • Add the mimi-sprite-studio skill (provided by the Sprite Sniptool session): background removal, sprite-sheet cutting, animated stickers (WebP/GIF/APNG) and Discord-safe mascot profile pictures.
    • scripts/cutout.py, scripts/animate.py, scripts/render_svg.py (Pillow + numpy; Chromium for SVG rendering).
    • references/mascot-styles.md, references/layered-animation.md.
  • Regenerate the README directory tree.

The other session proposed a separate sprite-skills plugin; per the user's request it lives in craft-skills instead. The skill content is unchanged.

Verification

  • claude plugin validate passes for the marketplace and craft-skills.
  • All six skill files match the sha256 prefixes the source session published.
  • Smoke-tested: cutout.py cut 4 sprites from a generated sheet; animate.py wrote WebP/GIF/APNG; render_svg.py rendered a PNG and circle preview.

🤖 Generated with Claude Code

https://claude.ai/code/session_01N6QLSr7Xy6yQNtiWmjghNz

Add the craft-skills plugin manifest, an empty skills directory and its
marketplace entry. The sprite skill files will be added in a follow-up
commit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01N6QLSr7Xy6yQNtiWmjghNz
Add the sprite skill (background removal, sprite-sheet cutting, animated
stickers and mascot profile pictures) with its cutout, animate and
render_svg scripts and reference recipes. Update the plugin and
marketplace descriptions and regenerate the README tree.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01N6QLSr7Xy6yQNtiWmjghNz
@whoamimi
whoamimi marked this pull request as ready for review October 16, 2026 16:39
Copilot AI lite review requested due to automatic review settings October 16, 2026 16:39
@github-actions
github-actions Bot merged commit d3ab12f into main Oct 16, 2026
6 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved critical SVG security issue and moderate rendering and cutout issues remain.

3 open findings
What changed in this PR

Adds the craft-skills plugin with the mimi-sprite-studio skill for sprite processing, animation, mascot rendering, documentation, and marketplace registration.

Changes:

  • Adds plugin metadata and marketplace registration.
  • Adds sprite-processing scripts and workflow documentation.
  • Updates the README directory tree.
File Summary
README.md Adds the plugin directory tree.
plugins/​craft-skills/​skills/​mimi-sprite-studio/​SKILL.md Documents sprite workflows.
plugins/​craft-skills/​skills/​mimi-sprite-studio/​scripts/​render_svg.py Renders mascot SVGs; critical security issue (4 votes) and two moderate rendering issues (2 and 3 votes).
plugins/​craft-skills/​skills/​mimi-sprite-studio/​scripts/​cutout.py Removes backgrounds and cuts sprite sheets; moderate edge-halo issue (1 vote).
plugins/​craft-skills/​skills/​mimi-sprite-studio/​scripts/​animate.py Generates animated sticker formats.
plugins/​craft-skills/​skills/​mimi-sprite-studio/​references/​mascot-styles.md Provides mascot style recipes.
plugins/​craft-skills/​skills/​mimi-sprite-studio/​references/​layered-animation.md Documents layered animation guidance.
plugins/​craft-skills/​.claude-plugin/​plugin.json Defines the plugin manifest.
.claude-plugin/​marketplace.json Registers the plugin.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

with tempfile.TemporaryDirectory() as d:
html = os.path.join(d, 'p.html')
open(html, 'w').write(f'<body style="margin:0;background:transparent"><div style="width:{S}px;height:{S}px">{svg}</div></body>')
subprocess.run([chromium(), '--headless=new', '--no-sandbox', '--disable-gpu', '--hide-scrollbars',
svg = open(a.svg).read()
with tempfile.TemporaryDirectory() as d:
html = os.path.join(d, 'p.html')
open(html, 'w').write(f'<body style="margin:0;background:transparent"><div style="width:{S}px;height:{S}px">{svg}</div></body>')
if a.circle_preview:
im = Image.open(a.out).convert('RGBA'); m = Image.new('L', im.size, 0)
ImageDraw.Draw(m).ellipse((0, 0, S - 1, S - 1), fill=255)
bg = Image.new('RGBA', im.size, (40, 40, 46, 255)); bg.paste(im, (0, 0), m)
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.

3 participants