Agent skill

Distill

by wado-lang in wado-lang/wado

Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks.

MITAuto-check passedDevelopment

Install Distill

skills CLI
$ npx skills add wado-lang/wado --skill distill -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install wado-lang/wado distill --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/wado-lang/wado.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/distill .claude/skills/distill && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
distill
GitHub stars
117
Token cost
~1.2k tokens
SKILL.md length
739 words
Files
1
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks.

  • Development work in your project
  • SKILL.md covers Scope, Rules, Sweep by shape and Cycle, plus 1 more section
  • Calls git and mise

What it does

Distill is an agent skill from wado-lang/wado. Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks. Run it after answering review feedback too — a fix written to satisfy a reviewer is the least distilled code on the branch.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with WebAssembly. The repository describes itself as: The Wado Programming Language. The licence is MIT.

When your agent uses it

  • Development work in your project

Example prompts

  • “/distill”

What it can do on your machine

Read from SKILL.md and the folder at commit b1f1e2a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • mise

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Distill loads about 1.2k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 739 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from wado-lang/wado at commit b1f1e2a, republished under its MIT licence (© wado-lang). 739 words, ~1,233 tokens.

Download SKILL.mdSave it as .claude/skills/distill/SKILL.md (or your agent's skills folder).
name
distill
description
Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks. Run it after answering review feedback too — a fix written to satisfy a reviewer is the least distilled code on the branch.

Distill

Scope

sh
B=$(git merge-base origin/main HEAD)
scripts/changed-sources.sh              # the files, one per line
git diff "$B" --stat -- $(scripts/changed-sources.sh)
git diff "$B" -- $(scripts/changed-sources.sh)

Every file that reports, whatever its type, plus any doc it made stale. Whatever you notice on the way in is in scope too, pre-existing or not. A WEP keeps the sections docs/AGENTS.md requires.

Generated files are the one exclusion, and the script is what applies it: .gitattributes marks them linguist-generated, so a new generated path is excluded the moment it is marked and nothing here lists paths a second time. A plain git diff buries the branch under them — on a generator change they outnumber the sources five to one. Read the sources; regenerate the rest.

This is the scope on every run. Distilling again means the whole branch again, never the diff since the last distill: an earlier pass is not a clean bill, and what the code between the two commits made stale is spread across everything the branch touched.

Answering review feedback is one of the times to run it. Such a fix is written to satisfy a reviewer rather than to fit the code, so it arrives with the reviewer's framing in its comments, an explanation of the bug beside the fix, and often a helper the codebase already had.

Rules

Distilling keeps what the code does. The only change of behaviour it makes is a bug fix, and a bug fix starts from a failing test.

Code
  • Reuse: don't re-implement what the codebase already has. Grep the shared modules and the files next to the change, and call the existing helper.
  • Duplication: one behaviour, one implementation. Hoist the shared part of near-copies behind the difference — a parameter, a closure, an enum. Don't abstract a single use.
  • Altitude: a special case layered on shared infrastructure means the fix sits too shallow. Generalize the mechanism instead.
  • Dead code: delete what the change left behind.
  • Efficiency: cut wasted work — recomputation, repeated I/O, independent work run in sequence. A stored closure pins everything it captured; prefer a struct holding only the fields it needs.
  • Contracts, not defences: a function states what it requires and trusts its callers. Defensive programming is banned. A default or a fallback whose validity you cannot argue is the smell. It turns a broken call into a wrong answer that no test will catch. Write assert! for what the caller owes and unreachable! for the arm that cannot happen, and say which caller establishes it where that is not obvious. A branch that genuinely can happen is control flow and stays; the ban is on inventing an answer for a case you have not shown to be reachable.
Show full SKILL.md (313 more words)Show less
Comments

Apply AGENTS.md § General Rules to every comment in scope. A comment saying what the code does is a rename or a decomposition to make. A comment stating an invariant is an assert to write. A comment that carries no information is deleted outright.

Markdown

Apply the markdown skill to every Markdown file in scope.

In an instruction file (an AGENTS.md, a skill), also cut a rule that is trivially deduced from a principle the file or the root AGENTS.md already states: detail dilutes the rules that matter. Keep one that fences a principle against a reading broader than intended.

Cut words, never a fact. A measurement, a name to grep for (a pass, a type, a function), a condition or an exception, and the bug behind a rule are facts, not detail. Before removing a passage, grep for what links to it. Keep a code block runnable on its own: every name it uses defined in it, every command and path real. Run only a block without side effects to check it.

Sweep by shape

A copy does not share a name, so grepping the name finds nothing.

For every predicate or helper the branch adds or moves, grep the tree for what its body looks like rather than what it is called. Two or three tokens of the body carry further than a signature.

Finish the sweep in the same pass. Fixing the sites a reviewer named and calling it a class fix leaves the rest standing, and the next review returns them one at a time.

Cycle

Three passes over that scope; surviving one is no exemption. Stop when a pass finds nothing to cut.

Finish

sh
mise run format

Code edits: run the tests covering what you touched (mise run test, mise run test-wado). Comment, doc, and Markdown edits alone need only mise run check, which holds the specification's examples to their fixtures.

© wado-lang, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/distill of wado-lang/wado.

Open the folder on GitHubat commit b1f1e2a

Compare with similar skills

Distill next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Distill compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Distill this skillwado-lang/wado117—~1.2kAutomated safety check: PassMIT
Connection Import WasmfeigeCode/navop1.8k—~2.7kAutomated safety check: PassCustom licence
Changesetwhitphx/stlite1.7k—~1.9kAutomated safety check: PassApache-2.0
Debug Php Wasm Main ModuleWordPress/wordpress-playground2k—~3.1kAutomated safety check: PassGPL-2.0
Code Reviewziggy42/epsilon439—~1.7kAutomated safety check: PassApache-2.0
Debug Php Wasm Side ModulesWordPress/wordpress-playground2k—~2.5kAutomated safety check: PassGPL-2.0

Similar skills

  • Connection Import Wasm

    feigeCode/navop

    A skill your agent uses when implementing, debugging, packaging, or host-enabling onetcli WASM connection importers such as DBeaver, Navicat, Navicat Lite, Termius, connection-import.wit components…

    1.8k GitHub stars~2.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Changeset

    whitphx/stlite

    Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.

    1.7k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Debug Php Wasm Main Module

    WordPress/wordpress-playground

    Debug PHP.wasm main module crashes including Asyncify errors (unreachable, memory access out of bounds), JSPI errors (SuspendError, trying to suspend JS frames), WASM memory growth bugs, and runtime…

    2k GitHub stars~3.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Code Review

    ziggy42/epsilon

    A skill your agent uses when the user asks for a code review.

    439 GitHub stars~1.7k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Debug Php Wasm Side Modules

    WordPress/wordpress-playground

    Debug WASM side modules (dynamic PHP extensions) including dlopen failures, SIDEMODULE loading, JSPI suspension crashes in extensions, C++ weak symbol issues, and extension runtime errors.

    2k GitHub stars~2.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Merjs

    justrach/merjs

    Work with the merjs Zig web framework. An agent skill from justrach/merjs.

    357 GitHub stars~4k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes

More from wado-lang/wado

All 15 skills in this repo
  • Profile the native Rust wado binary (compile/serve/run) for host-side bottlenecks — CPU with a sampling profiler, memory with the span trace's RSS and valgrind DHAT.

    117 GitHub stars~2.9k tokensUpdated today
    Auto-check: notes
  • Wado Performance

    wado-lang/wado

    Analyze and improve the runtime speed of a Wado program's compiled guest Wasm — profile hot functions, read the generated WIR for allocations and copies, reason about the WasmGC cost model, and…

    117 GitHub stars~7.5k tokensUpdated today
    Auto-check passed
  • CI Timing

    wado-lang/wado

    Measure how long GitHub Actions jobs and steps took across past runs, and find the pull request that made CI slower.

    117 GitHub stars~518 tokensUpdated today
    Auto-check passed
  • Investigate and improve code coverage for the wado-compiler crate.

    117 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Git Upstream Sync

    wado-lang/wado

    The only way to merge origin/main into a branch, conflicts or not.

    117 GitHub stars~855 tokensUpdated today
    Auto-check passed
  • Jco

    wado-lang/wado

    Transpile Wado Wasm components to JS with jco, then run, debug, and benchmark them on Node.

    117 GitHub stars~2.7k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Distill

What does Distill do?

Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks. Distill is an agent skill from wado-lang/wado. Cut the branch down to what the code cannot say: reuse what exists, remove duplication, dead code, and wasted work, turn invariants into asserts, and delete the comments the code already speaks.

When should I use Distill?

Distill fits situations like: development work in your project.

How do I install Distill in Claude Code?

Run `npx skills add wado-lang/wado --skill distill -a claude-code`. Or copy the skill folder (.claude/skills/distill in wado-lang/wado) into .claude/skills/distill in your project. Claude Code loads it when a task matches its description.

How do I install Distill in Codex?

Run `npx skills add wado-lang/wado --skill distill -a codex`. Or copy the skill folder (.claude/skills/distill in wado-lang/wado) into .agents/skills/distill in your project. Codex loads it when a task matches its description.

Can I use Distill in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wado-lang/wado --skill distill -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/distill, .gemini/skills/distill, .github/skills/distill and .opencode/skills/distill in your project.

What does Distill need to run?

Going by SKILL.md and its folder, Distill needs the command-line tools its instructions call (git and mise).

Does Distill access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Distill safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Distill use?

Distill is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Distill use?

About 1.2k tokens (SKILL.md is roughly 4.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Distill?

Skills that share tags, products or a category with Distill: Connection Import Wasm (feigeCode/navop, 1.8k stars), Changeset (whitphx/stlite, 1.7k stars), Debug Php Wasm Main Module (WordPress/wordpress-playground, 2k stars) and Code Review (ziggy42/epsilon, 439 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Distill?

wado-lang (a GitHub organization) maintains it in wado-lang/wado, which has 117 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 9, 2026.

Source: wado-lang/wado on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.