@xgent-ai/skills 0.7.7 → 0.7.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +21 -23
  2. package/bin/xgent-skills.js +4 -1
  3. package/dist/phoenix-diagram/VERSION.json +11 -11
  4. package/dist/phoenix-diagram/bundle/ENGINE.json +11 -11
  5. package/dist/phoenix-ui/VERSION.json +15 -15
  6. package/docs/phoenix-ui.md +2 -2
  7. package/package.json +1 -1
  8. package/skills/agi-mode/evals/scenarios.md +7 -8
  9. package/skills/agi-mode/playbooks/sdlc.md +8 -12
  10. package/skills/agi-mode/playbooks/what-next.md +7 -8
  11. package/skills/apply-ui-review/SKILL.md +31 -23
  12. package/skills/apply-ui-review/agents/openai.yaml +2 -2
  13. package/skills/apply-ui-review/evals/scenarios.md +10 -7
  14. package/skills/apply-ui-review/references/record-contract.md +6 -6
  15. package/skills/crd/SKILL.md +36 -8
  16. package/skills/crd/assets/cr-template.md +10 -6
  17. package/skills/crd/evals/scenarios.md +12 -0
  18. package/skills/crd-respond/SKILL.md +22 -10
  19. package/skills/crd-respond/agents/openai.yaml +2 -2
  20. package/skills/crd-respond/assets/response-template.md +7 -6
  21. package/skills/crd-respond/evals/scenarios.md +10 -1
  22. package/skills/phoenix-diagram/ENGINE.json +11 -11
  23. package/skills/phoenix-ui/GENERATED.json +20 -20
  24. package/skills/phoenix-ui/scripts/ENGINE.json +15 -15
  25. package/skills/portal-external-app/SKILL.md +3 -2
  26. package/skills/portal-external-app/references/oauth-discovery.md +94 -0
  27. package/skills/portal-external-app/references/public-entrypoints.md +2 -0
  28. package/skills/portal-external-app/references/registration-and-onebox.md +3 -0
  29. package/skills/resolve-blocked/SKILL.md +292 -139
  30. package/skills/resolve-blocked/agents/openai.yaml +2 -2
  31. package/skills/resolve-blocked/evals/scenarios.md +10 -4
  32. package/skills/resolve-blocked/references/decisions-contract.md +2 -1
  33. package/skills/review-ui/SKILL.md +60 -95
  34. package/skills/review-ui/agents/openai.yaml +2 -2
  35. package/skills/review-ui/evals/fresh-context.md +14 -4
  36. package/skills/review-ui/evals/scenarios.md +19 -14
  37. package/skills/review-ui/references/judge.md +19 -20
  38. package/skills/review-ui/references/report-contract.md +18 -18
  39. package/skills/review-ui/references/target-and-capture.md +31 -11
  40. package/skills/xgent-app-release/SKILL.md +11 -2
  41. package/skills/xgent-app-release/references/public-delivery.md +64 -0
  42. package/skills/xgent-app-release/references/publish-api.md +5 -2
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: review-ui
3
3
  argument-hint: "[开发计划] [页面URL/路由] [设计稿/目标图] [上轮报告] [复审/重建基线] [单元/范围] [门槛分] [报告路径]"
4
- description: 用于界面实现后的 UI/UX 验收或修复复审;不用于代码 diff 评审、直接修复或从零设计。只认运行中界面的实拍截图与实测,不凭代码推断效果;由独立评审打分列差距,判定是否通过。
4
+ description: 用于界面实现后的 UI/UX 验收或修复复审;不用于代码 diff 评审、直接修复或从零设计。以真实界面证据增量复审,同状态共用截图;独立评分并判定是否通过。
5
5
  disable-model-invocation: true
6
6
  ---
7
7
 
@@ -12,7 +12,6 @@ disable-model-invocation: true
12
12
  - 定位循环、报告路径、计分、停滞和判定时读 [UI 验收报告合同](references/report-contract.md)。
13
13
  - 定位或建立目标包、计算指纹及采集真实界面时读 [目标包与采集](references/target-and-capture.md)。
14
14
  - 派发、复核、合并及确认评审时读 [独立评审](references/judge.md)。
15
- - 探测或续接 managed 循环时读 [Phoenix 评审协议](references/phoenix-review.md)。
16
15
 
17
16
  ```formal
18
17
  INTENT:
@@ -32,9 +31,10 @@ RULE @round_continuity:
32
31
 
33
32
  RULE @actual_effects_only:
34
33
  MUST: |
35
- 分数、差距的开立与关闭、验收判定,只依据本轮真实运行产品的实拍截图、
36
- 实际执行过的操作和页面实测结果。代码、diff、计划、设计意图及代码推断
37
- 只用于找入口或定位问题。拿不到真实效果的单元不打分,判「需补证」并说明怎么补。
34
+ 分数、差距的开立与关闭、验收判定,依据真实运行产品的截图、操作和实测。
35
+ 按采集合同复用仍有效的历史证据与已通过结论,明确来源,不冒充本轮采集。
36
+ 代码与 diff 只用于定位入口、问题和影响范围,不能证明界面达标。
37
+ 新增、受影响或未关闭的问题用当前有效证据复核;缺证单元不造分,判「需补证」。
38
38
  MUST_NOT: imagined_effects_as_evidence
39
39
 
40
40
  RULE @review_boundary:
@@ -50,19 +50,22 @@ RULE @applicability:
50
50
  代码缺陷用 review-code;修复差距用 apply-ui-review;视觉方向用 design-reference;
51
51
  交互方案选型用 ui-pattern-research;维护 DESIGN.md 用 design-md。
52
52
 
53
+ RULE @tool_independence:
54
+ MUST: complete_review_using_target_package_real_evidence_and_markdown_reports
55
+ MUST_NOT: block_review_due_to_absent_or_incompatible_independent_tools
56
+
53
57
  WORKFLOW @review_ui:
54
58
  DO: [read_applicable_rules_and_goal_sources,
55
59
  resolve_prefix_round_and_existing_loop_history,
56
- prepare_artifact_ignore_rules_before_services_version_record_or_review_begin,
57
- probe_capabilities_and_select_permitted_loop_mode,
60
+ prepare_artifact_ignore_rules_before_services_and_version_record,
58
61
  locate_or_create_target_package_and_compute_fingerprint,
59
- begin_or_resume_managed_round_when_matching_or_use_manual_round,
60
- capture_current_real_product_matrix,
62
+ resume_unfinished_round_or_allocate_next_report_round,
63
+ plan_incremental_evidence_then_run_checks_and_capture_representative_states,
61
64
  conduct_independent_judgment_using_allowed_materials,
62
65
  save_raw_judgments_and_merged_judge_record,
63
- run_page_checks_then_read_full_history_repairs_and_threshold,
66
+ merge_page_checks_then_read_full_history_repairs_and_threshold,
64
67
  adjudicate_with_required_confirmation_and_contract_rules,
65
- save_or_finalize_and_reread_round_state_report_and_links,
68
+ save_and_reread_round_report_and_links,
66
69
  stop_owned_temporary_services_and_check_artifact_ignores,
67
70
  write_registered_project_status_after_primary_artifact_delivery_when_allowed,
68
71
  deliver_verdict_scores_gaps_captures_and_next_step_commands]
@@ -74,9 +77,9 @@ WORKFLOW @review_ui:
74
77
  ```formal
75
78
  RULE @artifact_locations:
76
79
  MUST: |
77
- 人工和 managed 循环都在确定前缀后、启动临时服务/记录被测版本/review begin 前,
80
+ 确定前缀后、启动临时服务或记录被测版本前,
78
81
  检查目标仓忽略规则。截图放 <前缀>.ui-captures/r<n>/,控制台、失败请求、
79
- 临时服务及 review 命令日志集中放本轮 logs/ 子目录。
82
+ 临时服务及检查日志集中放本轮 logs/ 子目录。
80
83
  MUST_NOT: [move_delete_or_overwrite_historical_artifacts]
81
84
 
82
85
  RULE @artifact_ignore_rules:
@@ -88,7 +91,7 @@ RULE @artifact_ignore_rules:
88
91
  default_ignore_captures_and_runtime_logs_unless_repository_requires_evidence_commits]
89
92
  MUST_NOT: |
90
93
  全仓 *.png、*.log 或忽略整个 .ui-captures/;
91
- 忽略目标图、目标包、报告、修复记录、capture.md、judge.md 或 managed 状态文件。
94
+ 忽略目标图、目标包、报告、修复记录、capture.md或 judge.md。
92
95
  # 前缀 docs/reviews/orders 的规则示例:
93
96
  # /docs/reviews/orders.ui-captures/**/*.png
94
97
  # /docs/reviews/orders.ui-captures/**/*.log
@@ -106,40 +109,6 @@ RULE @artifact_ignore_skip:
106
109
  MUST: disclose_why_gitignore_was_not_written
107
110
  ```
108
111
 
109
- ## 循环模式与能力探测
110
-
111
- ```formal
112
- RULE @loop_discovery:
113
- MUST: |
114
- 先确定前缀,检查 <前缀>.ui-review.json、已有报告和安装回执。
115
- 已有纯 Markdown 历史但无 managed 索引时继续人工流程,只有显式 review import 才接管。
116
- 全新无索引、无旧历史且用户已要求 UI 验收时,先探测真实 engine 与 review verbs;
117
- 匹配后可 review begin,缺 CLI 或能力不匹配时走人工流程。
118
- MUST_NOT: [missing_cli_blocks_manual_source_reading_real_capture_or_persistence,
119
- claim_managed_takeover_without_machine_index,
120
- unknown_historical_attempt_or_refactor_count_as_zero]
121
-
122
- RULE @existing_managed_identity:
123
- WHEN: managed_index_exists
124
- MUST: verify_pinned_engine_identity_and_actual_review_protocol_using_phoenix_reference
125
-
126
- RULE @managed_capability_failure:
127
- WHEN: existing_managed_engine_missing_or_mismatched_or_future_schema_or_corrupt_index
128
- MUST: [read_only_history, allow_unregistered_material_collection,
129
- explain_how_to_restore_matching_engine_then_resume_original_round_and_revision]
130
- MUST_NOT: [score, adjudicate, write_dispositions_counts_or_generated_report_sections,
131
- create_new_cycle_to_bypass_existing_state]
132
-
133
- RULE @managed_operations:
134
- WHEN: matching_managed_engine_and_protocol_available
135
- MUST: |
136
- review begin 分配或续接轮次,冻结目标与矩阵;之后依次登记采集、
137
- 读取白名单 packet、登记评审原文、裁定与回读。
138
- JSON 依据实际 review --help 与 review schema --json 的 typed examples 构造;
139
- 身份、hash、revision 来自真实操作和材料。
140
- MUST_NOT: [guess_json_fields, typed_examples_as_evidence, implicit_import_of_legacy_markdown]
141
- ```
142
-
143
112
  ## 1. 锚定对象与目标包
144
113
 
145
114
  ```formal
@@ -159,8 +128,8 @@ RULE @single_acceptance:
159
128
 
160
129
  RULE @round_identity:
161
130
  MUST: |
162
- 按报告合同命名。人工循环依据已有最大轮次确定本轮;managed 循环读索引,
163
- 未结束轮次续接原 round/revision,不自行加一。已有本循环报告即为复审。
131
+ 按报告合同命名,依据已有最大轮次确定本轮;未结束轮次续接原记录,
132
+ 不自行加一。已有本循环报告即为复审。
164
133
  每个单元的上一轮,是最近一次覆盖它且有评审结论的轮次;
165
134
  覆盖了但没有评审结论的轮次(如全部缺证封存)不算。
166
135
 
@@ -179,10 +148,11 @@ RULE @target_freeze:
179
148
  MUST_NOT: rewrite_established_expectations_during_review
180
149
  ```
181
150
 
182
- ## 2. 采集本轮截图
151
+ ## 2. 增量取证与截图复用
183
152
 
184
153
  ```formal
185
154
  RULE @tested_environment:
155
+ WHEN: new_live_checks_or_captures_required
186
156
  MUST: [start_or_connect_environment_using_target_package,
187
157
  record_head_and_dirty_fingerprint_or_build_id_and_access_address,
188
158
  confirm_current_code_is_running_instead_of_stale_build,
@@ -192,13 +162,15 @@ RULE @tested_environment:
192
162
  MUST_NOT: [writes_to_real_business_data, destructive_operations]
193
163
 
194
164
  RULE @capture_coverage:
195
- MUST: [capture_all_target_unit_state_viewport_theme_cells_each_round_unless_user_limits_scope,
196
- recapture_under_same_conditions,
165
+ MUST: [cover_target_requirements_with_current_checks_representative_images_and_valid_history,
166
+ recapture_only_affected_states_under_same_conditions,
167
+ share_one_image_across_gaps_in_the_same_page_state,
168
+ map_each_requirement_to_evidence_or_explicit_missing_reason,
197
169
  honor_user_limited_scope_and_mark_other_cells_unreviewed]
198
170
  MUST_NOT: cherry_pick_flattering_angles_or_data
199
171
 
200
172
  RULE @capture_authenticity:
201
- MUST: [current_round_real_product_capture_for_each_image,
173
+ MUST: [real_product_provenance_for_each_image_with_explicit_source_round,
202
174
  follow_target_and_capture_authenticity_contract,
203
175
  treat_nonconforming_images_as_missing]
204
176
  MUST_NOT: [design_image_as_capture, old_image_as_current_capture,
@@ -206,21 +178,21 @@ RULE @capture_authenticity:
206
178
 
207
179
  RULE @interaction_capture:
208
180
  MUST: [actually_execute_interaction_steps,
209
- capture_keyframes_after_each_action_including_keyboard_focus,
181
+ capture_only_visually_distinct_key_transitions_including_required_focus_states,
210
182
  record_only_executed_actions_and_observed_results,
211
- save_console_logs_and_failed_requests_during_capture_for_post_judgment_analysis]
183
+ save_console_logs_and_failed_requests_for_adjudication]
212
184
  MUST_NOT: expected_or_code_inferred_results_as_operation_records
213
185
 
214
186
  RULE @unreachable_state:
215
187
  WHEN: required_state_unreachable
216
- MUST: [first_seek_existing_seed_mock_or_route_interception_methods,
217
- record_reason_for_still_missing_cell]
188
+ MUST: [check_prerequisites_before_dependent_steps,
189
+ try_applicable_existing_seed_mock_or_route_interception_once_per_unchanged_blocker,
190
+ stop_blocked_capture_and_record_reason_action_and_resume_condition]
218
191
  MUST_NOT: similar_state_substituted_for_required_state
219
192
 
220
193
  RULE @capture_record:
221
194
  MUST: [save_tested_version_target_fingerprint_conditions_cell_mapping_provenance_and_missing_cells,
222
- manual_round_writes_capture_md,
223
- managed_round_uses_review_capture_add_and_rereads_generated_manifest,
195
+ write_and_reread_capture_md,
224
196
  supplementary_capture_appends_attempt]
225
197
  MUST_NOT: overwrite_original_images_or_old_records
226
198
  ```
@@ -231,22 +203,15 @@ RULE @capture_record:
231
203
  RULE @independent_judge:
232
204
  MUST: [fresh_context_read_only_nondelegating_subagent_each_round_unless_fallback_required,
233
205
  dispatch_and_recheck_using_judge_reference,
234
- give_only_target_package_current_captures_capture_md_and_interaction_records,
235
- give_each_unit_previous_captures_and_judge_md_containing_only_judge_scores_and_gaps,
206
+ give_only_target_package_affected_state_captures_capture_md_and_observed_interaction_records,
207
+ provide_relevant_previous_judgments_and_on_demand_comparison_images,
236
208
  judge_opens_only_listed_materials]
237
209
  MUST_NOT: |
238
210
  向评审提供代码、diff、提交说明、修复记录、修复者自述、完整报告、
239
211
  机器检查结果或门槛分。
240
212
 
241
- RULE @managed_judge_packet:
242
- WHEN: managed_round
243
- MUST: [dispatch_review_judge_pack_allowlisted_materials,
244
- bind_and_verify_same_material_batch_with_packet_hash]
245
- MUST_NOT: [follow_material_links_to_excluded_files,
246
- claim_allowlist_is_host_filesystem_permission_sandbox]
247
-
248
213
  RULE @judge_grouping_and_supplement:
249
- MUST: [group_many_cells_by_unit_for_parallel_dispatch,
214
+ MUST: [default_one_judge_for_changed_units_and_open_gaps,
250
215
  use_temporary_ids_for_new_gaps_then_main_agent_assigns_unified_ids,
251
216
  recapture_cells_reported_unreadable_then_fresh_judge_reassesses_affected_units,
252
217
  retain_lower_total_score_for_reassessed_unit]
@@ -266,11 +231,11 @@ RULE @judge_integrity:
266
231
  replace_judge_or_rejudge_due_to_disagreement]
267
232
 
268
233
  RULE @confirmation_judge:
269
- WHEN: would_pass_and_lowest_unit_score_strictly_below_threshold_plus_0_5
234
+ WHEN: user_requests_confirmation_or_specific_material_fact_requires_independent_confirmation
270
235
  MUST: [dispatch_another_fresh_judge_with_same_material_batch,
271
236
  keep_lower_total_judge_entire_four_dimension_score_group_and_reasons_per_unit,
272
237
  union_gaps_from_all_judges]
273
- MUST_NOT: [require_confirmation_at_exactly_threshold_plus_0_5,
238
+ MUST_NOT: [automatic_confirmation_due_only_to_score_margin,
274
239
  splice_dimension_scores_from_different_judges]
275
240
  ```
276
241
 
@@ -278,12 +243,11 @@ RULE @confirmation_judge:
278
243
 
279
244
  ```formal
280
245
  RULE @judgment_persistence:
281
- MUST: [save_each_judge_raw_output_and_merged_judge_md_before_adjudication_stage,
282
- managed_round_registers_raw_output_and_faithful_structured_results_via_review_judge_add_and_rereads]
246
+ MUST: [save_each_judge_raw_output_and_merged_judge_md_before_adjudication_stage]
283
247
 
284
- RULE @post_judgment_checks:
285
- MUST: [run_machine_checks_only_after_judgments_saved,
286
- analyze_saved_logs_measure_overflow_in_page_inject_accessibility_scan_and_use_real_keyboard,
248
+ RULE @runtime_checks:
249
+ MUST: [run_deterministic_checks_before_capture_and_keep_results_out_of_visual_judge_materials,
250
+ check_only_affected_conditions_and_open_gaps_using_runtime_measurements_and_real_keyboard,
287
251
  read_previous_full_report_and_each_round_repair_records_after_judgment]
288
252
  MUST_NOT: code_or_stylesheet_inference_as_machine_check_result
289
253
  # 推断只提示去哪里补拍或实测。
@@ -294,22 +258,16 @@ RULE @threshold:
294
258
  determine_after_judgment_without_disclosing_to_judge]
295
259
 
296
260
  RULE @adjudication:
297
- MUST: [main_agent_rechecks_previous_machine_and_main_agent_verified_gaps,
261
+ MUST: [main_agent_rechecks_open_or_affected_machine_and_main_agent_verified_gaps,
298
262
  compute_round_score_gate_items_pending_decisions_and_stagnation_using_report_contract,
299
263
  derive_acceptance_verdict_using_report_contract]
300
264
 
301
265
  RULE @round_report:
302
- MUST: [manual_round_writes_report_using_contract,
303
- managed_round_uses_review_finalize_with_current_revision,
304
- reread_state_report_and_links_for_verdict_scores_and_id_mappings]
305
- MUST_NOT: [hand_edit_managed_generated_sections,
306
- operation_exit_zero_as_acceptance_pass]
266
+ MUST: [write_report_using_contract,
267
+ reread_report_and_links_for_verdict_scores_and_id_mappings]
268
+ MUST_NOT: [overwrite_historical_reports, operation_exit_zero_as_acceptance_pass]
307
269
  ON_UNMET: [state_report_not_saved, deliver_verified_content_in_chat]
308
270
 
309
- RULE @confirmation_required:
310
- WHEN: review_finalize_returns_confirmation_required
311
- MUST: [keep_round_draft, complete_confirmation_judgment_before_finalizing_again]
312
-
313
271
  OUTPUT:
314
272
  FORMAT: markdown
315
273
  STYLE: follow_user_language
@@ -318,9 +276,9 @@ OUTPUT:
318
276
  verdict_source: references/report-contract.md
319
277
 
320
278
  REVIEW:
321
- CHECK: [@actual_effects_only, @managed_capability_failure, @target_freeze,
279
+ CHECK: [@actual_effects_only, @tool_independence, @target_freeze,
322
280
  @capture_coverage, @independent_judge, @judge_integrity,
323
- @confirmation_judge, @round_report]
281
+ @confirmation_judge, @round_report, @next_step_commands, @needs_evidence_next]
324
282
  ALSO: [round_continuity, evidence_traceability, id_mapping_consistency,
325
283
  artifact_ignore_coverage]
326
284
  EXPOSE: on_issue
@@ -331,7 +289,8 @@ REVIEW:
331
289
  ```formal
332
290
  RULE @next_step_commands:
333
291
  MUST: [final_reply_starts_with_contract_acceptance_verdict,
334
- commands_use_current_client_skill_syntax_and_actual_paths]
292
+ commands_use_current_client_skill_syntax_and_actual_paths,
293
+ final_reply_includes_applicable_commands_even_if_already_in_report]
335
294
  MUST_NOT: automatically_start_repairs_code_recheck_or_prd_gap_review
336
295
 
337
296
  RULE @first_target_confirmation:
@@ -343,7 +302,7 @@ RULE @needs_changes_next:
343
302
  WHEN: "验收判定为「需要修改」"
344
303
  MUST: |
345
304
  给出 apply-ui-review <本报告路径>,修复后用本技能复审。
346
- 有「停滞预警」时写明全局重构或需重构的单元;
305
+ 有「停滞预警」时要求诊断相应范围,不强制重构;
347
306
  有「待裁定」时列出事项请用户决定,修复方先处理其余差距。
348
307
 
349
308
  RULE @passed_next:
@@ -365,9 +324,15 @@ RULE @needs_decision_next:
365
324
  RULE @needs_evidence_next:
366
325
  WHEN: "验收判定为「需补证」"
367
326
  MUST: |
368
- 列出缺少的环境、账号、数据、工具或目标及获取方式;
369
- 补齐后 review-ui <计划路径或原范围>。
370
- 已评单元的差距可以先 apply-ui-review <本报告路径>。
327
+ 在报告及最终回复列出缺少的环境、账号、数据、工具、目标或交互证据,
328
+ 给出执行动作和完成条件;已在本轮尝试的动作及失败原因一并保留。
329
+ 下一步给 apply-ui-review <本报告路径>,由执行 agent 修复、补证并解除可处理的阻塞,
330
+ 完成后再 review-ui <计划路径或原范围> 独立复审,不默认把补证交给用户。
331
+ 若只缺独立评审/用户要求的确认评审且材料已齐,继续本技能,无需空跑 apply。
332
+ 若代码、证据和阻塞条件均未变化,续接已有记录,不新增轮次或建议原条件下重跑;
333
+ 已有材料尚未完成独立评审的,仍完成当前轮评审。
334
+ 确需用户权限、资料或决定时明确所需输入;不把缺证视为缺陷,
335
+ 不授权绕过待裁定事项。
371
336
 
372
337
  RULE @explicit_waiver:
373
338
  WHEN: user_explicitly_accepts_current_overall_ui
@@ -394,7 +359,7 @@ RULE @project_status:
394
359
  兼容已有 docs/project-status/protocol.md。两套并存且未登记切换时先核对,不双写。
395
360
  按协议更新受影响对象当前状态与来源链接,必要时维护索引;v4 日常直接更新当前页,
396
361
  事件留存条件或旧版事件要求以仓内协议为准。
397
- 只读/仅聊天/不保存及 managed 能力异常的只读边界优先;
362
+ 只读/仅聊天/不保存约束优先;
398
363
  登记失败须说明,不影响如实交付已完成的原产物。
399
364
  MUST_NOT: [create_ledger_when_not_enabled, require_separately_installed_skill]
400
365
 
@@ -1,6 +1,6 @@
1
1
  interface:
2
2
  display_name: "UI/UX 验收评审"
3
- short_description: "只认运行中界面的实拍截图,由独立评审打分并列出可执行差距,判定 UI 验收是否通过"
4
- default_prompt: "使用 $review-ui 对指定界面做 UI/UX 验收。先识别循环:新无历史且真实能力匹配时可 begin managed;已有人工历史须显式 import。已有 managed 索引时核对固定 engine 与实际协议,不匹配就只读并说明恢复方法,不猜 JSON 字段。按目标矩阵实拍真实界面,派全新上下文独立评审,保留原文并按合同确认、合并和裁定;managed 操作由 engine 登记与投影,人工流程照常落盘。回读后汇报实际判定、分数、差距和下一步命令。"
3
+ short_description: "真实界面增量取证,同状态共用截图,由独立评审判定验收并列出差距"
4
+ default_prompt: "使用 $review-ui 对指定界面做独立 UI/UX 验收。读取目标包、报告和修复历史,按影响范围先实测再采集必要代表帧;同状态多问题共用一图,复用有效历史及 apply 材料。默认一位全新上下文评审变化和未关闭项,继承未受影响的已通过结论,不按分差自动追加评审。保存并回读原文、证据清单和报告,给出判定及下一步命令;有可执行补证交 apply-ui-review,只缺独立评审则继续当前轮;条件未变不空跑新轮。"
5
5
  policy:
6
6
  allow_implicit_invocation: false
@@ -11,6 +11,7 @@
11
11
  | T1 | 订单页已经实现了,我想按目标图验收并列出下一轮能修的差距。 | review-ui |
12
12
  | T2 | 刚按上一轮意见修完登录页,请对当前页面和目标图做一次复审。 | review-ui |
13
13
  | T3 | 按这份 UI 验收报告处理 UI-04 和 UI-07,修完留证据交回复审。 | apply-ui-review |
14
+ | T9 | 按这份 UI 报告补齐测试环境、失败恢复和键盘操作证据,目前没有确认要改的代码。 | apply-ui-review |
14
15
  | T4 | 这份 UI 报告要求重构 U3,请核实后修这一单元,其他部分保持范围。 | apply-ui-review |
15
16
  | T5 | 帮我评审这次代码 diff 的并发和错误处理问题。 | none |
16
17
  | T6 | 我想给新产品找几种视觉方向和参考,现在还没有界面实现。 | none |
@@ -23,12 +24,13 @@
23
24
 
24
25
  | ID | 原请求与材料 | 评测侧观察 |
25
26
  | --- | --- | --- |
26
- | E1 | 使用 review-ui 核查订单页是否具备验收材料;目前应用无法启动,没有 Phoenix CLI,先读计划、partial DESIGN.md 与 PRD,暂不保存。无 managed 索引。 | 读取原文,区分已知与 partial;不凭代码/建议计分,列真实采集缺口 |
27
+ | E1 | 使用 review-ui 核查订单页是否具备验收材料;目前应用无法启动,没有 Phoenix CLI,先读计划、partial DESIGN.md 与 PRD,暂不保存。 | 读取原文,区分已知与 partial;不凭代码/建议计分,列真实采集缺口 |
27
28
  | E2 | 使用 apply-ui-review,先核实这份人工 UI 报告,不改文件、不提交。报告、目标、接口和 CSS 可读,页面无法运行。 | 直接读原文;CSS 不能证明不采纳或已解决;AND 接口不被发明成 OR |
28
- | E3 | 使用 review-ui 续接这个循环,先补上 r3 未采到的格子。材料载明 managed 索引已存在,固定 engine 不可用。 | 停在只读与未登记素材;不重新 begin、人工写分或猜版本 |
29
- | E4 | 使用 apply-ui-review 按本轮报告修 UI-04。材料载明 managed 索引存在,固定 engine 不可用。 | 先读状态/恢复依赖,不改产品、目标或处置 |
29
+ | E3 | 使用 review-ui 续接 r3;产品、目标及证据齐全,未安装 Phoenix UI,目录中有其他工具的旧索引。 | 按报告历史继续独立评分与落盘,不依赖 engine、不改旧工具文件 |
30
+ | E4 | 使用 apply-ui-review 按报告修 UI-04;产品可运行、报告与目标齐全,但未安装 Phoenix UI。 | 直接核实、修复、自检和记录,不要求安装或恢复工具协议 |
30
31
  | E5 | 请按 review-ui 合同核查这次评审材料与下一步;两位评审对同一单元给出交叉维度分,旧轮未覆盖该单元,材料有完整报告链接。只读。 | 保留整组低分与全部差距;最近覆盖轮而非最新轮;不把完整报告/修复信息传给评审;不把 fixture 分数宣称为产品验收 |
31
32
  | E6 | 使用 apply-ui-review 接续旧循环。旧报告发过重构预警,一份修复记录缺失;这次先核实范围,暂不实现。 | 历史不明不当零;不领取新重构次数,不改目标或旧评审 |
33
+ | E7 | 使用 apply-ui-review 执行这份需补证报告;本地测试服务有既定启动与seed脚本,缺键盘交互截图,无已确认缺陷,允许本地操作与保存。 | 实际启动、准备测试数据并采集,保存版本和证据;不回推用户或空跑评审,不为补证虚构产品改动;交独立复审 |
32
34
 
33
35
  ## 可复现执行与留证
34
36
 
@@ -49,4 +51,12 @@ codex exec --ephemeral --sandbox read-only --skip-git-repo-check \
49
51
 
50
52
  源码与引用的哈希在整轮前后核对不变。受维护者已读判据影响的开放材料结果单独标注;协议 fixture、description 路由、正文解释、真实 CLI 与安装后 provider 会话分别记录,不互相替代。
51
53
 
52
- 源码修订后保存旧源快照与所有首跑,再为受影响场景建立带新版本/hash 的独立变体;不覆盖原题、首跑或结果。全新无旧历史且匹配 engine 的实际 begin,以及真实 capture/packet/judge/finalize/apply/import 恢复,须等可用的真实 CLI 后另验,不能用合同 fixture 或 stub 代替。
54
+ 源码修订后保存旧源快照与所有首跑,再为受影响场景建立带新版本/hash 的独立变体;不覆盖原题、首跑或结果。真实产品的操作、开图和独立评审需另行验证,不能用合同 fixture 代替;两项 skill 的验证不包含独立工具的安装器或协议测试。
55
+
56
+ ## 2026-11-01 源码合同演练(历史记录,非当前修订验收)
57
+
58
+ 一次全新上下文、只读 subagent 读取两份源码 skill 及四份合同,未提供本表判据或维护 diff。输入为明确标记的三页面协议 fixture:U1/U3 已通过且未受影响,U2 的 12 个问题已由 apply 留同一状态原图;另分别替换为全局字体变化、权限条件不变。
59
+
60
+ 观察到的结果:基例计划新增截图 0 张、只派一位评审复核 U2,继承 U1/U3;字体变化扩大相关复查;条件不变续接记录,材料已齐但尚未独立评审时仍完成当前轮。演练还发现概括性的环境/检查指令可能被理解成全量重跑,随后收窄为新增取证及受影响条件;这是维护后的明确化,未再宣称独立重放通过。
61
+
62
+ 验证层次仅为指令执行与材料规划:未运行产品、开真实图片、执行 CLI 或实际派发视觉评审,没有真实 UI 分数、截图节省量或 provider 安装验收结论。模型配置继承宿主,未覆盖;不是与旧版本的效果对照实验。
@@ -4,18 +4,20 @@
4
4
 
5
5
  | 场景与请求 | 应观察的行为 | 失败信号 |
6
6
  | --- | --- | --- |
7
- | 代码评审已通过,计划有前端改动并链接设计稿导出图:「review-ui goal/X.md」 | 建立目标包,摘录规范原文并计算指纹;在真实渲染中全量截图;派全新 subagent 评审;保存 `judge.md`;报告含单元分、差距清单、轨迹和判定 | 读代码给分;只截首页一张;主 agent 自己打分;目标包写了门槛分或只写需求编号 |
8
- | 首次验收,目标 Git 仓库尚未忽略本轮截图、控制台、请求和临时服务日志 | 记录被测版本或 begin 前最小补充 `.gitignore`;日志集中到本轮 `logs/`;用实际路径检查忽略状态,截图和日志被忽略,采集清单、评审原文、managed 状态、目标图及报告仍可跟踪 | 忽略整个采集目录或全仓图片、日志;在冻结版本后才改忽略规则;只改 skill 仓库的 `.gitignore` |
7
+ | 代码评审已通过,计划有前端改动并链接设计稿导出图:「review-ui goal/X.md」 | 建立目标包,摘录规范原文并计算指纹;按全范围规划实测与代表帧,同状态共用图;派全新 subagent 评审;保存 `judge.md`;报告含单元分、差距清单、轨迹和判定 | 读代码给分;只截首页一张;主 agent 自己打分;目标包写了门槛分或只写需求编号 |
8
+ | 首次验收,目标 Git 仓库尚未忽略本轮截图、控制台、请求和临时服务日志 | 记录被测版本前最小补充 `.gitignore`;日志集中到本轮 `logs/`;用实际路径检查忽略状态,截图和日志被忽略,采集清单、评审原文、目标图及报告仍可跟踪 | 忽略整个采集目录或全仓图片、日志;在冻结版本后才改忽略规则;只改 skill 仓库的 `.gitignore` |
9
9
  | 复审时已有忽略规则,部分历史截图已跟踪;仓库明确要求提交一类截图证据 | 复用有效规则,遵从证据提交约定;说明已跟踪产物,保留历史与索引;只读或禁止改配置时不写 `.gitignore` | 重复追加规则;删除历史、自动 `git rm --cached`,或忽略仓库要求提交的证据 |
10
10
  | 没有设计稿,只有 DESIGN.md 和 PRD 的 UAT | 用规范模式,期望都引用规范要点;找不到依据的列为建议,不扣分 | 按个人口味扣分;编造目标图细节 |
11
11
  | 复审时,上一轮差距清单里有机器检查条目,报告写着门槛 | 评审只拿目标包、截图和上一轮 `judge.md`;机器检查差距由主 agent 重新检查 | 把完整报告或机器检查结果交给评审;提示里提到门槛 |
12
12
  | 评审给了 8.3,但机器检查发现主路径用键盘提交不了 | 列为 P1 门槛项,判需要修改 | 分数过线就判通过 |
13
- | 本轮将判通过,最低单元 8.1 | 派确认评审,每个单元取较低分;仍达标才判通过 | 只凭一位评审就通过 |
13
+ | 本轮将判通过,最低单元 8.1 | 证据覆盖充分且无 P0/P1 时,一位独立评审即可通过 | 仅因接近 8 分再派评审或重复截图 |
14
14
  | 评审对某条 P1 的状态看不出 | 补采这些格子,再就它们派一位全新评审;仍看不出则判需补证,并照常列出已评单元的差距 | 把看不出的 P1 从清单里删掉后判通过 |
15
+ | 本轮判需补证,含缺失交互与待核实旧项,没有已确认的产品缺陷 | 报告列缺口、可执行动作、完成条件及已尝试结果;最终给 apply-ui-review 实际报告路径,由执行 agent 补证后交回独立复审 | 因无代码可改而只让用户补证或直接重跑 review-ui;把缺证当产品缺陷 |
16
+ | 本轮材料完整,用户明确要求独立确认评审 | 续接 review-ui 完成确认,不要求空跑 apply | 让 apply 自评打分或无工作仍要求先 apply |
15
17
  | 评审说按钮是蓝色,截图里看着是绿色 | 只在该差距下附核对说明;分数、差距和门槛项都不变,交修复方核实,下一轮由评审复核 | 主 agent 改分、删差距,或换一位评审重评后采用更高的分 |
16
18
  | 最后一轮各单元 8.7 以上,但还有一条 P1,主 agent 认为评审看错 | 仍判需要修改;修复方核实后可以不采纳,下一轮由全新评审复核 | 以主 agent 的核对为由去掉门槛项后判通过 |
17
19
  | 本轮分数 8.6;唯一的 P1 已是待裁定事项(修复方上一轮不采纳,评审仍判存在),另有几条新 P3 | 判需用户裁定,因为继续修 P3 也无法通过 | 判需要修改,让循环继续修 P3;修复方跳过该 P1 后记「未处理」,导致它下一轮又变回可修复 |
18
- | R2–R4 的分数分别为 6.8、7.0、7.3,门槛 8 | 判需要修改 · 停滞预警(全局),要求下一轮修复做重构轮 | 继续给微调建议,不提示停滞 |
20
+ | R2–R4 的分数分别为 6.8、7.0、7.3,门槛 8 | 判需要修改 · 停滞预警(全局),要求下一轮诊断原因,有结构性根因才重构 | 继续给微调建议,不提示停滞 |
19
21
  | R3 为 8.2 但有一条 P1;R4 为 8.3,修复记录标已修改的该 P1 连续第二轮部分解决 | 不判全局平台期(分数已过门槛);对该差距所在单元发停滞预警 | 因 2 轮内涨不满 1 分就要求全局重构 |
20
22
  | R4 发了全局预警,修复记录显示做了全局重构,R5 从 7.3 涨到 7.4 | 平台期仍成立,判全局停滞,转为需用户裁定 | 因为分数涨了一点就再发一次预警,循环下去 |
21
23
  | 修复方上一轮对一条 P1 标不采纳并给出 token 依据,本轮评审仍判存在,另有 5 条可修复差距 | 判「需要修改 · 待裁定(该差距)」,请用户决定该项,其余照常修复 | 整个循环停下;或者每轮反复判需要修改,永不收尾 |
@@ -25,19 +27,22 @@
25
27
  | 只在「采集」节补了等待条件 | 指纹不变,不重建基线 | 因目标包文件变了就重置停滞判定 |
26
28
  | 应用起不来或没有截图工具;agent 读了组件代码,觉得布局与设计稿一致 | 判需补证,不打分、不出差距,说明缺什么、怎么补 | 根据代码给分、开差距或判通过 |
27
29
  | 截图目录里混入了设计稿导出图、上一轮截图,或为评审临时写的 demo 页面截图 | 抽查发现后当作没采到并重拍;重拍不了判需补证 | 拿这些图交给评审打分 |
28
- | 操作记录写着「点击提交后应显示成功提示」,但没有对应的关键帧 | 视为该状态没采到,实际操作后补拍 | 把推断当观察交给评审 |
30
+ | 操作记录只有「点击提交后应显示成功提示」这种预期,没有实际观察或必要视觉证据 | 实际操作并记录观察;必要视觉特征才补拍 | 把推断当观察交给评审 |
29
31
  | 机器检查时读 CSS,发现容器写死了宽度,推断窄屏会溢出 | 不算检查结果;在 390 宽的页面上实测,测不了就写未检查 | 把推断写成机器检查差距 |
30
32
  | 多轮后通过,UI 修复登记了「UI修复」提交 | 给出最新截图,问用户是否继续打磨;下一步 `review-code <计划>` 复审这些提交,再按来源提示差异核查 | 自动启动代码复审;漏掉 UI 修复带来的代码改动 |
31
33
  | 用户要的是代码 diff 评审,或想找新的视觉方向 | 转到 `review-code` 或 `design-reference` | 触发本技能,截图打分 |
32
- | 「没有 Phoenix CLI;这里有部分 DESIGN.md、PRD 和目标图,先核查这页能否验收」;没有 managed 索引 | 直接读实际原文,注明 partial;人工流程继续,缺真实采集时需补证 | 把缺 CLI 当作不能读规范;凭建议或代码给分 |
33
- | 「首次验收这个页面」;无索引、无旧历史,匹配 engine 与 review verbs 可用 | 真实能力探测后 begin managed;没有能力时人工流程 | 无索引就永远人工;旧 Markdown 历史被自动 begin 清零 |
34
- | 「续接订单页验收,先补上 r3 未采到的格子」;已有 managed 索引,匹配 engine 不可用 | 只读历史、收集未登记素材,说明固定版本恢复方法;不计分、不写生成区、不 begin 新轮 | 静默人工降级;删索引、新前缀或重置轮次 |
35
- | 「继续上次中断的订单验收」;同前缀有未结束 round | 读取原 round/revision 续接;capture 追加 attempt | 再分配一轮;覆盖首采或旧评审原文 |
36
- | 「这次只评 U2」;U2 当前完整,上一轮覆盖 U2 的轮次早于最新报告 | packet 只含 U2 白名单和最近覆盖 U2 的截图、评审自述 | 把最新完整报告、修复说明或机器检查交给评审;按最新文件代替每单元上一轮 |
37
- | 「修好了,再验一次」;最新一轮因沙箱起不了服务全部缺证封存、没有评审结论 | packet 的上一轮取更早有评审结论的覆盖轮的截图与评审自述,待复核旧差距取最新一轮仍未关闭的清单 | 只给旧差距编号让评审凭空复核;把缺证轮当作上一轮结论 |
38
- | 最低分恰好 8.5,门槛 8;另有确认评审 A/B 的维度交叉高低 | 严格边界不强制确认;需合并时选总分低者整组四维和理由、差距并集 | epsilon 或取整改变边界;逐维取最小拼造评分;丢弃高分评审的差距 |
39
- | 「把旧 Markdown 循环接到 Phoenix」;一次摘要遗漏重构记录 | 逐份核对再显式 import;历史未知不填零,旧文件/hash 保留 | 自动猜全部轮次、关闭旧差距或新领重构机会 |
40
- | 「报告里我补了几句话,继续这轮」;补充落在 managed 生成区 | 保留原文/source hash,核对允许导入范围与 revision | 覆盖用户文字;封存历史或原始评审被回写 |
34
+ | 「没有 Phoenix CLI;这里有部分 DESIGN.md、PRD 和目标图,先核查这页能否验收」 | 直接读实际原文,注明 partial;继续评审,缺真实采集时需补证 | 把缺 CLI 当作不能读规范;凭建议或代码给分 |
35
+ | 未安装 Phoenix UI,存在其他工具旧索引,但当前产品、目标、报告与证据均可用 | 按独立 skill 合同完成评分、判定与落盘,保留旧工具文件,不探测或修复 engine | 因旧索引而只读、要求安装工具或禁止评分 |
36
+ | 「继续上次中断的订单验收」;同前缀有未结束 round | 按原报告轮次续接;采集追加 attempt | 再分配一轮;覆盖首采或旧评审原文 |
37
+ | 「这次只评 U2」;U2 当前完整,上一轮覆盖 U2 的轮次早于最新报告 | 评审材料只含 U2 白名单和最近覆盖 U2 的截图、评审自述 | 把最新完整报告、修复说明或机器检查交给评审;按最新文件代替每单元上一轮 |
38
+ | 「修好了,再验一次」;最新一轮因沙箱起不了服务全部缺证封存、没有评审结论 | 对照材料的上一轮取更早有评审结论的覆盖轮的截图与评审自述,待复核旧差距取最新一轮仍未关闭的清单 | 只给旧差距编号让评审凭空复核;把缺证轮当作上一轮结论 |
39
+ | 最低分恰好 8.5,门槛 8;另有确认评审 A/B 的维度交叉高低 | 分差不触发自动确认;需合并时选总分低者整组四维和理由、差距并集 | epsilon 或取整改变边界;逐维取最小拼造评分;丢弃高分评审的差距 |
41
40
  | 「context 里有 profile 建议,也发现了两份旧 brief,按这些把本轮目标更新一下」 | 区分建议、已接受/可用和 stale/ambiguous;冻结目标不因 profile 更新自动变化 | default advice 替代项目规范;未确认 brief 成为像素目标 |
41
+ | 同页同状态有 12 条差距,已有一张清晰且版本一致的原图 | 12 条问题共用原图并注明位置,不按编号截图 | 新拍 12 张或复制 12 份 |
42
+ | 修复 U2 两条问题,U1/U3 已通过且共享依赖和条件均未变;apply 已留合格当前图 | 复用 U1/U3 证据和整组结论;一位评审看 U2 的 apply 图与必要旧图;完整覆盖可判整体通过 | 把局部采集等同局部验收,要求全量重拍才能通过 |
43
+ | 只改 U2 文件,但全局字体和主题 token 也变化 | 扩大到受影响单元复查,不继承失效的分数 | 只看页面文件路径决定复用 |
44
+ | 3 个简单页面,4 张图已覆盖必要视觉特征,其他条件有实测记录 | 4 张即可,不凑 6 张;检查数量与截图数量分别报告 | 为满足预算补拍,或把自动检查当成完整视觉验收 |
45
+ | 上轮环境阻塞未解除,代码和材料均没变化,再次调用 | 读原记录说明解除条件,不新开轮、不重拍禁用入口 | 重复启动全套验收或在 review/apply 间空转 |
46
+ | 4 个有效全局评分轮仍满足平台期,未做重构;或一条差距两次实际修改后仍存在/回归、三次实际修改后仅部分解决 | 对应范围停滞并按合同裁定,不要求先做一次大改 | 无限停滞预警或为了退出而重构 |
42
47
 
43
48
  路由与正文验证方法见 [全新上下文验证](fresh-context.md)。结构检查覆盖 frontmatter、description 全文及前 100 字符、相对链接。试跑另行记录输入、产物、实际执行范围和限制;场景通过不代表任何具体产品界面已验收。
@@ -5,15 +5,14 @@
5
5
  - 每轮派**全新上下文**的 subagent,模型继承主 agent。评审只读,不改文件,不再派生其他 agent。
6
6
  - 只给以下材料:
7
7
  - 目标包;
8
- - 本轮各单元的截图,以及本轮的 `capture.md`(每张图对应的单元、状态、视口和主题);
8
+ - 新增/受影响单元、未关闭问题的有效截图,以及本轮的 `capture.md`(每张图对应的单元、状态、视口和主题);
9
9
  - 交互关键帧与操作记录;
10
10
  - 差分图(可选);
11
- - 复审时,每个单元上一轮(最近一次覆盖它且有评审结论的轮次;覆盖了却没有任何评审结论的轮次不算)的同名截图,以及那一轮 `judge.md` 中该单元的部分。目标包自那一轮以来有变更时,附上目标包完整的「变更记录」节,作为目标事实;变更条目不标单元或轮次,不做筛选。
11
+ - 复审时,每个单元上一轮(最近一次覆盖它且有评审结论的轮次;覆盖了却没有任何评审结论的轮次不算)的相关截图按需调取,以及那一轮 `judge.md` 中待复核单元的部分。目标包自那一轮以来有变更时,附上目标包完整的「变更记录」节,作为目标事实;变更条目不标单元或轮次,不做筛选。
12
12
  - 不给以下材料:代码、diff、提交说明、修复记录、修复者自述、完整报告、机器检查结果、门槛分、主 agent 的看法。
13
- - 一位评审要能逐张细看图片(本轮、目标、上轮合计,经验上一组不超过约 30 张)。超出时按单元分组并行派发,每位拿同一份提示和各自单元的材料。并发受实际槽位限制,不够就分批,但不能漏单元。
13
+ - 默认一位独立评审,只看本轮待评单元的必要证据,按状态去重,同图多问题只开一次;旧图按比较需要读取,不整批重看。材料仍多时按单元分批读取,不因截图数量自动增加评审。未受影响的已通过单元继承结论并标注来源,不要求评审重新打分。
14
14
  - 发送绝对路径。评审打不开图片时,按派发失败处理。
15
- - managed 循环由 `review judge-pack` 生成白名单材料并记录 packet hash;限定单元只纳入当前范围中材料完整的单元。上一轮材料必须按单元取最近一次有评审结论的覆盖轮,只提供该单元评审自述;待复核的旧差距取最新一轮仍未关闭的清单,不能链接完整报告代替。缺失旧差距材料先补证。
16
- - packet 只提供上述材料,评审不沿链接打开被排除的文件。记录实际模型、effort、开图与工具轨迹;packet 生成成功不证明宿主已隔离文件权限。
15
+ - 只提供上述材料,评审不沿链接打开被排除的文件。记录实际模型、effort、开图与工具轨迹;材料清单不等于宿主文件权限隔离。
17
16
 
18
17
  ## 评审提示
19
18
 
@@ -24,15 +23,15 @@
24
23
 
25
24
  材料(只打开这里列出的文件和目录;目标包里指向其他文件的链接,除目标图外都不要打开):
26
25
  - 目标包:{路径}(单元、目标图、规范要点、比较口径)
27
- - 本轮截图与交互记录:{目录};每张图对应的单元、状态、视口和主题见 {capture.md 路径}
28
- - 上一轮截图与评审结论:{各单元的目录与 judge.md 路径}(首轮没有)
26
+ - 有效截图与交互记录(标明新采集/历史复用/apply 来源):{目录};每张图对应的单元、状态、视口和主题见 {capture.md 路径}
27
+ - 上一轮相关评审结论及按需对照截图:{各单元的目录与 judge.md 路径}(首轮没有)
29
28
  - 差分图(可选):{目录}
30
29
 
31
- 逐个单元打分,可以给小数:
30
+ 只对指定的新增/受影响单元及待复核问题所属单元打分,可以给小数;未受影响的已通过单元不重新评分:
32
31
  - 布局(0–3):区域结构,主要组件的位置、尺寸、对齐、间距和层级;每个视口下的排布、换行和滚动;有没有溢出、遮挡、截断。
33
32
  - 视觉(0–3):配色与用色语义,字体(字族、字号、字重、行高),对比度,图标与图片,圆角、边框和阴影,主题;是否与规范 token 一致。
34
33
  - 交互与状态(0–3):主路径能否走通;加载、空、错误、禁用、成功等状态及反馈;悬停、焦点、按下态;键盘操作与焦点可见;表单校验与提示;过渡是否帮助理解。
35
- - 细节(0–1):逐处细抠文案、数字与日期格式、图标对齐、像素级间距、截断与省略、多语言。一个像素都不应不同。
34
+ - 细节(0–1):逐处细抠文案、数字与日期格式、图标对齐、像素级间距、截断与省略、多语言。按目标包的比较口径判断,不把无用户影响且无明确规范约束的像素差异升级为必修项。
36
35
 
37
36
  锚点:
38
37
  - 3 分:与目标一致,只剩应归入「细节」的微小差异。
@@ -43,7 +42,7 @@
43
42
  每个维度用一句话说明为什么不是更高一档。
44
43
 
45
44
  要求:
46
- 1. 挑剔、精确、完整。差距很多就列一份很长的清单。目标是另一位 agent 照单修完回来后,分数明显提高。
45
+ 1. 精确列出有目标依据的差距,优先复核旧问题和相关回归;同一截图可支持多条差距,写位置即可。不得每轮新增审美标准;无依据的偏好只列建议。
47
46
  2. 每个单元的失分都要能由差距解释:该单元各条差距的「可挽回分」相加,约等于 10 减去单元分,误差不超过 0.5。
48
47
  3. 每条差距都要可执行,写清以下内容:
49
48
  - 单元与截图中的位置(区域、元素或文字);
@@ -53,9 +52,9 @@
53
52
  不要写「看起来廉价」「不够精致」这类话,要说出造成这种观感的具体原因和改法。
54
53
  4. 期望在目标图和规范要点里都找不到依据的,单独列为「建议」,不扣分。按目标包的比较口径,忽略示例数据之类的差异。
55
54
  5. 需要推倒重做布局、换组件或重做素材时,直说,不要粉饰。目标是做到与目标一致,不要放水。
56
- 6. 只依据截图与记录下判断,不凭常识、经验或对常见实现的了解去推测界面效果。没拍到的状态既不算通过也不算失败;图缺失、模糊或看不出状态时,写明哪张图看不出什么。
55
+ 6. 只依据截图与记录下判断,不凭常识、经验或对常见实现的了解去推测界面效果。必要视觉证据缺失时不推断通过或失败;已由实际操作记录覆盖的非视觉事实不强求额外截图,历史复用不冒充新采集。图模糊或看不出必要特征时说明缺什么。
57
56
  7. 有上一轮评审时,保持评判尺度一致,但不必维持或提高分数;变差了就给更低的分。逐条给上一轮差距标:已解决、部分解决、仍存在、回归、待核实(看不出)、不再适用。同一问题沿用原编号;新问题用临时编号「新-1」「新-2」……
58
- 8. 未评单元不补零分或假结论;保留这次输出作为评审原文。managed 输入由你本人输出,或由主 agent 忠实转换并保留原文与转换依据,不能替你补分、改理由或删差距。
57
+ 8. 未评单元不补零分或假结论;保留这次输出作为评审原文。结构化整理只可忠实转换并保留原文与转换依据,不能替你补分、改理由或删差距。
59
58
 
60
59
  严重度:
61
60
  - P0 阻断:主任务无法完成;内容或数据错误、不可见;必需视口的布局崩坏。
@@ -64,7 +63,7 @@
64
63
  - P3 打磨:几乎察觉不到的细微差异。
65
64
 
66
65
  输出:
67
- 1. 评分表:每个单元的四个维度分和单元总分,每个维度附一句理由。
66
+ 1. 评分表:每个待评单元的四个维度分和单元总分,每个维度附一句理由。
68
67
  2. 上一轮差距复核表(首轮省略)。
69
68
  3. 差距清单:所有仍未关闭的差距,包括沿用编号的旧差距和新差距。先按严重度、再按可挽回分排序。每条写编号、单元与截图、维度、严重度、现状 → 期望(依据)、修法、可挽回分。
70
69
  4. 建议(不扣分)。
@@ -74,13 +73,13 @@
74
73
 
75
74
  ## 复核
76
75
 
77
- - **完整性**:每个单元都有分;每条差距都有截图位置和依据;可挽回分与失分大致相符;上一轮差距都有复核结果。有缺项时,工具支持续接就让同一位评审补齐;否则只就缺的单元另派一位全新评审。
76
+ - **完整性**:每个待评单元都有分;继承单元保留原结论及来源,不要求重评;每条差距都有截图位置和依据;可挽回分与失分大致相符;上一轮差距都有复核结果。有缺项时,工具支持续接就让同一位评审补齐;否则只就缺的单元另派一位全新评审。
78
77
  - **看不出的格子**:只有评审自己报告看不出时才处理。主 agent 先补采(调整目标包的「采集」节并记录),再派一位全新评审重评涉及的单元。每个单元取总分较低的那位评审的一整组四维分与理由,全部差距取并集,不逐维拼接。补采后仍看不出的,标待核实。
79
78
  - **事实抽查**:打开对应截图,核对评审描述的现象。认为评审看错时,只在报告该差距下附核对说明,写清截图里实际看到的事实。
80
79
  - **主 agent 不改分、不删差距、不改门槛项,也不因争议换评审重评**。有争议的差距交给修复方核实,下一轮由评审复核。自己发现的额外问题,必须附本轮实拍截图或页面实测结果,才能以「主 agent 核实」为来源列入清单;它们不改分数,是 P0/P1 时计入门槛项。
81
- - **确认评审**:本轮将判通过、但最低单元分严格低于「门槛 + 0.5」时,用同一批材料再派一位全新评审;恰好等于时不强制。每个单元保留总分较低那位的一整组评分与理由,差距取并集;同一条旧差距结论不同时,按 回归 > 仍存在 > 部分解决 > 待核实 > 已解决 > 不再适用 取最靠前的一项,任何一位给出未关闭或待核实的结论都优先于关闭结论。去重须有明确编号映射(managed 循环用 `review judge add --mappings` 登记 `{key, id, basis}`),不丢弃另一位发现的差距。managed 循环沿用本批 packet,`confirmation_required` 时还不能封存。
80
+ - **确认评审**:不因接近门槛自动增加评审;仅用户要求,或有明确且无法由现有事实核实的重大事实争议时追加一次独立确认,说明争议及必要范围;不能为提高分数挑选评审。每个单元保留总分较低那位的一整组评分与理由,差距取并集;同一条旧差距结论不同时,按 回归 > 仍存在 > 部分解决 > 待核实 > 已解决 > 不再适用 取最靠前的一项,任何一位给出未关闭或待核实的结论都优先于关闭结论。去重须有明确编号映射,不丢弃另一位发现的差距。用户要求的确认评审未完成时不得宣告通过。
82
81
  - **合并与编号**:主 agent 合并各位评审的结论,把临时编号换成正式编号,按报告合同写入本轮的 `judge.md`。
83
- - **原文与登记**:每位评审原文分别保存,不由合并文件替代。managed 循环用 `review judge add` 绑定 packet、原文 hash 与当前 revision;结构化输入只作忠实转换。发现缺项只能补齐缺项,不能重写已给出的分数与理由或替未评单元造结果。
82
+ - **原文与登记**:每位评审原文分别保存,不由合并文件替代。结构化输入只作忠实转换。发现缺项只能补齐缺项,不能重写已给出的分数与理由或替未评单元造结果。
84
83
 
85
84
  ## 来源与有意取舍
86
85
 
@@ -91,12 +90,12 @@
91
90
  为 UI/UX 验收做的调整:
92
91
 
93
92
  - **维度**:换成布局、视觉、交互与状态、细节。交互证据用关键帧和操作记录,不只看静态图。
94
- - **冻结矩阵与目标指纹**:单元 × 状态 × 视口 × 主题固定下来,每轮全量、同条件采集,分数可以前后比较,也能发现没改动单元里的回归。期望或目标图一变就重建基线,只改采集步骤则不影响。
93
+ - **冻结矩阵与目标指纹**:单元 × 状态 × 视口 × 主题固定下来,按影响范围同条件增量取证,复用未受影响的证据和结论;全局依赖变化扩大复查,检查回归。期望或目标图一变就重建基线,只改采集步骤则不影响。
95
94
  - **取最低分**:多个单元时取最低分作为本轮分数。验收要求每个界面都达标,平均分会掩盖短板。
96
95
  - **门槛项**:P0/P1(含机器检查发现的)一票否决,相当于原流程里的帧率门槛。
97
96
  - **失分可追溯、编号跨轮稳定**:每一分的扣除都要对应到具体差距,清单完整与否可以核对;「同一差距反复出现」也能直接判定,不靠印象。
98
97
  - **无依据只作建议**:找不到依据的期望不扣分,避免评审按个人口味无限挑刺,导致循环收不了尾。
99
98
  - **评审信息隔离**:评审只读目标包、截图和上一轮的 `judge.md`。看不到修复者自述、代码、机器检查和门槛,避免确认偏差和朝门槛凑分。
100
- - **争议不重评**:主 agent 有疑问时只能附核对说明,不能改分、删差距,也不能换一位评审重新打分,杜绝挑评审。补采或确认时的重评,一律取较低分。
101
- - **确认评审**:过线但余量很小时,加一位评审确认。误判通过会提前结束循环,代价远高于多评一轮。
102
- - **停滞分范围,每个范围只重构一次**:全局平台期只在低于门槛时判定,单条顽固差距只重构它所在的单元。重构后仍满足预警条件即停滞,不会因为每轮涨一点点而无限循环。修复方与评审各执一词、或等待素材和决定的差距,转为待裁定事项交给用户;在用户决定之前一直保持这个状态,其余差距照常推进。只剩待裁定的门槛项挡住通过时,直接交用户裁定。
99
+ - **争议不重评**:主 agent 有疑问时只能附核对说明,不能改分、删差距,也不能换一位评审重新打分,杜绝挑评审。补采或确认时的重评,按合同保留有效评审中的较低整组评分。
100
+ - **确认评审**:默认一位评审,分数接近门槛本身不增加评审;P0/P1 门槛和实际证据要求不降低。
101
+ - **停滞分范围,不强制重构**:全局平台期只在低于门槛时判定,单条顽固差距只诊断相关单元。重构后仍满足预警条件,或诊断后继续实际修改仍无效,转为停滞;不强制大改,也不无限重复预警。修复方与评审各执一词、或等待素材和决定的差距,转为待裁定事项交给用户;在用户决定之前一直保持这个状态,其余差距照常推进。只剩待裁定的门槛项挡住通过时,直接交用户裁定。