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 Lee-W/maigo --skill change-site-enumerationgit clone --depth 1 https://github.com/Lee-W/maigoWrote 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/lee-w/maigo/change-site-enumeration)<a href="https://agentmods.dev/skills/lee-w/maigo/change-site-enumeration"><img src="https://agentmods.dev/badge/skills/lee-w/maigo/change-site-enumeration/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/lee-w/maigo/change-site-enumeration"><img src="https://agentmods.dev/badge/skills/lee-w/maigo/change-site-enumeration.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.00079 | $0.03060 |
| Opus 5 | $0.00039 | $0.01530 |
| Sonnet 5 | $0.00016 | $0.00612 |
| Haiku 4.5 | $0.00008 | $0.00306 |
Grade A, and why
change-site-enumeration 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 6d 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 — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Change-Site Enumeration
Owner agents: Tomori (planning) / Anon (implementation) / Soyo (review) Consumers: orchestrator — before declaring a scope/size number to the user
核心判準
適用時機:你準備說出「有 N 處要改」、「範圍是封閉的」、「已經共用化了」這類宣告。
核心命題:「有幾處要改」的宣告必須由解析權威來源得出——不能由清單轉述(plan 列的清單、 上一輪 review 點名的位置)得出,也不能由 grep 符號名(而非常數名/入口名)得出。三種常見的改動 形狀各自有不同的權威來源,查下表決定用哪一種枚舉方法。
依形狀查表選枚舉方法
| 改動形狀 | 枚舉方法 | 為什麼眼睛盤點會漏 |
|---|---|---|
| 使用者可見行為(搜尋/篩選/排序/顯示) | 從使用者入口反推:這個功能在站上/app 有幾個進入點?每個進入點綁到哪個 handler?資料來源各是什麼(DOM/索引/API)?入口數 > 1 就逐一確認。不要只 grep 相關符號名——那是從實作往外找,使用者的 bug 是從入口往內走。危險地帶:build 步驟(postbuild、索引產生腳本)、_data 之外的資料管線、第三方搜尋/索引套件——它們常常不讀頁面 HTML,改 template 對它們完全無效。 |
同一個使用者可見功能常有多套獨立實作,符號名不同、彼此不 import;grep 只找到走過的那一套,另一套安靜地不生效,不會有任何錯誤訊息。 |
| 平行程式碼收共用表 | 逐行 diff 列出候選平行程式碼的所有差異 literal(欄位名、type id、yaml key、category 覆寫),列成清單後逐一問「這個能進表嗎?」——能進的全進,不能進的在註解寫明為什麼。判準寫成語意版:「這段邏輯還需要幾個 per-section 分支?」目標 0;不要寫成「reviewer 提的那個欄位收了沒」。同源提醒:收完別忘了同步那段解釋「為什麼需要各自的迴圈」的舊註解——理由消失後,留著的舊註解會誤導下一個讀者。 | 只收本輪 review 點名的那一個欄位,等於把同型 drift 留在原地——剩下的差異仍逼著程式碼保留 per-section 分支,下一個 reviewer 或下一個新 section 會再撞一次。 |
| 共用常數改 tuple arity/欄位數 | 用常數名(不是型別名、不是欄位名)grep -rn 全 repo(含 tests、含子專案之外),逐一標記「這裡是不是在解包」;改完再 grep 一次複查,確認沒有第 N+1 個站點。 |
解包站點不一定長得像解包:中繼變數(先存起來、下一行才拆)、comprehension 裡的 for t, _ in ...、參數化 fixture 的清單,都不會出現在「我以為會有的樣子」裡;tuple arity 錯誤是 runtime 才炸,路徑沒被測到時靜態檢查也不一定攔得下來。 |
| 同批下游的守衛/欄位對稱性 | 找出這批下游全部成員(同一個 base class 的子類、同一組 dispatch table 的 entry),逐一確認守衛/欄位是否存在;補一個就要補同批的全部。 | 不對稱本身即缺陷——只補被點名的那個,其餘成員在下一次同型輸入時仍會炸,且拋出的錯誤型別可能對不上(該是 ValueError 的地方變成 TypeError)。 |
各 consumer 怎麼套
Tomori(規劃期):寫 plan 前先依上表枚舉落點,把用了哪種枚舉方法、枚舉出的清單寫進對應 step, 不要只寫「改 N 處」的數字結論——結論要附「怎麼查出來的」。
Anon(實作期):不要沿用 plan 列的清單——plan 的枚舉可能是錯的(見 worked example 4:計畫 列 3 處解包站點,實作時重新 grep 才發現實際 5 處)。動手前自己依上表重新枚舉一次;若跟 plan 的 清單不一致,回報差異,不要靜默照 plan 做、也不要靜默照自己查的做而不說。
Soyo(review 期):當作判準——問「這段邏輯還剩幾個 per-section 分支?」目標 0;問「這個常數/ 入口的所有站點都改了嗎?」不接受「reviewer 上輪點名的那處改了」當作已窮盡的 evidence;diff 裡若 出現「已經共用化」「範圍封閉」這類宣告,要求作者展示枚舉方法,不是照單全收。
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.
- 6d ago Changed · +25 lines 790d71c4052b
- 10d ago First seen · 87 lines · 79 tokens per session scan A 692de5ee3168
change-site-enumeration is a skill published in the GitHub repository Lee-W/maigo (14 stars, last pushed yesterday), licensed MIT. It adds 79 tokens to every session and 3,060 once invoked, about $0.0004 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-30.
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…
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…
next-cache-components-optimizer
Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…
next-partial-prefetching-adoption
Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the partialPrefetching flag, opt routes in with export const prefetch = 'partial', audit Link prefetch={true} behavior, preserve existing prefetched UI with…