samuelbushi/uizze-ui-slop-gate
GitHub: samuelbushi/uizze-ui-slop-gate
一个本地运行的 GitHub Action,通过静态分析前端代码在合并前检测占位符、缺失状态和硬编码等 UI 完成度风险。
Stars: 0 | Forks: 0
# UIZZE UI Slop Gate
在变更的前端代码发布之前,捕获其中具体的 UI 完成度风险。这个免费的 GitHub Action 完全在作业内部运行:它不会向 UIZZE 或任何其他网络服务发送源代码、截图或扫描结果。
它会检查变更的 JS、TS、JSX、TSX、CSS、HTML、Vue 和 Svelte 文件中符合以下保守特征的信号:
- 明确处于无效(inert)状态或占位符控件;
- 数据驱动的 UI 缺少可见的加载、空状态或错误状态标记;
- 可能绕过语义化 design token 的硬编码颜色值;以及
- 通用仪表板、卡片网格(card-grid)和占位符指标提示的组合。
检查结果会显示为 workflow 注释,并出现在作业摘要中。这是一个有针对性的源码检查,而不是视觉、可访问性、正确性或安全性审计。
## 用法
请固定(pin)到已发布的版本,而不是分支:
```
name: UI finish gate
on:
pull_request:
permissions:
contents: read
jobs:
ui-slop-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: samuelbushi/uizze-ui-slop-gate@v1
with:
fail-on: error
```
此 action 不需要 token、账号、API 密钥、写入权限或网络访问权限。为了加强供应链锁定,可以将 `@v1` 替换为发布版本的 commit SHA。
## 输入项
| 输入项 | 默认值 | 用途 |
| --- | --- | --- |
| `files` | 变更的前端文件 | 可选的以逗号或换行符分隔的本地路径。 |
| `manifest` | 无 | 可选的本地证据 JSON 路径。 |
| `fail-on` | `error` | 在 `error`、`warning` 或 `never` 时失败。 |
| `show-uizze-link` | `true` | 在摘要中有用的结果后显示一个纯文本的 UIZZE 链接。 |
| `max-files` | `200` | 扫描上限,内部限制为 1–1000。 |
每个文件的大小上限为 1 MiB。自动生成的、依赖项、构建和 vendor 文件夹将被忽略。显式路径也会被限制在已检出的 workspace 内。
## 可选的审查证据
manifest 可以指明文件,并记录审查者在其他地方已验证的产品状态。证据仅影响缺失状态(missing-state)的检查;它不会使其他规则失效。
```
{
"files": ["src/app/orders/page.tsx"],
"evidence": {
"src/app/orders/page.tsx": {
"states": ["loading", "empty", "error"]
}
}
}
```
```
- uses: samuelbushi/uizze-ui-slop-gate@v1
with:
manifest: .github/uizze-ui-evidence.json
```
## 规则理念
此 Action 报告的是可观察的源码信号,而不是主观的设计评分。单个 `Dashboard` 标题不会触发通用仪表板规则;必须同时出现多个独立提示。缺失状态检查仅在同时渲染 UI 并包含数据驱动标记的文件上运行。请从 `fail-on: error` 开始,审查警告,并调整源码或证据,而不是盲目地抑制检查结果。
## 开发说明
Node 20 或更高版本足以进行本地开发;GitHub 在 Node 24 上运行打包后的 Action。它没有任何生产或开发依赖项。
```
npm test
npm run verify
```
`npm run build` 会将无依赖的源码树复制到 `dist/` 中。任何发布都必须包含重新构建的 `dist/`,因为 GitHub Actions 不会为使用者运行安装或构建步骤。
## 隐私与安全
## 许可证
MIT。参见 [LICENSE](LICENSE)。
标签:MITM代理, 数据可视化, 自定义脚本