@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.
- package/README.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +8 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +6 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +16 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +6 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +195 -7
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +3 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +13 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/normalize_review_timeout.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +9 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +1540 -129
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +8 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +76 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +1858 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_update_review_plan_intent.sh +789 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/update_review_plan_intent.py +513 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/SKILL.md +3 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +4 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/state-machine-task-patterns.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +2 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/inference-capacity-operations.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/llm-client-gateway.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/model-prompt-evaluation.md +4 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +11 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/contracts-and-state.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/SKILL.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/async-lifecycle-and-performance.md +73 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/runtime-and-project-contract.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/source-map.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/nodejs-service-dev/references/verification-diagnostics-and-security.md +63 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +3 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/metrics-conventions.md +8 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/canary-and-rollout-strategy.md +16 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +9 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +14 -16
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/code-review-checklist.md +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +10 -14
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +1 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +135 -86
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +66 -80
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/delivery-contract.md +275 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +88 -214
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +10 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +6 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +112 -95
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +30 -21
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +22 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +20 -17
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +7 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +14 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +3 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +9 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +37 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +8 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +16 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +4 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +4 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/state-machine-task-patterns.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +8 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/description-authoring.md +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +104 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +11 -9
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +102 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +103 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +6 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +4 -3
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +69 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/extraction_review_gate.sh +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +49 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/obligation-ledger.py +2748 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +20 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/shared_git_surface_gate.py +1142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +41 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ci_checkout_ref_binding.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_entrypoint_domain_scan_terms.sh +82 -8
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_extraction_review_gate.sh +336 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_self_adjudication.sh +82 -10
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger.sh +1416 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_obligation_ledger_repo_audit.sh +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +141 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +3 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_shared_git_surface_gate.sh +1696 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_delivery_contract.sh +2117 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_uiux_loading_budget.sh +316 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_extraction_review_state.sh +1176 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +31 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +9 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate_extraction_review_state.py +980 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +8 -6
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/classical-test-design-techniques.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-review-and-prioritization.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/update-lifecycle.md +2 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +16 -15
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/ci-fixtures-and-flake-control.md +5 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +10 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/e2e-real-flow-testing.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/integration-contract-testing.md +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +2 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-topology-and-commands.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +2 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/annotation-driven-revision.md +9 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/figure-and-table-craft.md +8 -2
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +7 -5
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +1 -1
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/react-architecture.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-quality-release.md +37 -4
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-ui-quality.md +10 -1
- package/dist/assets/release.json +215 -105
- package/package.json +1 -1
|
@@ -4,25 +4,28 @@ Use this reference when a design task risks becoming "rule-compliant but plain".
|
|
|
4
4
|
|
|
5
5
|
This file is distilled from current Figma rules and frontend implementation evidence. Source product terms are provenance only; do not copy them into new-product UI.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Adaptation Test Setup
|
|
8
8
|
|
|
9
9
|
Do this before drawing or coding any nontrivial page:
|
|
10
10
|
|
|
11
|
-
1. Pick the
|
|
12
|
-
2.
|
|
13
|
-
- Desktop workbench:
|
|
11
|
+
1. Pick the rendered family and task shape: React or other Web, mobile app/H5, mini-app host/page, ordinary CLI or full-screen terminal/TUI, Electron/desktop/TV shell, dense table/list, structured editor, scan/upload/review, analytics/tracking, or resource/library. For an unlisted client, name its installed owner or fail-closed project convention before choosing adaptation evidence.
|
|
12
|
+
2. Derive the primary viewport and stress viewports from the product's supported-device matrix, analytics, host constraints, or existing repository configuration. If no stronger source exists, use these only as provisional test seeds and record that evidence gap:
|
|
13
|
+
- Desktop workbench: one representative desktop frame, then a wider frame and a narrow desktop/tablet width; 1440x810 is a useful seed, not a universal target.
|
|
14
14
|
- Consumer web: content column and optional rail at desktop, then one tablet/narrow width and one mobile width.
|
|
15
|
-
- Mobile app/H5:
|
|
15
|
+
- Mobile app/H5: one representative shipped device, a narrower/shorter stress device, and a larger device; 393x852, 375x812, and 428x926 are useful seeds. If the task supports landscape or review, add a representative landscape frame such as 874x402.
|
|
16
|
+
- Mini-app: use the shipped host/tool and at least one real supported device class; include host chrome, safe area, permission/capability, package/platform, and any embedded web-view constraints.
|
|
17
|
+
- Ordinary CLI or terminal/TUI: cover TTY and non-TTY/plain modes as applicable, representative narrow/default/wide dimensions, color/capability fallback, long/localized output, keyboard/focus/resize/scrollback only where the contract uses them, and the actual command/help/exit/recovery path.
|
|
18
|
+
- Electron/desktop/TV shell or other Web renderer: use the actual content owner plus shell owner/project convention; exercise supported window/display sizes, scaling, focus/input, host bridge, and content-shell integration rather than borrowing the generic browser matrix.
|
|
16
19
|
3. Assign fixed or bounded regions before spacing polish: shell/header, context/filter row, primary region, secondary panel, feedback region, and action area.
|
|
17
20
|
4. Decide the collapse rule: secondary panel, side rail, preview, filters, and metadata collapse before the primary content becomes unreadable. Do not just shrink everything.
|
|
18
21
|
5. Decide the density mode and spacing scale. Productive compact and consumer relaxed use different page padding, control height, row height, and card breathing room.
|
|
19
22
|
6. Map long text, no data, partial data, permission blocked, loading, error, and keyboard/safe-area states into the same geometry as the happy path.
|
|
20
23
|
|
|
21
|
-
If a design or implementation skips these decisions, it is not ready for UI review even if the component choices are correct.
|
|
24
|
+
If a design or implementation skips these decisions, it is not ready for UI review even if the component choices are correct. Numeric ranges in the recipes below are source-derived starting heuristics; they become acceptance criteria only when the current product source or a recorded decision adopts them and rendered evidence exercises the relevant stress case.
|
|
22
25
|
|
|
23
|
-
##
|
|
26
|
+
## Quality Lenses For Layout Proof
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
After choosing the delivery profile in `design-execution-checklist.md`, apply the relevant structure, interaction, behavior, and aesthetic lenses before coding, screenshot review, or acceptance. Translate them into layout proof:
|
|
26
29
|
|
|
27
30
|
- Aesthetic proof: visible layer model, rhythm, density, alignment, color weight, and one primary focus.
|
|
28
31
|
- Interaction proof: visible entry point, current task, next action, progressive disclosure, and return path.
|
|
@@ -31,9 +34,9 @@ Use the canonical four-layer order from `design-execution-checklist.md` after ch
|
|
|
31
34
|
|
|
32
35
|
If one layer is missing, the screen is incomplete even when it passes component and token checks.
|
|
33
36
|
|
|
34
|
-
##
|
|
37
|
+
## Shared Composition Pass
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
Before component styling, name the applicable composition roles for a nontrivial screen; mark a role non-applicable with the surface/task reason instead of forcing every product into one shell:
|
|
37
40
|
|
|
38
41
|
1. Shell: global nav, account/context, route title, and persistent feedback providers.
|
|
39
42
|
2. Context row: current scope, mode, filters, selected object, permission or trust state.
|
|
@@ -43,7 +46,7 @@ Every nontrivial screen needs a visible composition before component styling:
|
|
|
43
46
|
6. Return loop: back/close, save draft, retry, undo, next item, or route-preserved selection.
|
|
44
47
|
7. Annotation and flow support: for complex tasks, expose the user's current step, decision point, hot zone, affected object, and measurement/status cue through concise labels, markers, progress steps, or tooltips rather than forcing users to infer the workflow from raw layout.
|
|
45
48
|
|
|
46
|
-
|
|
49
|
+
When these roles do not fit, choose a surface-specific structure and record why it supports the representative task. A marketing page can legitimately use a different composition; a raw component dump or unfinished placeholder cannot pass merely by resembling this list. Data-driven empty workbenches are valid when they still expose module structure and next action.
|
|
47
50
|
|
|
48
51
|
## Productive Web Workbench
|
|
49
52
|
|
|
@@ -56,7 +59,7 @@ Use for creator tools, moderation, analytics, AI review, asset management, and o
|
|
|
56
59
|
- Header: compact title/context/action row, usually 48-64px high. Avoid a second oversized title inside the page.
|
|
57
60
|
- Control bar: filters, segmented mode, search, upload/generate action, and selected scope in one compact band. Prefer 32-40px controls.
|
|
58
61
|
- Status strip: small facts such as scope, source, permission, job state, model/cost, data freshness, or selected count. Keep it one line when possible.
|
|
59
|
-
- Desktop
|
|
62
|
+
- Desktop seed: many source workspaces use 1440x810 frames with 64px navigation/header bars. Use this only when it represents the current product or as a provisional first screenshot, then check wider desktop and narrow responsive behavior.
|
|
60
63
|
- Workbench body: use one of these structures:
|
|
61
64
|
- Library/resource workspace: left tree/source rail around 240px, top filter/search band, sticky filter state, content cards/table in the main region, preview/download/share/edit actions near the object.
|
|
62
65
|
- Split review: left list/source/input 280-360px, center preview/result flexible, right settings/metadata 320-420px.
|
|
@@ -71,7 +74,7 @@ Use for creator tools, moderation, analytics, AI review, asset management, and o
|
|
|
71
74
|
- Data-driven workbenches are valid: modules may appear, disappear, reorder, or change status based on permissions, jobs, saved drafts, metrics, or configured workflows. The requirement is that the empty/loading/no-permission shape still exposes the intended module grid, next action, and future data slots instead of collapsing into an unstructured placeholder.
|
|
72
75
|
- Table, modal, empty, alert, progress, metric, and chart components must be selected by task role. A table needs stable row/header/action behavior; a modal needs decision and return context; an empty state needs next action; a chart needs drill-down or explanation; an alert needs scope and consequence.
|
|
73
76
|
|
|
74
|
-
|
|
77
|
+
In representative tasks, operators should be able to identify the current object, current state, and next relevant action without guessing or opening unrelated regions. Verify that outcome with task-based review, not an arbitrary time threshold.
|
|
75
78
|
|
|
76
79
|
## Consumer Web Recipe
|
|
77
80
|
|
|
@@ -88,7 +91,7 @@ Use for feed, detail, profile, community/topic, notification, and creator-facing
|
|
|
88
91
|
|
|
89
92
|
Use for app/H5 consumer surfaces and focused mobile task flows.
|
|
90
93
|
|
|
91
|
-
- Mobile
|
|
94
|
+
- Mobile seed: when no stronger device matrix exists, start with a 393x852 portrait frame and a narrower/shorter stress frame. For media/review tasks that support landscape, also check a representative landscape frame such as 874x402.
|
|
92
95
|
- Aesthetic logic: mobile screens should have one clear focus per viewport. Use compact rhythm for repeated tasks and warmer spacing for discovery or creation, but keep tap targets reliable.
|
|
93
96
|
- Interaction logic: design around thumb reach, back/close clarity, bottom-sheet focus, keyboard appearance, and foreground/background recovery. Landscape modes need a new toolbar and preview arrangement, not a rotated portrait layout.
|
|
94
97
|
- Behavioral psychology: mobile users are interruption-prone. Preserve draft/input/progress when the app backgrounds, explain disabled actions, and keep the active input/action visible when the keyboard or safe area changes the viewport.
|
|
@@ -108,7 +111,7 @@ Use for app/H5 consumer surfaces and focused mobile task flows.
|
|
|
108
111
|
Use for analytics, moderation queues, asset libraries, admin settings, and review backlogs.
|
|
109
112
|
|
|
110
113
|
- Top row: search/filter/segmented mode left, primary action right, selected count/status visible.
|
|
111
|
-
- Management
|
|
114
|
+
- Management seed: when it matches the current product, use a 1440x810 working frame with a compact page header for table/list management pages; derive long-page content width from the product grid and content rather than treating a source frame as a standard.
|
|
112
115
|
- Filter stack: cascade selector, tabs, keyword search, status/date/source filters, and bulk action entry should be grouped before the table/list. Avoid scattering filters across unrelated cards.
|
|
113
116
|
- Table/list: zebra or subtle row separation is acceptable; hover should preserve row identity and may highlight the hovered column for comparison-heavy data.
|
|
114
117
|
- Table header/cell system: define header label, sortable/selected state, row lead action, row secondary actions, cell truncation, status badges, and responsive hidden/wrapped columns before implementation.
|
|
@@ -161,7 +164,7 @@ Use for media ingestion, file parsing, AI extraction, moderation/review queues,
|
|
|
161
164
|
- Adaptation: support one item vs multiple items, single focus vs side-by-side comparison, and portrait/landscape review where relevant.
|
|
162
165
|
- Unsupported input: explain what is unsupported and what the user can still upload, retry, replace, or skip.
|
|
163
166
|
- High-throughput evaluation screenshot set: capture at least single-item, multi-item, long-content, empty/delayed artifact, completed item, unsupported automation, and active automation-config states.
|
|
164
|
-
- Evaluation header acceptance: queue/progress, display-count controls, view/reference tools, and session actions should read as grouped regions in the
|
|
167
|
+
- Evaluation header acceptance: queue/progress, display-count controls, view/reference tools, and session actions should read as grouped regions in the product's compact header. The progress count must stay visible at the recorded primary desktop width and its narrow stress width.
|
|
165
168
|
- Evaluation canvas acceptance: selected item or sub-unit boundary, current metadata strip, retry/loading shell, and bottom/session tool state must remain visible when switching between one-item, multi-item, and long-artifact layouts.
|
|
166
169
|
- Automation-config acceptance: left item list keeps item hierarchy and enable switch state; middle panel shows either an enablement prerequisite or strategy/config controls; right panel keeps required context/reference/rationale fields stable; result-use mode remains visible near final save.
|
|
167
170
|
- Long reference/output acceptance: short content still has a readable minimum block, long content caps at a declared height and scrolls inside the panel, and the dialog or workbench does not grow beyond the viewport.
|
|
@@ -238,7 +241,7 @@ When implementing from a design or creating a new screen in code, verify these a
|
|
|
238
241
|
Before calling a UI done, inspect desktop and mobile/narrow screenshots where relevant:
|
|
239
242
|
|
|
240
243
|
- First viewport: primary workflow is visible; the screen is not mostly banner, blank illustration, or unrelated dashboard content.
|
|
241
|
-
- Hierarchy: the
|
|
244
|
+
- Hierarchy: the intended object/action leads for the representative task; verify it through task-based review rather than an arbitrary time threshold.
|
|
242
245
|
- Geometry: shell, control bar, primary region, secondary panel, and feedback state align to a clear grid.
|
|
243
246
|
- Density: no large dead zones; no nested-card clutter; no card-in-card framing unless the inner card is a repeated item or modal content.
|
|
244
247
|
- States: happy, empty, loading, error, disabled/permission, long-content, and narrow-width states keep the same layout logic.
|
|
@@ -23,7 +23,7 @@ For cross-stack design coordination, route to `multi-stack-strategy.md` first.
|
|
|
23
23
|
|
|
24
24
|
## Rules
|
|
25
25
|
|
|
26
|
-
- **UI-kit stack uniqueness per end-platform**: within one product,
|
|
26
|
+
- **UI-kit stack uniqueness per end-platform**: within one product, every same-stack subproject uses the same canonical UI-kit/component family for that rendered stack—React or other web, H5, native mobile, mini-app, terminal/TUI, Electron/desktop, TV, or another client. A subproject choosing a different family inside the same stack is an outlier and needs an explicit retirement or isolation plan. The concrete family is a per-team decision recorded in the project's design-system or architecture record, not a recommendation from this skill. Dependency manifests, platform configs, import graphs, and runtime composition are detection evidence; a Web `package.json` mixing desktop and mobile kits is one illustrative signal, not the universal detector. A documented migration, adaptive family, non-runtime dependency, or pending removal may clear the presumption. Per `multi-stack-strategy.md`, source search alone cannot distinguish accidental drift from a design-driven exception—the signal triggers an audit, not an automatic verdict.
|
|
27
27
|
- **Theme must be shared, not copied**: all same-stack subprojects share one theme source — a published internal npm package, a monorepo workspace module, or an explicitly imported shared module. Each subproject copying its own `theme.ts` is anti-pattern; tokens will drift the moment one subproject ships a brand tweak.
|
|
28
28
|
- **Theme must be explicitly injected**: every subproject that depends on the brand theme injects it explicitly at the entry layer — `ConfigProvider theme={brandTheme}` at the root component or a framework-level config (`antd: { theme }` in UmiJS, `ThemeProvider` in styled-components, etc.). A subproject that ships with no theme injection silently inherits the UI-kit default and drifts away from the brand on day one.
|
|
29
29
|
- **Theme injection partial-customisation is leak**: a `ConfigProvider` that overrides only one component (e.g. `Tree.titleHeight: 32`) while leaving `colorPrimary` at default is worse than no injection — it signals "we have a theme" while shipping the default color. Either inject the full brand theme or remove the partial injection.
|
|
@@ -61,7 +61,7 @@ known_loss: <which of the data-loss modes above apply to this export shape>
|
|
|
61
61
|
|
|
62
62
|
## Design-Source Health Check (Pre-Consumption Gate)
|
|
63
63
|
|
|
64
|
-
Before any downstream stack (web
|
|
64
|
+
Before any downstream stack (React or other web, web H5, native app, mini-program, terminal/TUI, Electron/desktop, TV, or another rendered client) is told to **align with** a design-system token source, run this health check on the source itself. The cross-source validation procedure that follows assumes each source is internally consistent; if a source is internally broken, alignment work copies the brokenness into every downstream stack and the cross-source drift gets harder to detect, not easier.
|
|
65
65
|
|
|
66
66
|
The gate runs against the source artifact (Figma file, token JSON export, theme package, or whichever shape the team's source-of-truth ships). It is a precondition, not a one-off; re-run when the source has a material change.
|
|
67
67
|
|
|
@@ -143,7 +143,7 @@ A code search for raw token values (the color-literal detection above, or any "i
|
|
|
143
143
|
- **inline style objects** — `style={{ backgroundColor: … }}` / `:style` bindings / equivalent;
|
|
144
144
|
- **imperative config / option objects** — dialog / toast / sheet option fields (e.g. a confirm-dialog's color field), chart option palettes, and other JS-config color strings.
|
|
145
145
|
|
|
146
|
-
Before reporting a token migration complete or a surface drift-free, enumerate the stack's component-layer color sites and grep them **alongside** the stylesheets. The
|
|
146
|
+
Before reporting a token migration complete or a surface drift-free, enumerate the stack's component-layer color sites and grep them **alongside** the stylesheets. The complete affected client-owner set in `delivery-contract.md` owns the concrete prop / option names for each component set: React web → `web-react-dev`; other web → its installed owner or project convention; native mobile → `app-cross-platform-dev`; mini-app → `miniapp-product-dev`; terminal/TUI → `terminal-cli-dev`; Electron/desktop/TV → its installed owner or fail-closed project convention. This rule owns the two-layer requirement. Color literals are the most common case, but the two-layer requirement generalizes to any token class with a component-layer site (typography / spacing / radius props, theme-option objects); the owning client skill names those sites per class. The same caveat applies in reverse to the slot-name false-positive trap above — a slot that exists is not a slot that carries the brand, and a value that is absent from the stylesheet is not a value that is absent from the surface.
|
|
147
147
|
|
|
148
148
|
## Token Cross-Source Validation Procedure
|
|
149
149
|
|
|
@@ -210,10 +210,10 @@ Audits routinely produce confidently-wrong verdicts when the auditor reasons fro
|
|
|
210
210
|
|
|
211
211
|
When auditing or starting multi-project token work:
|
|
212
212
|
|
|
213
|
-
1. List every subproject and
|
|
214
|
-
2. For each same-stack subproject, find the theme injection point
|
|
213
|
+
1. List every subproject, rendered stack, and UI-kit/component family using the stack's manifest, platform config, import graph, and runtime entry—not only Web `package.json`. Confirm they fit the stack-uniqueness rule. Outliers route to multi-stack strategy.
|
|
214
|
+
2. For each same-stack subproject, find the actual theme injection or token-consumption point: Web provider/framework config, native theme object/asset catalog, mini-app host config, terminal palette/style registry, or Electron/desktop/TV owner convention. Classify it as **full custom** / **partial custom** / **none (default)**.
|
|
215
215
|
3. If any subproject is in **partial** or **none**: that subproject is silently off-brand. File a fix or document a deliberate exception.
|
|
216
|
-
4. Find the theme source
|
|
216
|
+
4. Find the theme source artifact or package and confirm it is consumed, not copied. If multiple same-stack subprojects carry divergent local theme artifacts, the brand has already drifted; pick the canonical source and migrate through the affected client owners.
|
|
217
217
|
5. Cross-check token naming alignment: the design-source names (e.g. semantic-tokens in the design-system Figma file) should map to the code-token names by an explicit dictionary. If the dictionary does not exist, build it before refactoring.
|
|
218
218
|
|
|
219
219
|
## Anti-Patterns
|
|
@@ -231,7 +231,5 @@ When auditing or starting multi-project token work:
|
|
|
231
231
|
|
|
232
232
|
## Routing
|
|
233
233
|
|
|
234
|
-
- Implementation tooling
|
|
235
|
-
- Mobile / native equivalent (`MaterialApp.theme`, `UIAppearance`) → `app-cross-platform-dev`.
|
|
236
|
-
- Mini-app equivalent (mini-app `app.json` theme and host-platform theme constraints) → `miniapp-product-dev`.
|
|
234
|
+
- Implementation tooling and theme enforcement follow the complete affected client-owner set in `delivery-contract.md`: React web → `web-react-dev`; Vue/Svelte/other web → its installed owner or project convention; Flutter/RN/native mobile (`MaterialApp.theme`, `UIAppearance`) → `app-cross-platform-dev`; mini-app (`app.json` and host constraints) → `miniapp-product-dev`; terminal/TUI theme/color behavior → `terminal-cli-dev`; Electron shell and other desktop/TV runtimes → their installed owner or the fail-closed project-convention lookup. A shared theme package never becomes React-owned merely because one consumer uses React.
|
|
237
235
|
- Test acceptance (screenshot diff on canonical components per subproject; runtime assert that primary color matches brand) → `testing-strategy`.
|
|
@@ -12,10 +12,10 @@ Load this reference when a product spans **more than one client stack** — for
|
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
-
- **Map the product's stack landscape before drawing rules**: list every subproject and tag it `web-desktop` / `web-h5` / `mobile-rn` / `mobile-native-android` / `mobile-native-ios` / `mini-app` / `legacy`. A product is "multi-stack" the moment two of these coexist on the same brand.
|
|
15
|
+
- **Map the product's stack landscape before drawing rules**: list every subproject and tag it `web-desktop` / `web-h5` / `other-web` / `mobile-rn` / `mobile-native-android` / `mobile-native-ios` / `mini-app` / `terminal-tui` / `desktop-tv-shell` / `legacy`. A product is "multi-stack" the moment two of these coexist on the same brand.
|
|
16
16
|
- **One stack = one UI-kit family**: within each stack, pick one UI-kit family (see multi-project-token-consistency). Mixing two UI-kit families inside the same end without a stated migration plan is anti-pattern. The specific families a team uses are a project-level decision and live in the project's design-system file or architecture doc, not here.
|
|
17
17
|
- **Feature-domain capability-library isolation may be acceptable when the design source requires capabilities beyond the stack's canonical UI-kit/design-system**: the one-UI-kit-family rule is the unification baseline, not an absolute. This exception applies **only** to feature-local capability add-ons — specialized notification / toast / alert / modal / overlay / editor / chart / scanner-bridge / canvas / annotation / media-player libraries layered alongside the canonical UI-kit. It never authorizes a second UI-kit family for canonical surface area: tokens, theme, layout primitives, forms, tables, navigation, and page shell remain under the unify-stack audit. Within that scope, isolation is design-driven only when **all** of the following hold: (a) the **active team-authored A1** design-system source (classified per `design-system-source-of-truth.md` — a file labeled "design system" may be a third-party mirror; mirrors don't count) contains zero components of the relevant capability class; (b) the feature-area design file contains explicit extended forms (multi-size variants, in-domain teaching/help patterns, multi-step modal flows, hardware-aware states, or other concrete capability extensions visible as separate frames) that the canonical library **cannot express without one-off local reimplementation or unacceptable UX loss** — verify against the canonical runtime UI-kit's component docs, not Figma alone; (c) the exception is recorded with all required fields below. Missing any of (a)/(b)/(c) → treat as accidental drift and apply the unify-stack rule. **Required exception-record fields** (in the project alias map or private provenance archive, optionally mirrored to the subproject README — pick the location appropriate for project confidentiality, but recording is mandatory, not optional). The field set is shaped by which branch fired: **A1-present branch** — capability class; exact package and feature-path boundary that is exempt (everything outside the boundary stays under unify-stack audit); owner + exception date; design-source node id and revision/version marker for both the A1 file and the feature file; recheck trigger (re-evaluate when the canonical design system adds the capability class, or when either source frame's revision/version stamp changes). **Green-field/provisional branch** (when no A1 Figma design system exists yet per `design-system-source-of-truth.md` provisional path) — capability class; exact package and feature-path boundary; owner + exception date; `A1 source: absent (provisional)`; canonical runtime UI-kit version + docs link verified to lack the capability; shared primitives audited (list what was checked); feature design file node id and revision; provisional status flag; recheck trigger fires when A1 lands or when the feature file's revision changes. In either branch, missing any required field for that branch's field set → the exception does not exist and the unify-stack rule applies.
|
|
18
|
-
- **Design system should split by stack, not by product feature**: a single
|
|
18
|
+
- **Design system should split by rendered stack, not by product feature**: a single design-system source covering every end usually under-serves at least one. Inventory React and other web, H5, native mobile, mini-app, terminal/TUI, Electron/desktop, and TV consumers; assign each to the applicable canonical source or record an explicit shared-source decision with stack-specific variants and evidence. Split only where real divergence exists, but never omit a stack because the examples emphasize desktop/mobile.
|
|
19
19
|
- **Outlier stacks need a documented retire/isolate/coexist plan**: if exactly one subproject runs an off-stack family inside an otherwise unified organization (a single Vue island in a React organization is one illustrative shape), decide explicitly: retire (set a date), isolate (declare it permanently independent and exclude from brand drift checks), or coexist (write down the shared layer). A silent outlier silently leaks brand inconsistency.
|
|
20
20
|
- **No-dominant-stack early phase**: if the portfolio has no dominant stack yet (every subproject picked its own framework + UI-kit, no consolidation pressure has been applied), the retire/isolate/coexist framing does not apply — there is nothing to be an outlier *of*. The prior decision is "which stack(s) does the organization commit to long-term?", which is a product/business call, not a design call. Route to `product-rd-workflow` for the stack-commitment decision. If the consuming organization has external strategy or ideation support installed, `product-rd-workflow` may use it through local skill discovery; otherwise escalate the stack-commitment question to the human owner or record it as `unresolved` in the active audit's notes, and do not apply the retire/isolate/coexist framing in this file until that prior decision is landed.
|
|
21
21
|
- **Native + WebView + H5 hybrid is a contract, not a coincidence**: when a product ships as a native shell wrapping an H5 module, the shell owns chrome/storage/safe-area/orientation/upload-bridge/back-gesture; the H5 owns content/state/business logic. Crossing the line — H5 controlling status bar, shell rendering business UI — is the cause of most "the iPhone version looks weird" bugs. Document the contract; do not rely on each engineer's intuition.
|
|
@@ -27,10 +27,12 @@ A frontend monorepo with multiple packages is its own mini-source-set. Classify
|
|
|
27
27
|
|
|
28
28
|
| Class | Definition | Routing |
|
|
29
29
|
|---|---|---|
|
|
30
|
-
| **web** | Browser-targeted application (consumer web, admin console, ops dashboard, marketing site, H5) | `web-react-dev
|
|
31
|
-
| **native** |
|
|
30
|
+
| **web** | Browser-targeted application (consumer web, admin console, ops dashboard, marketing site, H5) | React → `web-react-dev`; Vue/Svelte/static/vendor/other web → its installed web-content owner or the fail-closed project-convention lookup |
|
|
31
|
+
| **native-mobile** | Flutter, React Native, native iOS, or native Android app | `app-cross-platform-dev` |
|
|
32
|
+
| **desktop/TV shell** | Electron, native desktop, or TV client | Electron renderer → actual web-content owner; Electron shell → installed desktop-shell owner or project client convention. Other desktop/TV runtimes → their installed owner or the same fail-closed project-convention lookup; do not route them to `app-cross-platform-dev` merely because they are non-browser clients. |
|
|
32
33
|
| **mini-app** | Host-platform mini-program client (WeChat, Alipay, Douyin, Baidu, Taro/uni-app mini-program target) | `miniapp-product-dev` |
|
|
33
|
-
| **
|
|
34
|
+
| **terminal-tui** | Command tree, help/output contract, terminal workflow, ANSI renderer, or full-screen TUI | `terminal-cli-dev` for user-facing terminal behavior; language owner may implement parser/library mechanics |
|
|
35
|
+
| **pkg-shared** | Reusable library / SDK consumed by app packages (shared components, hooks, types, design tokens, business primitives) | Route every affected consumer: React web → `web-react-dev`; other web → its installed owner or project convention; native mobile → `app-cross-platform-dev`; mini-app → `miniapp-product-dev`; terminal/TUI → `terminal-cli-dev`; desktop/TV shell → its installed owner or fail-closed project convention; design judgment → `product-ui-ux-design` |
|
|
34
36
|
| **infra** | Build / tooling / dev infrastructure (CI scripts, codegen, lint config, monorepo manager, deploy/release pipelines, server-side renderers, edge config) | Mostly routing-internal; concrete rules live in the relevant implementation skill's "release/build" section |
|
|
35
37
|
| **legacy** | Archived or deprecated package, kept for reference (pre-migration, retired surface, abandoned experiment) | Excluded as a positive baseline; provenance only |
|
|
36
38
|
|
|
@@ -42,9 +44,9 @@ When starting a multi-stack task:
|
|
|
42
44
|
|
|
43
45
|
1. List every subproject and tag its stack family. Identify which are `current` and which are `legacy` / `outlier`.
|
|
44
46
|
2. For each stack, confirm the canonical UI-kit family is set. Outliers raise an explicit retire/isolate/coexist decision (record in private archive).
|
|
45
|
-
3. For each
|
|
47
|
+
3. For each rendered stack in the inventory—React or other web, H5, native mobile, mini-app, terminal/TUI, Electron/desktop, TV, or another client—confirm which canonical design-system source owns its tokens and stack-specific variants (see design-system-source-of-truth).
|
|
46
48
|
4. For native-shell + H5 / RN + H5 / mini-app + H5 hybrids: locate the chrome/business-logic contract. If it is not written down, write it down before adding new features.
|
|
47
|
-
5. For any feature spanning multiple stacks
|
|
49
|
+
5. For any feature spanning multiple stacks, write the complete per-surface owner matrix using the actual affected inventory: React web, other web, H5, native, mini-app, terminal/TUI, Electron/desktop/TV shell, and any additional client. Use the installed owner or fail-closed project-convention lookup for a layer without a named skill. Do not assume one design or one owner satisfies all surfaces.
|
|
48
50
|
6. If one feature area inside an otherwise unified stack uses a non-canonical UI-library family: branch on whether an active team-authored A1 Figma design-system exists for that stack (classify per `design-system-source-of-truth.md`). **A1 exists** → open the A1 file AND the feature-area design file; both criteria met (zero canonical abstraction class in A1 + extended forms in feature file the canonical runtime UI-kit cannot express without one-off reimplementation or unacceptable UX loss) AND the A1-present exception-record field set from rule 2 (capability class, package/feature-path boundary, owner+date, A1+feature node ids and revisions, recheck trigger) is recorded → design-driven exception. Any criterion fails → raise the unify decision per rule 2. **No A1 yet (green-field/provisional)** → use the Green-field fallback: evaluate against the canonical runtime UI-kit's component docs + existing shared primitives + provisional token taxonomy, and record the exception with the **green-field/provisional field set from rule 2** (capability class, package/feature-path boundary, owner+date, `A1 source: absent (provisional)`, runtime UI-kit version + docs link, shared-primitives audit list, feature design node id and revision, provisional status flag, recheck trigger fires when A1 lands or feature file revision changes). Never authorize a second UI-kit family for canonical surface area regardless of branch.
|
|
49
51
|
|
|
50
52
|
## Anti-Patterns
|
|
@@ -58,8 +60,10 @@ When starting a multi-stack task:
|
|
|
58
60
|
|
|
59
61
|
## Routing
|
|
60
62
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
63
|
+
- Actual web-content owner: enforces the web renderer's UI-kit and content-layer evidence; React routes to `web-react-dev`, while Vue/Svelte/static/vendor content uses its installed owner or project convention.
|
|
64
|
+
- `app-cross-platform-dev`: enforces Flutter/RN/native iOS/Android design-system mapping and owns the native-H5 container/bridge contract member.
|
|
65
|
+
- `miniapp-product-dev`: enforces mini-app platform mapping, host-platform capability boundaries, and mini-app release evidence.
|
|
66
|
+
- `terminal-cli-dev`: enforces terminal/TUI cell-grid, color-fallback, input, resize, and streaming/progress behavior.
|
|
67
|
+
- Installed desktop-shell owner or project client convention: owns Electron shell and other desktop/TV layers; incomplete lookup is `owner-lookup-unavailable`, never an invented mobile-app owner.
|
|
64
68
|
- Testing-strategy: verifies per-platform smoke for shared features (one platform passing ≠ all platforms passing).
|
|
65
69
|
- Product-rd-workflow: if a new feature appears that should span multiple stacks, raise the decision early instead of building web-only first and "porting" later. Optional external strategy or ideation support may supplement this through local skill discovery, but the portable ccl-owned route is `product-rd-workflow`.
|
|
@@ -14,6 +14,8 @@ Treat operational processing flows as recoverable production work, not as simple
|
|
|
14
14
|
- Generated or processed output is not final by default. Mark unreviewed, reviewed, edited, failed, and returned states distinctly.
|
|
15
15
|
- Long sessions need stable controls, persistent progress, keyboard-friendly repeated actions, and recovery after interruption.
|
|
16
16
|
|
|
17
|
+
For operational, admin, moderation, and AI-review workspaces, do not use a marketing-style hero banner, decorative gradient as the design, oversized empty illustration, heavy visual drama, or a large unused first-screen area that pushes the real task below unrelated dashboard content. The default is a focused work surface. If the representative task is actually presentation or marketing, classify it as that different surface instead of weakening this operational rule.
|
|
18
|
+
|
|
17
19
|
## Focused Review Workspace
|
|
18
20
|
|
|
19
21
|
Use for moderation review, AI output validation, creator task approval, content QA, dispute handling, incident processing, or trust/safety operations:
|
|
@@ -195,7 +195,7 @@ Implementation rules:
|
|
|
195
195
|
- AI extraction flows should be staged visibly: capture/import, crop/preview, upload, analyze, review generated content, classify/tag, save/publish, and retake/retry. Disable final commit until required generated content and metadata are valid.
|
|
196
196
|
- Rich generated content needs its own rendering and fallback states. Long formulas, markup, tables, or extracted structured text must scroll or wrap safely and should not block the whole screen if one renderer fails.
|
|
197
197
|
- The preview must build trust. If the app shows an enhanced or processed image, the saved/uploaded artifact should match that visual intent; otherwise label the preview honestly and give the user a chance to retake or reprocess.
|
|
198
|
-
- Capture controls should be large, icon-led, and spatially stable. Keep primary capture centered, secondary import on one side, device tool on the other. Separate icon glyph size from hit area, and
|
|
198
|
+
- Capture controls should be large, icon-led, and spatially stable. Keep primary capture centered, secondary import on one side, device tool on the other. Separate icon glyph size from hit area, and apply the current first-party platform rule to the actual hit region: Apple HIG's general rule is at least 44×44pt for buttons (60×60pt on visionOS), while Android guidance recommends at least 48×48dp for touch/focusable targets. Keep both platform-scoped; do not average them into a universal number.
|
|
199
199
|
- Upload/analyze waits should preserve context: keep the last image visible, overlay progress near the task, disable only unsafe controls, and provide retry/retake when the failure is recoverable.
|
|
200
200
|
- Crop/review screens should expose direct manipulation affordances: a dimmed outside region, visible crop boundary, corner or edge handles, optional grid, retake, rotate, and confirm. While the user is dragging, prefer raw image feedback; after release, show processed preview only when it can represent the committed artifact.
|
|
201
201
|
- Handoff from native capture back to hosted content should avoid route flash. Keep a calm transition cover until the destination route is mounted and ready, then remove it deterministically with a timeout fallback.
|
|
@@ -311,7 +311,7 @@ Implementation rules:
|
|
|
311
311
|
Motion must have a product purpose — comprehension, orientation, feedback, or deliberate brand/emotional expression. Operational, finance, moderation, dense-data, and destructive flows default to calmer motion (this complements, not contradicts, the expressive-defaults note in the next section). Apply across iOS and Android:
|
|
312
312
|
|
|
313
313
|
- **Budget attention-grabbing motion.** Avoid more than roughly two *attention-grabbing or decorative* animations competing at once in one view; essential status indicators (a progress spinner, a skeleton shimmer) and a single choreographed timeline are exempt. Layered competing motion reads as jank, not polish.
|
|
314
|
-
- **Let platform and design-system motion tokens own duration and curve; only tune micro-feedback.** Micro-feedback (tap, toggle, small in-place state change) defaults to a short band (about 150–350ms), but system navigation, sheet presentation, predictive-back/gesture, hero choreography, and design-system motion tokens (e.g. M3 Expressive) carry their own longer, tuned durations — do not clamp them to the micro band. Reserve custom playful bounce/overshoot for light surfaces; on serious, destructive, financial, or trust-sensitive flows do not add custom overshoot that makes finality feel reversible or celebratory (standard platform component motion, including system spring settling, is fine).
|
|
314
|
+
- **Let platform and design-system motion tokens own duration and curve; only tune micro-feedback.** Micro-feedback (tap, toggle, small in-place state change) defaults to a short band (about 150–350ms — a team heuristic, not a platform mandate: it sits inside Material 3's official duration tokens, which span 50–400ms across the short/medium steps, while Apple HIG gives no numeric duration guidance), but system navigation, sheet presentation, predictive-back/gesture, hero choreography, and design-system motion tokens (e.g. M3 Expressive) carry their own longer, tuned durations — do not clamp them to the micro band. Reserve custom playful bounce/overshoot for light surfaces; on serious, destructive, financial, or trust-sensitive flows do not add custom overshoot that makes finality feel reversible or celebratory (standard platform component motion, including system spring settling, is fine).
|
|
315
315
|
- **Respect the OS reduce-motion setting natively, not only via web `prefers-reduced-motion`.** iOS exposes it directly: `UIAccessibility.isReduceMotionEnabled` / SwiftUI `\.accessibilityReduceMotion`. Android has no single reduce-motion boolean — gate custom animation on `ValueAnimator.areAnimatorsEnabled()` (or the framework duration scale), treating the animation scale as a capability signal rather than a reduce-motion *intent* flag, and fall back to `Settings.Global.*_ANIMATION_SCALE` only when needed. Classify each motion as decorative / spatial-orientation / essential: reduced motion drops decorative movement and shortens or simplifies spatial/essential movement, but must still show required feedback and state changes (progress, a status flip, a gesture preview).
|
|
316
316
|
- **Motion must not shift layout or delay the task.** Confirm active state without reflowing surrounding content (per the bottom-tab rule above), and never hold loading/disabled/error feedback behind an entrance animation.
|
|
317
317
|
|
|
@@ -320,5 +320,5 @@ Motion must have a product purpose — comprehension, orientation, feedback, or
|
|
|
320
320
|
When the target product ships on iOS 26+ / Android 16+ / Material 3 Expressive defaults, the design baseline shifts. Treat these as platform-default changes that affect token tuning, motion budget, and gesture geometry — not as visual style copies.
|
|
321
321
|
|
|
322
322
|
- **iOS 26 Liquid Glass (Apple, WWDC 2025; iOS 26 / iPadOS 26 / macOS Tahoe 26 / watchOS 26 / tvOS 26)** introduces a translucent system material that reflects and refracts surrounding content and dynamically transforms across controls, navigation, app icons, and widgets. Apps built with standard SwiftUI / UIKit / AppKit components inherit the new design automatically when rebuilt against the Xcode 26 / iOS 26 SDK; custom-drawn UI (custom CALayers, manual gradients, hand-rolled tab bars) does NOT inherit it and must adopt explicitly. Apple ships a temporary opt-out in Xcode 26 so teams can ramp on their schedule rather than be forced to ship Liquid Glass the day they upgrade SDK. Design impact: (1) custom translucent / blur / glass material tokens MUST be tuned separately for Light, Dark, AND Increased Contrast appearances — Apple's own system colors were re-tuned across all three; (2) typography baseline became bolder and left-aligned, so if the product design uses centered or thinner type to "feel premium" on iOS, re-validate hierarchy on iOS 26; (3) chrome-on-content (tab bars, sidebars) now refract content beneath, so check that overlay surface tokens still keep on-surface text readable when chrome sits over high-contrast or saturated media. Do not adopt Apple's Liquid Glass as a cross-platform default token — it is a system material with system-tuned color/blur/refraction, and cloning it on web / Android as "default brand glass" produces a hard-to-maintain knock-off. Web / Android may use a deliberate glassmorphism treatment when the product needs it, but it must declare its own contrast budget, performance fallback (opaque mode when GPU / battery / low-end device requires), and an opaque-mode trigger that does NOT rely solely on `prefers-reduced-transparency` (the CSS media feature is real but not Baseline — Chrome desktop / Firefox stable lag — so back it up with an in-app "Reduce transparency" setting, platform-equivalent OS preference where available, or a default-opaque variant for non-supporting browsers); cite the explicit rationale in the design spec rather than treating glass as a free aesthetic upgrade.
|
|
323
|
-
- **Material 3 Expressive (Google, 2025)** is an opt-in expansion of Material Design 3 with research-backed motion theming tokens, more expressive shape / color / typography, and an explicit emotional-design dimension (research
|
|
323
|
+
- **Material 3 Expressive (Google, 2025)** is an opt-in expansion of Material Design 3 with research-backed motion theming tokens, more expressive shape / color / typography, and an explicit emotional-design dimension (Google's design.google research article reports 46 studies with 18,000+ participants; expressive variants outperformed baseline on "energetic / emotive / positive / playful / friendly" perception). When the project uses M3 Expressive defaults (Jetpack Compose with M3 expressive themes, libraries pulling expressive motion tokens — note AndroidX `MotionScheme.expressive()` is alpha at the time of writing, not a stable everywhere-default), expect default animation durations and easings to be more energetic than baseline M3. Review whether *operational* / *finance* / *moderation* / *dense-data* surfaces should override motion tokens to a calmer set (`MotionScheme.standard()`) rather than inheriting expressive defaults, because dense workbench surfaces work against the expressive tone and feel jittery under it.
|
|
324
324
|
- **Android Predictive Back is default-enforced for apps targeting API 36 (Android 16, 2025)**. Design implication: the back gesture is no longer a single instant action but a *preview-then-commit* gesture — during the swipe the inner area scales down and the destination peeks behind; on commit-threshold crossing the contents fade-through to the destination (Android recommends `STANDARD_DECELERATE` or `PathInterpolator(0f, 0f, 0f, 1f)` for the progress easing). The system handles the previous-destination snapshot automatically for stock navigation; the design only needs to define preview behavior for custom-managed states: modals, bottom sheets, full-screen overlays, in-screen multi-step wizards, and any flow that owns its own back stack. Avoid placing draggable controls or custom horizontal-edge gestures inside the system gesture inset; they fight the OS back gesture and feel broken. For multi-step in-screen flows (form wizards, multi-pane), the design owns the *semantic back contract* (back pops inner step, not the whole screen) — *implementation* should integrate through the owning navigation stack's predictive-back support (Jetpack Navigation predictive-back APIs, `react-native-screens` predictive-back, Flutter `PopScope` / `NavigatorPopHandler`, native Fragment back-stack handlers) rather than wiring an ad-hoc `OnBackPressedCallback` at the screen level. Compose's lower-level `PredictiveBackHandler` is appropriate when the Compose screen owns its own back stack (no navigation library on top); when a navigation library is present, prefer the library's predictive-back hook so the system snapshot and inner-step pop stay in sync. Ad-hoc handlers on top of a navigation library double-pop, desync the system snapshot animation, or bypass the library's intended back stack and the regression is hard to reproduce because the OS-level animation still looks right.
|
|
@@ -24,7 +24,9 @@ Code evidence:
|
|
|
24
24
|
|
|
25
25
|
## Lifecycle Workflow
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
For every runtime-visible slice, the canonical prerequisite and acceptance path is `delivery-contract.md`: Design brief → Test Phase 0 → producer/client execution → Test Phase 1/sufficiency → design verdict. The lifecycle below annotates that contract with launch and post-launch work; it is not a parallel readiness path. Every runtime-ready or launch-ready claim cites the complete immutable design/test/producer/client binding set and an allowed verdict. A pending, blocked, rejected, stale, or incomplete contract cannot become ready by passing a later checklist.
|
|
28
|
+
|
|
29
|
+
Use this lifecycle for design, client implementation, release readiness, and iteration:
|
|
28
30
|
|
|
29
31
|
1. **Intent lock**: state the target product loop, user segment, surface, and success behavior.
|
|
30
32
|
2. **Design coverage**: map the screen to component primitives, responsive variants, and required states.
|
|
@@ -40,7 +42,7 @@ When a shipped feature, review, or user correction changes the design rule, upda
|
|
|
40
42
|
|
|
41
43
|
## Design Acceptance
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
Record the following as criteria in the applicable full or lightweight Design record before coding or handoff, then let Test Phase 0 choose their oracles:
|
|
44
46
|
|
|
45
47
|
- The primary loop is visible: discover, inspect, act, confirm, return.
|
|
46
48
|
- Every visible action has success, failed, disabled, loading, and cancel/undo behavior where relevant.
|
|
@@ -53,7 +55,7 @@ Before coding or handoff, verify:
|
|
|
53
55
|
|
|
54
56
|
## Frontend Readiness
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
Record these client implementation-readiness criteria inside the canonical Design/Test records; the list is not a completion decision:
|
|
57
59
|
|
|
58
60
|
- There is a clear component boundary for shell, navigation, content, action area, feedback, overlay, and terminal result.
|
|
59
61
|
- Existing primitives are used before custom UI: async wrapper, error block, toast/message provider, modal/dialog, upload/progress, result, skeleton, empty state, responsive container, route-driven navigation.
|
|
@@ -69,7 +71,7 @@ Before implementation is considered ready:
|
|
|
69
71
|
|
|
70
72
|
## Product Launch Acceptance
|
|
71
73
|
|
|
72
|
-
|
|
74
|
+
Start these launch gates only after the exact candidate is `accepted + complete` under `delivery-contract.md`, with every required design/test/producer/client record, exercised-version link, and binding member present. These gates can block launch or add release evidence; they cannot replace Phase 1, repair a stale binding, or issue the design verdict.
|
|
73
75
|
|
|
74
76
|
- **Build gate**: project build or type/lint/format commands pass where available; generated API code is up to date.
|
|
75
77
|
- **Cold-start gate**: new communities have seed content, onboarding prompts, recommended topics/users, creator prompts, or first-action defaults; do not launch an empty loop.
|
|
@@ -77,7 +79,7 @@ For product launch review, check these gates:
|
|
|
77
79
|
- **State gate**: manually exercise the canonical state taxonomy plus retry, disabled, cancel/undo, permission, long-content, and responsive states.
|
|
78
80
|
- **Interaction gate**: verify hover/focus/active/selected on web; safe-area, keyboard, scroll, swipe/back, and bottom-sheet behavior on mobile.
|
|
79
81
|
- **Feedback gate**: feedback strength follows the ladder in `interaction-design-patterns.md`.
|
|
80
|
-
- **Performance gate**: infinite
|
|
82
|
+
- **Performance gate**: for affected infinite-list, media, streaming, AI-generation, upload, PDF/document-rendering, long-table, chart, and other long-task paths, user input should remain responsive, background work must not block the main action, and progress remains visible in runtime evidence.
|
|
81
83
|
- **Localization gate**: long strings, mixed languages, numeric/date formats, and translated action labels fit without breaking hierarchy or controls.
|
|
82
84
|
- **Trust gate**: moderation, report/block/mute, public publishing, AI source/citation, privacy/consent, and destructive flows are explicit.
|
|
83
85
|
- **Fallback gate**: version/update notices, service migration notices, unavailable features, permissions, stale data, and partial results have understandable UI.
|
|
@@ -103,7 +105,8 @@ Use product evidence to decide what to change:
|
|
|
103
105
|
When reviewing a shipped or almost-shipped feature, report:
|
|
104
106
|
|
|
105
107
|
- What evidence was checked: Figma frame/page, code path, screenshot, metrics, or QA scenario.
|
|
106
|
-
-
|
|
108
|
+
- Canonical `delivery-contract.md` verdict/next state plus the complete design/test/producer/client binding-set IDs; do not invent a second design-readiness status.
|
|
109
|
+
- Separate release/iteration disposition: proceed, conditional, or blocked, with the release-specific reason. This disposition can add a launch block but cannot override the canonical design verdict.
|
|
107
110
|
- Top risks by severity and user impact.
|
|
108
111
|
- State coverage gaps.
|
|
109
112
|
- Component/token drift.
|
|
@@ -43,6 +43,9 @@ Use this default loop unless the product has a stronger one:
|
|
|
43
43
|
- Finance/data/trust-sensitive: use `trust-sensitive-ai-and-data-patterns.md`, `analytics-visualization-interactions.md`, and `operational-processing-workflows.md` for evidence, provenance, dense analysis, permission, and review-before-action patterns.
|
|
44
44
|
- Mobile/app: use `platform-mobile-patterns.md` and app implementation skills for safe area, keyboard, orientation, native shell, and device acceptance.
|
|
45
45
|
- Web/workbench: use `platform-web-desktop-patterns.md` and `layout-recipes-and-screenshot-acceptance.md` for shell, density, responsiveness, and screenshot acceptance.
|
|
46
|
+
- Mini-app: keep design criteria here and route host/page, permission/capability, package/platform, device, and web-view bridge evidence to `miniapp-product-dev`.
|
|
47
|
+
- Ordinary CLI or terminal/TUI: keep product hierarchy, command semantics, states, and acceptance here; route command/help/default/exit/recovery, terminal geometry, fallback, input, and real-terminal evidence to `terminal-cli-dev`.
|
|
48
|
+
- Other Web and Electron/desktop/TV: React content routes to `web-react-dev`; Vue/Svelte/static/vendor/other content and shell layers route to their installed owner or the fail-closed project-convention lookup in `delivery-contract.md`. Composite hosts keep separate content and shell members.
|
|
46
49
|
|
|
47
50
|
## Workflow Surface Extensions
|
|
48
51
|
|
|
@@ -18,9 +18,32 @@ When two sources disagree or overlap, decide explicitly:
|
|
|
18
18
|
- **Merge** compatible variants into a generalized rule.
|
|
19
19
|
- **Discard** stale, duplicated, lower-quality, or overly domain-specific details.
|
|
20
20
|
- Never let one source file define the product domain. Source identity is provenance, not the product model.
|
|
21
|
+
- Do not infer any product domain from source identity.
|
|
21
22
|
|
|
22
23
|
Apply the same rule to code, external benchmarks, and review feedback: use them for reusable UI/UX behavior, implementation quality, launch gates, and iteration signals only; never to infer the product's business domain.
|
|
23
24
|
|
|
25
|
+
For a conflict-heavy task, the decision artifact is a row-per-property-and-state
|
|
26
|
+
matrix, not a blank record schema or a prose precedence list. Include the exact
|
|
27
|
+
artifact revision and observed value for every source, its status and owned
|
|
28
|
+
scope, the governing source or replacement decision, the conflict class, the
|
|
29
|
+
chosen result, and an explicit unknown plus verifier where evidence is missing.
|
|
30
|
+
Cover every applicable interaction and visual state; do not hide disagreement
|
|
31
|
+
inside a combined `loading/error` row or a generic `other states` entry.
|
|
32
|
+
|
|
33
|
+
Resolve the matrix in execution order:
|
|
34
|
+
|
|
35
|
+
1. Freeze the relevant source revisions or content digests and
|
|
36
|
+
inventory the complete state/property rows before choosing a winner.
|
|
37
|
+
2. Classify authority and scope per row; a source may govern one state and be
|
|
38
|
+
partial or silent for another.
|
|
39
|
+
3. Keep current specified decisions, merge only compatible freedom, and create
|
|
40
|
+
an explicitly reviewable replacement decision for an intentional change.
|
|
41
|
+
4. List the exact design, component/API, token, example/story, and test updates
|
|
42
|
+
in dependency order. Stories and tests expose intent or drift; existence and
|
|
43
|
+
unexecuted assertions do not settle authority or runtime behavior.
|
|
44
|
+
5. Bind and run the resulting static, component, rendered, interaction, and
|
|
45
|
+
accessibility checks. A passing test closes only its declared row/oracle.
|
|
46
|
+
|
|
24
47
|
Backend service code evidence is out of scope for this skill except where it affects product-visible lifecycle: generated API freshness, async task status, artifact readiness, permission/empty/error states, and launch observability. Detailed backend service rules belong in the relevant backend skill.
|
|
25
48
|
|
|
26
49
|
## Source Class Capability Map
|
|
@@ -31,7 +54,7 @@ For each design source available to the maintainer, classify before extraction a
|
|
|
31
54
|
| --- | --- | --- |
|
|
32
55
|
| `label` | sanitized capability label (e.g. `<design-system-web>`, `<review-module>`, `<scan-module>`) | Reusable identifier in skill text; never use a real file name |
|
|
33
56
|
| `class` | `A1` rules-as-source (design system / UI kit / icon / annotation spec) / `A2` business-module / `B` reference-or-deprecated | Determines extraction weight: A1 anchors tokens/components, A2 anchors flows/states, B is provenance-only |
|
|
34
|
-
| `stack` | `
|
|
57
|
+
| `stack` | `react-web` / `other-web` / `mobile-h5` / `mobile-native` / `mini-app` / `terminal-tui` / `desktop-tv-shell` / `mixed-host` / `other-client` | Determines which installed implementation owner or fail-closed project convention cross-checks the source; a composite host records every layer |
|
|
35
58
|
| `surface` | `shell` / `auth-and-account` / `workbench` / `creation-and-import` / `review-and-evaluation` / `analytics-and-report` / `asset-management` / `roster-and-entity-management` / `device-and-capture` / `notification-and-recovery` | Determines which pattern reference owns the rules |
|
|
36
59
|
| `freshness` | `current` / `candidate-needs-inspection` / `deprecated` / `archived` | Determines whether the source can drive hard rules |
|
|
37
60
|
| `coverage` | `published-system` / `targeted-workflow` / `representative-cross-check` / `metadata-only` / `screenshot-fallback` / `unavailable` | Determines how strong the evidence is |
|
|
@@ -50,9 +73,11 @@ Collection strategy default: **local-plus-external**.
|
|
|
50
73
|
- If a Figma file's name carries a team-specific deprecation prefix or suffix (the team's known deprecation markers are kept in the private archive; common categories include a brand-bracketed prefix used to flag legacy snapshots, an automatic `(Copy)` suffix from Figma duplication, or an explicit "deprecated" page name in the team's working language), classify the file `freshness: deprecated` before any read. Such files cannot drive hard rules.
|
|
51
74
|
- If a Figma frame carries inline version or date stamps (e.g. a version suffix `_verN`, a "current/latest" marker in the team's language, an `MMDDnew` date stamp, or a designer-added disambiguation parenthetical), treat the source as in-flight and prefer the latest stamp. Older sibling frames remain as discardable provenance.
|
|
52
75
|
|
|
76
|
+
For a formal source re-extraction or full portfolio audit, first enumerate every formal design file in the portfolio, apply the exclusion rules, and fully extract every non-excluded file. A targeted frame pass cannot substitute for that all-file obligation. Ordinary product design may inspect only the sources relevant to its decision, but must not describe that targeted pass as full extraction.
|
|
77
|
+
|
|
53
78
|
Coverage discipline:
|
|
54
79
|
|
|
55
|
-
- "Full coverage" means every relevant source class has been used, routed, discarded, or marked unavailable with a reason
|
|
80
|
+
- "Full coverage" means every non-excluded formal source has been inspected/extracted and every relevant source class has been used, routed, discarded, or marked unavailable with a reason. It is stronger than a targeted pass, not a synonym for "some representative files inspected".
|
|
56
81
|
- "Targeted" passes are explicit about which surfaces and which frames were read. Do not promote a targeted pass to a full audit in language alone.
|
|
57
82
|
- For large Figma files, use page-level inventory first, then targeted frame/node reads, then screenshot fallback. Failed reads are recorded with the smaller read attempted; "unavailable" requires a remediation attempt first.
|
|
58
83
|
|
|
@@ -62,7 +87,8 @@ A product UI/UX skill must be product-agnostic. If the skill name or default sco
|
|
|
62
87
|
|
|
63
88
|
Routing boundary:
|
|
64
89
|
|
|
65
|
-
-
|
|
90
|
+
- Runtime delivery follows `delivery-contract.md`; it is the single shared contract for design, testing, producer execution, client execution, evidence, and verdict. Each owner writes its own record; the design verdict cites the complete bound set rather than copying evidence.
|
|
91
|
+
- Implementation rules follow the complete affected client-owner set in `delivery-contract.md`: React web → `web-react-dev`; Vue/Svelte/static/vendor/other web → its installed web-content owner or fail-closed project-convention lookup; native mobile/host → `app-cross-platform-dev`; mini-app → `miniapp-product-dev`; terminal/CLI/TUI → `terminal-cli-dev`; Electron/desktop/TV shell → its installed owner or the same lookup. Composite hosts keep separate content and shell members; a missing owner is never silently treated as Web or React.
|
|
66
92
|
- Test-layer rules belong to `testing-strategy`.
|
|
67
93
|
- This skill owns UI/UX judgment, state completeness, visual acceptance, design readiness, and scenario-specific design lenses.
|
|
68
94
|
|
|
@@ -90,15 +116,16 @@ Each row must be fillable as "inspected / not inspected / not applicable" with o
|
|
|
90
116
|
|
|
91
117
|
## External Quality Sources
|
|
92
118
|
|
|
93
|
-
Use
|
|
119
|
+
Use named external sources at their actual evidence strength, never as visual or product-domain donors:
|
|
94
120
|
|
|
95
|
-
-
|
|
96
|
-
- W3C WCAG 2.2: accessibility
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
121
|
+
- ISO 9241-210 and ISO 9241-11: human-centred lifecycle and context-dependent usability framing; neither supplies a page recipe or proves a particular design.
|
|
122
|
+
- W3C WCAG 2.2 and ARIA Authoring Practices: normative accessibility criteria plus informative implementation patterns. APG examples are not a complete design system or production-ready code.
|
|
123
|
+
- Primary empirical papers: contextual evidence for a bounded mechanism. Record participants/task/materials and contradictory or limiting findings before turning a result into a rule.
|
|
124
|
+
- Current platform guidance: host convention for the named platform and input mode, not a cross-platform constant.
|
|
125
|
+
- Design Tokens Community Group format: interchange vocabulary, not proof of visual quality, token governance, rendered themes, or standards status.
|
|
126
|
+
- Expert heuristics: risk-discovery prompts only. Heuristic review is not acceptance proof.
|
|
100
127
|
|
|
101
|
-
|
|
128
|
+
The claim ledger, primary links, and boundaries live in `external-ui-ux-quality-benchmarks.md`.
|
|
102
129
|
|
|
103
130
|
## Candidate Formal Sources Policy
|
|
104
131
|
|
|
@@ -10,17 +10,22 @@ The team's current desktop design system is a `class: A1` published source. It m
|
|
|
10
10
|
|
|
11
11
|
The team's current mobile design system is a `class: A1` published source for the mobile end. It may be team-authored, abstracted out of a mobile product framework file, or aligned to a third-party mobile component library. Read `platform-mobile-patterns.md` for mobile tokens, component groups, theming, and mobile state coverage. Use `design-system-source-of-truth.md` to identify the actual source when multiple candidates exist.
|
|
12
12
|
|
|
13
|
+
## Complete Consumer Set
|
|
14
|
+
|
|
15
|
+
Desktop and mobile catalogs below are illustrative component vocabularies, not a closed platform list. Before applying a shared token/component decision, enumerate every affected rendered consumer under `delivery-contract.md`: React web → `web-react-dev`; other web → its installed owner or fail-closed project convention; native mobile → `app-cross-platform-dev`; mini-app → `miniapp-product-dev`; terminal/CLI/TUI → `terminal-cli-dev`; Electron/desktop/TV → its installed owner or the same lookup. Each owner maps the semantic token and state contract to its own component, host, input, accessibility, and evidence model; absence from the desktop/mobile examples is never `not-applicable` proof.
|
|
16
|
+
|
|
13
17
|
## Usage Rules
|
|
14
18
|
|
|
15
19
|
- Use published design-system files for tokens, component names, variants, and theme behavior.
|
|
16
20
|
- Use product UI files for page composition, state coverage, and interaction-pattern evidence; do not inherit their old domain requirements.
|
|
17
21
|
- Use third-party UI kits and icon libraries only as reference-only coverage checks for component categories, state variants, icon discipline, and documentation quality. Do not copy their brand, marketing IA, or visual identity into the product skill.
|
|
18
22
|
- Do not hardcode colors, spacing, radii, or typography when a design-system token exists.
|
|
23
|
+
- Existing non-compliant code is not permission: an old component's hard-coded color or ad-hoc style is recorded debt, never a precedent to copy into new work. When the requested result cannot be achieved within the design system's current rules, stop and route the gap to the design-system owner instead of silently inventing a new visual rule.
|
|
19
24
|
- **Color tokens 优先 HSL 而非 Hex / RGB**(hand-tuning same-hue 变体):HSL 让"同色不同亮度"(hover、disabled、bg tint、border-on-bg shade)通过只改 L 直接派生;Hex / RGB 改 1 个亮度需要算 3 通道易调不准。toolchain 支持时**优先 OKLCH / LCH** 做感知一致的 color ramp(HSL 在跨 hue 时亮度不感知统一)。Token 源用 HSL/OKLCH 表达 intent;输出层(CSS / iOS / Android)按需 convert;设计工具如 Figma 可能存 RGB,token spec 保留 HSL/OKLCH 语义即可。
|
|
20
25
|
|
|
21
26
|
## Token Sync Pipeline (Figma → Front End)
|
|
22
27
|
|
|
23
|
-
Design tokens have a **design-tool source of truth**, typically a Figma file with a curated token set (color, spacing, radii, typography, shadow, motion). Tokens reach
|
|
28
|
+
Design tokens have a **design-tool source of truth**, typically a Figma file with a curated token set (color, spacing, radii, typography, shadow, motion). Tokens reach every affected rendered client through its project-specific sync or mapping mechanism, not through manual client-local authoring.
|
|
24
29
|
|
|
25
30
|
- The Figma token set is the canonical source. Front-end token files (CSS variables, framework theme entry, `tokens.ts`, generated SCSS / LESS variables, etc.) are downstream artifacts of the sync.
|
|
26
31
|
- The sync mechanism varies by project: Style Dictionary build pipeline, Tokens Studio plugin export, a Figma-API-driven script, the component suite's theme entry that mirrors the Figma token set, or a Feishu/Lark-hosted spec doc that a script consumes. Architecture records which mechanism this project uses and where the sync script / config lives so future agents do not invent a parallel path.
|
|
@@ -36,6 +41,8 @@ Design tokens have a **design-tool source of truth**, typically a Figma file wit
|
|
|
36
41
|
|
|
37
42
|
## Cross-Platform Component Capability Map
|
|
38
43
|
|
|
44
|
+
The desktop/mobile names in this map are examples. For other web, native, mini-app, terminal/TUI, Electron/desktop/TV, or another client, use the affected owner to map the same semantic roles and full state/interaction contract; do not force these example component names onto another stack or omit that stack from evidence.
|
|
45
|
+
|
|
39
46
|
- Shell and navigation: desktop `Layout`, `Menu`, `Breadcrumb`, `Dropdown`, `Pagination`, `Steps`, `Splitter`; mobile `NavBar`, `TabBar`, `Tabs`, `CapsuleTabs`, `SideBar`, `IndexBar`. Use them to preserve route context, selected state, overflow, long labels, and return paths.
|
|
40
47
|
- Input and creation: desktop `Form`, `Input`, `Select`, `Upload`, `DatePicker`, `Transfer`, `TreeSelect`; mobile `Form`, `Input`, `TextArea`, `Picker`, `Selector`, `ImageUploader`, `NumberKeyboard`, `PasscodeInput`. Cover focus, validation, disabled reason, keyboard/safe-area, upload progress, and preview-before-commit.
|
|
41
48
|
- Content display: desktop `Card`, `List`, `Avatar`, `Image`, `Tag`, `Badge`, `Tooltip`, `Popover`, `Statistic`, `Tree`; mobile `Card`, `List`, `Avatar`, `Image`, `ImageViewer`, `Tag`, `Ellipsis`, `FloatingPanel`, `InfiniteScroll`. Cover long content, media failure, skeleton, empty, selected/hover/pressed, and secondary actions.
|