@documentation-robotics/cli 0.1.13 → 0.3.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 +74 -2
- package/dist/analysis/relationship-classifier.js +2 -9
- package/dist/analysis/relationship-classifier.js.map +2 -2
- package/dist/analyzers/call-graph-utils.js +2 -2
- package/dist/analyzers/call-graph-utils.js.map +2 -2
- package/dist/analyzers/cards/build.js +171 -0
- package/dist/analyzers/cards/build.js.map +7 -0
- package/dist/analyzers/cards/classify.js +42 -0
- package/dist/analyzers/cards/classify.js.map +7 -0
- package/dist/analyzers/cards/edge-index.js +44 -0
- package/dist/analyzers/cards/edge-index.js.map +7 -0
- package/dist/analyzers/cards/facts.js +46 -0
- package/dist/analyzers/cards/facts.js.map +7 -0
- package/dist/analyzers/cards/graph.js +42 -0
- package/dist/analyzers/cards/graph.js.map +7 -0
- package/dist/analyzers/cards/index.js +8 -0
- package/dist/analyzers/cards/index.js.map +7 -0
- package/dist/analyzers/cards/tier0.js +18 -0
- package/dist/analyzers/cards/tier0.js.map +7 -0
- package/dist/analyzers/cards/types.js +1 -0
- package/dist/analyzers/cards/types.js.map +7 -0
- package/dist/analyzers/cbm-analyzer.js +195 -171
- package/dist/analyzers/cbm-analyzer.js.map +2 -2
- package/dist/analyzers/cbm-responses.js +336 -0
- package/dist/analyzers/cbm-responses.js.map +7 -0
- package/dist/analyzers/edge-relationships.js +45 -0
- package/dist/analyzers/edge-relationships.js.map +7 -0
- package/dist/analyzers/mapping-loader.js +9 -0
- package/dist/analyzers/mapping-loader.js.map +2 -2
- package/dist/analyzers/tier0-rules.js +153 -0
- package/dist/analyzers/tier0-rules.js.map +7 -0
- package/dist/analyzers/types.js.map +1 -1
- package/dist/analyzers/verify-engine.js +22 -19
- package/dist/analyzers/verify-engine.js.map +2 -2
- package/dist/audit/relationships/ai/prompts.js +10 -10
- package/dist/audit/relationships/ai/prompts.js.map +2 -2
- package/dist/audit/relationships/analysis/layer-templates.js +52 -52
- package/dist/audit/relationships/analysis/layer-templates.js.map +1 -1
- package/dist/cli.js +112 -28
- package/dist/cli.js.map +3 -3
- package/dist/coding-agents/agents/claude-code.js +3 -1
- package/dist/coding-agents/agents/claude-code.js.map +2 -2
- package/dist/coding-agents/claude-code-client.js +2 -1
- package/dist/coding-agents/claude-code-client.js.map +2 -2
- package/dist/coding-agents/copilot-client.js +17 -12
- package/dist/coding-agents/copilot-client.js.map +2 -2
- package/dist/coding-agents/default-permissions.js +152 -0
- package/dist/coding-agents/default-permissions.js.map +7 -0
- package/dist/coding-agents/drbot-mcp.js +167 -0
- package/dist/coding-agents/drbot-mcp.js.map +7 -0
- package/dist/commands/add.js +12 -7
- package/dist/commands/add.js.map +2 -2
- package/dist/commands/analyzer.js +134 -23
- package/dist/commands/analyzer.js.map +2 -2
- package/dist/commands/audit.js +6 -6
- package/dist/commands/audit.js.map +2 -2
- package/dist/commands/changeset-verify.js +55 -0
- package/dist/commands/changeset-verify.js.map +7 -0
- package/dist/commands/changeset.js +261 -147
- package/dist/commands/changeset.js.map +2 -2
- package/dist/commands/delete.js +52 -19
- package/dist/commands/delete.js.map +3 -3
- package/dist/commands/element.js +3 -2
- package/dist/commands/element.js.map +2 -2
- package/dist/commands/farm.js +773 -0
- package/dist/commands/farm.js.map +7 -0
- package/dist/commands/init.js +11 -1
- package/dist/commands/init.js.map +2 -2
- package/dist/commands/mcp.js +122 -0
- package/dist/commands/mcp.js.map +7 -0
- package/dist/commands/relationship.js +251 -47
- package/dist/commands/relationship.js.map +2 -2
- package/dist/commands/reports.js +1 -1
- package/dist/commands/reports.js.map +2 -2
- package/dist/commands/update.js +56 -24
- package/dist/commands/update.js.map +2 -2
- package/dist/commands/upgrade.js +99 -11
- package/dist/commands/upgrade.js.map +3 -3
- package/dist/commands/validate.js +41 -3
- package/dist/commands/validate.js.map +2 -2
- package/dist/commands/version.js +2 -2
- package/dist/commands/version.js.map +2 -2
- package/dist/commands/visualize.js +4 -3
- package/dist/commands/visualize.js.map +2 -2
- package/dist/config.js +83 -0
- package/dist/config.js.map +7 -0
- package/dist/core/annotation-store.js +138 -0
- package/dist/core/annotation-store.js.map +7 -0
- package/dist/core/catalog-migration.js +33 -0
- package/dist/core/catalog-migration.js.map +7 -0
- package/dist/core/changeset-analysis.js +421 -0
- package/dist/core/changeset-analysis.js.map +7 -0
- package/dist/core/changeset-base-index.js +153 -0
- package/dist/core/changeset-base-index.js.map +7 -0
- package/dist/core/changeset-brief-delta.js +102 -0
- package/dist/core/changeset-brief-delta.js.map +7 -0
- package/dist/core/changeset-graph.js +281 -0
- package/dist/core/changeset-graph.js.map +7 -0
- package/dist/core/changeset-only-guard.js +32 -0
- package/dist/core/changeset-only-guard.js.map +7 -0
- package/dist/core/changeset-summary.js +68 -0
- package/dist/core/changeset-summary.js.map +7 -0
- package/dist/core/changeset-validator.js +66 -20
- package/dist/core/changeset-validator.js.map +2 -2
- package/dist/core/changeset-verify.js +518 -0
- package/dist/core/changeset-verify.js.map +7 -0
- package/dist/core/changeset.js +56 -9
- package/dist/core/changeset.js.map +2 -2
- package/dist/core/element-type-migration.js +145 -0
- package/dist/core/element-type-migration.js.map +7 -0
- package/dist/core/farm-manifest.js +140 -0
- package/dist/core/farm-manifest.js.map +7 -0
- package/dist/core/farm-sync-engine.js +346 -0
- package/dist/core/farm-sync-engine.js.map +7 -0
- package/dist/core/farm-sync-state.js +167 -0
- package/dist/core/farm-sync-state.js.map +7 -0
- package/dist/core/manifest.js +6 -3
- package/dist/core/manifest.js.map +2 -2
- package/dist/core/migration-registry.js +84 -1
- package/dist/core/migration-registry.js.map +2 -2
- package/dist/core/model-upgrade.js +102 -0
- package/dist/core/model-upgrade.js.map +7 -0
- package/dist/core/model.js +257 -44
- package/dist/core/model.js.map +3 -3
- package/dist/core/mutation-handler.js +71 -6
- package/dist/core/mutation-handler.js.map +2 -2
- package/dist/core/relationship-migration-table.js +6639 -0
- package/dist/core/relationship-migration-table.js.map +7 -0
- package/dist/core/relationship-migration.js +272 -0
- package/dist/core/relationship-migration.js.map +7 -0
- package/dist/core/relationship-prune.js +49 -0
- package/dist/core/relationship-prune.js.map +7 -0
- package/dist/core/relationship-staging.js +68 -0
- package/dist/core/relationship-staging.js.map +7 -0
- package/dist/core/relationships.js +26 -4
- package/dist/core/relationships.js.map +2 -2
- package/dist/core/report-data-model.js +7 -13
- package/dist/core/report-data-model.js.map +2 -2
- package/dist/core/staged-changeset-storage.js +64 -17
- package/dist/core/staged-changeset-storage.js.map +2 -2
- package/dist/core/staged-source-reference.js +28 -0
- package/dist/core/staged-source-reference.js.map +7 -0
- package/dist/core/staging-area.js +83 -18
- package/dist/core/staging-area.js.map +2 -2
- package/dist/core/virtual-projection.js +14 -5
- package/dist/core/virtual-projection.js.map +2 -2
- package/dist/export/archimate-exporter.js +1 -0
- package/dist/export/archimate-exporter.js.map +2 -2
- package/dist/generated/compiled-validators.js +2 -2
- package/dist/generated/compiled-validators.js.map +2 -2
- package/dist/generated/layer-registry.js +16 -16
- package/dist/generated/layer-registry.js.map +2 -2
- package/dist/generated/node-types.js +186 -168
- package/dist/generated/node-types.js.map +2 -2
- package/dist/generated/relationship-index.js +2209 -7727
- package/dist/generated/relationship-index.js.map +2 -2
- package/dist/integrations/claude_code/agents/dr-architect.md +16 -3
- package/dist/integrations/claude_code/agents/dr-extractor.md +1 -1
- package/dist/integrations/claude_code/commands/dr-analyzer.md +565 -0
- package/dist/integrations/claude_code/commands/dr-map.md +13 -0
- package/dist/integrations/claude_code/commands/dr-plan.md +40 -0
- package/dist/integrations/claude_code/commands/dr-relate.md +106 -96
- package/dist/integrations/claude_code/commands/dr-verify.md +45 -2
- package/dist/integrations/claude_code/docs/END_TO_END_WALKTHROUGH.md +14 -0
- package/dist/integrations/claude_code/docs/MCP_SERVER.md +79 -0
- package/dist/integrations/claude_code/docs/QUICK_START.md +37 -8
- package/dist/integrations/claude_code/docs/README.md +52 -1
- package/dist/integrations/claude_code/skills/dr_01_motivation_layer/SKILL.md +93 -72
- package/dist/integrations/claude_code/skills/dr_02_business_layer/SKILL.md +163 -126
- package/dist/integrations/claude_code/skills/dr_03_product_layer/SKILL.md +161 -126
- package/dist/integrations/claude_code/skills/dr_04_security_layer/SKILL.md +153 -133
- package/dist/integrations/claude_code/skills/dr_05_application_layer/SKILL.md +129 -100
- package/dist/integrations/claude_code/skills/dr_06_technology_layer/SKILL.md +111 -94
- package/dist/integrations/claude_code/skills/dr_07_api_layer/SKILL.md +143 -157
- package/dist/integrations/claude_code/skills/dr_08_data_model_layer/SKILL.md +117 -33
- package/dist/integrations/claude_code/skills/dr_09_dataset_layer/SKILL.md +74 -25
- package/dist/integrations/claude_code/skills/dr_10_ux_layer/SKILL.md +88 -12
- package/dist/integrations/claude_code/skills/dr_11_navigation_layer/SKILL.md +83 -24
- package/dist/integrations/claude_code/skills/dr_12_apm_layer/SKILL.md +57 -12
- package/dist/integrations/claude_code/skills/dr_13_testing_layer/SKILL.md +92 -15
- package/dist/integrations/claude_code/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/claude_code/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/claude_code/skills/dr_engineering_guide/SKILL.md +1 -1
- package/dist/integrations/github_copilot/agents/dr-architect.md +1 -1
- package/dist/integrations/github_copilot/skills/dr_01_motivation_layer/SKILL.md +182 -102
- package/dist/integrations/github_copilot/skills/dr_02_business_layer/SKILL.md +266 -148
- package/dist/integrations/github_copilot/skills/dr_03_product_layer/SKILL.md +547 -86
- package/dist/integrations/github_copilot/skills/dr_04_security_layer/SKILL.md +164 -169
- package/dist/integrations/github_copilot/skills/dr_05_application_layer/SKILL.md +420 -150
- package/dist/integrations/github_copilot/skills/dr_06_technology_layer/SKILL.md +331 -138
- package/dist/integrations/github_copilot/skills/dr_07_api_layer/SKILL.md +265 -201
- package/dist/integrations/github_copilot/skills/dr_08_data_model_layer/SKILL.md +181 -58
- package/dist/integrations/github_copilot/skills/dr_09_dataset_layer/SKILL.md +209 -57
- package/dist/integrations/github_copilot/skills/dr_10_ux_layer/SKILL.md +277 -112
- package/dist/integrations/github_copilot/skills/dr_11_navigation_layer/SKILL.md +219 -70
- package/dist/integrations/github_copilot/skills/dr_12_apm_layer/SKILL.md +189 -105
- package/dist/integrations/github_copilot/skills/dr_13_testing_layer/SKILL.md +222 -102
- package/dist/integrations/github_copilot/skills/dr_change_planning/SKILL.md +119 -0
- package/dist/integrations/github_copilot/skills/dr_changeset_reviewer/SKILL.md +3 -0
- package/dist/integrations/hash-utils.js.map +2 -2
- package/dist/mcp/api-key-manager.js +111 -0
- package/dist/mcp/api-key-manager.js.map +7 -0
- package/dist/mcp/changeset-only.js +34 -0
- package/dist/mcp/changeset-only.js.map +7 -0
- package/dist/mcp/http-transport.js +176 -0
- package/dist/mcp/http-transport.js.map +7 -0
- package/dist/mcp/resource-registry.js +97 -0
- package/dist/mcp/resource-registry.js.map +7 -0
- package/dist/mcp/tool-registry.js +60 -0
- package/dist/mcp/tool-registry.js.map +7 -0
- package/dist/mcp/tools/annotation-create.js +39 -0
- package/dist/mcp/tools/annotation-create.js.map +7 -0
- package/dist/mcp/tools/annotation-delete.js +29 -0
- package/dist/mcp/tools/annotation-delete.js.map +7 -0
- package/dist/mcp/tools/annotation-get.js +29 -0
- package/dist/mcp/tools/annotation-get.js.map +7 -0
- package/dist/mcp/tools/annotation-list.js +24 -0
- package/dist/mcp/tools/annotation-list.js.map +7 -0
- package/dist/mcp/tools/annotation-reply.js +34 -0
- package/dist/mcp/tools/annotation-reply.js.map +7 -0
- package/dist/mcp/tools/annotation-shared.js +10 -0
- package/dist/mcp/tools/annotation-shared.js.map +7 -0
- package/dist/mcp/tools/annotation-update.js +39 -0
- package/dist/mcp/tools/annotation-update.js.map +7 -0
- package/dist/mcp/tools/changeset-analysis-tools.js +78 -0
- package/dist/mcp/tools/changeset-analysis-tools.js.map +7 -0
- package/dist/mcp/tools/changeset-editing.js +184 -0
- package/dist/mcp/tools/changeset-editing.js.map +7 -0
- package/dist/mcp/tools/changeset-lifecycle.js +83 -0
- package/dist/mcp/tools/changeset-lifecycle.js.map +7 -0
- package/dist/mcp/tools/changeset-list.js +33 -0
- package/dist/mcp/tools/changeset-list.js.map +7 -0
- package/dist/mcp/tools/changeset-shared.js +31 -0
- package/dist/mcp/tools/changeset-shared.js.map +7 -0
- package/dist/mcp/tools/changeset-show.js +55 -0
- package/dist/mcp/tools/changeset-show.js.map +7 -0
- package/dist/mcp/tools/changeset-verify.js +43 -0
- package/dist/mcp/tools/changeset-verify.js.map +7 -0
- package/dist/mcp/tools/chat-launch.js +50 -0
- package/dist/mcp/tools/chat-launch.js.map +7 -0
- package/dist/mcp/tools/chat-status.js +26 -0
- package/dist/mcp/tools/chat-status.js.map +7 -0
- package/dist/mcp/tools/index.js +65 -0
- package/dist/mcp/tools/index.js.map +7 -0
- package/dist/mcp/tools/model-add.js +107 -0
- package/dist/mcp/tools/model-add.js.map +7 -0
- package/dist/mcp/tools/model-delete.js +99 -0
- package/dist/mcp/tools/model-delete.js.map +7 -0
- package/dist/mcp/tools/model-export.js +72 -0
- package/dist/mcp/tools/model-export.js.map +7 -0
- package/dist/mcp/tools/model-info.js +51 -0
- package/dist/mcp/tools/model-info.js.map +7 -0
- package/dist/mcp/tools/model-list.js +53 -0
- package/dist/mcp/tools/model-list.js.map +7 -0
- package/dist/mcp/tools/model-reload.js +34 -0
- package/dist/mcp/tools/model-reload.js.map +7 -0
- package/dist/mcp/tools/model-search.js +102 -0
- package/dist/mcp/tools/model-search.js.map +7 -0
- package/dist/mcp/tools/model-show.js +68 -0
- package/dist/mcp/tools/model-show.js.map +7 -0
- package/dist/mcp/tools/model-stats.js +22 -0
- package/dist/mcp/tools/model-stats.js.map +7 -0
- package/dist/mcp/tools/model-trace.js +118 -0
- package/dist/mcp/tools/model-trace.js.map +7 -0
- package/dist/mcp/tools/model-update.js +121 -0
- package/dist/mcp/tools/model-update.js.map +7 -0
- package/dist/mcp/tools/model-validate.js +78 -0
- package/dist/mcp/tools/model-validate.js.map +7 -0
- package/dist/mcp/tools/relationship-tools.js +98 -0
- package/dist/mcp/tools/relationship-tools.js.map +7 -0
- package/dist/mcp/tools/shared.js +126 -0
- package/dist/mcp/tools/shared.js.map +7 -0
- package/dist/mcp/tools/spec-type.js +90 -0
- package/dist/mcp/tools/spec-type.js.map +7 -0
- package/dist/reports/model-layer-report-generator.js +5 -3
- package/dist/reports/model-layer-report-generator.js.map +2 -2
- package/dist/reports/model-readme-generator.js +116 -0
- package/dist/reports/model-readme-generator.js.map +7 -0
- package/dist/reports/model-report-data.js +37 -1
- package/dist/reports/model-report-data.js.map +2 -2
- package/dist/reports/model-report-orchestrator.js +29 -6
- package/dist/reports/model-report-orchestrator.js.map +2 -2
- package/dist/reports/model-report-utils.js +9 -0
- package/dist/reports/model-report-utils.js.map +7 -0
- package/dist/schemas/bundled/analyzers/cbm.json +1186 -68
- package/dist/schemas/bundled/analyzers/manifest.json +2 -2
- package/dist/schemas/bundled/api.json +1029 -1658
- package/dist/schemas/bundled/apm.json +499 -734
- package/dist/schemas/bundled/application.json +745 -370
- package/dist/schemas/bundled/base.json +3 -220
- package/dist/schemas/bundled/business.json +452 -366
- package/dist/schemas/bundled/data-model.json +403 -383
- package/dist/schemas/bundled/data-store.json +334 -558
- package/dist/schemas/bundled/manifest.json +18 -18
- package/dist/schemas/bundled/motivation.json +349 -368
- package/dist/schemas/bundled/navigation.json +415 -731
- package/dist/schemas/bundled/product.json +325 -159
- package/dist/schemas/bundled/security.json +864 -1232
- package/dist/schemas/bundled/technology.json +574 -703
- package/dist/schemas/bundled/testing.json +718 -1643
- package/dist/schemas/bundled/ux.json +739 -1352
- package/dist/server/schemas.js +8 -0
- package/dist/server/schemas.js.map +2 -2
- package/dist/server/server.js +234 -31
- package/dist/server/server.js.map +2 -2
- package/dist/server-entry.js +2 -1
- package/dist/server-entry.js.map +2 -2
- package/dist/telemetry/config.js +2 -40
- package/dist/telemetry/config.js.map +2 -2
- package/dist/telemetry/index.js +1 -1
- package/dist/types/index.js.map +2 -2
- package/dist/utils/ansi-suppressor.js +23 -0
- package/dist/utils/ansi-suppressor.js.map +7 -0
- package/dist/utils/attribute-patch.js +41 -0
- package/dist/utils/attribute-patch.js.map +7 -0
- package/dist/utils/color-utils.js +34 -0
- package/dist/utils/color-utils.js.map +7 -0
- package/dist/utils/element-reference-shape.js +15 -1
- package/dist/utils/element-reference-shape.js.map +3 -3
- package/dist/utils/error-hints.js +29 -0
- package/dist/utils/error-hints.js.map +7 -0
- package/dist/utils/errors.js +75 -10
- package/dist/utils/errors.js.map +2 -2
- package/dist/utils/globals.js +17 -1
- package/dist/utils/globals.js.map +2 -2
- package/dist/utils/project-paths.js +50 -3
- package/dist/utils/project-paths.js.map +2 -2
- package/dist/utils/reference-path-parser.js +49 -0
- package/dist/utils/reference-path-parser.js.map +7 -0
- package/dist/utils/source-reference.js +17 -10
- package/dist/utils/source-reference.js.map +2 -2
- package/dist/utils/spec-version.js +10 -2
- package/dist/utils/spec-version.js.map +2 -2
- package/dist/validators/composed-reference-validator.js +240 -0
- package/dist/validators/composed-reference-validator.js.map +7 -0
- package/dist/validators/reference-validator.js +57 -13
- package/dist/validators/reference-validator.js.map +3 -3
- package/dist/validators/relationship-schema-validator.js +33 -5
- package/dist/validators/relationship-schema-validator.js.map +3 -3
- package/dist/validators/schema-validator.js +27 -9
- package/dist/validators/schema-validator.js.map +2 -2
- package/dist/validators/types.js.map +1 -1
- package/dist/viewer/README.md +6 -6
- package/dist/viewer/assets/main-CxzcuU_o.js +84 -0
- package/dist/viewer/assets/main-j-7ULYpm.css +1 -0
- package/dist/viewer/index.html +2 -2
- package/dist/viewer/manifest.json +10 -10
- package/dist/viewer/version.json +1 -1
- package/package.json +7 -3
- package/dist/viewer/assets/main-B7AOQXXX.js +0 -81
- package/dist/viewer/assets/main-vdrFrG7q.css +0 -1
|
@@ -13,13 +13,13 @@ triggers:
|
|
|
13
13
|
"user experience",
|
|
14
14
|
"state machine"
|
|
15
15
|
]
|
|
16
|
-
version: 0.8.
|
|
16
|
+
version: 0.8.3
|
|
17
17
|
---
|
|
18
18
|
|
|
19
19
|
# UX Layer Skill
|
|
20
20
|
|
|
21
21
|
**Layer Number:** 09
|
|
22
|
-
**Specification:** Metadata Model Spec v0.8.
|
|
22
|
+
**Specification:** Metadata Model Spec v0.8.3
|
|
23
23
|
**Purpose:** Defines user experience using Three-Tier Architecture, specifying views, components, state machines, and interactions.
|
|
24
24
|
|
|
25
25
|
---
|
|
@@ -28,11 +28,10 @@ version: 0.8.1
|
|
|
28
28
|
|
|
29
29
|
The UX Layer captures **user experience design**:
|
|
30
30
|
|
|
31
|
-
- **VIEWS** -
|
|
31
|
+
- **VIEWS** - Screens/pages, modals, dialogs, drawers, and panels
|
|
32
32
|
- **COMPONENTS** - UI components (forms, tables, charts, cards)
|
|
33
33
|
- **STATE MACHINES** - Experience states and transitions
|
|
34
34
|
- **ACTIONS** - Interactive elements (buttons, links, voice commands)
|
|
35
|
-
- **VALIDATION** - Client-side validation rules
|
|
36
35
|
- **LAYOUTS** - Layout configurations (grid, flex, etc.)
|
|
37
36
|
|
|
38
37
|
This layer uses **Three-Tier Architecture** (v0.5.0+):
|
|
@@ -41,7 +40,19 @@ This layer uses **Three-Tier Architecture** (v0.5.0+):
|
|
|
41
40
|
2. **Application Tier** - Application-wide configuration
|
|
42
41
|
3. **Experience Tier** - Experience-specific views and flows
|
|
43
42
|
|
|
44
|
-
**Central Entity:** The **View** (
|
|
43
|
+
**Central Entity:** The **View** (page, modal, dialog, drawer, or panel) is the core modeling unit.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## When to Use This Skill
|
|
48
|
+
|
|
49
|
+
Activate when the user:
|
|
50
|
+
|
|
51
|
+
- Mentions "UX", "UI", "view", "screen", "component", "form"
|
|
52
|
+
- Wants to define user interfaces or user experiences
|
|
53
|
+
- Asks about state machines, transitions, or user flows
|
|
54
|
+
- Needs to model screens, forms, or interactive elements
|
|
55
|
+
- Wants to link UX to navigation, APIs, or business processes
|
|
45
56
|
|
|
46
57
|
---
|
|
47
58
|
|
|
@@ -50,7 +61,7 @@ This layer uses **Three-Tier Architecture** (v0.5.0+):
|
|
|
50
61
|
> **CLI Introspection:** Run `dr schema types ux` for the authoritative, always-current list of node types.
|
|
51
62
|
> Run `dr schema node <type-id>` for full attribute details on any type.
|
|
52
63
|
|
|
53
|
-
### Three-Tier Architecture (
|
|
64
|
+
### Three-Tier Architecture (22 entities)
|
|
54
65
|
|
|
55
66
|
**Library Tier:**
|
|
56
67
|
|
|
@@ -59,6 +70,10 @@ This layer uses **Three-Tier Architecture** (v0.5.0+):
|
|
|
59
70
|
- **LibrarySubView** - Reusable component groupings
|
|
60
71
|
- **StatePattern** - Reusable state machine patterns
|
|
61
72
|
- **ActionPattern** - Reusable action definitions
|
|
73
|
+
- **StateActionTemplate** - Reusable template for state lifecycle actions (required: `action`)
|
|
74
|
+
- **TransitionTemplate** - Reusable template for state transitions (required: `to`, `trigger`)
|
|
75
|
+
- **TableColumn** - Column definition for table components (required: `header`, `field`)
|
|
76
|
+
- **ChartSeries** - Data series configuration for chart components (required: `label`, `dataField`)
|
|
62
77
|
|
|
63
78
|
**Application Tier:**
|
|
64
79
|
|
|
@@ -67,43 +82,146 @@ This layer uses **Three-Tier Architecture** (v0.5.0+):
|
|
|
67
82
|
**Experience Tier:**
|
|
68
83
|
|
|
69
84
|
- **UXSpec** - Container for experience specification
|
|
70
|
-
- **View** -
|
|
85
|
+
- **View** - Screen/page/modal/dialog/drawer/panel (required: `type`)
|
|
71
86
|
- **SubView** - Component grouping within view
|
|
72
87
|
- **ComponentInstance** - Instance of library component
|
|
73
|
-
- **
|
|
88
|
+
- **ComponentReference** - Reference to a library component by ID (required: `ref`)
|
|
89
|
+
- **ActionComponent** - Interactive element (button, link, voice command)
|
|
74
90
|
- **ExperienceState** - State in state machine
|
|
75
91
|
- **StateAction** - Action during state lifecycle
|
|
76
92
|
- **StateTransition** - Transition between states
|
|
77
|
-
- **
|
|
93
|
+
- **LayoutConfig** - Layout configuration for views and components (required: `type`)
|
|
94
|
+
- **DataConfig** - Data binding configuration (required: `source`, `target`)
|
|
95
|
+
- **ErrorConfig** - Error handling configuration for components
|
|
78
96
|
|
|
79
97
|
---
|
|
80
98
|
|
|
81
|
-
##
|
|
99
|
+
## Type Decision Tree
|
|
82
100
|
|
|
83
|
-
|
|
101
|
+
Use this decision tree **before assigning a type** to any UX element.
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
```
|
|
104
|
+
LIBRARY TIER — reusable, cross-experience artifacts
|
|
105
|
+
├── Component library container? → ux.uxlibrary
|
|
106
|
+
├── Reusable UI component type (form, table, chart, card)? → ux.librarycomponent
|
|
107
|
+
├── Reusable grouping of components? → ux.librarysubview
|
|
108
|
+
├── Reusable state machine pattern? → ux.statepattern
|
|
109
|
+
├── Reusable action definition? → ux.actionpattern
|
|
110
|
+
├── Reusable parameterized state action template? → ux.stateactiontemplate
|
|
111
|
+
│ (no lifecycle binding; has parameters array)
|
|
112
|
+
├── Reusable transition template with animation? → ux.transitiontemplate
|
|
113
|
+
│ (has animationType/duration/easing; both `to` and `trigger` required)
|
|
114
|
+
├── Column definition for a table component? → ux.tablecolumn
|
|
115
|
+
└── Data series definition for a chart component? → ux.chartseries
|
|
116
|
+
|
|
117
|
+
APPLICATION TIER — app-wide UX configuration
|
|
118
|
+
└── Application-wide UX configuration (channel required)? → ux.uxapplication
|
|
119
|
+
|
|
120
|
+
EXPERIENCE TIER — specific to a view or experience
|
|
121
|
+
├── Top-level experience specification container? → ux.uxspec
|
|
122
|
+
├── Screen, page, modal, dialog, drawer, or panel? → ux.view
|
|
123
|
+
│ (required: type enum — page|modal|dialog|drawer|panel|overlay|embedded|full-screen)
|
|
124
|
+
├── Section or grouping within a view? → ux.subview
|
|
125
|
+
├── Placed instance of a component on a view? → ux.componentinstance
|
|
126
|
+
│ (has `order` for positioning and `props` for overrides)
|
|
127
|
+
├── Typed reference to a component by slot or variant? → ux.componentreference
|
|
128
|
+
│ (ref required; use when targeting a specific variant or slot, not placement)
|
|
129
|
+
├── Interactive element (button, link, voice command)? → ux.actioncomponent
|
|
130
|
+
├── State in an experience state machine? → ux.experiencestate
|
|
131
|
+
├── Concrete action bound to a state lifecycle? → ux.stateaction
|
|
132
|
+
│ (has lifecycle: on-enter|on-exit|on-transition and timing; no parameters)
|
|
133
|
+
├── Concrete transition with trigger and optional guard? → ux.statetransition
|
|
134
|
+
│ (trigger required; has guard conditions and inline actions; no animation)
|
|
135
|
+
├── Layout configuration (grid, flex, block, etc.)? → ux.layoutconfig
|
|
136
|
+
├── Data binding configuration (source → target)? → ux.dataconfig
|
|
137
|
+
└── Error handling configuration? → ux.errorconfig
|
|
138
|
+
```
|
|
90
139
|
|
|
91
140
|
---
|
|
92
141
|
|
|
93
|
-
##
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- `
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
142
|
+
## Intra-Layer Relationships
|
|
143
|
+
|
|
144
|
+
Placement is `composes`: a view composes its sub-views, instances and action components, and an
|
|
145
|
+
instance composes its nested instances, slots, chart series and table columns. Instances and placed
|
|
146
|
+
sub-views `realizes` their library definition. Elements `applies` their layout, `binds-to` their data
|
|
147
|
+
config and `uses` their error config. A state composes its outgoing transitions, which `flows-to`
|
|
148
|
+
the next state. UX reaches other layers only through the interfaces and features a view realizes,
|
|
149
|
+
the operations an action triggers and the data a data config maps to.
|
|
150
|
+
|
|
151
|
+
| Source Type | Predicate | Target Type | Example |
|
|
152
|
+
| ------------------ | ------------ | ------------------- | ------------------------------------------------------------- |
|
|
153
|
+
| UXApplication | aggregates | UXSpec | "Storefront Web" aggregates the "Checkout Experience" spec |
|
|
154
|
+
| UXSpec | aggregates | View | "Checkout Experience" aggregates the "Cart" view |
|
|
155
|
+
| UXSpec | aggregates | ExperienceState | "Checkout Experience" aggregates the "Payment Pending" state |
|
|
156
|
+
| UXSpec | uses | UXLibrary | "Checkout Experience" uses the "Design System" library |
|
|
157
|
+
| UXLibrary | aggregates | LibraryComponent | "Design System" aggregates "Data Table" |
|
|
158
|
+
| UXLibrary | aggregates | LibrarySubView | "Design System" aggregates "Address Form Group" |
|
|
159
|
+
| View | composes | SubView | "Cart" view composes the "Order Summary" panel |
|
|
160
|
+
| View | composes | ComponentInstance | "Cart" view composes "Cart Items Table" |
|
|
161
|
+
| View | composes | ActionComponent | "Cart" view composes the "Checkout" button |
|
|
162
|
+
| View | applies | LayoutConfig | "Cart" view applies the "Two-Column Grid" layout |
|
|
163
|
+
| View | binds-to | DataConfig | "Cart" view binds to "Cart Data" |
|
|
164
|
+
| View | uses | ErrorConfig | "Cart" view uses "Cart Load Error" |
|
|
165
|
+
| SubView | realizes | LibrarySubView | "Shipping Address" section realizes "Address Form Group" |
|
|
166
|
+
| SubView | composes | ComponentInstance | "Order Summary" panel composes "Totals Card" |
|
|
167
|
+
| ComponentInstance | realizes | LibraryComponent | "Cart Items Table" realizes "Data Table" |
|
|
168
|
+
| ComponentInstance | binds-to | DataConfig | "Cart Items Table" binds to "Cart Data" |
|
|
169
|
+
| ComponentInstance | composes | TableColumn | "Cart Items Table" composes the "Quantity" column |
|
|
170
|
+
| ComponentInstance | composes | ChartSeries | "Revenue Chart" composes the "Monthly Revenue" series |
|
|
171
|
+
| ComponentReference | references | LibraryComponent | "Primary Button Slot" references "Button" (variant `primary`) |
|
|
172
|
+
| LibraryComponent | composes | LibraryComponent | "Data Table" composes "Pagination Bar" |
|
|
173
|
+
| LibraryComponent | specializes | LibraryComponent | "Currency Input" specializes "Text Input" |
|
|
174
|
+
| LibraryComponent | uses | StatePattern | "Data Table" uses the "Loading / Loaded / Error" pattern |
|
|
175
|
+
| ActionPattern | governs | ActionComponent | The "Submit" action pattern governs the "Checkout" button |
|
|
176
|
+
| ActionComponent | triggers | StateTransition | "Checkout" button triggers "Begin Payment" |
|
|
177
|
+
| ActionComponent | navigates-to | View | "Continue Shopping" link navigates to the "Catalog" view |
|
|
178
|
+
| ExperienceState | composes | StateTransition | "Cart Ready" composes "Begin Payment" |
|
|
179
|
+
| StateTransition | flows-to | ExperienceState | "Begin Payment" flows to "Payment Pending" |
|
|
180
|
+
| StateTransition | triggers | StateAction | "Begin Payment" triggers "Disable Checkout Button" |
|
|
181
|
+
| StateAction | realizes | StateActionTemplate | "Show Spinner" realizes the "Show Loading Indicator" template |
|
|
182
|
+
| StatePattern | aggregates | ExperienceState | "Loading / Loaded / Error" aggregates "Loading" |
|
|
183
|
+
| StateTransition | uses | TransitionTemplate | "Open Cart" uses the "Slide-In Drawer" template |
|
|
184
|
+
| DataConfig | uses | ErrorConfig | "Cart Data" uses the "Cart Load Error" config |
|
|
102
185
|
|
|
103
|
-
|
|
186
|
+
---
|
|
104
187
|
|
|
105
|
-
-
|
|
106
|
-
|
|
188
|
+
## Cross-Layer References
|
|
189
|
+
|
|
190
|
+
### Outgoing References (UX → Other Layers)
|
|
191
|
+
|
|
192
|
+
| Source Type | Predicate | Target Type | Example |
|
|
193
|
+
| ---------------- | ---------- | ---------------------------------- | --------------------------------------------------------------- |
|
|
194
|
+
| View | realizes | `product.feature` | "Cart" view realizes the "Shopping Cart" feature |
|
|
195
|
+
| View | references | `business.businessobject` | "Order Detail" view references the "Order" business object |
|
|
196
|
+
| View | realizes | `application.applicationinterface` | "Cart" view realizes the "Storefront Web UI" interface |
|
|
197
|
+
| View | satisfies | `motivation.requirement` | "Checkout" view satisfies "Guest checkout must be supported" |
|
|
198
|
+
| View | requires | `security.permission` | "Admin Orders" view requires the `orders:read` permission |
|
|
199
|
+
| View | serves | `business.businessrole` | "Admin Orders" view serves the "Fulfillment Clerk" role |
|
|
200
|
+
| ActionComponent | triggers | `api.operation` | "Place Order" button triggers `POST /orders` |
|
|
201
|
+
| ActionComponent | requires | `security.permission` | "Refund" button requires the `orders:refund` permission |
|
|
202
|
+
| StateAction | triggers | `api.operation` | "Load Cart" on-enter action triggers `GET /cart` |
|
|
203
|
+
| DataConfig | maps-to | `api.response` | "Cart Data" maps to the `GET /cart` 200 response |
|
|
204
|
+
| DataConfig | maps-to | `api.requestbody` | "Checkout Form Data" maps to the `POST /orders` request body |
|
|
205
|
+
| DataConfig | maps-to | `data-model.objectschema` | "Cart Data" maps to the "Cart" schema |
|
|
206
|
+
| TableColumn | maps-to | `data-model.schemaproperty` | "Quantity" column maps to the "quantity" property |
|
|
207
|
+
| TableColumn | references | `security.fieldaccesscontrol` | "Card Number" column references the "PAN Masking" control |
|
|
208
|
+
| ErrorConfig | references | `api.response` | "Payment Declined" references the `POST /payments` 402 response |
|
|
209
|
+
| LibraryComponent | depends-on | `technology.systemsoftware` | "Data Table" depends on "React 18" |
|
|
210
|
+
|
|
211
|
+
### Incoming References (Other Layers → UX)
|
|
212
|
+
|
|
213
|
+
| Source Type | Predicate | Target Type | Example |
|
|
214
|
+
| --------------------------------- | --------- | --------------- | --------------------------------------------------------------- |
|
|
215
|
+
| `navigation.route` | maps-to | View | `/cart` route maps to the "Cart" view |
|
|
216
|
+
| `navigation.navigationtransition` | triggers | StateTransition | "Cart → Checkout" transition triggers "Begin Payment" |
|
|
217
|
+
| `navigation.navigationguard` | triggers | ExperienceState | "Require Login" guard triggers the "Signed Out" state |
|
|
218
|
+
| `testing.testcasesketch` | tests | View | "Empty cart renders placeholder" tests the "Cart" view |
|
|
219
|
+
| `testing.testcasesketch` | tests | ActionComponent | "Checkout disabled when cart empty" tests the "Checkout" button |
|
|
220
|
+
| `apm.span` | monitors | View | "page.load /cart" span monitors the "Cart" view |
|
|
221
|
+
| `apm.metricinstrument` | monitors | ActionComponent | "checkout_click_count" monitors the "Checkout" button |
|
|
222
|
+
|
|
223
|
+
> Routing is modelled from the Navigation Layer: a `navigation.route` `maps-to` the view it shows,
|
|
224
|
+
> rather than the view pointing at the route.
|
|
107
225
|
|
|
108
226
|
---
|
|
109
227
|
|
|
@@ -111,11 +229,65 @@ Activate when the user:
|
|
|
111
229
|
|
|
112
230
|
1. **Reusability** - Use library components for consistency
|
|
113
231
|
2. **State machines** - Model complex flows with states/transitions
|
|
114
|
-
3. **
|
|
232
|
+
3. **Error handling** - Define error states, ErrorConfig, and recovery transitions
|
|
115
233
|
4. **Accessibility** - Consider accessibility requirements
|
|
116
234
|
5. **Responsive** - Design for multiple screen sizes
|
|
117
235
|
6. **Performance** - Set performance targets (load time, interaction latency)
|
|
118
|
-
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## React Flow / Graph Visualization Patterns
|
|
240
|
+
|
|
241
|
+
When the codebase uses a graph visualization library (React Flow, D3, Cytoscape), apply these patterns in addition to the standard UX decision tree.
|
|
242
|
+
|
|
243
|
+
### Configuration-Driven Node Renderer
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
// src/core/nodes/components/UnifiedNode.tsx
|
|
247
|
+
export function UnifiedNode({ data }: NodeProps<UnifiedNodeData>) {
|
|
248
|
+
const config = nodeConfigLoader.get(data.elementType);
|
|
249
|
+
return <div style={config.styles}>{data.name}</div>;
|
|
250
|
+
}
|
|
251
|
+
// src/core/nodes/nodeConfig.json ← drives all 20 node type styles
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
→ `UnifiedNode.tsx` → `ux.librarycomponent.unified-node` (type: graph-node)
|
|
255
|
+
→ `nodeConfig.json` → `data-model.objectschema.node-config`
|
|
256
|
+
→ Do NOT create 20 separate elements for each node type in the config — the configuration-driven system as a whole is one `librarycomponent`
|
|
257
|
+
|
|
258
|
+
### Custom Edge Type
|
|
259
|
+
|
|
260
|
+
```tsx
|
|
261
|
+
// src/core/edges/ElbowEdge.tsx
|
|
262
|
+
export function ElbowEdge(props: EdgeProps) { ... }
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
→ `ux.librarycomponent.elbow-edge` (type: graph-edge)
|
|
266
|
+
→ Each distinct custom edge type → one `librarycomponent`
|
|
267
|
+
|
|
268
|
+
### Layer Container / Swimlane Node
|
|
269
|
+
|
|
270
|
+
```tsx
|
|
271
|
+
// src/core/nodes/LayerContainerNode.tsx
|
|
272
|
+
export function LayerContainerNode({ data }: NodeProps) { ... }
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
→ `ux.librarycomponent.layer-container-node` (type: graph-container)
|
|
276
|
+
|
|
277
|
+
### Graph Canvas Component
|
|
278
|
+
|
|
279
|
+
```tsx
|
|
280
|
+
// src/core/components/GraphViewer.tsx
|
|
281
|
+
export function GraphViewer({ nodes, edges }) {
|
|
282
|
+
return <ReactFlow nodeTypes={nodeTypes} edgeTypes={edgeTypes} />;
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
→ Already captured in the application layer as `ApplicationComponent`. Do NOT add it again as a UX element — the `ux.view.*` that represents the graph page already serves this purpose in the UX layer.
|
|
287
|
+
|
|
288
|
+
### Sub-components (field lists, tooltips, badges)
|
|
289
|
+
|
|
290
|
+
`FieldList.tsx`, `FieldTooltip.tsx`, `RelationshipBadge.tsx`, `BadgeRenderer.tsx` are internal implementation details of `UnifiedNode`. Do NOT add them as separate `librarycomponent` entries.
|
|
119
291
|
|
|
120
292
|
---
|
|
121
293
|
|
|
@@ -123,99 +295,61 @@ Activate when the user:
|
|
|
123
295
|
|
|
124
296
|
```bash
|
|
125
297
|
# Add view
|
|
126
|
-
dr add ux view
|
|
298
|
+
dr add ux view "User Profile" --description "User profile page"
|
|
127
299
|
|
|
128
300
|
# Add component instance
|
|
129
|
-
dr add ux component-instance
|
|
301
|
+
dr add ux component-instance "Profile Form"
|
|
130
302
|
|
|
131
303
|
# List views
|
|
132
|
-
dr list ux view
|
|
304
|
+
dr list ux --type view
|
|
133
305
|
|
|
134
306
|
# Validate UX layer
|
|
135
|
-
dr validate --
|
|
307
|
+
dr validate --layers ux
|
|
136
308
|
|
|
137
309
|
# Export UX documentation
|
|
138
|
-
dr export --
|
|
310
|
+
dr export markdown --layers ux
|
|
139
311
|
```
|
|
140
312
|
|
|
141
313
|
---
|
|
142
314
|
|
|
143
|
-
## Example: Login
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
type
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
label: "Forgot password?"
|
|
182
|
-
navigation: /forgot-password
|
|
183
|
-
states:
|
|
184
|
-
- id: idle
|
|
185
|
-
initial: true
|
|
186
|
-
onEnter: []
|
|
187
|
-
- id: submitting
|
|
188
|
-
onEnter:
|
|
189
|
-
- action: disable-form
|
|
190
|
-
- action: show-spinner
|
|
191
|
-
- id: success
|
|
192
|
-
onEnter:
|
|
193
|
-
- action: navigate
|
|
194
|
-
target: /dashboard
|
|
195
|
-
- id: error
|
|
196
|
-
onEnter:
|
|
197
|
-
- action: show-error
|
|
198
|
-
- action: enable-form
|
|
199
|
-
transitions:
|
|
200
|
-
- from: idle
|
|
201
|
-
to: submitting
|
|
202
|
-
trigger: submit
|
|
203
|
-
- from: submitting
|
|
204
|
-
to: success
|
|
205
|
-
trigger: success
|
|
206
|
-
- from: submitting
|
|
207
|
-
to: error
|
|
208
|
-
trigger: failure
|
|
209
|
-
- from: error
|
|
210
|
-
to: idle
|
|
211
|
-
trigger: retry
|
|
212
|
-
motivation:
|
|
213
|
-
supports-goals:
|
|
214
|
-
- motivation.goal.user-authentication
|
|
215
|
-
api:
|
|
216
|
-
operationId: login
|
|
217
|
-
navigation:
|
|
218
|
-
route-ref: navigation.route.login
|
|
315
|
+
## Example: Login Screen
|
|
316
|
+
|
|
317
|
+
A login page with a form component, state machine, and data binding:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# Add the view (page type, routable)
|
|
321
|
+
dr add ux view "Login" --description "Login page" --attributes '{"type":"page","routable":true}'
|
|
322
|
+
# → id: ux.view.login
|
|
323
|
+
|
|
324
|
+
# Add a form component from the library
|
|
325
|
+
dr add ux librarycomponent "Login Form" --description "Email/password form" --attributes '{"type":"form"}'
|
|
326
|
+
# → id: ux.librarycomponent.login-form
|
|
327
|
+
|
|
328
|
+
# Place the form as an instance on the login view
|
|
329
|
+
dr add ux componentinstance "Login Form Instance"
|
|
330
|
+
# → id: ux.componentinstance.login-form-instance
|
|
331
|
+
|
|
332
|
+
# Add states for the login flow
|
|
333
|
+
dr add ux experiencestate "Idle"
|
|
334
|
+
dr add ux experiencestate "Submitting"
|
|
335
|
+
dr add ux experiencestate "Error"
|
|
336
|
+
|
|
337
|
+
# Add a transition: click submit → submitting
|
|
338
|
+
dr add ux statetransition "Submit Clicked" --attributes '{"trigger":"click","to":"ux.experiencestate.submitting"}'
|
|
339
|
+
# → id: ux.statetransition.submit-clicked
|
|
340
|
+
|
|
341
|
+
# Add data config binding the form to the API
|
|
342
|
+
dr add ux dataconfig "Login Data" --attributes '{"source":"api","target":"ux.componentinstance.login-form-instance"}'
|
|
343
|
+
|
|
344
|
+
# Add error config for failed login
|
|
345
|
+
dr add ux errorconfig "Login Error" --description "Show inline error on auth failure"
|
|
346
|
+
|
|
347
|
+
# Wire the elements together
|
|
348
|
+
dr relationship add ux.view.login ux.componentinstance.login-form-instance --predicate composes
|
|
349
|
+
dr relationship add ux.componentinstance.login-form-instance ux.librarycomponent.login-form --predicate realizes
|
|
350
|
+
dr relationship add ux.statetransition.submit-clicked ux.experiencestate.submitting --predicate flows-to
|
|
351
|
+
dr relationship add ux.componentinstance.login-form-instance ux.dataconfig.login-data --predicate binds-to
|
|
352
|
+
dr relationship add ux.view.login ux.errorconfig.login-error --predicate uses
|
|
219
353
|
```
|
|
220
354
|
|
|
221
355
|
---
|
|
@@ -223,8 +357,39 @@ properties:
|
|
|
223
357
|
## Pitfalls to Avoid
|
|
224
358
|
|
|
225
359
|
- ❌ Not using library components (inconsistent UX)
|
|
226
|
-
- ❌ Missing validation rules (poor user experience)
|
|
227
360
|
- ❌ Complex state machines without documentation
|
|
228
361
|
- ❌ Not linking to API operations or navigation routes
|
|
229
362
|
- ❌ Missing error states and handling
|
|
230
363
|
- ❌ No performance targets defined
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Coverage Completeness Checklist
|
|
368
|
+
|
|
369
|
+
Before declaring UX layer extraction complete, verify each type was considered:
|
|
370
|
+
|
|
371
|
+
- [ ] **ux.uxlibrary** — Component library container
|
|
372
|
+
- [ ] **ux.librarycomponent** — Reusable UI component (form-field, table, chart, card)
|
|
373
|
+
- [ ] **ux.librarysubview** — Reusable grouping of components
|
|
374
|
+
- [ ] **ux.statepattern** — Reusable state machine pattern
|
|
375
|
+
- [ ] **ux.actionpattern** — Reusable action definition
|
|
376
|
+
- [ ] **ux.stateactiontemplate** — Reusable state action template
|
|
377
|
+
- [ ] **ux.transitiontemplate** — Reusable transition template
|
|
378
|
+
- [ ] **ux.tablecolumn** — Column definition for table components
|
|
379
|
+
- [ ] **ux.chartseries** — Data series configuration for chart components
|
|
380
|
+
- [ ] **ux.uxapplication** — Application-wide UX configuration
|
|
381
|
+
- [ ] **ux.uxspec** — Experience specification container
|
|
382
|
+
- [ ] **ux.view** — Screen, page, modal, dialog, drawer, or panel (required: `type`)
|
|
383
|
+
- [ ] **ux.subview** — Section or panel within a view
|
|
384
|
+
- [ ] **ux.componentinstance** — Instance of a library component on a view
|
|
385
|
+
- [ ] **ux.componentreference** — Reference to a library component by ID
|
|
386
|
+
- [ ] **ux.actioncomponent** — Interactive element (button, link, voice command)
|
|
387
|
+
- [ ] **ux.experiencestate** — State in experience state machine
|
|
388
|
+
- [ ] **ux.stateaction** — Action executed during a state lifecycle
|
|
389
|
+
- [ ] **ux.statetransition** — Transition between states
|
|
390
|
+
- [ ] **ux.layoutconfig** — Layout configuration (grid, flex, block, etc.)
|
|
391
|
+
- [ ] **ux.dataconfig** — Data binding configuration (source → target)
|
|
392
|
+
- [ ] **ux.errorconfig** — Error handling configuration
|
|
393
|
+
|
|
394
|
+
If any type has ZERO elements, explicitly decide:
|
|
395
|
+
"This type doesn't apply to this codebase" with reasoning.
|