Goal
スモウルビー公式キャラクターの Shimaraby / Shimacat スプライト・コスチュームが、upstream マージで消失していたため復元する。あわせて、Scratch トレードマークに該当する Cat Flying スプライト・コスチュームが除去テストの不備により残存していたので除去し、テスト不備も修正する。
背景・原因調査
Shimaraby / Shimacat 消失
追加コミット: d6fb369bc2 (sprites), 1c3f91a216 (costumes), f2b5c09e5b (CDN hash 化)
消失タイミング: PR feat: upstream merge 2026-05 (v13.7.2 — 284 commits, scratch-blocks v2) #630 マージコミット dedebb4ecd (feat/upstream-merge-2026-05) でマージ直前 (dedebb4ecd^1) は Shimacat 3 件存在、マージ後は 0。実は 1 つ前の v13.7.2 マージ (4e2ddc1406, 2026-05-03) でも同じ消失が起きており、2 連続で同じ衝突を見落としている。
アセット PNG は packages/scratch-gui/static/smalruby-assets/ に 4 枚すべて残存。
Cat Flying 残存
packages/scratch-gui/test/unit/lib/removed-trademarks.test.js の trademarkNames 配列で 'Cat-Flying' (ハイフン) と書かれているが、実データは 'Cat Flying' (スペース) のため検出をすり抜けていた。
sprites.json:3772 に Cat Flying、costumes.json:2004,2019 に Cat Flying-a/b が現存。
Affected Files
packages/scratch-gui/src/lib/libraries/sprites.json — Cat Flying 削除、Shimaraby/Shimacat 追加 (Shark の後、Skeleton の前)
packages/scratch-gui/src/lib/libraries/costumes.json — Cat Flying-a/b 削除、Shimaraby-a/b, Shimacat-a/b 追加
packages/scratch-gui/test/unit/lib/removed-trademarks.test.js — 'Cat-Flying' → 'Cat Flying' 修正
packages/scratch-gui/test/unit/lib/smalruby-original-sprites.test.js (新規) — Shimaraby/Shimacat 存在チェック
.claude/skills/upstream-merge/SKILL.md — マージチェックリストに Smalruby 独自 sprite/costume 保護項目を追記
packages/scratch-gui/src/assetsManifest.json の未コミット差分 (267 件追加 + 並び替え) は本件と無関係 (別件のメディアライブラリ再生成と思われる) のため本 PR では触らない 。
Implementation Steps
Phase 1: Cat Flying 除去 + テスト修正 (TDD)
Phase 2: Shimaraby / Shimacat 復元 (TDD)
Phase 3: 再発防止ドキュメント追加
Phase DoD: CI 完了 + ブラウザ確認
Definition of Done
Test Plan
Type
Timing
Target
Unit tests (TDD)
Phase 1, 2 で RED → GREEN
removed-trademarks.test.js, smalruby-original-sprites.test.js
Browser verification
Phase DoD
Playwright MCP でスプライト/コスチュームライブラリ動作
Risks & Open Questions
なし (assetsManifest.json 未コミット差分は本 PR スコープ外、別件として後日対応)
Goal
スモウルビー公式キャラクターの Shimaraby / Shimacat スプライト・コスチュームが、upstream マージで消失していたため復元する。あわせて、Scratch トレードマークに該当する Cat Flying スプライト・コスチュームが除去テストの不備により残存していたので除去し、テスト不備も修正する。
背景・原因調査
Shimaraby / Shimacat 消失
d6fb369bc2(sprites),1c3f91a216(costumes),f2b5c09e5b(CDN hash 化)dedebb4ecd(feat/upstream-merge-2026-05) でマージ直前 (dedebb4ecd^1) は Shimacat 3 件存在、マージ後は 0。実は 1 つ前の v13.7.2 マージ (4e2ddc1406, 2026-05-03) でも同じ消失が起きており、2 連続で同じ衝突を見落としている。packages/scratch-gui/static/smalruby-assets/に 4 枚すべて残存。Cat Flying 残存
packages/scratch-gui/test/unit/lib/removed-trademarks.test.jsのtrademarkNames配列で'Cat-Flying'(ハイフン) と書かれているが、実データは'Cat Flying'(スペース) のため検出をすり抜けていた。sprites.json:3772にCat Flying、costumes.json:2004,2019にCat Flying-a/bが現存。Affected Files
packages/scratch-gui/src/lib/libraries/sprites.json— Cat Flying 削除、Shimaraby/Shimacat 追加 (Shark の後、Skeleton の前)packages/scratch-gui/src/lib/libraries/costumes.json— Cat Flying-a/b 削除、Shimaraby-a/b, Shimacat-a/b 追加packages/scratch-gui/test/unit/lib/removed-trademarks.test.js—'Cat-Flying'→'Cat Flying'修正packages/scratch-gui/test/unit/lib/smalruby-original-sprites.test.js(新規) — Shimaraby/Shimacat 存在チェック.claude/skills/upstream-merge/SKILL.md— マージチェックリストに Smalruby 独自 sprite/costume 保護項目を追記packages/scratch-gui/src/assetsManifest.jsonの未コミット差分 (267 件追加 + 並び替え) は本件と無関係 (別件のメディアライブラリ再生成と思われる) のため本 PR では触らない。Implementation Steps
Phase 1: Cat Flying 除去 + テスト修正 (TDD)
removed-trademarks.test.jsの'Cat-Flying'を'Cat Flying'に修正 → 既存データで失敗することを確認sprites.jsonからCat Flyingsprite を削除、costumes.jsonからCat Flying-a/bを削除removed-trademarks.test.jspass + lint passfix: remove Cat Flying sprite/costume and fix trademark detection testPhase 2: Shimaraby / Shimacat 復元 (TDD)
test/unit/lib/smalruby-original-sprites.test.jsを追加 (sprites.json に Shimaraby, Shimacat / costumes.json に Shimaraby-a, Shimaraby-b, Shimacat-a, Shimacat-b が存在することを assert) → 失敗を確認f2b5c09e5b:sprites.json/1c3f91a216:costumes.jsonの内容を参考に sprites.json (Shark の後、Skeleton の前) と costumes.json に Shimaraby/Shimacat エントリを再追加fix: restore Smalruby original sprites Shimaraby/Shimacat lost in upstream mergePhase 3: 再発防止ドキュメント追加
.claude/skills/upstream-merge/SKILL.mdに「sprites.json/costumes.jsonをマージするときは Smalruby 独自エントリ (Shimaraby, Shimacat) と削除済みトレードマーク (Cat, Cat Flying, Gobo, Pico, Pico Walking, Nano, Tera, Giga, Giga Walking) を必ず確認する」チェック項目を追記docs(upstream-merge): add checklist for preserving Smalruby-original sprites and removed trademarksPhase DoD: CI 完了 + ブラウザ確認
gh pr checks <PR> --watch)Definition of Done
removed-trademarks.test.jsに'Cat Flying'(スペース) が含まれ pass するsprites.json/costumes.jsonから Cat Flying が完全に消えているsprites.jsonに Shimaraby, Shimacat sprite が存在するcostumes.jsonに Shimaraby-a/b, Shimacat-a/b が存在するsmalruby-original-sprites.test.jspassTest Plan
removed-trademarks.test.js,smalruby-original-sprites.test.jsRisks & Open Questions