--- name: standard-quality-gates description: > 质量门:配置 lint、类型检查、构建检查或 CI 合入门禁,统一本地与流水线验证入口,或排查检查漏跑、空跑和假绿时使用。 --- # 质量门 通用验收条件放这里;具体命令、目录、启动方式、测试数据和平台凭据放项目仓库。执行时机按 [quality playbook](../wayne-mode/playbooks/quality.md)。 ## 静态检查 新建 Python / React / Expo 项目采用下面的组合;已有项目沿用等效配置。 | 对象 | 检查 | | --- | --- | | Python | Ruff lint + format,mypy 类型检查 | | React / TypeScript | ESLint、Prettier、TypeScript strict | | Expo | 前端静态检查,加 Expo 依赖兼容检查 | | 共享包 | 自身检查,加宿主 API、跨应用导入等已声明的依赖边界 | lint、类型检查和构建分别执行。Python 字节码编译不能替代类型检查,打包器转译 TypeScript 也不能证明类型正确。 lint 可按修改文件运行;类型检查按受影响的包及调用方运行,覆盖源码、测试和相关配置。根 tsconfig 只有 references 时,检查实际子项目;核实 include / exclude 后检查实际纳入的文件。 新接入的规则或目录用一个违规样本证明会失败,再恢复正确内容确认通过。导入边界规则要在目标包实际加载,钩子的 files 正则要能匹配目标文件。 存量错误先分类修复,再启用门禁;确需保留的例外限定到具体位置或第三方模块,写明原因。门禁通过以检查实际执行且无未豁免错误为准。 ## 行为证据与 pstack 先明确调用方或用户能观察到的结果,再选择足以证明它的最小检查。单元、集成、E2E 是可选手段,不按功能配齐三层,也不按源码文件数量配测试。 pstack 是外部依据,本插件不包含它。使用其技能前,确认当前会话可见且调用方式允许;否则按下表读取官方原文作为参考,并说明没有调用 pstack。链接原文不代表技能已安装。原文或所需工具不可用时,报告缺口并继续能独立完成的检查。 | 任务 | 读取原文 | | --- | --- | | 新增、修改或精简测试 | [行为测试原则](https://github.com/cursor/plugins/blob/main/pstack/skills/principle-test-behavior-not-implementation/SKILL.md) | | 修 bug,有清晰且便宜的回归路径 | [TDD](https://github.com/cursor/plugins/blob/main/pstack/skills/tdd/SKILL.md) | | 项目缺少真实应用验证入口 | [创建验证技能](https://github.com/cursor/plugins/blob/main/pstack/skills/create-verification-skill/SKILL.md) | 测试保留与删改的判据、先失败后修复的步骤、项目验证技能的结构以对应原文为准。昂贵或脆弱的测试路径用可执行复现、专项脚本或实际应用操作取证;删除旧测试前确认其行为仍有有效保障。 用户路径改变时,从真实入口操作并观察结果和副作用。验证自己的前后端联通时,请求经过真实后端;第三方服务可在既有外部边界替换。全 mock API 的 UI 测试只计作前端交互证据。 ## 构建与平台 | 改动 | 必需证据 | | --- | --- | | 构建配置、依赖、共享包解析 | 受影响应用的生产构建或目标平台 bundle 导出 | | 数据库迁移、约束或方言相关行为 | 独立测试实例执行实际迁移和相关行为,数据库与生产同款 | | Expo 原生依赖、SDK、权限、config plugin 或原生工程 | 对应安装包编译;涉及原生能力的改动另验设备或模拟器行为 | Web、iOS / Android bundle 导出、原生编译、设备运行分别记录。数据库连通、进程存活等就绪检查只证明环境可用;功能验收还要检查实际结果。签名、设备或服务缺失记为未验证。 ## 本地与 CI 本地、CI 和项目生成器调用同一组项目检查入口。钩子可自动修复格式,CI 使用只检查模式;固定工具链,按锁文件安装依赖。新增 app、包或调整目录时,同步检查钩子、类型配置、CI 和生成器的覆盖范围。 必需检查的服务不可达、预期有用例却收集到零用例、任务被跳过或取消,都不能计为通过。本地允许跳过的检查仍报告未验证。 汇总门禁在上游失败时仍执行,逐项核实必需任务成功,再作为分支保护的 required status check。检查结果绑定当前待合入提交;提交或合入基线改变后重新验证受影响项。部署显式依赖当前待部署提交的门禁,手动触发也执行;发布检查实际产物。工作流配置和平台保护规则都要核实生效。 项目首次建立门禁时先让入口与覆盖可靠,再按实测耗时优化重检查的范围。重跑由代码变化、检查失败或未解决的验证缺口触发。