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 dungnotnull/workshop-air-pollution-monitoring-agent-skill --skill workshop-air-pollution-monitoring-agent-skillgit clone --depth 1 https://github.com/dungnotnull/workshop-air-pollution-monitoring-agent-skillWrote 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/dungnotnull/workshop-air-pollution-monitoring-agent-skill/workshop-air-pollution-monitoring-agent-skill)<a href="https://agentmods.dev/skills/dungnotnull/workshop-air-pollution-monitoring-agent-skill/workshop-air-pollution-monitoring-agent-skill"><img src="https://agentmods.dev/badge/skills/dungnotnull/workshop-air-pollution-monitoring-agent-skill/workshop-air-pollution-monitoring-agent-skill/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/dungnotnull/workshop-air-pollution-monitoring-agent-skill/workshop-air-pollution-monitoring-agent-skill"><img src="https://agentmods.dev/badge/skills/dungnotnull/workshop-air-pollution-monitoring-agent-skill/workshop-air-pollution-monitoring-agent-skill.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.00099 | $0.03641 |
| Opus 5 | $0.00049 | $0.01820 |
| Sonnet 5 | $0.00020 | $0.00728 |
| Haiku 4.5 | $0.00010 | $0.00364 |
Grade A, and why
workshop-air-pollution-monitoring 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 12d 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.
How it starts
The opening of the file, as written. The whole thing — 358 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SKILL.md — Skill Registry & Execution Contract
This document is the canonical registry documentation for the
workshop-air-pollution-monitoring skill. It explains how skills, tools, and
hooks are registered, resolved, executed, and validated, including the
input/output JSON-Schema contracts that bind every component.
It is read by:
- contributors who add or modify a skill/tool/hook;
- the runtime (
tools/skill_registry.py,tools/tool_registry.py,tools/hooks.py) which loads and validates the registry; - the orchestrator (
skills/main.md) which dispatches sub-skills by name.
The machine-readable companion is assets/registry.json; every entry there
validates against assets/schemas/registry-entry.schema.json.
1. Architecture at a glance
USER QUERY
│
▼
[pre_flight hooks] language · context budget · registry validate
│
▼
[skills/main.md] orchestrator + quality gate
│
▼
[skills/sub-router.md] chain-of-thought → plan
│
▼
[skills/sub-*.md] intake → evidence → core-analysis → knowledge → advisor
│ (each powered by tools/* via the tool registry, grounded by references/*)
▼
[pre_delivery hook] enforce U1–U6 + G1–G4
│
▼
[final report] conforms to assets/schemas/report.schema.json
│
▼
[post_delivery hook] queue gaps · metrics · structured log
See assets/diagrams/system-architecture.md for the full diagram and
assets/registry.json for the manifest.
2. Skill registry
2.1 Registration
A skill is a Markdown file in skills/ with YAML frontmatter and the
required sections. To register a new skill:
- Create
skills/sub-<name>.mdwith frontmattername+description. - Include the required sections:
Role & Persona,Workflow,Output Format,Quality Gates(sub-skills) — and additionallySub-skills Available,Quality Gatestable,Graceful Degradation,Output Format(orchestrator). - Add an entry to
assets/registry.jsonunderskills[]withtype=sub_skill(ororchestrator/router), thepath,phase,depends_on,inputs,outputs, andoutput_schema(a URI to a schema inassets/schemas/). - If the skill emits structured data, author the schema in
assets/schemas/and reference it fromoutput_schema. - Re-run
python scripts/validate_project.py— it asserts the file exists, the frontmatter is valid, the required sections are present, and theregistry.jsonentry validates.
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.
- 12d ago First seen · 358 lines · 99 tokens per session scan A ea8c00f25337
workshop-air-pollution-monitoring is a skill published in the GitHub repository dungnotnull/workshop-air-pollution-monitoring-agent-skill (5 stars, last pushed 1mo ago), licensed MIT. It adds 99 tokens to every session and 3,641 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…