Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add stvlynn/dsh.fish --skill ask-sonnergit clone --depth 1 https://github.com/stvlynn/dsh.fishWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/stvlynn/dsh.fish/ask-sonner)<a href="https://agentmods.dev/skills/stvlynn/dsh.fish/ask-sonner"><img src="https://agentmods.dev/badge/skills/stvlynn/dsh.fish/ask-sonner/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/stvlynn/dsh.fish/ask-sonner"><img src="https://agentmods.dev/badge/skills/stvlynn/dsh.fish/ask-sonner.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00097 | $0.01693 |
| Opus 5.5 | $0.00039 | $0.00677 |
| Sonnet 5.5 | $0.00019 | $0.00339 |
| Haiku 4.5 | $0.00010 | $0.00169 |
Grade A, and why
ask-sonner scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to ask-sonner — 8 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Working With Sonner
A guide skill for Sonner, the toast library. When a task involves Sonner — wiring it up, rendering toasts, styling them, or fixing them — answer from this file first. Full prop tables for <Toaster /> and toast() live in API.md; read it when you need an exact prop name, type, or default.
Setup
Two pieces, and only two:
- One
<Toaster />, mounted once, as close to the root as possible (in Next.js:layout.tsx— it works inside server components). Never render it per-page or conditionally; a second mounted Toaster duplicates every toast. toast()called from client code — event handlers, effects, callbacks. It's a plain function, no hook or provider needed, but it does nothing on the server: in a server action, return the result and calltoast()in the client code that receives it.
import { Toaster } from 'sonner'; // once, in layout
import { toast } from 'sonner'; // anywhere client-side
Picking the right call
| You want | Call |
|---|---|
| Plain message | toast('Title') — add { description } for a second line |
| Success / error / info / warning icon | toast.success('…'), toast.error('…'), etc. |
| Spinner while you manage state yourself | toast.loading('…'), then update it by id |
| Loading → success/error tied to a promise | toast.promise(promise, { loading, success, error }) — success/error accept functions receiving the resolved value/error |
| Button that does something | { action: { label, onClick } } — closes the toast unless onClick calls event.preventDefault(); cancel is the secondary variant |
| Custom JSX, default toast shell | toast(<jsx />) |
| Custom JSX, no styles at all | toast.custom((t) => <jsx />) — headless, t gives you the id to dismiss |
Recipes
Update a toast — call toast() again with the same id; only the props you pass change. Switching to toast.success(…, { id }) changes the type. This is how loading → success flows work without toast.promise:
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 81 lines · 97 tokens per session scan A be1b04511aad
ask-sonner is a skill published in the GitHub repository stvlynn/dsh.fish (2 stars, last pushed yesterday), licensed MIT. It adds 97 tokens to every session and 1,693 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 100% identical to ask-sonner, differing in 8 lines, and is treated as a copy.
Other skills, from other repositories
dsh-tui-guide
Use when the user asks about dsh-tui itself (usage, shortcuts, config, themes, migration, VS Code). Load before answering; skip for normal coding tasks.
submit-dsh-plugin
A submission checklist and workflow for adding a DeepSeek Harness plugin to the community’s public catalogue. It prepares the catalogue entry and checks the plugin’s repository, metadata, tests, and required files.
mitiq-error-mitigation
A local experiment runner for testing four ways to reduce errors in sampled quantum circuits: zero-noise extrapolation, readout correction, probabilistic error cancellation, and Clifford data regression. It compares noisy and mitigated results under the same sampling budget.
quantum-ground-state
A narrowly defined quantum solver for the ground-state energy of a two-quantum-bit Pauli Hamiltonian in a specified one-excitation sector. It uses a noiseless statevector VQE and checks the result against an exact calculation; VQE is a method that searches for a low-energy quantum state.
qmclaw-workbench
A local simulator for superconducting quantum-bit experiments, including measurements used to study and tune a qubit. It produces bounded synthetic results without connecting to laboratory hardware or quantum cloud services.
sqd-chemistry
A small quantum-chemistry calculation for an H2 molecule using the STO-3G basis, a simplified representation of atomic orbitals. It samples a reduced space, estimates its energy, and compares it with full configuration interaction, an exact calculation within the same small model.