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代理, 数据可视化, 自定义脚本