Scratch blocks color
Use this skill when the user uploads a `.sb3` or `.sprite3` file, or when the conversation is about Scratch and clearer block-style visualization would help.From its SKILL.md
npx -y skills add Z-Bra0/Scratch-Skills --skill scratch-blocks-colorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 2 commands, including `scripts/render_svg.py` and 1 more.
SKILL.md
5.7 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
Scratch Code Assistant
Output Contract
scratch-jsonis internal-only. Never paste it into the final user reply.- If you show Scratch code or block structure to the user, you must run
scripts/render_svg.py. - Use
scratch-jsononly for tool input and internal reasoning. - If you mention Scratch code, show rendered blocks instead of describing the code only in prose whenever practical.
- Use the SVG file path printed by
scripts/render_svg.pyin a Markdown image tag so the user can see the rendered block image. - Do not add a follow-up like "Want me to render an example?".
- Do not rewrite, add, split, or restyle the rendered Scratch blocks.
- Do not hand-draw, imitate, or approximate Scratch block visuals from memory.
Goal
Help with Scratch code questions by representing Scratch projects into
scratch-json when needed, reasoning over that internal representation, and
showing Scratch code to the user through scripts/render_svg.py instead of
raw JSON. For conceptual questions, prefer a visual rendered example over prose-only explanation.
Repo Usage
- Read files under
references/when you need skill guidance or file-handling instructions. - Files under
data/are runtime assets used byscripts/, not AI-facing reference docs. - Do not read files under
data/as reference material.
Internal scratch-json Reference
scratch-json is an internal working format for the AI. Do not return it to the user.
scratch-json is a flat JSON array of objects. Each object repeats its owning target, which can represent a Sprite or the Stage.
This is different from raw Scratch project.json / sprite.json. If you have a raw Scratch file, run scripts/extract.py first.
Each object includes:
| Field | Type | Description |
|---|---|---|
type | string | script, variable, or list |
target | string | Owning sprite or stage name |
variable Structure
| Field | Type | Description |
|---|---|---|
name | string | Variable name |
value | any | Current value |
list Structure
| Field | Type | Description |
|---|---|---|
name | string | List name |
items | list | Current list items |
script Structure
| Field | Type | Description |
|---|---|---|
blocks | list of block objects | One linked top-level script |
Block Structure
Every block must include opcode. params and blocks are optional.
| Field | Type | Description |
|---|---|---|
opcode | string | Block type, Scratch block opcode |
params | list | Optional positional input values |
blocks | list of scripts | Optional sub-script branches |
params Item Types
| Type | Example |
|---|---|
| number / string | 10, "Hello!", "space" |
| reporter block | { opcode: motion_xposition } |
| variable / list / broadcast | { type: variable, name: score } |
blocks Branches
- Most blocks omit
blocks. control_repeatandcontrol_ifuse one branch for the body.control_if_elseuses two branches: index0forthen, index1forelse.
Format
This format is for internal reasoning and tool input, not for user-facing replies.
Internal object kinds:
script, variable, list
Display
- Must use
scripts/render_svg.pybefore showing Scratch code to the user - Treat
scratch-jsonas intermediate data only - If the output is for the user, render first and reply with the rendered blocks, not JSON
scripts/render_svg.py <SCRATCH_JSON_PATH>writes the SVG into/tmpwhen no output path is given, then prints the absolute output file path as the last line- Use that absolute SVG path directly in Markdown image form, for example:

# write scratch-json to a temp file, then pass it to render_svg.
# The script writes the SVG into /tmp and prints the SVG path on the last line.
tmp_json=/tmp/scratchcode/blocks.json
python3 <SKILL_DIR>/scripts/render_svg.py "$tmp_json"
Workflow
Step 1. Decide whether file extraction is needed
- If the user is asking a general Scratch code question, go to step 2 and prefer a rendered example plus brief explanation.
- If the user provides a
.sb3or.sprite3file, follow the process inreferences/UPLOADS.md. - If you are given raw Scratch
project.jsonorsprite.json, runscripts/extract.pyfirst beforescripts/render_svg.py.
Step 2. Reason Internally
- Use
scratch-jsononly as an internal representation for analysis. - For simple conceptual questions, create a minimal internal example when needed so you can render it.
- When you create scratch-json yourself, write it to a temp file and pass the file path to
scripts/render_svg.py.
Step 3. Reply to the User
- Never return
scratch-jsondata to the user. - For "how to" or "what does this do" questions, prefer rendered Scratch blocks first.
- If you want to show Scratch code, always run
scripts/render_svg.pyfirst. - Put the printed absolute SVG path into a Markdown image tag.
- If you did not run
render_svg.py, do not output hand-made block visuals; answer in prose or run the renderer first. - After rendering, explain the answer in short prose around the rendered block output when useful.
- Before sending the final answer, check: "Am I about to paste
scratch-json?" If yes, stop and render it first.
What ships with it: 14 files
128.8 KB alongside SKILL.md, 11 of them executable
data/
- BLOCK_CATALOG.json29.9 KB
- BLOCK_CATALOG_SPEC.md1.5 KB
references/
- UPLOADS.md1.2 KB
scripts/
- extract.pyruns9.5 KB
- render_ascii.pyruns16.0 KB
- render_svg.pyruns2.7 KB
- svg_renderer/catalog.pyruns5.3 KB
- svg_renderer/config.pyruns4.3 KB
- svg_renderer/geometry.pyruns6.1 KB
- svg_renderer/__init__.pyruns67 B
- svg_renderer/inline.pyruns25.7 KB
- svg_renderer/layout.pyruns19.8 KB
- svg_renderer/models.pyruns2.0 KB
- svg_renderer/normalize.pyruns4.9 KB