ui-design-workbench-cli 0.5.0__tar.gz
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.
- ui_design_workbench_cli-0.5.0/PKG-INFO +133 -0
- ui_design_workbench_cli-0.5.0/README.md +114 -0
- ui_design_workbench_cli-0.5.0/SKILL.md +52 -0
- ui_design_workbench_cli-0.5.0/pyproject.toml +87 -0
- ui_design_workbench_cli-0.5.0/references/adapter-api.md +20 -0
- ui_design_workbench_cli-0.5.0/references/agent-integrations.md +39 -0
- ui_design_workbench_cli-0.5.0/references/cache-protocol.md +61 -0
- ui_design_workbench_cli-0.5.0/references/design-modes.md +109 -0
- ui_design_workbench_cli-0.5.0/references/fidelity.md +53 -0
- ui_design_workbench_cli-0.5.0/references/ir-schema.md +412 -0
- ui_design_workbench_cli-0.5.0/references/native-rendering.md +40 -0
- ui_design_workbench_cli-0.5.0/references/platform-profiles.json +84 -0
- ui_design_workbench_cli-0.5.0/references/platform-standards.md +131 -0
- ui_design_workbench_cli-0.5.0/references/platforms.md +40 -0
- ui_design_workbench_cli-0.5.0/references/quality-automation.md +77 -0
- ui_design_workbench_cli-0.5.0/references/review-workflow.md +135 -0
- ui_design_workbench_cli-0.5.0/references/ui-guidance-mode.md +22 -0
- ui_design_workbench_cli-0.5.0/references/ui-policy-schema.md +83 -0
- ui_design_workbench_cli-0.5.0/references/ui-reviewer.md +175 -0
- ui_design_workbench_cli-0.5.0/references/validation.md +34 -0
- ui_design_workbench_cli-0.5.0/references/workbench-ui.md +108 -0
- ui_design_workbench_cli-0.5.0/schemas/native-render-state.schema.json +71 -0
- ui_design_workbench_cli-0.5.0/schemas/ui-agent-job.schema.json +36 -0
- ui_design_workbench_cli-0.5.0/schemas/ui-graph.schema.json +46 -0
- ui_design_workbench_cli-0.5.0/schemas/ui-ir.patch.schema.json +36 -0
- ui_design_workbench_cli-0.5.0/schemas/ui-ir.schema.json +296 -0
- ui_design_workbench_cli-0.5.0/schemas/uidw-config.schema.json +68 -0
- ui_design_workbench_cli-0.5.0/scripts/android_resource_resolver.py +370 -0
- ui_design_workbench_cli-0.5.0/scripts/android_xml_support.py +230 -0
- ui_design_workbench_cli-0.5.0/scripts/apple_resource_resolver.py +141 -0
- ui_design_workbench_cli-0.5.0/scripts/coverage_report.py +134 -0
- ui_design_workbench_cli-0.5.0/scripts/fidelity_adapter_api.py +89 -0
- ui_design_workbench_cli-0.5.0/scripts/fidelity_adapters.py +508 -0
- ui_design_workbench_cli-0.5.0/scripts/fidelity_core.py +241 -0
- ui_design_workbench_cli-0.5.0/scripts/fidelity_platform_adapters.py +902 -0
- ui_design_workbench_cli-0.5.0/scripts/generate_interaction_matrix.py +166 -0
- ui_design_workbench_cli-0.5.0/scripts/ir_contracts.py +76 -0
- ui_design_workbench_cli-0.5.0/scripts/merge_review_state.py +267 -0
- ui_design_workbench_cli-0.5.0/scripts/native_render_android.py +160 -0
- ui_design_workbench_cli-0.5.0/scripts/native_render_apple.py +165 -0
- ui_design_workbench_cli-0.5.0/scripts/native_render_contracts.py +148 -0
- ui_design_workbench_cli-0.5.0/scripts/native_render_registry.py +86 -0
- ui_design_workbench_cli-0.5.0/scripts/quality_common.py +217 -0
- ui_design_workbench_cli-0.5.0/scripts/render_preview.py +1797 -0
- ui_design_workbench_cli-0.5.0/scripts/scan_ui.py +1485 -0
- ui_design_workbench_cli-0.5.0/scripts/scoped_context.py +458 -0
- ui_design_workbench_cli-0.5.0/scripts/smoke_preview.js +978 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/PKG-INFO +133 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/SOURCES.txt +56 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/dependency_links.txt +1 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/entry_points.txt +3 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/requires.txt +3 -0
- ui_design_workbench_cli-0.5.0/scripts/ui_design_workbench_cli.egg-info/top_level.txt +20 -0
- ui_design_workbench_cli-0.5.0/scripts/uidw.py +2821 -0
- ui_design_workbench_cli-0.5.0/scripts/uidw_mcp.py +282 -0
- ui_design_workbench_cli-0.5.0/scripts/validate_platform_profiles.py +93 -0
- ui_design_workbench_cli-0.5.0/scripts/visual_regression.py +141 -0
- ui_design_workbench_cli-0.5.0/setup.cfg +4 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ui-design-workbench-cli
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Repository UI indexing, graph, preview, and deterministic review CLI
|
|
5
|
+
Author: Elgreed
|
|
6
|
+
Project-URL: Homepage, https://github.com/Elgreed/ui-design-workbench
|
|
7
|
+
Project-URL: Repository, https://github.com/Elgreed/ui-design-workbench
|
|
8
|
+
Project-URL: Changelog, https://github.com/Elgreed/ui-design-workbench/blob/main/CHANGELOG.md
|
|
9
|
+
Keywords: agent-skills,ui,ux,design-review,code-analysis
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Provides-Extra: mcp
|
|
18
|
+
Requires-Dist: mcp<3,>=2; extra == "mcp"
|
|
19
|
+
|
|
20
|
+
# UI Design Workbench
|
|
21
|
+
|
|
22
|
+
[Русская версия](README.ru.md) · [Changelog](CHANGELOG.md) · [Release guide](RELEASING.md)
|
|
23
|
+
|
|
24
|
+
Turn repository UI source into an offline interactive HTML workbench—without building or running the application.
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
UI source → cached UI map → strict UI IR → interactive HTML
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Use it to understand unfamiliar UI, inspect screens and navigation, verify a reconstruction, or run an explicit UI/UX review.
|
|
31
|
+
|
|
32
|
+
## Install
|
|
33
|
+
|
|
34
|
+
Requires Python 3.10+ and [`pipx`](https://pipx.pypa.io/).
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
pipx install ui-design-workbench-cli
|
|
38
|
+
uidw install-skill codex
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`install-skill` also supports `claude`, `cursor`, `gemini`, `copilot`, `opencode`, `agents`, and `all`.
|
|
42
|
+
|
|
43
|
+
Optional local MCP support:
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
pipx inject ui-design-workbench-cli "mcp>=2,<3"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Verify the installation:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
uidw --version
|
|
53
|
+
uidw doctor
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Quick start
|
|
57
|
+
|
|
58
|
+
Choose preview detail once:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
uidw --repo <repo> config setup
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Build and open the source-derived workbench:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
uidw --repo <repo> workbench --output-dir <artifacts> --level full --open
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Run a UI/UX audit only when product critique is wanted:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
uidw --repo <repo> review --output-dir <review-dir> --level full
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`workbench` and `check` validate the projection. Only `review` creates UI/UX findings.
|
|
77
|
+
|
|
78
|
+
## What it provides
|
|
79
|
+
|
|
80
|
+
- Screen, route, component, token, theme, and state inventory.
|
|
81
|
+
- Standalone HTML with source links and reconstructed navigation.
|
|
82
|
+
- Incremental scans that reprocess only changed UI files.
|
|
83
|
+
- Property-level evidence and explicit unsupported gaps instead of guessed UI.
|
|
84
|
+
- Sparse review patches and a separate, authorized source-apply step.
|
|
85
|
+
- Structural Android and Apple resource projection, plus discovery of available native capture paths.
|
|
86
|
+
|
|
87
|
+
Supported source families include Web, React, Vue, Svelte, Jetpack Compose, Android Views XML, SwiftUI, Storyboard/XIB, WinUI/WPF, and Flutter.
|
|
88
|
+
|
|
89
|
+
## Main commands
|
|
90
|
+
|
|
91
|
+
| Command | Purpose |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `uidw doctor` | Check installation and optional dependencies |
|
|
94
|
+
| `uidw --repo <repo> context --json` | Read compact cached project context |
|
|
95
|
+
| `uidw --repo <repo> scope ...` | Prepare bounded context for a screen or finding |
|
|
96
|
+
| `uidw --repo <repo> patch ...` | Validate or apply sparse review-artifact changes |
|
|
97
|
+
| `uidw --repo <repo> workbench ...` | Build and validate the HTML projection |
|
|
98
|
+
| `uidw --repo <repo> native status` | Discover native Android/Apple render providers without running them |
|
|
99
|
+
| `uidw --repo <repo> check ...` | Repeat projection checks without a UI/UX audit |
|
|
100
|
+
| `uidw --repo <repo> review ...` | Start an explicit UI/UX review |
|
|
101
|
+
| `uidw --repo <repo> fidelity ...` | Inspect source evidence and adapter limits |
|
|
102
|
+
| `uidw --repo <repo> mcp` | Start the optional local stdio MCP server |
|
|
103
|
+
|
|
104
|
+
Run `uidw help overview`, `uidw help advanced`, or `uidw <command> --help` for details.
|
|
105
|
+
|
|
106
|
+
## Accuracy and safety
|
|
107
|
+
|
|
108
|
+
- HTML is a static source projection, not proof of runtime or pixel parity.
|
|
109
|
+
- Android and Apple translation remains structural until a source-matched native capture exists.
|
|
110
|
+
- Unsupported bindings, custom drawing, runtime data, and platform behavior remain explicit gaps.
|
|
111
|
+
- Preview and review keep application source read-only; applying a proposal is a separate step.
|
|
112
|
+
- Derived cache and review state live outside the target repository by default.
|
|
113
|
+
|
|
114
|
+
## Upgrade
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
pipx upgrade ui-design-workbench-cli
|
|
118
|
+
uidw install-skill codex
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
A Windows `.exe` is not published yet. PyPI + `pipx` is the primary cross-platform installation path.
|
|
122
|
+
|
|
123
|
+
## Documentation
|
|
124
|
+
|
|
125
|
+
- [Changelog](CHANGELOG.md)
|
|
126
|
+
- [Release and distribution guide](RELEASING.md)
|
|
127
|
+
- [Agent integrations](references/agent-integrations.md)
|
|
128
|
+
- [Fidelity contract](references/fidelity.md)
|
|
129
|
+
- [Native rendering](references/native-rendering.md)
|
|
130
|
+
- [IR schema](references/ir-schema.md)
|
|
131
|
+
- [Review workflow](references/review-workflow.md)
|
|
132
|
+
|
|
133
|
+
Current CLI version: `0.5.0`.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# UI Design Workbench
|
|
2
|
+
|
|
3
|
+
[Русская версия](README.ru.md) · [Changelog](CHANGELOG.md) · [Release guide](RELEASING.md)
|
|
4
|
+
|
|
5
|
+
Turn repository UI source into an offline interactive HTML workbench—without building or running the application.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
UI source → cached UI map → strict UI IR → interactive HTML
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Use it to understand unfamiliar UI, inspect screens and navigation, verify a reconstruction, or run an explicit UI/UX review.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
Requires Python 3.10+ and [`pipx`](https://pipx.pypa.io/).
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
pipx install ui-design-workbench-cli
|
|
19
|
+
uidw install-skill codex
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`install-skill` also supports `claude`, `cursor`, `gemini`, `copilot`, `opencode`, `agents`, and `all`.
|
|
23
|
+
|
|
24
|
+
Optional local MCP support:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
pipx inject ui-design-workbench-cli "mcp>=2,<3"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Verify the installation:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
uidw --version
|
|
34
|
+
uidw doctor
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
Choose preview detail once:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
uidw --repo <repo> config setup
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Build and open the source-derived workbench:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
uidw --repo <repo> workbench --output-dir <artifacts> --level full --open
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Run a UI/UX audit only when product critique is wanted:
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
uidw --repo <repo> review --output-dir <review-dir> --level full
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
`workbench` and `check` validate the projection. Only `review` creates UI/UX findings.
|
|
58
|
+
|
|
59
|
+
## What it provides
|
|
60
|
+
|
|
61
|
+
- Screen, route, component, token, theme, and state inventory.
|
|
62
|
+
- Standalone HTML with source links and reconstructed navigation.
|
|
63
|
+
- Incremental scans that reprocess only changed UI files.
|
|
64
|
+
- Property-level evidence and explicit unsupported gaps instead of guessed UI.
|
|
65
|
+
- Sparse review patches and a separate, authorized source-apply step.
|
|
66
|
+
- Structural Android and Apple resource projection, plus discovery of available native capture paths.
|
|
67
|
+
|
|
68
|
+
Supported source families include Web, React, Vue, Svelte, Jetpack Compose, Android Views XML, SwiftUI, Storyboard/XIB, WinUI/WPF, and Flutter.
|
|
69
|
+
|
|
70
|
+
## Main commands
|
|
71
|
+
|
|
72
|
+
| Command | Purpose |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| `uidw doctor` | Check installation and optional dependencies |
|
|
75
|
+
| `uidw --repo <repo> context --json` | Read compact cached project context |
|
|
76
|
+
| `uidw --repo <repo> scope ...` | Prepare bounded context for a screen or finding |
|
|
77
|
+
| `uidw --repo <repo> patch ...` | Validate or apply sparse review-artifact changes |
|
|
78
|
+
| `uidw --repo <repo> workbench ...` | Build and validate the HTML projection |
|
|
79
|
+
| `uidw --repo <repo> native status` | Discover native Android/Apple render providers without running them |
|
|
80
|
+
| `uidw --repo <repo> check ...` | Repeat projection checks without a UI/UX audit |
|
|
81
|
+
| `uidw --repo <repo> review ...` | Start an explicit UI/UX review |
|
|
82
|
+
| `uidw --repo <repo> fidelity ...` | Inspect source evidence and adapter limits |
|
|
83
|
+
| `uidw --repo <repo> mcp` | Start the optional local stdio MCP server |
|
|
84
|
+
|
|
85
|
+
Run `uidw help overview`, `uidw help advanced`, or `uidw <command> --help` for details.
|
|
86
|
+
|
|
87
|
+
## Accuracy and safety
|
|
88
|
+
|
|
89
|
+
- HTML is a static source projection, not proof of runtime or pixel parity.
|
|
90
|
+
- Android and Apple translation remains structural until a source-matched native capture exists.
|
|
91
|
+
- Unsupported bindings, custom drawing, runtime data, and platform behavior remain explicit gaps.
|
|
92
|
+
- Preview and review keep application source read-only; applying a proposal is a separate step.
|
|
93
|
+
- Derived cache and review state live outside the target repository by default.
|
|
94
|
+
|
|
95
|
+
## Upgrade
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
pipx upgrade ui-design-workbench-cli
|
|
99
|
+
uidw install-skill codex
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
A Windows `.exe` is not published yet. PyPI + `pipx` is the primary cross-platform installation path.
|
|
103
|
+
|
|
104
|
+
## Documentation
|
|
105
|
+
|
|
106
|
+
- [Changelog](CHANGELOG.md)
|
|
107
|
+
- [Release and distribution guide](RELEASING.md)
|
|
108
|
+
- [Agent integrations](references/agent-integrations.md)
|
|
109
|
+
- [Fidelity contract](references/fidelity.md)
|
|
110
|
+
- [Native rendering](references/native-rendering.md)
|
|
111
|
+
- [IR schema](references/ir-schema.md)
|
|
112
|
+
- [Review workflow](references/review-workflow.md)
|
|
113
|
+
|
|
114
|
+
Current CLI version: `0.5.0`.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-design-workbench
|
|
3
|
+
description: Reconstruct, review, generate, or redesign repository UI as standards-aware interactive HTML previews; optionally guide ordinary UI implementation for Android, iOS, macOS, Windows, Flutter, or Web. Do not use when the user only wants to run the real application.
|
|
4
|
+
metadata:
|
|
5
|
+
compatibility: "Python 3.10+. MCP is optional; CLI works standalone."
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# UI Design Workbench router
|
|
9
|
+
|
|
10
|
+
Use UIDW as a deterministic local utility. The CLI, not the skill prompt, owns scanning, cache invalidation, source graphs, IR, rendering, and projection checks.
|
|
11
|
+
|
|
12
|
+
## 1. Get compact context
|
|
13
|
+
|
|
14
|
+
Prefer MCP tools `ui_project` then `ui_scope` when the local UIDW MCP is configured. Otherwise use the complete CLI fallback:
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
uidw --repo <repo> context --json
|
|
18
|
+
uidw --repo <repo> scope --ir <ui-ir.json> --screen <id> --budget 4000
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If `uidw` is unavailable, run `python <skill-dir>/scripts/uidw.py ...`. Reuse a clean cache. Never paste or read the complete `ui-ir.json` when a scoped context can answer the task. Request another screen/finding scope only when needed.
|
|
22
|
+
|
|
23
|
+
If first-use context says `setupRequired`, ask only for `low`, `medium`, or `high` using its short descriptions. Mock-data depth follows that choice. Do not recommend a level. Optional `uiMode` remains off until explicitly enabled.
|
|
24
|
+
|
|
25
|
+
## 2. Route the request
|
|
26
|
+
|
|
27
|
+
- Reconstruct/generate/redesign: read [references/design-modes.md](references/design-modes.md), then only the matching platform section from [references/platform-standards.md](references/platform-standards.md). Use cached evidence and `uidw workbench`; validate transfer fidelity, not product UX. For Android or Apple visual accuracy also read [references/native-rendering.md](references/native-rendering.md) and call MCP `ui_native_status` (or `uidw native status`).
|
|
28
|
+
- Explicit review/audit/critique: read [references/ui-reviewer.md](references/ui-reviewer.md) and [references/review-workflow.md](references/review-workflow.md). Review immutable Before only and work in bounded screen batches.
|
|
29
|
+
- Workbench chrome behavior: read [references/workbench-ui.md](references/workbench-ui.md).
|
|
30
|
+
- Ordinary UI source task with `uiMode.enabled=true`: read [references/ui-guidance-mode.md](references/ui-guidance-mode.md). Do not create a preview or review unless requested.
|
|
31
|
+
- Cache/install/agent integration question: read only [references/cache-protocol.md](references/cache-protocol.md) or [references/agent-integrations.md](references/agent-integrations.md), respectively.
|
|
32
|
+
|
|
33
|
+
## 3. Return sparse changes
|
|
34
|
+
|
|
35
|
+
Review/proposal agents write `ui-ir.patch.json`, never a replacement full IR:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
uidw patch validate <ui-ir.patch.json> --ir <ui-ir.json>
|
|
39
|
+
uidw patch apply <ui-ir.patch.json> --ir <ui-ir.json> --output <ui-ir.proposed.json>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Allowed operations are `upsert-findings`, `upsert-versions`, `merge-annotations`, and `record-verifications`. Baseline screens, nodes, tokens, themes, fixtures, and application source are immutable in this path. Create one restrained proposal by default; add a second only for a real UX tradeoff.
|
|
43
|
+
|
|
44
|
+
## Invariants
|
|
45
|
+
|
|
46
|
+
- Reconstruction, generation, redesign, Low/Medium/High, `workbench`, and `check` never trigger an automatic UI/UX audit. Only an explicit review request creates findings.
|
|
47
|
+
- Do not run the target app, emulator, simulator, build, or dev server unless separately requested. Headless checks may open only generated local HTML.
|
|
48
|
+
- Preserve discovered screens, routes, project components, platform idioms, tokens, themes, states, provenance, and unsupported gaps. Do not invent polish or browser-default replacements.
|
|
49
|
+
- HTML is a projection. Base IR is immutable Before; proposal versions are sparse overrides.
|
|
50
|
+
- Android/Apple source translation is structural-only until a source-matched native capture exists. Never call HTML a native render.
|
|
51
|
+
- Applying a proposal to real source requires a separate explicit `Apply to project` or direct-fix authorization, bounded source targets, incremental sync, and targeted verification. Never repeat the full AI review automatically.
|
|
52
|
+
- Keep cache and review artifacts outside source control unless the user explicitly requests otherwise.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ui-design-workbench-cli"
|
|
7
|
+
version = "0.5.0"
|
|
8
|
+
description = "Repository UI indexing, graph, preview, and deterministic review CLI"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
authors = [{ name = "Elgreed" }]
|
|
12
|
+
keywords = ["agent-skills", "ui", "ux", "design-review", "code-analysis"]
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Environment :: Console",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Topic :: Software Development :: Quality Assurance",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
[project.scripts]
|
|
22
|
+
uidw = "uidw:main"
|
|
23
|
+
uidw-mcp = "uidw_mcp:main"
|
|
24
|
+
|
|
25
|
+
[project.optional-dependencies]
|
|
26
|
+
mcp = ["mcp>=2,<3"]
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
Homepage = "https://github.com/Elgreed/ui-design-workbench"
|
|
30
|
+
Repository = "https://github.com/Elgreed/ui-design-workbench"
|
|
31
|
+
Changelog = "https://github.com/Elgreed/ui-design-workbench/blob/main/CHANGELOG.md"
|
|
32
|
+
|
|
33
|
+
[tool.setuptools]
|
|
34
|
+
package-dir = { "" = "scripts" }
|
|
35
|
+
py-modules = [
|
|
36
|
+
"uidw",
|
|
37
|
+
"uidw_mcp",
|
|
38
|
+
"scoped_context",
|
|
39
|
+
"android_xml_support",
|
|
40
|
+
"scan_ui",
|
|
41
|
+
"ir_contracts",
|
|
42
|
+
"fidelity_core",
|
|
43
|
+
"fidelity_adapter_api",
|
|
44
|
+
"fidelity_adapters",
|
|
45
|
+
"fidelity_platform_adapters",
|
|
46
|
+
"android_resource_resolver",
|
|
47
|
+
"apple_resource_resolver",
|
|
48
|
+
"native_render_contracts",
|
|
49
|
+
"native_render_android",
|
|
50
|
+
"native_render_apple",
|
|
51
|
+
"native_render_registry",
|
|
52
|
+
"quality_common",
|
|
53
|
+
"render_preview",
|
|
54
|
+
"coverage_report",
|
|
55
|
+
"validate_platform_profiles",
|
|
56
|
+
]
|
|
57
|
+
|
|
58
|
+
[tool.setuptools.data-files]
|
|
59
|
+
"share/ui-design-workbench" = ["SKILL.md"]
|
|
60
|
+
"share/ui-design-workbench/references" = ["references/*.md", "references/platform-profiles.json"]
|
|
61
|
+
"share/ui-design-workbench/schemas" = ["schemas/*.json"]
|
|
62
|
+
"share/ui-design-workbench/scripts" = [
|
|
63
|
+
"scripts/android_resource_resolver.py",
|
|
64
|
+
"scripts/android_xml_support.py",
|
|
65
|
+
"scripts/apple_resource_resolver.py",
|
|
66
|
+
"scripts/coverage_report.py",
|
|
67
|
+
"scripts/fidelity_adapter_api.py",
|
|
68
|
+
"scripts/fidelity_adapters.py",
|
|
69
|
+
"scripts/fidelity_core.py",
|
|
70
|
+
"scripts/fidelity_platform_adapters.py",
|
|
71
|
+
"scripts/generate_interaction_matrix.py",
|
|
72
|
+
"scripts/ir_contracts.py",
|
|
73
|
+
"scripts/merge_review_state.py",
|
|
74
|
+
"scripts/native_render_android.py",
|
|
75
|
+
"scripts/native_render_apple.py",
|
|
76
|
+
"scripts/native_render_contracts.py",
|
|
77
|
+
"scripts/native_render_registry.py",
|
|
78
|
+
"scripts/quality_common.py",
|
|
79
|
+
"scripts/render_preview.py",
|
|
80
|
+
"scripts/scan_ui.py",
|
|
81
|
+
"scripts/scoped_context.py",
|
|
82
|
+
"scripts/smoke_preview.js",
|
|
83
|
+
"scripts/uidw.py",
|
|
84
|
+
"scripts/uidw_mcp.py",
|
|
85
|
+
"scripts/validate_platform_profiles.py",
|
|
86
|
+
"scripts/visual_regression.py",
|
|
87
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Fidelity adapter API
|
|
2
|
+
|
|
3
|
+
Fidelity adapters are deterministic, read-only translators from repository source to UI IR. They do not run the application, a browser dev server, an emulator, or a build.
|
|
4
|
+
|
|
5
|
+
`SourceContext` contains the repository root, relative source path, text, detected platforms, and scanner role. An adapter exposes a stable `id`, `supports(context)`, and `translate(context) -> AdapterResult`. Results contain screens, nodes, tokens, themes, component mappings, and an explicit unsupported-expression list. Register additional adapters with `register_adapter`; the scanner consumes the registry rather than importing provider-specific agents.
|
|
6
|
+
|
|
7
|
+
Every reconstructed visual or behavioral property must have a same-path entry in `node.provenance`, for example `style.background` or `layout.padding`. Evidence records have a stable hash ID, source file and line, original expression, adapter ID, and one of `exact`, `high`, `approximate`, or `unsupported`. Unsupported syntax is reported rather than guessed.
|
|
8
|
+
|
|
9
|
+
The built-in adapters are:
|
|
10
|
+
|
|
11
|
+
- `web`: static HTML plus deterministic simple CSS selectors, CSS custom properties, inline styles, semantic controls, lists, images, and text;
|
|
12
|
+
- `react-jsx`, `vue`, `svelte`: source markup projected through the Web contract; dynamic expressions and unmapped project components remain unsupported;
|
|
13
|
+
- `compose`: Android `@Composable` screens, common Material/Compose primitives, resources, modifiers, and tokens;
|
|
14
|
+
- `android-xml`: Android layout/resources XML, common Views/Material controls, dimensions/colors, and `values-night` token overrides;
|
|
15
|
+
- `swiftui`: iOS/macOS `View` bodies, common containers and controls, Asset Catalog resources, localization, SF Symbol fallbacks, modifiers, and source tokens;
|
|
16
|
+
- `apple-interface-xml`: Storyboard/XIB controllers and common UIKit/AppKit views with assets, authored frames, and a conservative Auto Layout subset;
|
|
17
|
+
- `xaml`: WinUI/WPF pages, common controls, resources, and basic layout/style attributes without evaluating bindings or templates;
|
|
18
|
+
- `flutter`: common Material/Cupertino widget trees and basic dimensions without executing Dart.
|
|
19
|
+
|
|
20
|
+
Golden source/expected fixtures live under `fixtures/golden`. Changing adapter output requires an intentional fixture update and the fidelity test suite. `uidw fidelity capabilities` returns the same installed matrix in machine-readable JSON.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Agent integrations
|
|
2
|
+
|
|
3
|
+
The repository follows the open Agent Skills layout: one `SKILL.md` plus `scripts/`, `references/`, and optional agent-specific metadata. The core workflow communicates through files and shell commands, not a proprietary API.
|
|
4
|
+
|
|
5
|
+
## Discovery locations
|
|
6
|
+
|
|
7
|
+
`~/.agents/skills/ui-design-workbench` is the preferred portable installation where supported. Native locations are also available:
|
|
8
|
+
|
|
9
|
+
| Agent | Native user location |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Codex | `~/.codex/skills/ui-design-workbench` |
|
|
12
|
+
| Claude Code | `~/.claude/skills/ui-design-workbench` |
|
|
13
|
+
| Cursor | `~/.cursor/skills/ui-design-workbench` |
|
|
14
|
+
| Gemini CLI | `~/.gemini/skills/ui-design-workbench` |
|
|
15
|
+
| GitHub Copilot CLI | `~/.copilot/skills/ui-design-workbench` |
|
|
16
|
+
| OpenCode | `~/.config/opencode/skills/ui-design-workbench` |
|
|
17
|
+
|
|
18
|
+
Install the published CLI and then copy its packaged Agent Skill into any supported discovery location:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
pipx install ui-design-workbench-cli
|
|
22
|
+
uidw install-skill codex
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Use `uidw install-skill all` for every supported location. Repeating the command refreshes UIDW-managed copies after a CLI upgrade and refuses to overwrite an unrelated existing skill. The packaged skill includes its references, schemas, and CLI fallback scripts, so it does not depend on a Git checkout.
|
|
26
|
+
|
|
27
|
+
For contributor checkouts, `./install.ps1 -Agent all` on Windows or `./install.sh all` on macOS/Linux still creates development links to the repository. Repository-local installation can use `.agents/skills/ui-design-workbench` when team policy prefers checked-out skills.
|
|
28
|
+
|
|
29
|
+
## Capability contract
|
|
30
|
+
|
|
31
|
+
An agent needs local file read/write access and Python 3.10+. Node.js plus Chromium/Edge is optional but required for headless interaction and geometry diagnostics. The target application, emulator, simulator, bridge server, and internet access are not required.
|
|
32
|
+
|
|
33
|
+
The portable handoff is `ui-agent-job.json`. It contains artifact directory, review scope, selected stable finding IDs, screen IDs, active/baseline versions, annotations, allowed output patterns, and `sourceChangeAllowed: false`. It also points to a bounded `ui-agent-context.json` and a sparse `ui-ir.patch.json`; the agent reads the bounded context and returns patch operations instead of loading or replacing the complete IR. Agents must modify only the declared review artifacts and return validation results.
|
|
34
|
+
|
|
35
|
+
For ordinary source tasks, `uidw init` can opt a project into lightweight UI guidance. The mode is off by default and appears in `ui-context.json` as `uiMode`. A compatible agent loads only the relevant platform guidance, preserves the project's components and tokens, and stays within the requested implementation scope. This is independent of the review handoff and must not create a workbench or claim a full audit unless requested.
|
|
36
|
+
|
|
37
|
+
Codex may opt into `render_preview.py --agent codex`, which enables the official local `codex://new` preparation path. Other agents use copied prompts or the JSON job. Provider-specific adapters are optional presentation conveniences and must not change the IR, cache, review semantics, permissions, or approval boundary.
|
|
38
|
+
|
|
39
|
+
The optional `uidw-mcp` stdio server is a transport facade over the same deterministic CLI core. It exposes compact project discovery, bounded screen/finding context, job preparation, sparse patch application, preview building, and fidelity explanation. MCP is an optional dependency; installing or running the regular CLI must not require it. Configure an agent to launch `uidw-mcp --repo <absolute-project-path>` as a local stdio command; it opens no port and keeps all project data on the local machine.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Project context and cache protocol
|
|
2
|
+
|
|
3
|
+
The cache accelerates discovery; it is never authoritative application data and never replaces source evidence.
|
|
4
|
+
|
|
5
|
+
## Storage model
|
|
6
|
+
|
|
7
|
+
The default is a user-level, project-keyed operating-system cache:
|
|
8
|
+
|
|
9
|
+
- Windows: `%LOCALAPPDATA%\UI Design Workbench\Cache\projects\<project-key>`
|
|
10
|
+
- macOS: `~/Library/Caches/ui-design-workbench/projects/<project-key>`
|
|
11
|
+
- Linux: `$XDG_CACHE_HOME/ui-design-workbench/projects/<project-key>` or `~/.cache/ui-design-workbench/projects/<project-key>`
|
|
12
|
+
|
|
13
|
+
Set `UIDW_CACHE_HOME` for an isolated runner. The per-project `config.json` lives in this user cache by default. `init --project-cache` is an explicit opt-in that instead creates `.ui-design-workbench/config.json` and an ignore-all `.gitignore` inside the repository. Commit only a deliberately shared config or exported semantic UI map; never commit fingerprints, per-file records, timestamps, diagnostics, screenshots, or agent-local paths.
|
|
14
|
+
|
|
15
|
+
The project key is derived from the normalized absolute repository path. The installed skill contains only reusable code and reference data; it must not contain project caches.
|
|
16
|
+
|
|
17
|
+
## State files
|
|
18
|
+
|
|
19
|
+
- `cache-state.json`: scanner/config versions, candidate manifest, content fingerprints, and reusable per-file analysis.
|
|
20
|
+
- `ui-scan.json`: aggregated UI inventory from current per-file records.
|
|
21
|
+
- `ui-ir.json`: synchronized projection combining the generated source index with preserved authored detail; still not a finished review deliverable.
|
|
22
|
+
- `design-model.json`: durable authored screen/node/scenario detail preserved across source-index refreshes.
|
|
23
|
+
- `review-state.json`: findings, annotations, decisions, and proposal metadata preserved separately from discovery.
|
|
24
|
+
- `ui-context.json`: bounded model-facing summary with changed files and priority reads.
|
|
25
|
+
- `ui-context-<screen>.json`: one screen subtree and its directly referenced sources.
|
|
26
|
+
- `sync-report.json`: last invalidation reason, changed files, and affected screen IDs.
|
|
27
|
+
- `config.json`: cache preferences, the opt-in `uiMode.enabled` flag, and derived `mockData.mode`. Mock data is always enabled and follows detail level: `minimal`, `representative`, or `exhaustive`; it is not a separate preference.
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
uidw --repo <repo> init
|
|
33
|
+
uidw --repo <repo> status --json
|
|
34
|
+
uidw --repo <repo> sync
|
|
35
|
+
uidw --repo <repo> context --screen <screen-id> --json
|
|
36
|
+
uidw --repo <repo> context --screen <screen-id> --budget 4000 --format markdown
|
|
37
|
+
uidw --repo <repo> map --output <docs-or-artifact-dir>/ui-graph.json
|
|
38
|
+
uidw --repo <repo> diff
|
|
39
|
+
uidw --repo <repo> workbench --output-dir <artifact-dir>
|
|
40
|
+
uidw --repo <repo> check --ir <artifact-dir>/ui-ir.json --level full
|
|
41
|
+
uidw --repo <repo> doctor --json
|
|
42
|
+
uidw --repo <repo> ui-mode --enable
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`init`, `sync`, `context`, `map`, and cache-backed workbench/review entry points share one internal `ensure_initialized` bootstrap. The first ordinary `context` or `review` request creates the default user-cache configuration, UI index, graph, and starter IR automatically; manual `init` is not required. Each result exposes `initialization.status` as `created`, `updated`, `reused`, or `stale`. Later calls reuse the existing cache and do not analyze unchanged source files. Use `sync --force` after scanner/schema upgrades or known discovery errors. Use `--verify-content` when timestamps may be unreliable, such as restored archives or unusual network filesystems.
|
|
46
|
+
|
|
47
|
+
## Invalidation
|
|
48
|
+
|
|
49
|
+
Candidate files use size, nanosecond mtime, and SHA-256. Unchanged metadata reuses the existing digest; changed metadata is rehashed. The manifest watches broad source candidates so that newly added UI files can be discovered, but `changedUiFiles` contains only records classified as UI or paths already referenced by the UI inventory. Non-UI source changes refresh manifest metadata without invalidating the UI cache. Only added or content-modified UI files are analyzed again. Removed UI files drop their cached record. A theme or navigation change invalidates all screens; a screen/component change invalidates mapped dependents; scanner/config/cache-version changes force full reconstruction.
|
|
50
|
+
|
|
51
|
+
Metadata-only changes update the manifest without rescanning. `--verify-content` rehashes every candidate when correctness is more important than I/O cost.
|
|
52
|
+
|
|
53
|
+
Every JSON write uses a same-directory temporary file plus atomic replacement. A short-lived project state lock serializes concurrent writers. Configuration schema upgrades keep `config.v<old>.backup.json`; disposable scanner/cache versions rebuild automatically. Source changes never discard authored scenarios, proposals, findings, or annotations: bindings for impacted screens and nodes are retained with `sourceState: stale` until an agent reconciles them.
|
|
54
|
+
|
|
55
|
+
Do not run a watcher, bridge server, emulator, or target application. Lazy command-boundary synchronization is deterministic, portable, and inexpensive for agent workflows.
|
|
56
|
+
|
|
57
|
+
Interactive `init` asks only for detail level and does not recommend or preselect a value. Automatic non-interactive initialization writes only the neutral technical config and never guesses a detail level: compact context reports `configuration.setupRequired` and one concise `questionsForUser` item until the user answers it. Use `config setup`, `config show`, or `config set detail <low|medium|high>` without rescanning unchanged UI files. `help config` describes the levels and `about` explains the tool boundary.
|
|
58
|
+
|
|
59
|
+
UI guidance is not asked during setup and remains off unless explicitly enabled. `init --ui-mode` and `init --no-ui-mode` make automation deterministic. Later use `ui-mode --enable`, `ui-mode --disable`, or `config set ui-mode on|off`. Enabling guidance changes agent behavior only for UI-related tasks and does not imply review, redesign, preview generation, or source-edit permission.
|
|
60
|
+
|
|
61
|
+
Mock data follows detail level automatically: `low` uses `minimal`, `medium` uses `representative`, and `high` uses `exhaustive`. This derived change refreshes model context but never causes another repository source scan by itself. Preserve existing `scenarioFixtures` and `screen.scenarios` for unaffected screen IDs during incremental sync; regenerate only fixtures whose source dependencies changed.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Generation and redesign modes
|
|
2
|
+
|
|
3
|
+
Choose one explicit `design.mode` before producing IR.
|
|
4
|
+
|
|
5
|
+
| Mode | Source of truth | Allowed creativity | Required fidelity status |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| `reconstruct` | Existing repository UI | None; report gaps separately | `translated` |
|
|
8
|
+
| `generate` | Product brief + project system + platform standards | Only reasoned choices within constraints | `designed` |
|
|
9
|
+
| `redesign` | Existing task flow/content + approved brief + standards | Improve named UX problems; preserve unrelated behavior | `designed` |
|
|
10
|
+
|
|
11
|
+
## Anti-randomness contract
|
|
12
|
+
|
|
13
|
+
Every visible or interactive decision must come from at least one of:
|
|
14
|
+
|
|
15
|
+
1. a literal project component, asset, token, or established pattern;
|
|
16
|
+
2. an official platform component or documented interaction pattern;
|
|
17
|
+
3. an explicit user/product requirement;
|
|
18
|
+
4. a `design.decisions` record with alternatives considered and a concrete UX reason.
|
|
19
|
+
|
|
20
|
+
Do not add gradients, glass effects, floating cards, oversized headings, novel navigation, decorative illustrations, animations, icon-only actions, or extra product copy merely to make a design look modern. If no product-specific visual direction exists, produce the restrained native baseline first.
|
|
21
|
+
|
|
22
|
+
## Design metadata
|
|
23
|
+
|
|
24
|
+
Generated and redesigned IR includes:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"design": {
|
|
29
|
+
"mode": "redesign",
|
|
30
|
+
"targetPlatforms": ["android", "ios", "web"],
|
|
31
|
+
"brief": {
|
|
32
|
+
"primaryTask": "Complete checkout with minimal uncertainty",
|
|
33
|
+
"primaryUser": "Existing customer",
|
|
34
|
+
"constraints": ["Preserve current fields", "No new backend data"]
|
|
35
|
+
},
|
|
36
|
+
"standardProfiles": {
|
|
37
|
+
"android": {"id": "material3", "source": "official", "projectVersion": "from repository"},
|
|
38
|
+
"ios": {"id": "apple-hig", "source": "official", "deploymentTarget": "from repository"},
|
|
39
|
+
"web": {"id": "web-platform", "source": "WCAG 2.2 AA + APG"}
|
|
40
|
+
},
|
|
41
|
+
"decisions": [
|
|
42
|
+
{
|
|
43
|
+
"id": "decision-checkout-summary",
|
|
44
|
+
"scope": "checkout/summary",
|
|
45
|
+
"choice": "Keep order summary visible before confirmation",
|
|
46
|
+
"basis": "user-task",
|
|
47
|
+
"reason": "Reduces uncertainty before a consequential action",
|
|
48
|
+
"alternatives": ["Collapsed summary"]
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"stateMatrix": [
|
|
52
|
+
{
|
|
53
|
+
"screens": ["checkout"],
|
|
54
|
+
"covered": ["default", "loading", "error", "disabled", "success", "destructive-confirmation"],
|
|
55
|
+
"notApplicable": [
|
|
56
|
+
{"state": "empty", "reason": "An empty cart cannot enter checkout."},
|
|
57
|
+
{"state": "offline", "reason": "Handled by the shared network-error screen."},
|
|
58
|
+
{"state": "permission", "reason": "No system permission is requested."}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
"fidelity": {"status": "designed", "sourceDerived": false}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Use a `project` standard profile only when the repository has an intentional component system. Include a `reason` describing the override. Do not call a collection of incidental styles a design system.
|
|
68
|
+
|
|
69
|
+
## Generate workflow
|
|
70
|
+
|
|
71
|
+
1. Inspect the repository for brand tokens, components, navigation architecture, localization, assets, dependencies, and supported platforms. If no repository exists, derive only the minimum product brief needed to proceed.
|
|
72
|
+
2. Define the primary task, user, content, data dependencies, constraints, success outcome, and target platforms. Separate known facts from assumptions.
|
|
73
|
+
3. Create the task flow and screen/state inventory before visual styling. Avoid adding screens that do not advance the task or satisfy a platform requirement.
|
|
74
|
+
4. Map each control and navigation container to the target platform profile. Add brand through shared semantic tokens, not per-screen decoration.
|
|
75
|
+
5. Design representative default, loading, empty, error, offline/permission, disabled, success, destructive-confirmation, and long-content states where applicable. Record non-applicable states with a reason.
|
|
76
|
+
6. Generate all screens, routes, transitions, focus behavior, and state actions in IR. Run the audit before presenting HTML.
|
|
77
|
+
|
|
78
|
+
## Redesign workflow
|
|
79
|
+
|
|
80
|
+
1. Reconstruct the current screen, task flow, content semantics, and states first. Preserve provenance to original files and symbols.
|
|
81
|
+
2. Write a short problem statement based on user feedback, explicit requirements, or observable heuristic violations. Do not redesign merely because a different style is possible.
|
|
82
|
+
3. Mark invariants: business rules, required fields, route contracts, analytics hooks, accessibility labels, data availability, and already accepted areas.
|
|
83
|
+
4. Create a native-baseline redesign that fixes the stated problems. Keep each changed region linked to a `decisionId`; unchanged regions remain source-linked.
|
|
84
|
+
5. Offer an additional variant only when it represents a meaningful tradeoff, not cosmetic randomness. State the tradeoff and keep content/functionality comparable.
|
|
85
|
+
6. Present the redesigned preview without editing project source. After approval, propose an implementation diff separately.
|
|
86
|
+
|
|
87
|
+
## Expert review workflow
|
|
88
|
+
|
|
89
|
+
An expert review is a staged reconstruction plus redesign, not a fourth rendering mode. First reconstruct the existing UI as the immutable baseline. Record evidence-based findings under `review.audit` using [ui-reviewer.md](ui-reviewer.md). Then set `design.mode: redesign` for correction versions and link each version to the findings it addresses. This keeps current-state fidelity separate from proposed design judgment.
|
|
90
|
+
|
|
91
|
+
Do not produce correction variants until the audit defines the problem, evidence, affected task, and preserved invariants. Do not treat a standards deviation as a defect when the repository documents an intentional, accessible project convention that serves the task.
|
|
92
|
+
|
|
93
|
+
## UX completeness gate
|
|
94
|
+
|
|
95
|
+
Before review, verify:
|
|
96
|
+
|
|
97
|
+
- clear primary task and visual hierarchy;
|
|
98
|
+
- predictable navigation, back/cancel behavior, and preserved context;
|
|
99
|
+
- feedback for taps, submissions, waiting, completion, and failure;
|
|
100
|
+
- prevention and recovery for destructive or costly actions;
|
|
101
|
+
- form labels, instructions, validation timing, error placement, and retained user input;
|
|
102
|
+
- empty/loading/error/offline/permission states where relevant;
|
|
103
|
+
- light/dark and text scaling where supported;
|
|
104
|
+
- keyboard/focus/assistive semantics and target sizes;
|
|
105
|
+
- resolvable foreground/background tokens that pass WCAG text-contrast thresholds in each reviewed theme;
|
|
106
|
+
- responsive/adaptive layouts, safe areas, RTL, localization expansion, and long content;
|
|
107
|
+
- no unsupported data, product copy, feature, or backend behavior invented by the design.
|
|
108
|
+
|
|
109
|
+
The HTML preview is evidence for review, not proof of runtime accessibility. Report which checks are structural and which still require platform testing after implementation.
|