scripting/SKILL.md
Pick the right scripting runtime. Deno+dax by default, Python+uv only when a Python-only library is needed. Load before generating any script.
npx skillsauth add snqb/my-skills scriptingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Script needs… | Use | Skill to load |
|---|---|---|
| Shell commands, pipes | Deno + dax | deno |
| HTTP/data/batch | Deno + dax | deno + longrun |
| Python-only lib (Telethon, bip_utils, libgen-api, radon…) | Python + uv run | python |
Default is Deno. Only pick Python when a required library doesn't exist in JS/TS.
#!/usr/bin/env -S deno run --allow-all
import $ from "jsr:@david/[email protected]";
import { pooledMap, retry } from "jsr:@std/async";
import { sortBy, partition, chunk, sumOf } from "jsr:@std/collections";
Single file, inline jsr: imports, no config files. Load deno skill for full reference.
#!/usr/bin/env -S uv run
# /// script
# requires-python = ">=3.12"
# dependencies = ["httpx", "plumbum"]
# ///
from plumbum import local, RETCODE
from plumbum.cmd import git, curl, jq
PEP 723 inline deps, zero-setup. plumbum for shell commands (only lib where piping works). Load python skill for full reference.
Never generate venvs, requirements.txt, or deno.json for throwaway scripts.
Before writing fuzzy matching, entity resolution, or classification logic — use ask(). It's cheaper than iterating on string algorithms.
| Task | ❌ Don't | ✅ Do |
|------|---------|-------|
| "Same hotel?" | Jaccard, identity keywords, compound tokenizer (10 iterations) | ask("Same hotel? A='X' B='Y'") — done, first try |
| "What category?" | regex chains, keyword lists | ask("Classify: ...") |
| "Extract field" | regex with 12 edge cases | ask("Extract room type from: ...") |
import { ask, run } from "~/.pi/agent/lib/pi-llm.ts";
const answer = await ask("Is this critical?", { model: "claude-haiku-4-5" }); // instant judgment
const result = await run("Research X", { tools: "full", maxTurns: 8 }); // agent with tools
Rule: if you're on iteration 2+ of fixing edge cases in string matching, you already wasted time — should have used ask() from the start. Tokens are unlimited (Max subscription). Optimize for results, not cost. See longrun skill for batch patterns.
documentation
Enrich Markdown articles with inline Wikipedia links. First mention of each notable entity gets a hyperlink. Use when asked to add wiki links, enrich, or add references to .md files.
development
Structured visual QA: screenshot → batch issues → fix all → verify. Replaces the 300-cycle screenshot→edit death spiral. Optional bishkek review as exit gate. Use when building/polishing UI with browser testing, or when user asks for N iterations/reviews.
development
Find complex code, analyze intent, recommend battle-tested library replacements. Uses radon/eslint for detection, GitHub quality search for alternatives.
research
Research real-world UI patterns from curated galleries (Collect UI, Component Gallery, Mobbin). Use when exploring what exists: dropdowns, accordions, inputs, navigation, cards, modals, etc.