A skill’s description

The task: Write the description for a skill about Drip, the platformer.

A skill’s description decides when it loads. This repo’s linter checks its length and its “Use when”, and that every file it names is real.

7 generations · 2 came out worse than their parents · llama-3.1-8b-instruct-fp8-fast

The root

Base model, bare prompt

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 234 characters.

  • Fail It never says "Use when …".
  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
**Drip Mastery** Master the challenges of Drip, a precision platformer that demands focus and skill. This skill tracks your progress and rankings in Drip on games.slopped.site, providing a competitive edge for the most elite players.

Editor’s note

The starting point. With nothing to go on, it invented a skill: “tracks your progress and rankings… for the most elite players”. Drip has no rankings.

How it was made: 1 call, 2.0 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.5 s · 2.0 neurons · cache d8afb9ca3acf

    No system text.

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.

    Output

    **Drip Mastery**
    
    Master the challenges of Drip, a precision platformer that demands focus and skill. This skill tracks your progress and rankings in Drip on games.slopped.site, providing a competitive edge for the most elite players.

Generation 2 · from Base model, bare prompt

+ the facts

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 576 characters.

  • Fail It never says "Use when …".
**Drip Platformer Expertise** Unlock expertise in the side-scrolling platformer Drip on games.slopped.site/drip/. Master the game's physics engine, pixel art, chiptune soundtrack, and ASCII levels. Understand how to implement movement using physics.js, world simulation and effects with game.js, pixel art with art.js, audio with audio.js, menus, input, and saved stats with main.js, and enemies and power-ups with levels.js. Utilize tools like check.mjs for headless gameplay, listen.mjs for audio recording and measurement, and cover.mjs for capturing the game's cover art.
Before: what “Base model, bare prompt” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 234 characters.

  • Fail It never says "Use when …".
  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
**Drip Mastery** Master the challenges of Drip, a precision platformer that demands focus and skill. This skill tracks your progress and rankings in Drip on games.slopped.site, providing a competitive edge for the most elite players.

Editor’s note

Better. Given the real facts, it repeats them accurately and names the tools. No “Use when”, so it would load at random, and the linter refuses it.

What changed in the input

+749 −0 characters

User: Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
Added: 749 characters (show) Facts about the skill (all true, from the repo): - Drip is the side-scrolling platformer at games.slopped.site/drip/. - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels). - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine. - Controls: keyboard, gamepad, touch. A test hook, window.__drip. - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover). - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).
How it was made: 1 call, 5.5 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.7 s · 5.5 neurons · cache 90d8f32fcb91

    No system text.

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).

    Output

    **Drip Platformer Expertise**
    
    Unlock expertise in the side-scrolling platformer Drip on games.slopped.site/drip/. Master the game's physics engine, pixel art, chiptune soundtrack, and ASCII levels. Understand how to implement movement using physics.js, world simulation and effects with game.js, pixel art with art.js, audio with audio.js, menus, input, and saved stats with main.js, and enemies and power-ups with levels.js. Utilize tools like check.mjs for headless gameplay, listen.mjs for audio recording and measurement, and cover.mjs for capturing the game's cover art.

Generation 3 · from + the facts

+ the skill-authoring skill

.claude/skills/skill-authoring/SKILL.md · the exact text

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 242 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. Ships tools to check the game, listen to the audio, and capture the cover. Use when testing Drip's physics, audio, or art, or when comparing its controls.
Before: what “+ the facts” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 576 characters.

  • Fail It never says "Use when …".
**Drip Platformer Expertise** Unlock expertise in the side-scrolling platformer Drip on games.slopped.site/drip/. Master the game's physics engine, pixel art, chiptune soundtrack, and ASCII levels. Understand how to implement movement using physics.js, world simulation and effects with game.js, pixel art with art.js, audio with audio.js, menus, input, and saved stats with main.js, and enemies and power-ups with levels.js. Utilize tools like check.mjs for headless gameplay, listen.mjs for audio recording and measurement, and cover.mjs for capturing the game's cover art.

Editor’s note

Mixed. The skill-authoring skill made it short and gave it a “Use when”. It also dropped every file and tool name, which the same skill says to keep. Refused.

What changed in the input

+3,779 −0 characters

Added: 3,779 characters of teaching (show)System: Follow this skill: --- name: skill-authoring description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits. --- # Writing skills here A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale. ## Description (the trigger) The description is all the model sees when deciding whether to load the skill. - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview". - Name **the tools it ships** (`validate.mjs`, `see.py`). - End with **"Use when …"**, listing the situations. - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word. - Don't put status or history in the description; it goes stale first. ## Body 1. **The model in a paragraph:** what the thing is and how it fits together, with the paths. 2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away. 3. **Commands** in a code block, each with a one-line what-it-proves. 4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug. 5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill. ## Tools over prose If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts: - live in the skill's `scripts/`; - import the real code (never a copy); - print what they checked; - exit 1 on failure; - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch. ## Keeping facts current - **Counts come from code, never typed:** - the games count is computed from the cards (integrate.mjs); - artwork counts come from artwork.js; - module counts come from the curriculum. - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact. - **When a builder hands back a skill, lint it** and read its description. ```sh node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...] ``` lint.mjs checks: - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use"; - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder; - "the X skill" names a real skill; - every script in `scripts/` parses (`node --check`, `py_compile`). Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").
User: Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only. Facts about the skill (all tr… 560 unchanged characters …and measures the audio), cover.mjs (captures the cover). - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).
How it was made: 1 call, 7.0 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.5 s · 7.0 neurons · cache 45e5065cd87e

    System text (3,771 characters)
    Follow this skill:
    
    ---
    name: skill-authoring
    description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits.
    ---
    
    # Writing skills here
    
    A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale.
    
    ## Description (the trigger)
    
    The description is all the model sees when deciding whether to load the skill.
    - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview".
    - Name **the tools it ships** (`validate.mjs`, `see.py`).
    - End with **"Use when …"**, listing the situations.
    - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word.
    - Don't put status or history in the description; it goes stale first.
    
    ## Body
    
    1. **The model in a paragraph:** what the thing is and how it fits together, with the paths.
    2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away.
    3. **Commands** in a code block, each with a one-line what-it-proves.
    4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug.
    5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill.
    
    ## Tools over prose
    
    If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts:
    - live in the skill's `scripts/`;
    - import the real code (never a copy);
    - print what they checked;
    - exit 1 on failure;
    - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch.
    
    ## Keeping facts current
    
    - **Counts come from code, never typed:**
      - the games count is computed from the cards (integrate.mjs);
      - artwork counts come from artwork.js;
      - module counts come from the curriculum.
    - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact.
    - **When a builder hands back a skill, lint it** and read its description.
    
    ```sh
    node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...]
    ```
    
    lint.mjs checks:
    - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use";
    - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder;
    - "the X skill" names a real skill;
    - every script in `scripts/` parses (`node --check`, `py_compile`).
    
    Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).

    Output

    Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. 
    Ships tools to check the game, listen to the audio, and capture the cover. 
    Use when testing Drip's physics, audio, or art, or when comparing its controls.

Generation 4 · from + the skill-authoring skill

+ the linter, in a loop

Pathway 3 · Module 18: Rails for the machine .claude/skills/skill-authoring/scripts/lint.mjs

Playable, by the checker’s rules. The skill linter’s rules, plus “every file it names exists”, after 2 attempts. 335 characters.

Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls, and its physics.js, art.js, audio.js, and game.js code. Ships tools to check the game (check.mjs), listen to the audio (listen.mjs), and capture the cover (cover.mjs). Use when testing Drip's physics, audio, or art, or when comparing its controls.
Before: what “+ the skill-authoring skill” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 242 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. Ships tools to check the game, listen to the audio, and capture the cover. Use when testing Drip's physics, audio, or art, or when comparing its controls.

Editor’s note

Better. The linter’s complaint went back once, and the second attempt names check.mjs, listen.mjs and cover.mjs and the code files. Passes. The best description in the tree came from a rule, not a lesson.

What changed in the input

The input is identical. What changed is how the node was made (see below).

How it was made: 2 calls, 15.4 neurons
  1. attempt 1 @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.5 s · 7.0 neurons · cache 45e5065cd87e

    System text (3,771 characters)
    Follow this skill:
    
    ---
    name: skill-authoring
    description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits.
    ---
    
    # Writing skills here
    
    A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale.
    
    ## Description (the trigger)
    
    The description is all the model sees when deciding whether to load the skill.
    - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview".
    - Name **the tools it ships** (`validate.mjs`, `see.py`).
    - End with **"Use when …"**, listing the situations.
    - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word.
    - Don't put status or history in the description; it goes stale first.
    
    ## Body
    
    1. **The model in a paragraph:** what the thing is and how it fits together, with the paths.
    2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away.
    3. **Commands** in a code block, each with a one-line what-it-proves.
    4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug.
    5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill.
    
    ## Tools over prose
    
    If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts:
    - live in the skill's `scripts/`;
    - import the real code (never a copy);
    - print what they checked;
    - exit 1 on failure;
    - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch.
    
    ## Keeping facts current
    
    - **Counts come from code, never typed:**
      - the games count is computed from the cards (integrate.mjs);
      - artwork counts come from artwork.js;
      - module counts come from the curriculum.
    - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact.
    - **When a builder hands back a skill, lint it** and read its description.
    
    ```sh
    node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...]
    ```
    
    lint.mjs checks:
    - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use";
    - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder;
    - "the X skill" names a real skill;
    - every script in `scripts/` parses (`node --check`, `py_compile`).
    
    Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).

    Output

    Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. 
    Ships tools to check the game, listen to the audio, and capture the cover. 
    Use when testing Drip's physics, audio, or art, or when comparing its controls.
  2. attempt 2 @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 22:00 UTC · 1.0 s · 8.4 neurons · cache c38bd5fd2be9

    System text (3,771 characters)
    Follow this skill:
    
    ---
    name: skill-authoring
    description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits.
    ---
    
    # Writing skills here
    
    A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale.
    
    ## Description (the trigger)
    
    The description is all the model sees when deciding whether to load the skill.
    - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview".
    - Name **the tools it ships** (`validate.mjs`, `see.py`).
    - End with **"Use when …"**, listing the situations.
    - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word.
    - Don't put status or history in the description; it goes stale first.
    
    ## Body
    
    1. **The model in a paragraph:** what the thing is and how it fits together, with the paths.
    2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away.
    3. **Commands** in a code block, each with a one-line what-it-proves.
    4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug.
    5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill.
    
    ## Tools over prose
    
    If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts:
    - live in the skill's `scripts/`;
    - import the real code (never a copy);
    - print what they checked;
    - exit 1 on failure;
    - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch.
    
    ## Keeping facts current
    
    - **Counts come from code, never typed:**
      - the games count is computed from the cards (integrate.mjs);
      - artwork counts come from artwork.js;
      - module counts come from the curriculum.
    - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact.
    - **When a builder hands back a skill, lint it** and read its description.
    
    ```sh
    node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...]
    ```
    
    lint.mjs checks:
    - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use";
    - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder;
    - "the X skill" names a real skill;
    - every script in `scripts/` parses (`node --check`, `py_compile`).
    
    Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).
    
    Your previous answer:
    Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. 
    Ships tools to check the game, listen to the audio, and capture the cover. 
    Use when testing Drip's physics, audio, or art, or when comparing its controls.
    
    The checker refused it:
    - It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
    Fix exactly those problems. Reply with the corrected answer only.

    Output

    Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls, and its physics.js, art.js, audio.js, and game.js code. 
    Ships tools to check the game (check.mjs), listen to the audio (listen.mjs), and capture the cover (cover.mjs). 
    Use when testing Drip's physics, audio, or art, or when comparing its controls.

Generation 4 · from + the skill-authoring skill

+ the skills module

Pathway 2 · Module 10: Skills

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 126 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
Drip, a side-scrolling platformer on games.slopped.site/drip/. Use when understanding, testing or generating content for Drip.
Before: what “+ the skill-authoring skill” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 242 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
Platformer on Drip at games.slopped.site, with keyboard, gamepad, and touch controls. Ships tools to check the game, listen to the audio, and capture the cover. Use when testing Drip's physics, audio, or art, or when comparing its controls.

Editor’s note

Worse. The Skills lesson on top made it shorter still: one line of what and one of when, no tools. Refused.

What changed in the input

+1,893 −0 characters

System: Follow this skill: --- name: skill-authoring description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goe… 3,461 unchanged characters …ile`). Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").
Added: 1,893 characters (show)And this teaching: Module 10, Skills: Package your direction so an AI can follow it. What a skill is An Agent Skill is a folder of instructions an AI agent can pick up when a task calls for it. At its heart is one file, SKILL.md: a short header saying what the skill is called and when to use it, then the instructions themselves. It can also carry examples, reference files and scripts. Skills are how this very site gets built: there’s one for the brand, one for deploying, one for this curriculum. The agent doesn’t keep them all in mind. It sees each skill’s name and description, and only reads the full instructions when a task matches. That’s why the description matters most. --- name: slopwright-house-style description: The slopped.site photo style for product and object shots. Use when generating or reviewing images of a single everyday object for slopped.site. --- # Slopwright house style 1. Subject: one ordinary object, specific (material, condition). 2. Camera: eye-level close-up, subject off-centre, empty space. 3. Light: one hard light from the left; deep shadows. 4. Palette: only teal and rust. 5. Medium: 35mm film photograph, visible grain. Never: people, text, hype words, living artists' names. Example: "a chipped enamel jug on a windowsill, eye-level close-up…" Check before you finish: one light source? two colours? no text? (A whole skill. Short is a feature: every line is something the agent will actually use.) Writing one that works The description is the trigger: say what it is and when to use it, in words a task would contain (“images of a single everyday object”). Vague descriptions (“helps with art”) get loaded at the wrong time, or never. Write the body as steps and rules, not essays. Give one concrete example. End with a check the agent can run on its own work. Put the pitfalls you’ve already hit in writing, so nobody hits them twice.
User: Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only. Facts about the skill (all tr… 560 unchanged characters …and measures the audio), cover.mjs (captures the cover). - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).
How it was made: 1 call, 7.7 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.4 s · 7.7 neurons · cache fc061b56948a

    System text (5,666 characters)
    Follow this skill:
    
    ---
    name: skill-authoring
    description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits.
    ---
    
    # Writing skills here
    
    A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale.
    
    ## Description (the trigger)
    
    The description is all the model sees when deciding whether to load the skill.
    - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview".
    - Name **the tools it ships** (`validate.mjs`, `see.py`).
    - End with **"Use when …"**, listing the situations.
    - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word.
    - Don't put status or history in the description; it goes stale first.
    
    ## Body
    
    1. **The model in a paragraph:** what the thing is and how it fits together, with the paths.
    2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away.
    3. **Commands** in a code block, each with a one-line what-it-proves.
    4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug.
    5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill.
    
    ## Tools over prose
    
    If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts:
    - live in the skill's `scripts/`;
    - import the real code (never a copy);
    - print what they checked;
    - exit 1 on failure;
    - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch.
    
    ## Keeping facts current
    
    - **Counts come from code, never typed:**
      - the games count is computed from the cards (integrate.mjs);
      - artwork counts come from artwork.js;
      - module counts come from the curriculum.
    - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact.
    - **When a builder hands back a skill, lint it** and read its description.
    
    ```sh
    node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...]
    ```
    
    lint.mjs checks:
    - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use";
    - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder;
    - "the X skill" names a real skill;
    - every script in `scripts/` parses (`node --check`, `py_compile`).
    
    Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").
    
    And this teaching:
    
    Module 10, Skills: Package your direction so an AI can follow it.
    
    What a skill is
    An Agent Skill is a folder of instructions an AI agent can pick up when a task calls for it. At its heart is one file, SKILL.md: a short header saying what the skill is called and when to use it, then the instructions themselves. It can also carry examples, reference files and scripts.
    Skills are how this very site gets built: there’s one for the brand, one for deploying, one for this curriculum. The agent doesn’t keep them all in mind. It sees each skill’s name and description, and only reads the full instructions when a task matches. That’s why the description matters most.
    
    ---
    name: slopwright-house-style
    description: The slopped.site photo style for product and object shots. Use when generating or reviewing images of a single everyday object for slopped.site.
    ---
    
    # Slopwright house style
    
    1. Subject: one ordinary object, specific (material, condition).
    2. Camera: eye-level close-up, subject off-centre, empty space.
    3. Light: one hard light from the left; deep shadows.
    4. Palette: only teal and rust.
    5. Medium: 35mm film photograph, visible grain.
    Never: people, text, hype words, living artists' names.
    
    Example: "a chipped enamel jug on a windowsill, eye-level close-up…"
    
    Check before you finish: one light source? two colours? no text?
    (A whole skill. Short is a feature: every line is something the agent will actually use.)
    
    Writing one that works
    The description is the trigger: say what it is and when to use it, in words a task would contain (“images of a single everyday object”). Vague descriptions (“helps with art”) get loaded at the wrong time, or never.
    Write the body as steps and rules, not essays. Give one concrete example. End with a check the agent can run on its own work. Put the pitfalls you’ve already hit in writing, so nobody hits them twice.

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).

    Output

    Drip, a side-scrolling platformer on games.slopped.site/drip/. Use when understanding, testing or generating content for Drip.

Generation 3 · from + the facts

+ the skills module

Pathway 2 · Module 10: Skills

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 151 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
name: drip-platformer description: The Drip platformer at games.slopped.site/drip/. Use when generating or reviewing the game's code, assets, or audio.
Before: what “+ the facts” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 576 characters.

  • Fail It never says "Use when …".
**Drip Platformer Expertise** Unlock expertise in the side-scrolling platformer Drip on games.slopped.site/drip/. Master the game's physics engine, pixel art, chiptune soundtrack, and ASCII levels. Understand how to implement movement using physics.js, world simulation and effects with game.js, pixel art with art.js, audio with audio.js, menus, input, and saved stats with main.js, and enemies and power-ups with levels.js. Utilize tools like check.mjs for headless gameplay, listen.mjs for audio recording and measurement, and cover.mjs for capturing the game's cover art.

Editor’s note

Mixed. The Skills lesson alone: it wrote proper frontmatter with a “Use when”, and lost all the facts it had been given. Refused.

What changed in the input

+1,903 −0 characters

Added: 1,903 characters of teaching (show)System: Apply this teaching: Module 10, Skills: Package your direction so an AI can follow it. What a skill is An Agent Skill is a folder of instructions an AI agent can pick up when a task calls for it. At its heart is one file, SKILL.md: a short header saying what the skill is called and when to use it, then the instructions themselves. It can also carry examples, reference files and scripts. Skills are how this very site gets built: there’s one for the brand, one for deploying, one for this curriculum. The agent doesn’t keep them all in mind. It sees each skill’s name and description, and only reads the full instructions when a task matches. That’s why the description matters most. --- name: slopwright-house-style description: The slopped.site photo style for product and object shots. Use when generating or reviewing images of a single everyday object for slopped.site. --- # Slopwright house style 1. Subject: one ordinary object, specific (material, condition). 2. Camera: eye-level close-up, subject off-centre, empty space. 3. Light: one hard light from the left; deep shadows. 4. Palette: only teal and rust. 5. Medium: 35mm film photograph, visible grain. Never: people, text, hype words, living artists' names. Example: "a chipped enamel jug on a windowsill, eye-level close-up…" Check before you finish: one light source? two colours? no text? (A whole skill. Short is a feature: every line is something the agent will actually use.) Writing one that works The description is the trigger: say what it is and when to use it, in words a task would contain (“images of a single everyday object”). Vague descriptions (“helps with art”) get loaded at the wrong time, or never. Write the body as steps and rules, not essays. Give one concrete example. End with a check the agent can run on its own work. Put the pitfalls you’ve already hit in writing, so nobody hits them twice.
User: Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only. Facts about the skill (all tr… 560 unchanged characters …and measures the audio), cover.mjs (captures the cover). - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).
How it was made: 1 call, 4.1 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.4 s · 4.1 neurons · cache 06a0354ab8f2

    System text (1,895 characters)
    Apply this teaching:
    
    Module 10, Skills: Package your direction so an AI can follow it.
    
    What a skill is
    An Agent Skill is a folder of instructions an AI agent can pick up when a task calls for it. At its heart is one file, SKILL.md: a short header saying what the skill is called and when to use it, then the instructions themselves. It can also carry examples, reference files and scripts.
    Skills are how this very site gets built: there’s one for the brand, one for deploying, one for this curriculum. The agent doesn’t keep them all in mind. It sees each skill’s name and description, and only reads the full instructions when a task matches. That’s why the description matters most.
    
    ---
    name: slopwright-house-style
    description: The slopped.site photo style for product and object shots. Use when generating or reviewing images of a single everyday object for slopped.site.
    ---
    
    # Slopwright house style
    
    1. Subject: one ordinary object, specific (material, condition).
    2. Camera: eye-level close-up, subject off-centre, empty space.
    3. Light: one hard light from the left; deep shadows.
    4. Palette: only teal and rust.
    5. Medium: 35mm film photograph, visible grain.
    Never: people, text, hype words, living artists' names.
    
    Example: "a chipped enamel jug on a windowsill, eye-level close-up…"
    
    Check before you finish: one light source? two colours? no text?
    (A whole skill. Short is a feature: every line is something the agent will actually use.)
    
    Writing one that works
    The description is the trigger: say what it is and when to use it, in words a task would contain (“images of a single everyday object”). Vague descriptions (“helps with art”) get loaded at the wrong time, or never.
    Write the body as steps and rules, not essays. Give one concrete example. End with a check the agent can run on its own work. Put the pitfalls you’ve already hit in writing, so nobody hits them twice.

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
    
    Facts about the skill (all true, from the repo):
    - Drip is the side-scrolling platformer at games.slopped.site/drip/.
    - Its code: physics.js (movement), game.js (the world simulation and its fx events), art.js (pixel art drawn in code), audio.js (chiptune songs and effects), main.js (menus, input, saved stats), levels.js (ASCII levels).
    - Enemies: chair, stapler, jelly, paper moth, teacup snail. Power-ups: Slop, acid shine.
    - Controls: keyboard, gamepad, touch. A test hook, window.__drip.
    - Tools the skill ships: check.mjs (plays the game headless, screenshots), listen.mjs (records and measures the audio), cover.mjs (captures the cover).
    - Movement belongs to another skill (platformer-physics), level layouts to another (platformer-levels).

    Output

    name: drip-platformer
    description: The Drip platformer at games.slopped.site/drip/. Use when generating or reviewing the game's code, assets, or audio.

Generation 2 · from Base model, bare prompt

+ the skill-authoring skill, no facts

.claude/skills/skill-authoring/SKILL.md · the exact text

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 174 characters.

  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
  • Fail Names files that don’t exist: validate.mjs, see.py.
**Drip Platformer** Ships with `validate.mjs` and `see.py`. Use when **playing Drip** on games.slopped.site, **debugging its levels**, or **comparing to other platformers**.
Before: what “Base model, bare prompt” made

Refused by the linter. The skill linter’s rules, plus “every file it names exists”. 234 characters.

  • Fail It never says "Use when …".
  • Fail It names none of the tools the skill ships (check.mjs, listen.mjs, cover.mjs).
**Drip Mastery** Master the challenges of Drip, a precision platformer that demands focus and skill. This skill tracks your progress and rankings in Drip on games.slopped.site, providing a competitive edge for the most elite players.

Editor’s note

Worse. The skill without the facts: it named validate.mjs and see.py, the examples from the skill-authoring skill itself. Neither exists for Drip. A skill can’t supply what you didn’t tell it.

What changed in the input

+3,779 −0 characters

Added: 3,779 characters of teaching (show)System: Follow this skill: --- name: skill-authoring description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits. --- # Writing skills here A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale. ## Description (the trigger) The description is all the model sees when deciding whether to load the skill. - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview". - Name **the tools it ships** (`validate.mjs`, `see.py`). - End with **"Use when …"**, listing the situations. - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word. - Don't put status or history in the description; it goes stale first. ## Body 1. **The model in a paragraph:** what the thing is and how it fits together, with the paths. 2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away. 3. **Commands** in a code block, each with a one-line what-it-proves. 4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug. 5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill. ## Tools over prose If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts: - live in the skill's `scripts/`; - import the real code (never a copy); - print what they checked; - exit 1 on failure; - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch. ## Keeping facts current - **Counts come from code, never typed:** - the games count is computed from the cards (integrate.mjs); - artwork counts come from artwork.js; - module counts come from the curriculum. - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact. - **When a builder hands back a skill, lint it** and read its description. ```sh node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...] ``` lint.mjs checks: - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use"; - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder; - "the X skill" names a real skill; - every script in `scripts/` parses (`node --check`, `py_compile`). Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").
User: Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.
How it was made: 1 call, 5.8 neurons
  1. answer @cf/meta/llama-3.1-8b-instruct-fp8-fast

    max_tokens 400, temperature 0.6, seed 7 · 2026-10-14 21:58 UTC · 0.6 s · 5.8 neurons · cache a2ec06b98b88

    System text (3,771 characters)
    Follow this skill:
    
    ---
    name: skill-authoring
    description: How skills are written and kept honest in this repo (.claude/skills/, 48+ of them) - what goes in the description (it decides when a skill loads: what it covers, the tools it ships, and "Use when ..."), the shape of the body (the model, the rules with the reason each exists, commands, the last run's real numbers, pitfalls hit), scripts that prove things rather than prose that claims them, keeping facts current (counts come from code, dates on numbers, worked examples named), and lint.mjs, which checks every skill's frontmatter and description length, the files it mentions, the skills it names and that its scripts parse. Use when creating a skill, after a change that makes a skill's facts stale (a renamed file, a new game, a new count), when a builder hands back a new skill, or before committing a batch of skill edits.
    ---
    
    # Writing skills here
    
    A skill is what the next session knows. On this site, every game, subsite and pipeline that worked well had a skill with a tool in it. The ones that went wrong had prose that had gone stale.
    
    ## Description (the trigger)
    
    The description is all the model sees when deciding whether to load the skill.
    - Name **what it covers** in the words a request would use: "deck builder", "tower defence", "the Scroll card preview".
    - Name **the tools it ships** (`validate.mjs`, `see.py`).
    - End with **"Use when …"**, listing the situations.
    - At most 1024 characters. Five genre skills were 1,075–1,321 on 2026-10-14 and were cut down to ~760 without losing a trigger word.
    - Don't put status or history in the description; it goes stale first.
    
    ## Body
    
    1. **The model in a paragraph:** what the thing is and how it fits together, with the paths.
    2. **The rules, each with its reason.** The reason is usually something that went wrong, and often the user's own words with a date ("the user called it obvious AI UI design tells, 2026-10-14"). A rule without a reason gets "improved" away.
    3. **Commands** in a code block, each with a one-line what-it-proves.
    4. **The last real run's numbers**, dated ("planner 48%, greedy 6%, random 0%"), so the next session knows what normal looks like and can tell drift from a bug.
    5. **Pitfalls hit:** the specific failure, the symptom and the fix. These are the most valuable lines in any skill.
    
    ## Tools over prose
    
    If a property can be checked, ship the check: a validator, a bot sim, an audit, a screenshot script. Say "proves" only for what a script exits non-zero on. Scripts:
    - live in the skill's `scripts/`;
    - import the real code (never a copy);
    - print what they checked;
    - exit 1 on failure;
    - save screenshots or images somewhere to **look at**, because numbers miss what eyes catch.
    
    ## Keeping facts current
    
    - **Counts come from code, never typed:**
      - the games count is computed from the cards (integrate.mjs);
      - artwork counts come from artwork.js;
      - module counts come from the curriculum.
    - **When a fact changes, fix it where it lives:** after renaming a file, shipping a game or changing a default, grep the skills for the old fact.
    - **When a builder hands back a skill, lint it** and read its description.
    
    ```sh
    node .claude/skills/skill-authoring/scripts/lint.mjs [skill ...]
    ```
    
    lint.mjs checks:
    - frontmatter: `name` matches the folder, a description exists, it is 1024 characters or fewer, and it says "Use";
    - every backticked repo path still exists, resolved against the repo, the skill, the skills folder and each site's folder;
    - "the X skill" names a real skill;
    - every script in `scripts/` parses (`node --check`, `py_compile`).
    
    Last run (2026-10-14, end of day): 48 skills, 0 problems. The two warnings are generic placeholders (`scripts/check.mjs` meaning "your game's check").

    User

    Write the description for an Agent Skill about Drip, the platformer on games.slopped.site. Reply with the description only.

    Output

    **Drip Platformer**
    Ships with `validate.mjs` and `see.py`. 
    Use when **playing Drip** on games.slopped.site, **debugging its levels**, or **comparing to other platformers**.