- 直接说明结论,省略反向对比句式。
- 永远保持中立、客观和理性。
- 永远使用用户视角沟通产品问题。
判断产品逻辑、交互和 UI 是否符合预期时,按以下顺序判断:
- 用户已经明确验收通过的行为
docs/product/中的当前需求docs/architecture/中已接受的架构决策- 当前代码与自动化测试所反映的实现现状
- README 与历史讨论
自动化测试通过只代表实现满足测试中写明的断言。产品逻辑、交互和 UI 是否符合预期,以用户验收结果为准。
- 用户明确要求实现或修复,且评估合理、范围清楚时,可修改相应源码和文档;只读或先提建议的任务保持只读。发现矛盾、未决选择或未接受风险时,说明依据并再次确认。
- 默认验证限于源代码、现有文件、既有日志和不触发构建、依赖安装、测试宿主、预览或 App 运行的文本级检查。改动交给用户验收;测试代码、执行操作和提交仍遵守下述授权与验收要求。
- 构建、编译、链接、依赖安装或更新、自动化测试、预览、截图检查、交互验收、App 启动或操作都需要用户当前轮明确授权相应操作类别;所有
xcodebuild操作均受此门禁约束,包括build、build-for-testing、test、test-without-building和-showBuildSettings。 - “实现”“修复”“继续”“验证”“回归检查”“收尾”“review”“提交前检查”等请求不产生上述执行授权;较早轮次的用户批准、已保存的命令批准、沙箱批准、工具审批或提权批准也不产生用户授权。
- 授权只覆盖用户说明的类别、scheme、configuration、目标和范围;构建授权不扩展到测试、预览或 App 启动。Skill 和其他工作流同样受此限制。
- 已授权命令在目标逻辑开始前因测试宿主、Xcode 服务、权限、签名、环境或工具审批失败时立即停止。禁止自行更换 project/workspace、destination、DerivedData、Xcode 路径、命令类型或参数重试;任何重试需要用户当前轮重新明确授权。
- 产品逻辑、交互和 UI 由用户验收,构建、测试和代理检查不能代替用户验收。
- 用户验收通过且用户当前轮明确授权测试代码变更后,才可按授权范围为高频主路径、核心状态转换、数据完整性、不可逆操作和高影响故障补充自动化测试;禁止固化未经验收的行为或纯理论场景。
- 用户明确验收通过后才能提交;未经验收的改动不得提交,也不得与已验收改动混入同一次提交。
- 涉及新交互流程、关键页面布局、多状态变化或预期仍有歧义的需求,先制作可操作的 HTML 稿。
- HTML 稿应覆盖主要操作路径、关键状态、反馈方式和必要的异常状态,并使用接近真实场景的示例数据。
- HTML 稿完成后交给用户确认;用户明确认可交互和 UI 方向后,再写入正式 AppKit 或 SwiftUI 实现。
- 用户在 HTML 稿阶段提出的调整应先更新到原型并再次确认,减少正式实现阶段的方向性返工。
- 简单文案、明确的局部样式修正和用户明确要求直接修改的事项,可以按用户指示进入实现。
docs/prototypes/下的 HTML 稿统一使用prototype-shell.css和prototype-shell.js提供左侧原型导航、App menubar、字号令牌与收起行为;禁止在单个页面重复维护这些外壳结构。- 新增原型页面时,先按
docs/prototypes/guidelines/index.html的页面骨架和检查清单实现,再在prototype-shell.js的页面登记表中增加入口。 - 页面专属演示状态通过
prototypePageActions或prototypePanelFooter模板接入共享左栏;产品界面内的操作继续放在模拟 App 窗口中。 - UI 使用完成任务所需的最小信息表达;每段状态、标题、说明和按钮文案都必须帮助用户判断当前情况或完成下一步。
- 同一事实不得在状态、标题、说明和按钮中重复表达。
- 用户文案只描述用户可观察到的状态、下一步操作和操作后果。Bookmark、缓存、持续访问机制等实现概念,只有在会影响用户判断或恢复操作时才显示。
- FileFacet 本地反例:同一界面同时出现“需授权”“重新授权”“持续访问权限”“重新选择”“重新定位”和“缓存缩略图”,将同一访问问题重复为多套说法,并暴露了用户完成恢复操作无需理解的实现概念。此类界面应保留当前状态、必要定位线索、主要操作及操作后果所需的最小信息。
- 解释文案、防御分支、fallback、辅助状态和抽象必须对应真实可发生的用户场景、已确认需求、已证明故障路径或有文档依据的高影响安全风险。
- 主窗口、视频网格、标签树、多选、拖拽、菜单和窗口行为使用 AppKit。
- SwiftUI 只用于设置、引导、身份验证等轻量辅助界面,并通过窄接口接入 AppKit。
- 数据库使用系统 SQLite3;引入第三方运行时依赖前必须记录架构决策。
- 默认不发起网络请求,不记录完整文件路径、文件名、标签内容或 Bookmark 数据。
- 所有扫描、媒体解析和缩略图任务都在后台执行,UI 更新回到 MainActor。
- 用户视频只读访问;不得移动、重命名、修改或删除原始视频。
以下命令仅供选择验证范围,不构成执行授权。获得用户当前轮构建授权后,可以运行:
xcodebuild -project VideoTagManager.xcodeproj -scheme VideoTagManager -configuration Debug -derivedDataPath .build/DerivedData build获得用户当前轮测试授权后,按授权范围运行:
xcodebuild -project VideoTagManager.xcodeproj -scheme VideoTagManager -configuration Debug -derivedDataPath .build/DerivedData test./script/build_and_run.sh 会停止项目构建实例、构建、处理产物签名并尝试启动 App,须获当前轮对这些操作及目标范围的明确授权。仅获启动授权时,只读核实现有 App 路径后使用单独启动命令。
未授权或因执行失败停止的项目记录为延期验证,汇报拟议命令、未执行原因和剩余风险。