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 Job-Yang/jobbyang-ai-skills --skill sansi-erhouxinggit clone --depth 1 https://github.com/Job-Yang/jobbyang-ai-skillsWrote 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/job-yang/jobbyang-ai-skills/sansi-erhouxing)<a href="https://agentmods.dev/skills/job-yang/jobbyang-ai-skills/sansi-erhouxing"><img src="https://agentmods.dev/badge/skills/job-yang/jobbyang-ai-skills/sansi-erhouxing/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/job-yang/jobbyang-ai-skills/sansi-erhouxing"><img src="https://agentmods.dev/badge/skills/job-yang/jobbyang-ai-skills/sansi-erhouxing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00300 | $0.02670 |
| Opus 5 | $0.00150 | $0.01335 |
| Sonnet 5 | $0.00060 | $0.00534 |
| Haiku 4.5 | $0.00030 | $0.00267 |
Grade A, and why
sansi-erhouxing 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 — 168 lines — stays where its author put it; the contents beside it link to each section on GitHub.
三思而后行 · 改前通读的自律流程
改任何已成形的文档之前,先看整体,再动手。软约束,不阻断交付,只挡在「要动手改」这个动作前面。
范围说明:本技能只管文档类产物(文章、调研、方案、技能文档等成形文字)的修改。代码/工程改动不在本技能范围,交给专门的验证流程,别在这里处理。
为什么单开这个技能
不替你写,只挡在修改动作前面。
文档、方案、技能文档这类成形的东西,都会犯同一个毛病:只盯局部,不看整体。这个毛病不属于任何一个具体产物,单开一个技能来管它。
它是前置动作,跟写作/改稿技能并行,不是二选一。 那些技能管怎么把内容写好,这个技能管的是动手之前先看整体骨架——判断这处怎么改才不破坏整体。它是底层能力,该跟具体的写作技能一起走,不占它们的名额。顺序是:先三思(看骨架、判断这处怎么改才不破坏整体),再动手写/改。别因为一句话里带了"润色""精简",就只想着动笔、把这一步跳了。
触发场景(反模式清单)
命中任一即启动:
- 评审 / 反馈意见指出文档某处有问题,准备直接冲上去改那一处,没回头看全文。
- 用户说「改一下」「加一段」「顺手改一下」「只改这一处」「补一下」「快速改一下」。
- 用户说「润色一下」「精简一下」「优化下措辞」「压缩这段」「扩写一下」「顺一顺」——文字加工也是改已有内容,先看这段在骨架里的位置再动。
- 用户丢一整篇文章说「优化一下」「通篇顺一顺」,没指改哪儿——别逐句润色,先抽骨架,自己找出承接断了、论据放错节、结论收不全的地方(细则见
doc-scope.md)。 - 新增一段内容 / 一节章节,准备挂在已有文档末尾。
- 改文档的一节,没重读其他章节。
- 处理别人对文档的评审意见,准备逐条改,不看全文骨架。
- 迭代 / 更新一个已有技能文档、方案、配置说明。
不触发:从零新起一篇(没有既有骨架可通读)、纯一句话答疑、明确说"随手写个一次性草稿"。
「整体」怎么定义(按载体分)
不同载体,「整体」落到不同东西上:
| 载体 | 「整体」指什么 | 通读到什么程度 |
|---|---|---|
| 文档 · 修改一处 | 全文骨架 + 前后章节的承启 | 知道这一处在骨架里的位置、上一段收在哪、下一段起在哪 |
| 文档 · 通篇优化(没指改哪儿) | 全文骨架 + 论据归位 + 结论闭合 | 抽出主干,自己找出哪几节承接断了、论据放错了、结论收不全(细则见 doc-scope.md) |
| 文档 · 新增一节 | 全文骨架 + 主线 | 新节能不能顺进骨架,顺不进去要么调骨架,要么不加(细则见 doc-scope.md) |
| 技能文档更新 | SKILL.md 主体 + 所有 references + 已发布版本 frontmatter | 找到本次改动的既有依据,不叠加平行防线;不覆盖已定的 description |
| 方案/配置说明 | 完整方案/配置文件 + 上游被谁引用 | 改一处能说出谁会受影响 |
三步硬约束(改前必走)
底子是三条业界经典:Shotgun Surgery(改一处要连带看多处)、Chesterton's Fence(拆之前先搞清它为什么在)、Outline-First(骨架先立)。源头见 references/prior-art.md。
通读整体
按上表读到位。不到位不许下笔。
- 文档:通读全文,列出骨架(一节一句话观点)。
- 技能文档:读 SKILL.md 主体 + 所有 references。
- 方案:读完整方案。
列影响面
两栏,写下来(重档)或口头说清(中轻档):
- 这次要动的点:准备改/新增的具体位置。
- 跟这个点相关的既有逻辑:文档骨架里的前后章、已有的类似论述、依赖此处的下游章节。
相关的没列全,不许下笔。
三问过闸
一条一条问,一条不过就停:
- 这个点,全文 / 技能历史 / 方案版本里之前动过吗? 动过就先看历史,别把上次刚删的加回来,别推翻上一次评审已经定的事(对应 Chesterton's Fence)。
- 修法的风险比原问题大吗? 大就换修法,别硬扛(对应 Band-Aid 反模式)。
- 改这一处,会不会破坏整体骨架的连贯? 破坏就回骨架重来,不许硬插(对应 Shotgun Surgery)。
三问任一不过,回退到「不改」或「重设计」,不许硬修。
骨架优先(文档场景专用规矩)
新写和大改文档时,单独一条硬约束:骨架先立,内容后填,过渡最后加(对应 Outline-First):
What ships with it
4 files 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.
- 12d ago First seen · 168 lines · 300 tokens per session scan A fe8fb5f0aa6b
sansi-erhouxing is a skill published in the GitHub repository Job-Yang/jobbyang-ai-skills (67 stars, last pushed 9d ago), licensed MIT. It adds 300 tokens to every session and 2,670 once invoked, about $0.0015 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…
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…