Scratch blocks color
Agent skill for https://scratch.mit.edu/ . helps AI read and speak Scratch in a text-friendly format.
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.
One thing 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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
5.7 KB, 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.