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 tranfu-labs/tranfu-skills --skill webapp-polish-auditgit clone --depth 1 https://github.com/tranfu-labs/tranfu-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/tranfu-labs/tranfu-skills/webapp-polish-audit)<a href="https://agentmods.dev/skills/tranfu-labs/tranfu-skills/webapp-polish-audit"><img src="https://agentmods.dev/badge/skills/tranfu-labs/tranfu-skills/webapp-polish-audit/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/tranfu-labs/tranfu-skills/webapp-polish-audit"><img src="https://agentmods.dev/badge/skills/tranfu-labs/tranfu-skills/webapp-polish-audit.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.00175 | $0.08082 |
| Opus 5 | $0.00088 | $0.04041 |
| Sonnet 5 | $0.00035 | $0.01616 |
| Haiku 4.5 | $0.00017 | $0.00808 |
Grade A, and why
webapp-polish-audit 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 9d 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 — 339 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Web 产品打磨审计
只审查浏览器最终渲染出的用户可见 UI,不读取项目源码,不修改项目或外部状态。最终产物是经过验证的 polish-audit-report.json 和面向用户的简短摘要。
默认不截图。 判定基于脚本采到的 DOM / a11y / 可见文本 / 计算样式 / 布局盒 / 交互状态 JSON——判据要么是确定性数值比较,要么是读文本做语义判断。确需看图走 §0「受限截图」例外。
主流程只有五条维度:03 交互风险与保护、07 表单信心、10 输入与感知连续性、11 响应式任务连续性、13 状态与动作文案清晰度。磁盘上不存在其他 dimension 文件,任何地方都不要引用其他编号。
0. 不可违反的边界
- 必须只使用最终 DOM/a11y、可见文本、计算样式、布局盒、交互状态和网络可见资源状态作为证据。
- 绝不读取项目源码、组件、样式源码、路由、配置、package 文件或内部组件名。
- 绝不修改项目文件、依赖、资源、内容、路由、配置或 git 状态。
- 绝不提交表单、创建/更新/删除数据、变更权限、上传文件或触发外部副作用。发现这类路径时不是跳过,而是记
pending_authorization报给用户(见下)。 - 无副作用的交互默认允许:打开弹层、切 tab、展开菜单、输入非法值触发前端校验。执行前先拦截
fetch/XMLHttpRequest.send/navigator.sendBeacon/WebSocket.send/window.locationsetter /beforeunload;拦到任何写请求立即停止、回滚并记pending_authorization,不继续探查。 - 默认不截图。 五维度没有一条判据以像素为依据,绝大多数情况脚本数据就是结论。确需截图时走 §0 的「受限截图」例外,不得绕开。
- 只有主代理和采集者可以打开浏览器。 判断者、验收者、聚合者、最终验收者一律只读落盘的 JSON 与文档——它们拿到的证据不够就记
blocker交回主代理,绝不自己去页面上看。 - 审计产物只能写入
/tmp/webapp-polish-audit/<RUN_ID>/;项目目录零写入。 - 用户只要求实现、修复或提交代码改动时,停止使用本 Skill;不要把实现请求改写成审计请求。用户要求"先审查再修复"时,本 Skill 只完成审查并结束。
Origin 门禁(全流程唯一定义)
必须只审计 audit-state.json.originAllowlist 内 origin 的页面。子域与主域视作不同 origin(tranfu.com ≠ offerpilot-app.tranfu.com)。
不在清单内的 origin 一律视作跨源:不做跳转、不做会触发跳转的点击、不做会触发预加载的悬停、不进新标签页、不打开 target="_blank"。绝不顺着任何被审页面的 <a href> 主动进入其他 origin——此类链接的存在本身可作 finding evidence,但不打开。要审跨源子站必须由用户在 S0 显式点名并使 scope = explicit-multi-page——唯一不需要点名的是同一页面的 locale 变体,见下方例外。
任何阶段观察到需要访问清单外 origin 时,必须停止访问,记 blocker 且 gap 类型 = cross-origin-not-inspected,绝不静默扩大 allowlist。S3 的执行细节见 16-page-exploration-and-capture.md。
唯一例外:同一页面的 locale 变体。 见下节「locale 变体默认全审」——变体 origin 由 S0 自动写入
originAllowlist,包括子域形式(en.example.com)。这不是"扩大 allowlist",而是 allowlist 的初始计算就该包含它们:它们是同一个页面的不同语言形态,不是另一个站点。除此之外没有第二个例外。
locale 变体默认全审(不问、不等确认)
语言版本不是「另一个站点」,是同一页面的另一种形态——与视口同级。既然双视口是默认覆盖的一部分,locale 变体也是。
只审一种语言等于系统性放过一半的贴合缺陷:「开始免费试用」6 字与 Start Free Trial 16 字符,在同一按钮宽度下表现完全不同,而 11.F(内容装不下)恰恰最该抓这类。审了中文不等于审了英文。
What ships with it
26 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.
- agents/openai.yaml 348 B
- assets/icon.png 873 B
- assets/icon.svg 588 B
- README.md 7.6 KB
- README.zh.md 6.5 KB
- references/dimensions/03-interaction-feedback-and-safety.md 8.1 KB
- references/dimensions/07-form-completion-confidence.md 14 KB
- references/dimensions/10-input-and-perception-continuity.md 26 KB
- references/dimensions/11-responsive-task-continuity.md 35 KB
- references/dimensions/13-state-and-action-copy-clarity.md 7.0 KB
- references/pipeline/14-child-page-tree-discovery.md 4.1 KB
- references/pipeline/16-page-exploration-and-capture.md 14 KB
- references/pipeline/18-final-report-contract.md 9.7 KB
- scripts/discover-child-pages.mjs 7.3 KB runs code
- scripts/e2e-selection.mjs 4.0 KB runs code
- scripts/fit-check.mjs 9.4 KB runs code
- scripts/fixtures/danger.html 267 B
- scripts/fixtures/fit.html 2.3 KB
- scripts/fixtures/real-form.html 264 B
- scripts/fixtures/search-only.html 196 B
- scripts/fixtures/settings-no-form-tag.html 205 B
- scripts/page-evidence-probe.mjs 13 KB runs code
- scripts/page-inventory-probe.mjs 13 KB runs code
- scripts/select-references.test.mjs 3.1 KB runs code
- scripts/validate-polish-audit-report.mjs 17 KB runs code
- scripts/validate-polish-audit-report.test.mjs 11 KB runs code
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.
- 9d ago First seen · 339 lines · 175 tokens per session scan A bfacb061546c
webapp-polish-audit is a skill published in the GitHub repository tranfu-labs/tranfu-skills (2 stars, last pushed 2d ago), licensed MIT. It adds 175 tokens to every session and 8,082 once invoked, about $0.0009 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-09-03.
Other skills, from other repositories
inspecting-hermes-desktop-dom
Read the live Hermes desktop DOM/CSS over CDP.
a11y-debugging
Uses Chrome DevTools MCP for accessibility (a11y) debugging and auditing based on web.dev guidelines. Use when testing semantic HTML, ARIA labels, focus states, keyboard navigation, tap targets, and color contrast.
devtools
Drop-in inspector panel for any json-render app. Use when the user wants to debug a generative UI, inspect the spec tree, edit state at runtime, see dispatched actions, follow stream patches live, browse a catalog, or pick DOM elements to find their spec keys. Triggers include "add devtools", "debug json-render"…
migrate-oxlint
Guide for migrating a project from ESLint to Oxlint. Use when asked to migrate, convert, or switch a JavaScript/TypeScript project's linter from ESLint to Oxlint.
api-not-found
Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.
debug-optimize-lcp
Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions…