@ccoalm/ccl-skills 0.7.0 → 0.9.0

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 (127) hide show
  1. package/README.md +2 -2
  2. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +8 -7
  3. package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +6 -1
  4. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +16 -17
  5. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +1 -1
  6. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +6 -0
  7. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +195 -7
  8. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +3 -3
  9. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +13 -5
  10. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +9 -3
  11. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +9 -3
  12. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/normalize_review_timeout.sh +22 -0
  13. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +9 -3
  14. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +1540 -129
  15. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +8 -3
  16. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +76 -1
  17. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +1858 -3
  18. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh +789 -0
  19. package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/update_review_plan_intent.py +513 -0
  20. package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +1 -0
  21. package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/SKILL.md +3 -1
  22. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +1 -1
  23. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +1 -1
  24. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +4 -1
  25. package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/state-machine-task-patterns.md +2 -0
  26. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +2 -1
  27. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/inference-capacity-operations.md +24 -0
  28. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/llm-client-gateway.md +1 -1
  29. package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/model-prompt-evaluation.md +4 -1
  30. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +11 -10
  31. package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/contracts-and-state.md +5 -0
  32. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +64 -0
  33. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/agents/openai.yaml +4 -0
  34. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +73 -0
  35. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/runtime-and-project-contract.md +58 -0
  36. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +41 -0
  37. package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/verification-diagnostics-and-security.md +63 -0
  38. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +3 -2
  39. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/metrics-conventions.md +8 -1
  40. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +2 -2
  41. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/canary-and-rollout-strategy.md +16 -2
  42. package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +9 -0
  43. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +14 -16
  44. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/code-review-checklist.md +4 -0
  45. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +1 -1
  46. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +10 -14
  47. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +1 -0
  48. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +1 -1
  49. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +135 -86
  50. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +66 -80
  51. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/delivery-contract.md +275 -0
  52. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +88 -214
  53. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +2 -2
  54. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +10 -8
  55. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +6 -5
  56. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +112 -95
  57. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +30 -21
  58. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +22 -3
  59. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +20 -17
  60. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +7 -9
  61. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +14 -10
  62. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +2 -0
  63. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +3 -3
  64. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +9 -6
  65. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +3 -0
  66. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +37 -10
  67. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +8 -1
  68. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +16 -5
  69. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +16 -5
  70. package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +4 -2
  71. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +1 -1
  72. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +4 -1
  73. package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/state-machine-task-patterns.md +2 -0
  74. package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +1 -1
  75. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +8 -8
  76. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/description-authoring.md +4 -0
  77. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +104 -5
  78. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +11 -9
  79. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +102 -0
  80. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +103 -0
  81. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +20 -0
  82. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +6 -6
  83. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +4 -3
  84. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +69 -2
  85. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh +22 -0
  86. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +49 -4
  87. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/obligation-ledger.py +2748 -0
  88. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +20 -5
  89. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/shared_git_surface_gate.py +1142 -0
  90. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +17 -0
  91. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +41 -4
  92. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ci_checkout_ref_binding.sh +120 -0
  93. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_entrypoint_domain_scan_terms.sh +82 -8
  94. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh +336 -0
  95. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_self_adjudication.sh +82 -10
  96. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger.sh +1416 -0
  97. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger_repo_audit.sh +57 -0
  98. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +141 -4
  99. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +3 -1
  100. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_shared_git_surface_gate.sh +1696 -0
  101. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_delivery_contract.sh +2117 -0
  102. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_loading_budget.sh +316 -0
  103. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +1176 -0
  104. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +31 -1
  105. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +9 -4
  106. package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +980 -0
  107. package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +8 -6
  108. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/classical-test-design-techniques.md +1 -1
  109. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-review-and-prioritization.md +1 -1
  110. package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/update-lifecycle.md +2 -0
  111. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +16 -15
  112. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/ci-fixtures-and-flake-control.md +5 -1
  113. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +10 -2
  114. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/e2e-real-flow-testing.md +2 -2
  115. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/integration-contract-testing.md +10 -0
  116. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +2 -2
  117. package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-topology-and-commands.md +1 -1
  118. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +2 -1
  119. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/annotation-driven-revision.md +9 -0
  120. package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/figure-and-table-craft.md +8 -2
  121. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +7 -5
  122. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +1 -1
  123. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/react-architecture.md +3 -0
  124. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-quality-release.md +37 -4
  125. package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-ui-quality.md +10 -1
  126. package/dist/assets/release.json +215 -105
  127. package/package.json +1 -1
@@ -1,108 +1,94 @@
1
- # Behavioral And Aesthetic Logic
1
+ # Behavioral And Aesthetic Judgment
2
2
 
3
- Use this reference when a screen needs to feel intuitive, motivating, trustworthy, emotionally appropriate, or visually compelling beyond basic UI correctness.
3
+ Use this lens when a design decision depends on attention, perceived control, uncertainty, trust, motivation, fatigue, or visual character. It turns those abstractions into observable hypotheses; it does not replace requirements, interaction mechanics, accessibility, or runtime evidence.
4
4
 
5
- This file does not replace layout recipes, component rules, accessibility, or product requirements. It adds the why/judgment layer: attention, motivation, perceived effort, confidence, habit loops, visual taste, and emotional fit.
5
+ For theory and evidence boundaries, use `external-ui-ux-quality-benchmarks.md`. For concrete state transitions, error/recovery and feedback, use `interaction-design-patterns.md`. For visual craft, use `visual-craft.md`. Use `tokens-and-components.md` for token, component, theme and platform-component mechanics; use this reference for behavioral and aesthetic judgment.
6
6
 
7
- Ownership boundaries:
7
+ ## Judgment method
8
8
 
9
- - Interaction mechanics, the canonical feedback-strength ladder, mobile/web interaction rules, and state-transition detail live in `interaction-design-patterns.md`.
10
- - Concrete visual direction, anti-slop checks, typography, color, motion, and polish rules live in `visual-craft.md`.
11
- - Token, component, theme, and platform component decisions live in `tokens-and-components.md`.
12
- - This file decides why a behavior or aesthetic choice should exist and whether it matches user intent, risk, trust, and product emotion.
9
+ Write each important judgment in five parts:
13
10
 
14
- ## Core Question
11
+ 1. **Observation**: what the current source, render, task trace, metric, or user behavior shows.
12
+ 2. **Risk**: the concrete search, recall, switching, error, uncertainty, trust, fatigue, or consequence burden.
13
+ 3. **Hypothesis**: the layout, state, copy, interaction, or visual change expected to reduce that burden.
14
+ 4. **Evidence**: the task, state, render, accessibility check, comparison, or metric that can falsify the hypothesis.
15
+ 5. **Boundary**: target users/tasks/platforms covered, unknowns, and when to retest.
15
16
 
16
- Before drawing or coding, answer:
17
+ Example:
17
18
 
18
- - What does the user want to accomplish or feel in the next 10 seconds?
19
- - What is the user's likely anxiety, doubt, or friction at this moment?
20
- - What should attract attention first, second, and last?
21
- - What action should feel obvious without explanation?
22
- - What should the product make users want to return to?
19
+ > Observation: returning operators open three panels to recover the active item after an error. Risk: they lose task context and repeat work. Hypothesis: keep the active item and progress visible while the error is repaired locally. Evidence: in the failed-and-retry task, draft, selection and progress survive without reopening panels. Boundary: verified for keyboard and pointer flows at the tested sizes; mobile remains pending.
23
20
 
24
- If these questions cannot be answered, the UI may be well structured but weak.
21
+ Avoid “intuitive,” “clean,” “delightful,” “lower cognitive load,” or “obvious” as standalone criteria. Name what users can find, understand, do, recover, or distinguish.
25
22
 
26
- ## Interaction Logic
23
+ ## Interaction judgment
27
24
 
28
- Use `interaction-design-patterns.md` as the canonical interaction model: Discover -> Inspect -> Act -> Confirm -> Return. This section does not define a second flow. It asks why each stage should exist and whether the chosen mechanics match user intent, risk, trust, and motivation.
25
+ Use the canonical loop in `interaction-design-patterns.md`: Discover → Inspect → Act → Confirm → Return.
29
26
 
30
- Judgment questions for the canonical loop:
31
-
32
- - **Discover**: why would the user enter now, and what should catch attention first?
33
- - **Inspect**: what doubt, risk, or curiosity must be resolved before action?
34
- - **Act**: which action should feel primary for this intent and consequence level?
35
- - **Confirm**: does the confirmation or feedback strength match risk? Use the feedback ladder in `interaction-design-patterns.md` for the mechanism.
36
- - **Return**: what context, progress, or motivation helps the user continue or come back?
27
+ | Stage | Judgment question | Typical evidence |
28
+ | --- | --- | --- |
29
+ | Discover | Can target users locate the relevant entry from their starting context without irrelevant competition? | Entry task, attention order, navigation/focus path |
30
+ | Inspect | Is the context needed for a safe decision visible at the decision point? | State/source/scope/consequence checks, hidden-context errors |
31
+ | Act | Does prominence match the user's current intent and consequence rather than business preference alone? | Primary-action selection, misclicks, task completion |
32
+ | Confirm | Does feedback/interruption strength match finality, recovery and retry safety? | Event→state→feedback trace, duplicate/retry scenarios |
33
+ | Return | Are prior context, progress, draft, selection and next action preserved? | Modal/route/error/reload recovery tasks |
37
34
 
38
35
  Rules:
39
36
 
40
- - Do not make all actions equally visible. The primary action should match the user's current intent and risk level.
41
- - Reduce choice when the user is deciding; increase control when the user is reviewing, editing, or correcting.
42
- - For destructive, public, paid, or trust-sensitive actions, judge whether the risk deserves added friction; use `interaction-design-patterns.md` for the concrete confirmation, undo, and feedback mechanism.
43
- - Preserve context after drawers, modals, uploads, generation, and detail views. Losing the user's place creates unnecessary cognitive cost.
44
- - For feedback details and state-transition mechanics, use `interaction-design-patterns.md`; this file only judges whether the chosen feedback matches intent, risk, and trust.
45
-
46
- ## Behavioral Logic
47
-
48
- Design for human behavior, not only information display.
49
-
50
- - **Attention**: use hierarchy, grouping, contrast, motion, and whitespace to guide scanning. Do not compete for attention with equal-weight cards.
51
- - **Cognitive load**: show the next meaningful step; progressively reveal advanced controls; avoid dumping all fields before intent is clear.
52
- - **Motivation**: make progress visible. Use draft status, completion, recent activity, reactions, streak-like return cues, or creator feedback only when they match the product's ethics and purpose.
53
- - **Agency**: users should feel they can edit, undo, retry, filter, mute, leave, or correct important outcomes.
54
- - **Trust**: show source, status, timestamp, permission, review state, AI caveat, and consequence where doubt is likely.
55
- - **Habit loop**: entry points, notifications, feed updates, creation prompts, and return states should reinforce a useful loop, not just maximize clicks.
56
- - **Social proof**: counts, badges, replies, followers, and popularity cues should clarify relevance. Do not use them to fake importance or bury new/quiet content.
57
- - **Friction**: remove friction for low-risk repeated actions; add deliberate friction for irreversible, public, sensitive, or costly actions.
37
+ - Do not give equal visual weight to actions with different relevance or consequence.
38
+ - Reduce active option search for the current decision, while keeping review/edit/recovery controls reachable when needed.
39
+ - Preserve current object, mode, filters, progress and return context across drawers, dialogs, routes, uploads and generation when the task depends on them.
40
+ - Choose constraint, inline repair, preview, undo, confirmation, retry or restore from consequence and reversibility. Added friction requires a named protective job.
41
+ - Give every asynchronous action acknowledged, pending, final and recovery semantics. The exact timing bar comes from the product/runtime need, not a remembered universal number.
58
42
 
59
- ## How Users Actually Behave
43
+ ## Behavioral variables
60
44
 
61
- Design against observed behavior, not the idealized user who reads carefully. These hold across products:
45
+ Do not assume one universal user behavior. Select variables from current evidence and test the target segment.
62
46
 
63
- - **Users scan, satisfice, and muddle through.** They skim for the first option that looks reasonable and pick it — not the best one — then keep whatever worked, however badly. Make the *right* choice the most visually prominent one; do not rely on the user comparing options or discovering the "correct" path.
64
- - **Users do not read instructions or prose.** Guidance that must be read to operate the screen has already failed. Make guidance brief, in-context, and unavoidable, and prefer self-evident affordances over explanatory text — if a control needs a sentence to explain it, redesign the control.
65
- - **Goodwill is a depleting reservoir.** Users arrive willing to forgive; every friction point spends that goodwill. It depletes faster when you hide what they came for (price, status, contact), force their input into your format, ask for more than you need, or interrupt with splash/forced-tour/interstitial. It replenishes when you surface what they want up front, save steps, make errors easy to recover from, and own failures plainly. This targets *nuisance* friction only: never strip confirmation, consent, review, recovery, or provenance friction to "save steps" — that protective friction is required by the Friction rule above.
66
- - **Clarity outranks consistency.** Consistency is a default, not a law: when a small inconsistency makes a screen materially clearer, choose clarity, and record the clarity gain. This never overrides the correctness gates — design-system tokens, accessibility, semantic status, trust/safety, high-risk-flow conventions, component semantics, and rendered-evidence — which are correctness, not stylistic consistency.
47
+ | Variable | Risk to inspect | Design response to test |
48
+ | --- | --- | --- |
49
+ | Scan/search | Users may stop at the first plausible option or miss a low-salience control | Stronger grouping/signifier, reduced competing actions, task-based findability check |
50
+ | Recall | Users must remember hidden state, values or prior steps | Keep context visible, provide history/summary, preserve return state |
51
+ | Repetition/fatigue | Repeated review or entry increases slips and abandonment | Stable placement/order, compact density, progress, shortcuts, safe batch/recovery behavior |
52
+ | Uncertainty | Users cannot tell whether work started, finished, failed or is safe to retry | Explicit state, timestamp/progress, idempotency/retry copy and support path |
53
+ | Agency | Users cannot edit, cancel, undo, retry, leave or correct an outcome | Add the consequence-appropriate control and verify it works |
54
+ | Trust | Source, permission, automation, review status or consequence is unclear | Put the relevant provenance/status/scope near the decision; avoid unverifiable assurance |
55
+ | Motivation | The surface has no meaningful progress, result or return value | Show real progress/outcome and a useful next step; do not manufacture engagement cues |
56
+ | Social influence | Counts/badges may distort relevance or create false authority | Explain meaning, prevent fake precision, compare task decisions with/without the cue |
67
57
 
68
- ## Aesthetic Logic
58
+ Instructions and help can be necessary. The defect is requiring users to read hidden or lengthy prose to discover a primary operation, not the mere presence of guidance. Prefer concise, contextual instructions and test whether users can complete the task; redesign a control when explanation is compensating for ambiguous semantics.
69
59
 
70
- Good visual design is not decoration. It expresses the product's personality and helps the user decide.
60
+ Consistency is a strong default because it supports transfer and stable expectations. Deviate only when a concrete task/accessibility gain outweighs that transfer cost, and record the reason. A claimed clarity gain never overrides semantic correctness, accessibility, trust/safety, or specified design-system states.
71
61
 
72
- - **Mood fit**: choose a tone that supports the surface: lively for discovery, focused for creation, calm for AI assistance, restrained for moderation/settings, serious for trust-sensitive decisions.
73
- - **Rhythm**: repeat spacing, type scale, card treatment, and interaction details so the product feels intentional.
74
- - **Contrast**: create clear focal points. If everything is colorful, raised, bordered, or animated, nothing leads.
75
- - **Material feel**: shadows, borders, glass, texture, blur, and gradients need a role: depth, grouping, brand warmth, or state. Do not add them to compensate for weak structure.
76
- - **Content dignity**: posts, comments, creator identity, media, and AI output should feel cared for. Avoid tiny cramped content in consumer surfaces or oversized empty shells in work surfaces.
77
- - **Delight**: reserve delight for moments that matter: publish success, first useful AI result, meaningful reply, achievement, upload completion, or helpful recovery. Avoid decorative delight during errors, moderation, payment, or permission denial.
62
+ ## Aesthetic judgment
78
63
 
79
- ## Consumer Community Heuristics
64
+ Aesthetic choices should reinforce task, hierarchy and product character.
80
65
 
81
- - Discovery surfaces should create curiosity quickly: strong content preview, clear author/topic identity, visible social affordances, and low-friction entry into detail.
82
- - Creation surfaces should reduce blank-page anxiety: prompts, examples, draft recovery, preview, audience visibility, and clear publish consequence.
83
- - Comment/reply surfaces should make conversation feel alive: quoted context, reply target, composer persistence, reactions, and respectful empty states.
84
- - AI surfaces should feel helpful but accountable: visible generation state, editability, source/citation when relevant, retry/regenerate, and clear separation between AI suggestion and user decision.
85
- - Trust/safety surfaces should feel fair and controllable: explain why content is hidden, reported, limited, or under review; provide recovery or appeal where product policy allows.
86
- - Notification surfaces should balance urgency and respect: group related updates, show why the user received it, and make mute/setting controls reachable.
66
+ - **Attention order**: name first, second and background elements. Verify the rendered hierarchy with realistic content and relevant states.
67
+ - **Density**: choose from task frequency, content volume, error cost and input mode. Consumer breathing room and operational compactness are starting hypotheses, not product-category laws.
68
+ - **Rhythm**: repeated spacing, alignment, type roles, state treatment and motion should create a learnable visual grammar.
69
+ - **Contrast and material**: color, border, shadow, texture, blur and elevation need a hierarchy, grouping, state or brand job. Decoration cannot repair weak structure.
70
+ - **Mood**: describe the intended quality in task terms such as calm review, focused creation, safe consent or lively discovery, then map it to observable visual decisions.
71
+ - **Content dignity**: give primary content enough space and legibility for its task; avoid both cramped consumer content and oversized empty operational shells.
72
+ - **Delight**: use it for meaningful completion, onboarding or recovery only when it does not obscure status, consequence, accessibility or reduced-motion needs.
87
73
 
88
- ## Design, Development, Test, Acceptance
74
+ If no current product source exists, compare two or three compact visual directions. Hold structure and content constant where possible, state the decision variables, and select against the task/brand criteria rather than personal taste.
89
75
 
90
- Use this layer across the whole UI delivery cycle:
76
+ ## Trust and ethical boundaries
91
77
 
92
- - **Design**: state the user's intent, doubt, motivation, trust concern, attention order, and desired mood before choosing layout or components.
93
- - **Frontend development**: preserve the intended judgment in code. Route state, focus, progress, recovery, permission, empty/error, and return-context behavior should match the design checkpoint, not only the component library.
94
- - **Testing**: derive cases from human risk, not just code branches. Test first-use, returning-use, long-content, no-data, partial-data, permission denied, generated/unreviewed, failed/retry, destructive action, and return-from-modal/drawer/upload/generation paths where relevant.
95
- - **Acceptance**: inspect a rendered browser/app surface with realistic content. Verify attention order, obvious next action, risk-matched friction, recovery path, trust cues, mood fit, and whether the screen feels like a product rather than a component demo.
78
+ - Do not use urgency, social proof, streaks, notifications, defaults or visual weight to hide cost, permission, risk, alternatives or exit.
79
+ - High-impact actions show consequence before execution and actual outcome afterward.
80
+ - AI/automation output distinguishes draft/candidate, reviewed, accepted and applied states when users may otherwise over-trust it.
81
+ - Popularity, verification, quality and authority are different claims; labels and metrics must not imply one from another.
82
+ - Protective friction remains when it prevents irreversible, public, financial, privacy or safety harm. Nuisance friction is removed only after that distinction is made.
96
83
 
97
- ## Acceptance Checks
84
+ ## Acceptance
98
85
 
99
- Before calling a UI good, verify:
86
+ Use realistic content and the representative task from `delivery-contract.md`.
100
87
 
101
- - A first-time user can identify the screen's purpose and next action within five seconds.
102
- - A returning user can resume or repeat the main action without re-learning the screen.
103
- - The most visually prominent element matches the user's likely intent and the business priority.
104
- - The screen has one coherent mood; colors, spacing, motion, and copy do not fight each other.
105
- - The interaction adds friction only where risk, trust, or consequence justifies it.
106
- - Empty, loading, error, and success states preserve motivation instead of feeling like dead ends.
107
- - Social, AI, or trust cues are honest and useful, not manipulative decoration.
108
- - The result feels product-specific rather than like a generic component demo.
88
+ - Target users can state the screen's purpose, current state and relevant next action without guessing from hidden context.
89
+ - New and returning users can complete or resume the primary task under the tested conditions.
90
+ - Visual prominence matches task relevance and consequence; secondary and exception actions remain findable without competing equally.
91
+ - The state-action-feedback mapping remains understandable in loading, failure, permission, offline/degraded, partial and recovery states that apply.
92
+ - Layout, copy, motion and feedback preserve agency and trust rather than merely looking polished.
93
+ - The chosen visual direction is coherent across representative content, themes, sizes and states, and follows the product/design-system source where specified.
94
+ - Findings name verifier, candidate, evidence layer and boundary. A reviewer feeling, single render or heuristic pass remains hypothesis-grade until the required evidence closes it.
@@ -0,0 +1,275 @@
1
+ # UI/UX Delivery Contract
2
+
3
+ Use this contract for every runtime-visible UI/UX slice. It is the canonical handoff between `product-ui-ux-design`, `testing-strategy`, every changed or claim-bearing producer owner, and every affected client implementation owner. Each skill keeps its own technical rules; this file defines the shared record, stage order, evidence semantics, and completion states.
4
+
5
+ Runtime-visible work includes layout, copy rendered by a client, state, interaction, navigation, tokens/themes, component semantics, accessibility, user-facing loading/empty/error/permission/progress/recovery feedback, and API/event/schema/default changes that alter what a client shows or which action or decision path it offers. A backend-owned value or contract is outside this contract only after an authoritative manifest, contract, package/repo inventory, or release target list establishes the complete consumer universe and every member is checked or proves it cannot render or react to the change. A zero-result search over an author-chosen repo or directory is not absence proof. If the universe or any member is inaccessible or incomplete, record `unknown-consumers`; do not silently classify the change as backend-only.
6
+
7
+ Only a value or contract change proven not to render on or alter any client may leave this contract. Route its backend behavior to the backend owner, its product meaning to the product owner, and its verification to `testing-strategy`, using API/log/output evidence plus the recorded consumer-universe proof. The inventory is routing evidence, not behavior verification. Do not use backend evidence to close an unknown or affected client surface.
8
+
9
+ Classify a consumer as `out-of-scope` only when evidence shows that stack cannot ship the value, or when the user accepts that same specifically named consumer as a current-thread handoff gap. The latter remains `pending + blocked`; scope acceptance neither proves absence nor permits `complete`.
10
+
11
+ The record may live in a plan, evidence file, task/MR description, or another reviewable artifact. A single-turn throwaway edit may use the visible progress record only if no changed file remains at handoff. Persist the record whenever the diff remains, is committed, or is handed to another owner.
12
+
13
+ This record is normalized evidence, not a required response layout. Store each
14
+ fact once and reference it across roles and phases. A handoff leads with the
15
+ decision, changed behavior, observable criteria, evidence level, blocker or
16
+ next action, and a pointer to the record; it does not paste every matrix, repeat
17
+ one evidence boundary under several headings, or substitute process labels for
18
+ task-specific behavior.
19
+
20
+ The execution order is `Design brief → Test Phase 0 → Producer/client execution → Test Phase 1/sufficiency → Design verdict`. Phase 0 chooses the proof before implementation; producer records capture the changed service/config/content/inference candidate and its observations, client records capture platform facts and the producer member/version actually exercised, and Phase 1 cites both sets to decide test sufficiency without copying them; only then does the design owner issue a verdict.
21
+
22
+ ## 1. Design brief
23
+
24
+ Before editing a design artifact, UI copy, visual rule, design-system guidance, or code-facing acceptance criterion—or approving such a change—the design owner records enough analysis and planning to make it reviewable. A simple low-risk copy or spacing check may use a short inline record. New/reshaped screens, multi-platform surfaces, user-visible behavior, accessibility-sensitive flows, high-risk actions, branch/MR work, unclear risk, and implementation-driving design require the full Design brief, state/adaptation matrices, observable visual/interaction criteria, rendered/device evidence plan, and named producer/test/client handoff before edit or approval.
25
+
26
+ For runtime work, this draft exists before the first implementation edit. Testing, changed producer, and affected client owners consume it; they do not wait for a supposedly final design checkpoint.
27
+
28
+ Record these fields:
29
+
30
+ | Field | Required content |
31
+ | --- | --- |
32
+ | `slice_id` | Stable identifier for this surface/change. |
33
+ | `candidate_ref` | Mutable planning reference such as worktree/branch plus its current base. It locates work in progress but never binds executed evidence or a verdict. |
34
+ | `surface` | Runtime, framework, platform/host, surface type, and density mode. |
35
+ | `consumer_inventory` | Authoritative source used to establish the complete consumer universe; every member classified as affected, unchanged, out of scope, inaccessible, or unknown. |
36
+ | `trigger_class` | One delivery depth—`copy-only`, `narrow-visible`, `new-or-reshaped-screen`, or `systemic-redesign`—for runtime work, plus zero or more orthogonal work modes: `shared-system`, `source-code-evidence`, `design-to-code`, `audit/review`, `naming-version-sync`, `same-stack-multi-project`, and `multi-stack`. Record each observed basis and the union of references loaded. A source-only audit may omit delivery depth. |
37
+ | `user_and_task` | Target users, representative task, goal, prior knowledge, and use environment relevant to the decision. |
38
+ | `intent_and_risk` | Primary workflow/action, human intent, expected friction, consequence, and trust/safety boundary. |
39
+ | `structure` | Information groups regrouped by user intent and consequence, hierarchy, layout regions, navigation, progressive disclosure, return context, and component semantics. Separate routine context/data from security, recovery, and destructive/danger areas when their consequences differ; do not merely repaint the existing grouping. |
40
+ | `state_matrix` | Applicable initial, empty, loading/pending, success, failure, retry, disabled, permission, offline/degraded, partial, long-content, and interrupted/recovery states. Mark true non-applicable states with a reason. |
41
+ | `adaptation_matrix` | Primary and stress sizes, container/window constraints, text scaling/localization, input modes, collapse rules, safe area/keyboard/orientation where relevant. |
42
+ | `behavior_contract` | Routes, API/write effects, session/auth cleanup, destructive semantics, optimistic reconciliation, duplicate protection, return values, and preserved behavior. |
43
+ | `difference_class` | Each source-to-target difference is `defect-fix`, `design-freedom`, or `behavior-change`; split mixed changes and use the strictest class for an inseparable point. |
44
+ | `criteria` | Observable acceptance conditions, each with an ID, user/task outcome or invariant, and consequence if it fails. When applicable, name separate behavioral logic, aesthetic/visual hierarchy and craft, interaction, and component-semantics criteria; avoid adjectives without an observable consequence. The design brief does not select verifier type, assertion layer, rendered-evidence layer, command, or oracle; Phase 0 owns those choices. |
45
+ | `design_source` | Current product source, approved draft, design system, user-provided target, or source-light hypothesis; name specified states separately from design freedom. Record the source revision/version/content basis and any replacement or review artifact that can change the criteria. Mutable locators remain planning references until covered by an immutable design member below. |
46
+ | `design_record` | Resolvable location for the brief, criteria, source/replacement revisions, and review artifact. It may be mutable during planning; before evidence or a verdict relies on it, every changed or claim-bearing design item must have a keyed immutable member in `candidate_binding_set`. |
47
+ | `reference_surface` | Chosen current or accepted surface used to carry direction plus why it fits this slice; when no redesigned surface exists, say so and name the design reference/spec used instead. |
48
+ | `owners` | Design owner, test owner, a `producer_owner_set` keyed by every changed or claim-bearing backend/config/content/inference member, and a `client_owner_set` keyed by every affected rendered layer/runtime/target/repo, plus unresolved owner gaps. |
49
+ | `evidence_plan` | Planned automated, rendered/device, accessibility, task/user, and production evidence; list known unavailable layers. |
50
+
51
+ The initial record deliberately leaves `assertion_layer`, `rendered_evidence_layer`, verifier type, oracle, exact commands, producer returns, and client entry rules pending. Stage 2 and Stage 3 fill them. Criteria are complete when their observable condition and consequence are known; missing test-owned fields cannot make the brief incomplete. This ordering prevents the old circular wait in which testing required a completed checkpoint while the checkpoint required testing's layer choice.
52
+
53
+ ### Trigger depth
54
+
55
+ `new-or-reshaped-screen` and `systemic-redesign` apply when any of these are true:
56
+
57
+ - the request declares redesign, restyle, modernization, or alignment with a new visual direction;
58
+ - layout structure, information grouping, navigation, component semantics, or visual system changes materially;
59
+ - a continuation uses a redesigned surface as the quality reference;
60
+ - multiple surfaces or shared tokens/components change with design-system consequences.
61
+
62
+ Shared token/component sweeps without information-architecture or behavior change may use `shared-system`. A copy or spacing change uses a lighter class only when it changes no structure, state, interaction, navigation, component choice, hierarchy, or behavior and is not presented as a redesign. Record the classification; uncertainty takes the deeper path.
63
+
64
+ For a systemic redesign or a sequence that uses one redesigned screen as the direction for later screens, every screen remains its own full design slice. Re-derive that screen's information architecture by grouping content and actions by user intent and consequence—for example, routine context/data apart from security, recovery, and destructive/danger areas—rather than repainting the existing layout. Re-derive behavior, states, adaptation, criteria, and runtime evidence at the same depth as the first/reference screen; an umbrella brief may share sources, tokens, and cross-surface invariants but cannot replace the per-screen records. Only a pure token/component sweep with no per-screen information-architecture or behavior change may batch implementation, and it still inventories every affected consumer.
65
+
66
+ A bare ownership declaration does not authorize a behavior change. If IA regrouping silently changes routes, writes, semantics, permissions, return behavior, or another preserved contract, that is an implementation defect rather than a design refinement; classify and route the behavior change explicitly.
67
+
68
+ ### RED baseline
69
+
70
+ Every `new-or-reshaped-screen`, `systemic-redesign`, and behavior-changing slice records a falsifiable current-state baseline before implementation:
71
+
72
+ - a failing focused assertion when an executable harness fits; or
73
+ - a resolvable before artifact plus a target criterion for visual/layout work; or
74
+ - reproducible construction steps for a synthetic state.
75
+
76
+ The baseline proves the starting condition, not that the proposed design is good. Do not create a fake failing unit test for a visual judgment.
77
+
78
+ ### Missed pre-edit record
79
+
80
+ If implementation starts before the required full or lightweight record exists, treat that as a process defect, not permission to write a brief around the result:
81
+
82
+ 1. stop further implementation edits and record when/how the omission was discovered;
83
+ 2. reconstruct the required record from the request, pre-change source/runtime, and product evidence rather than from the already-written implementation;
84
+ 3. obtain Phase 0 and the client entry rule, then audit the whole existing diff against every criterion, preserved behavior, consumer, and evidence obligation;
85
+ 4. record deviations and revise or reject the implementation before continuing.
86
+
87
+ Complete this remediation before further implementation, a completion/final claim, commit, push, or an MR-ready claim. A retroactive brief without the diff audit cannot bless the existing implementation.
88
+
89
+ ## 2. Test Phase 0 — layer selection
90
+
91
+ `testing-strategy` responds to the design brief with the pre-implementation layer-selection pass below, then owns the separate Phase 1 closeout after producer/client execution.
92
+
93
+ Return a compact record before implementation:
94
+
95
+ | Field | Required content |
96
+ | --- | --- |
97
+ | `assertion_layer` | Unit/component/integration/browser/device/contract/manual-task layer for each criterion. |
98
+ | `rendered_evidence_layer` | Browser, simulator/emulator, real device, host preview, desktop runner, or PTY/terminal capture, including required sizes/themes/input modes. |
99
+ | `cases` | Criterion IDs mapped to happy, boundary, failure, recovery, and accessibility cases. |
100
+ | `command_and_target` | Planned command or interaction, candidate target, fixture/data needs, and expected current result. |
101
+ | `oracle` | What observation makes the case pass or fail; DOM existence alone is not a visual or interaction oracle. |
102
+ | `test_definition_set` | Resolvable Phase 0 mapping plus every harness, assertion/oracle, fixture, config, script, external test artifact, or manual protocol that can change the result. Before execution, each changed or claim-bearing item gets its own immutable test member in `candidate_binding_set`. |
103
+ | `evidence_gap` | Missing harness, environment, data, device, or human judgment with owner and next action. |
104
+
105
+ This Phase 0 response completes the draft's testing fields. Absence of a previously finalized checkpoint does not block Phase 0; absence of the design brief's user/task, states, risks, and criteria does.
106
+
107
+ For a valid `copy-only` slice, Phase 0 uses the lightweight record defined below rather than demanding the full state/adaptation/behavior matrices. It still selects semantic, accessible-name, localization, rendered-extent, and target-render or preview oracles as applicable.
108
+
109
+ ## 3. Producer/client execution
110
+
111
+ When the slice changes or relies on a backend, event producer, remote config/CMS, schema/default, prompt/model, or generated-content path, every changed or claim-bearing producer first adds one member to `producer_record_set`. Each member records its owner/repository/runtime target, immutable candidate-binding member, build/schema/config/prompt/model/artifact identity, exact verification command and environment/endpoint version, API/event/log/output observations mapped to criteria, consumer-inventory pointer, coverage boundary, and gaps. Each client execution must name which producer member/version it actually exercised. A render against an old, unknown, or mismatched service/config/model cannot verify the changed producer candidate.
112
+
113
+ Build an owner set from every affected rendered layer, including content embedded in another container:
114
+
115
+ | Rendered layer | Client owner | Required local return beyond the shared record |
116
+ | --- | --- | --- |
117
+ | React web or React content inside Electron/WebView | `web-react-dev` | Browser/server route, viewport/container sizes, themes, input modes, console/network checks, overflow/focus/keyboard evidence. |
118
+ | Flutter, React Native, native Android/iOS, or native host shell | `app-cross-platform-dev` | Build target, simulator/emulator/device, safe area, keyboard, orientation, text scale, touch, lifecycle, and host/content bridge evidence. |
119
+ | WeChat/Alipay/Douyin or another mini-program host/page layer | `miniapp-product-dev` | Host/runtime version, developer-tool or device target, host capability/permission behavior, web-view bridge, package/platform constraints. |
120
+ | Full-screen terminal/TUI or terminal-rendered interface | `terminal-cli-dev` | Real PTY/terminal, dimensions, color depth/fallback, keyboard-only flow, resize, scrollback, selection/copy, long output, streaming/background progress, focus/modal state, and jump/new-output affordance evidence. |
121
+ | Electron/desktop shell or any rendered layer without an installed client owner | Project client conventions | Named surface/runtime plus the exact local convention consulted; otherwise use the fail-closed lookup below. |
122
+
123
+ A composite host has multiple owner-set members: React inside a native WebView uses `web-react-dev` for content and `app-cross-platform-dev` for the native container/bridge. A mini-program `web-view` uses the actual web-content owner plus `miniapp-product-dev`; Electron uses the actual web-content owner plus the installed desktop-shell owner or project client convention. For either host, React content routes to `web-react-dev`; Vue, Svelte, static, vendor, or another renderer routes to its installed owner or the fail-closed project-convention lookup below, never to React by container name alone. A single owner may fill two members only when an explicit project contract assigns both responsibilities and its evidence covers both layers. An unchanged host member still records the integration contract and proof that the change cannot affect it; omitting the member because the code diff sits in another repo is invalid.
124
+
125
+ Before the first implementation edit, every affected member of the client owner set adds a compact `client_entry` acknowledgement to the shared record: a short quote from, or exact identifier for, that owner's visible-UI, page-slice, design-checkpoint, or rendered-evidence rule plus the decision it produced; target surface/runtime; planned run/capture command; and behavior that must remain unchanged. Arbitrary skill text, a file path, runtime name, or vague anchor alone is not evidence of the applied convention. A project-convention owner must quote the specific surface/interaction/evidence convention applied. This is an entry decision, not fabricated execution evidence. Merely listing or naming an owner, including on the copy-only path, does not satisfy this step.
126
+
127
+ For a shared package, first establish the authoritative consumer universe from build/release targets, manifests, contracts, packages/repos, locale/config sources, and import evidence; then inspect every member. Record each as affected, unchanged, out of scope, inaccessible, or unknown with the basis. An incomplete universe or inaccessible member remains `unknown-consumers` and blocks a complete claim. The user may accept a specifically scoped handoff in the current thread, but its terminal state remains `pending + blocked`; acceptance of the handoff is not design acceptance or completion.
128
+
129
+ Before writing `no-installed-owner`, name the runtime/framework and why the installed client owners do not apply, then inspect the current repository's README/CONTRIBUTING, nearest AGENTS/CLAUDE contract, and client/style/design docs for a local convention. Record the locations checked. An incomplete or inaccessible lookup is `owner-lookup-unavailable`, never `no-installed-owner`.
130
+
131
+ Each affected client owner returns one member of a shared `client_record_set`:
132
+
133
+ - the same resolvable quote or exact section/rule identifier plus the implementation decision it shaped;
134
+ - affected files/components and preserved behavior contracts;
135
+ - exact run/capture command plus its keyed immutable candidate-binding member and target surface;
136
+ - review-accessible `artifact_ids` or paths;
137
+ - tested dimensions, states, themes, sizes, input modes, and assistive-technology checks;
138
+ - raw observations mapped to criterion IDs where the client owner can verify them mechanically;
139
+ - coverage boundary: what the gate detects, paths/states scanned, known false negatives, and remaining manual/runtime checks;
140
+ - unresolved product, design, test, platform, environment, or evidence gaps.
141
+
142
+ Prefer an existing route, state catalog, story/preview, fixture, smoke harness, or integration test. Batch planned captures and permission requests so evidence collection does not repeatedly interrupt the operator or create a noisy throwaway workflow that blocks normal work. If a temporary helper script or page is unavoidable, create or edit it once for the batch, reuse it, and remove it before commit and before completion unless the repository intentionally owns that harness. A state catalog or story counts as proof only when its execution is demonstrated; file presence and item counts are source evidence, not test execution.
143
+
144
+ ### Candidate binding set
145
+
146
+ The design record/source artifacts, test definitions and executions, producer/client record sets, Test Phase 1, and design verdict use one `candidate_binding_set`, keyed by role owner, layer/runtime target, and repository/artifact. A truly single-member slice may use `candidate_binding` as shorthand. Every changed or claim-bearing design, test, producer, and required client member must resolve to the same logical candidate; a later change to any member invalidates the affected evidence and aggregate verdict.
147
+
148
+ - Design members cover the brief, criteria/behavior contract, and every design-source revision, replacement source, or review artifact that the verdict relies on.
149
+ - Test members cover the Phase 0 criterion mapping, harness/assertion/oracle, fixture/config/script/manual protocol, external test artifact, and each test-owned execution/result. An additional run identifies both its bound definition member and execution member.
150
+ - Producer and client members cover the candidate and runtime facts defined above. A client member also names the bound producer member/version it exercised.
151
+
152
+ Each binding value has a non-empty, exact payload from this closed set:
153
+
154
+ | Binding kind | Exact payload |
155
+ | --- | --- |
156
+ | `commit` | `commit:<full-40-or-64-hex>` |
157
+ | `tree` | `tree:<full-40-or-64-hex>` |
158
+ | `artifact-sha256` | `artifact-sha256:<64-hex>` |
159
+ | `dirty-bundle-v1` | `dirty-bundle-v1:<full-base-commit-hex>:<64-hex-bundle-digest>` |
160
+
161
+ Branches, tags, abbreviated SHAs, empty suffixes, mutable external version labels or artifact paths, and prose such as “current working tree” are locators, not immutable bindings. An external design, review, test, or runtime artifact without a content-addressed immutable ID is covered by an `artifact-sha256` member over the exact reviewed bytes plus its locator. Adding another binding kind changes this contract and requires its parser/oracle, collision and empty-value tests, and all consumer skills to change together.
162
+
163
+ A `commit` or `tree` binding is valid for an executed member only when the command ran from that exact materialized commit/tree and no tracked, untracked, ignored helper, generated file, symlink target, external harness/config, or other candidate input changed the result. For a Git worktree, the relevant checkout must be clean and its full HEAD/tree must equal the binding; `commit:HEAD` written after a run from dirty bytes is invalid. A result-affecting byte inside the checkout but outside/different from that commit/tree must be included in `dirty-bundle-v1`; a result-affecting input outside the checkout must have its own `artifact-sha256` member over the exact bytes. Do not relabel a dirty execution as a clean commit after the fact.
164
+
165
+ A dirty-bundle record also points to a reviewable manifest and the exact command/script used to derive it. The versioned manifest includes the base commit, the byte-exact binary tracked diff, every untracked member, and every result-affecting ignored member, all in sorted path order with path, file mode/type, and raw content or symlink target. Ignored generated files, helpers, fixtures, configs, and caches are not exempt merely because Git omits them; either include their exact bytes in the dirty bundle or bind each as a separate `artifact-sha256` member. Result-affecting external inputs always use a separate content-addressed member and locator. The manifest may exclude only a named non-deliverable proven unable to affect the candidate or result. If the record containing the digest is itself in the bundle, store the binding outside that bundle or define one canonical placeholder for only that field; do not omit the rest of the record or arbitrary files to escape self-reference. In a multi-repo or multi-target slice, preserve one keyed member per design/test/producer/client repository or artifact rather than hashing an unspecified ambient directory.
166
+
167
+ ## 4. Test Phase 1 — execution result and sufficiency
168
+
169
+ After producer/client execution, `testing-strategy` consumes the complete design/test/producer/client member and record sets and returns one test-owned closeout:
170
+
171
+ | Field | Required content |
172
+ | --- | --- |
173
+ | `candidate_binding_set` | The same complete keyed design/test/producer/client binding set; `candidate_binding` is only the one-member shorthand. A branch name alone is never exact. |
174
+ | `design_record_ids` | Resolvable pointer per changed or claim-bearing brief/criteria/behavior/source/replacement/review member, with its immutable binding. |
175
+ | `test_record_ids` | Resolvable pointer per Phase 0 mapping, harness/oracle/fixture/config/protocol, external test artifact, and test-owned execution/result member, with immutable bindings. |
176
+ | `producer_record_ids` | Resolvable pointer per changed or claim-bearing producer member, including artifact/version identity, command/environment, API/event/log/output observation, coverage boundary, and gaps. |
177
+ | `client_record_ids` | Resolvable pointer per affected client execution member. Cite its commands, targets, artifacts, tested dimensions, and raw observations instead of copying them. |
178
+ | `additional_test_runs` | Bound definition/execution IDs for any test-owned commands/results/artifacts not already in a producer/client record, or `none` with reason. |
179
+ | `criterion_results` | Result and verifier per criterion, including which producer observation, client observation, or test artifact supports it. |
180
+ | `sufficiency` | `sufficient`, `insufficient`, or `blocked` for the required evidence plan, with the reason. |
181
+ | `coverage_boundary` | Combined detected paths/states/dimensions, known false negatives, and remaining manual/runtime checks. |
182
+ | `gaps` | Unresolved evidence, environment, data, or oracle gap with owner and next action. |
183
+
184
+ Each design, test, producer, and client owner writes its own facts once; Phase 1 owns criterion-level test interpretation, cross-member aggregation, and sufficiency. Missing, mismatched, stale, changed-after-run, or unexercised required design/test/producer/client owner or binding members make sufficiency `blocked`; one passing member cannot mask another. When the same person holds multiple roles, keep the sections in one shared record and reference the role-owned fields rather than duplicate them. A build, lint, type-check, or unit-test pass is not rendered evidence. A hand-authored or echoed transcript is fabricated evidence—the same defect class as fabricated verification output—and blocks acceptance. A screenshot proves only the captured visual state; it does not by itself prove which producer version ran, keyboard behavior, recovery semantics, accessibility, task success, or production behavior. `testing-strategy` does not issue the holistic design verdict.
185
+
186
+ ## 5. Design verdict
187
+
188
+ The design owner evaluates the returned evidence against every criterion and records:
189
+
190
+ | Field | Required content |
191
+ | --- | --- |
192
+ | `criterion_results` | `pass`, `fail`, `blocked`, or `not-applicable` per criterion, with verifier and artifact/result pointer. |
193
+ | `verdict` | `candidate`, `accepted`, `rejected`, or `pending`. |
194
+ | `verdict_owner` | User, named independent design owner, or author under the bounded deterministic exception below. |
195
+ | `rejection_basis` | For `rejected`, classify `deterministic-conformance`, `design-judgment`, or `mixed`, naming the failed criterion. `mixed` follows the stricter design-judgment path. |
196
+ | `rationale` | Evidence-backed reason, named divergence, and consequence. |
197
+ | `candidate_binding_set` | Complete immutable keyed design/test/producer/client set defined above; `candidate_binding` is only the one-member shorthand. A mutable branch is only `candidate_ref`. Any covered brief, criteria, source/review artifact, harness/oracle, producer, UI/copy/state, or member mismatch invalidates earlier evidence and verdicts. |
198
+ | `next_state` | `complete`, `pre-runtime-test-ready`, `design-rejected`, or `blocked`, with owner and next action for any open item. |
199
+
200
+ Deterministic checks may close their own criterion without waiting for aesthetic judgment. An author may issue `accepted` only for a low-risk `copy-only`, `narrow-visible`, or current-source conformance slice when every blocking criterion has an independent deterministic oracle, all required runtime evidence is verified, and no criterion needs aesthetic/product judgment. A new/reshaped screen, systemic redesign, cross-surface shared-system direction, brand direction, high-risk semantics, any judgment-bearing criterion, or a prior `design-judgment`/`mixed` rejection requires a user or named independent design owner. Until that owner decides, the author records `candidate`.
201
+
202
+ This bounded deterministic exception intentionally replaces the blanket rule that an author can never accept any slice. It removes an owner wait only when independent oracles leave no design judgment to exercise; it does not turn author opinion into evidence. A prior deterministic-conformance rejection may use the exception only after its criterion-targeted fix binds a new candidate and every invalidated criterion reruns. Any rejection containing design judgment keeps the independent-owner requirement.
203
+
204
+ At a handoff, only these verdict/next-state combinations are valid:
205
+
206
+ | Verdict | Next state | Required condition |
207
+ | --- | --- | --- |
208
+ | `accepted` | `complete` | The bound Phase 1 `sufficiency` is `sufficient` and no required evidence gap remains; every blocking criterion is `pass` or justified `not-applicable`; every required design/test/producer/client owner, record, exercised-version link, and binding-set member is present and verified; the allowed verdict owner accepted. |
209
+ | `rejected` | `design-rejected` | A blocking criterion or design judgment failed; preserve the negative evidence and revise the target. |
210
+ | `pending` | `pre-runtime-test-ready` | The only missing blocking layer is named runtime/rendered execution; lower layers pass, and an executable command/target plus named runtime owner is handed off. |
211
+ | `pending` | `blocked` | A required owner, decision, permission, environment, non-runtime evidence, consumer inventory, or criterion cannot be resolved. |
212
+ | `candidate` | `blocked` | Evidence is ready for a required user/independent design verdict, but that verdict has not arrived; name that owner and review artifact. |
213
+
214
+ All other terminal combinations are invalid. In particular, `accepted + pre-runtime-test-ready`, `accepted + blocked`, `pending + complete`, and `candidate + complete` are contradictions. During active work, omit `next_state` rather than manufacture a terminal combination.
215
+
216
+ Status meanings:
217
+
218
+ - `candidate`: author assessment; useful for review, never final acceptance.
219
+ - `accepted`: required criteria pass on the bound candidate and the required verdict owner accepts the design.
220
+ - `rejected`: a blocking criterion or design verdict failed; the current render is negative evidence, not a baseline to polish into acceptance.
221
+ - `pending`: evidence or verdict has not arrived; silence is not acceptance.
222
+ - `pre-runtime-test-ready`: lower layers are ready and the only missing blocker is named runtime/rendered execution with a named owner and command; it is not design acceptance.
223
+ - `blocked`: an owner, decision, permission, consumer universe, non-runtime evidence, environment without an executable handoff, or required independent verdict is unavailable.
224
+
225
+ A missing or absent design verdict is `pending` and blocks `complete`, MR-ready, merge-ready, and normal MR; it cannot be treated as tacit approval.
226
+
227
+ When a surface is `rejected`, preserve the rejected evidence and its `rejection_basis`. Until a re-rendered revision is `accepted`, rejection blocks `complete`, MR-ready, merge-ready, and every normal or ordinary draft MR; the rejected render or screenshot is negative evidence and cannot be reused as acceptance evidence. A `deterministic-conformance` rejection may be repaired by a targeted change—including a qualifying lightweight copy fix—only when the change addresses the failed criterion, introduces no new design judgment, binds a new candidate, and reruns every invalidated criterion; repeated failure stays blocked and routes through `defect-diagnosis` until its cause is isolated. A `design-judgment` or `mixed` rejection requires a revised design target, fresh baseline, new runtime evidence, and user/named independent design verdict; isolated copy, spacing, or token patches cannot clear it. A clearly labelled review-only draft MR may transport only the revised bound candidate to that named independent owner; it remains `candidate + blocked`, is not a normal handoff or MR-ready claim, and cannot merge. A second design-judgment rejection on the same surface stops implementation churn and returns the direction to that owner.
228
+
229
+ ## Evidence semantics
230
+
231
+ Evidence dimensions are claim-matched, not a global ladder; verify every required dimension:
232
+
233
+ 1. Intent/source: a rule, design, spec, or decision exists.
234
+ 2. Static implementation: relevant code/config/story/test exists.
235
+ 3. Automated acceptance: an exact command ran against the candidate and its oracle passed.
236
+ 4. Rendered/device runtime: the target surface and required states were inspected on the named runtime.
237
+ 5. Representative task/user: target users attempted credible tasks under the recorded protocol.
238
+ 6. Production outcome: version-bound field metrics or incidents support the claim.
239
+
240
+ Dimensions do not substitute: production outcomes do not prove conformance; conformance does not prove user success; screenshots do not prove durability or recovery. Multi-dimensional criteria close only when all required dimensions pass. Heuristic review is risk discovery, not acceptance proof. Automated accessibility checks and user evaluation complement standards conformance; neither substitutes for the other. A single participant, single screenshot, single viewport, or single expert review does not justify a population-wide or cross-platform claim.
241
+
242
+ `unavailable-with-owner` and `unavailable-no-owner` are valid rendered-evidence statuses only when the record includes every attempted capture command, its observed failure, the residual risk, and the next unblock action. An unavailable label without an actual attempt record is invalid. Render-layer failures can also be nondeterministic: an earlier per-screen capture may look clean while a later pass exposes the defect, including charset auto-detection that renders clean once and garbled later. An aggregate or final design review therefore re-renders the actual artifact set at review time—even when the candidate binding is unchanged—instead of trusting earlier per-screen captures or a source-level pass.
243
+
244
+ `planned` includes the exact capture command/step and must resolve before a final design verdict, MR-ready claim, or normal MR. The only unresolved-runtime handoff is `pending + pre-runtime-test-ready` with its named owner/command. An unavailable layer closes only as a handoff gap after the user is told the residual risk and explicitly accepts proceeding without that evidence for this specific change in the current thread; `unavailable-no-owner` remains `pending + blocked`.
245
+
246
+ For every deterministic gate, record its coverage boundary. A regex/path scan proves only its declared scan scope. A token reference proves use, not rendered theme correctness. A component test proves its oracle, not that CI executes it. A render proves the captured state, not production durability or recovery.
247
+
248
+ ## Design-system and state contracts
249
+
250
+ - Encode stable visual and accessibility invariants in semantic component APIs, tokens, types, and focused tests when the codebase supports them. Prose remains the rationale and boundary, not the only enforcement layer.
251
+ - Keep a previewable state catalog for high-cost loading, empty, failure, permission, offline, partial, recovery, and success states. Pair it with mapping/coverage checks where source inputs can be enumerated.
252
+ - Classify errors by affected scope, recovery path, durability/finality, and retry safety. Choose one primary carrier; do not stack inline, banner, toast, and modal messages without distinct jobs.
253
+ - Preserve stateful workspace cores across transient loading/error/mode changes when remounting would lose draft, focus, selection, scroll, or media state. Verify preservation at runtime.
254
+ - Apply the same token, responsive, accessibility, and state checks to examples, stories, catalogs, and docs that teams use as implementation sources.
255
+ - Before landing executable design guidance that affects multiple client stacks, name every downstream stack owner and route the reusable rule through `skill-extraction-workflow`; mirror its executable form into every affected owner, or record for each stack why its behavior remains unchanged.
256
+
257
+ ## Copy-only and source-only paths
258
+
259
+ A runtime copy-only change may use a lightweight record when it stays in the same component, rendering slot, or output field and changes no conditional logic, hierarchy, layout, state, interaction, navigation, behavior, or component semantics. The lightweight record is complete with: `slice_id`, `candidate_ref`, surface and authoritative consumer inventory; before/after copy and classification evidence; semantic intent and risk class; unchanged component/slot/field and behavior proof; the design/test owners, every changed or claim-bearing producer owner, and every affected client owner; and criteria for accessible name, terminology, localization, rendered extent, and target render/preview where applicable. It intentionally omits unrelated full-record matrices.
260
+
261
+ Testing supplies a lightweight Phase 0 for those criteria; each changed producer and affected client owner may begin from that record instead of the full brief. The lightweight design record, test definitions/executions, and producer/client returns still form the complete immutable candidate-binding set and record their own source or command/target, artifacts or observations, criterion links, coverage boundary, and gaps; client returns also record tested locales/sizes and the producer member/version exercised. Phase 1 binds and cites the complete design/test/producer/client record sets. Error, auth, money, destructive-action, permission, legal/compliance, and AI-disclosure copy are not lightweight; route their risk and run the full contract.
262
+
263
+ If later evidence proves the `copy-only` classification wrong, the lightweight record is invalid from that discovery point, and you must apply **Missed pre-edit record** to the existing diff by stopping implementation edits, rebuilding the full Design brief, obtaining full Phase 0 and every affected producer/client owner entry, auditing the whole existing diff against them, then rerunning producer/client execution, Phase 1, and the design verdict. Until that remediation closes, the slice is `pending + blocked`; the old lightweight result cannot support completion.
264
+
265
+ If rendered evidence is not captured for a qualifying copy-only edit, it can close only as `pending + pre-runtime-test-ready` with the named runtime owner/command, or as the same risk-disclosed, specific-change, current-thread user-accepted handoff gap above. It is never `complete` without the required render.
266
+
267
+ Copy acceptance is semantic, not a character-count shortcut: action labels identify the action and object/consequence when context does not; errors state what happened, a safe/useful reason when available, and the next repair action; disabled controls expose a safe reason and enablement condition or are hidden when disclosure is unsafe; success feedback names the completed outcome and useful next step; terminology, tone, accessible naming, localization and rendered extent remain consistent. Platform-standard short dialog labels are valid when the consequence is already unambiguous.
268
+
269
+ Source-only guidance, design-file, or audit work stops before Stage 3 when no runtime implementation is requested. Report recommendations as hypotheses or acceptance criteria and name the missing implementation/runtime evidence. Do not fabricate a client handoff.
270
+
271
+ ## Persistence and safety
272
+
273
+ Artifacts must resolve at review time through repo-relative paths, review attachments, or named artifact IDs. Do not use local absolute private paths. Record the command and target with captured output; a pass/fail summary alone is not an inspectable artifact. Use sanitized/test accounts and redact tokens, credentials, PII, private paths, and raw personal data.
274
+
275
+ Any required evidence status other than verified leaves the slice `pre-runtime-test-ready` or `blocked`. A user may accept a gap only after its residual risk is disclosed and only for the specifically named change in the current thread; blanket autonomy, a prior “continue”, or a different slice's acceptance does not convert the gap into `complete`.