opendevbrowser 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/README.md +32 -24
  2. package/dist/automation/coordinator.d.ts +61 -2
  3. package/dist/automation/coordinator.d.ts.map +1 -1
  4. package/dist/browser/browser-manager.d.ts +6 -1
  5. package/dist/browser/browser-manager.d.ts.map +1 -1
  6. package/dist/browser/canvas-manager.d.ts +4 -0
  7. package/dist/browser/canvas-manager.d.ts.map +1 -1
  8. package/dist/browser/manager-types.d.ts +6 -1
  9. package/dist/browser/manager-types.d.ts.map +1 -1
  10. package/dist/browser/ops-browser-manager.d.ts +6 -1
  11. package/dist/browser/ops-browser-manager.d.ts.map +1 -1
  12. package/dist/browser/screencast-recorder.d.ts.map +1 -1
  13. package/dist/browser/session-inspector.d.ts +39 -0
  14. package/dist/browser/session-inspector.d.ts.map +1 -1
  15. package/dist/canvas/document-store.d.ts +14 -5
  16. package/dist/canvas/document-store.d.ts.map +1 -1
  17. package/dist/canvas/starters/catalog.d.ts.map +1 -1
  18. package/dist/canvas/types.d.ts +120 -9
  19. package/dist/canvas/types.d.ts.map +1 -1
  20. package/dist/challenges/action-loop.d.ts +2 -1
  21. package/dist/challenges/action-loop.d.ts.map +1 -1
  22. package/dist/challenges/capture.d.ts +14 -0
  23. package/dist/challenges/capture.d.ts.map +1 -0
  24. package/dist/challenges/index.d.ts +3 -1
  25. package/dist/challenges/index.d.ts.map +1 -1
  26. package/dist/challenges/inspect-plan.d.ts +40 -0
  27. package/dist/challenges/inspect-plan.d.ts.map +1 -0
  28. package/dist/challenges/orchestrator.d.ts.map +1 -1
  29. package/dist/challenges/types.d.ts +34 -0
  30. package/dist/challenges/types.d.ts.map +1 -1
  31. package/dist/{chunk-YBQECXZX.js → chunk-3VA6XR25.js} +3 -3
  32. package/dist/chunk-3VA6XR25.js.map +1 -0
  33. package/dist/{chunk-W4IHGDXV.js → chunk-4KVXCXV3.js} +25778 -24279
  34. package/dist/chunk-4KVXCXV3.js.map +1 -0
  35. package/dist/{chunk-5FZQJRBQ.js → chunk-ZE2E7ZGH.js} +3013 -1010
  36. package/dist/chunk-ZE2E7ZGH.js.map +1 -0
  37. package/dist/cli/commands/challenge-automation-mode.d.ts +3 -0
  38. package/dist/cli/commands/challenge-automation-mode.d.ts.map +1 -0
  39. package/dist/cli/commands/inspiredesign.d.ts +25 -0
  40. package/dist/cli/commands/inspiredesign.d.ts.map +1 -0
  41. package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
  42. package/dist/cli/commands/nav/review-desktop.d.ts +7 -0
  43. package/dist/cli/commands/nav/review-desktop.d.ts.map +1 -0
  44. package/dist/cli/commands/nav/review-shared.d.ts +10 -0
  45. package/dist/cli/commands/nav/review-shared.d.ts.map +1 -0
  46. package/dist/cli/commands/nav/review.d.ts.map +1 -1
  47. package/dist/cli/commands/serve.d.ts.map +1 -1
  48. package/dist/cli/commands/session/inspector-audit.d.ts +7 -0
  49. package/dist/cli/commands/session/inspector-audit.d.ts.map +1 -0
  50. package/dist/cli/commands/session/inspector-plan.d.ts +7 -0
  51. package/dist/cli/commands/session/inspector-plan.d.ts.map +1 -0
  52. package/dist/cli/commands/session/inspector-shared.d.ts +11 -0
  53. package/dist/cli/commands/session/inspector-shared.d.ts.map +1 -0
  54. package/dist/cli/commands/session/inspector.d.ts +1 -11
  55. package/dist/cli/commands/session/inspector.d.ts.map +1 -1
  56. package/dist/cli/commands/status-capabilities.d.ts +7 -0
  57. package/dist/cli/commands/status-capabilities.d.ts.map +1 -0
  58. package/dist/cli/daemon-client.d.ts.map +1 -1
  59. package/dist/cli/daemon-commands.d.ts.map +1 -1
  60. package/dist/cli/daemon-status.d.ts +5 -0
  61. package/dist/cli/daemon-status.d.ts.map +1 -1
  62. package/dist/cli/daemon.d.ts +5 -0
  63. package/dist/cli/daemon.d.ts.map +1 -1
  64. package/dist/cli/help.d.ts +2 -0
  65. package/dist/cli/help.d.ts.map +1 -1
  66. package/dist/cli/index.js +660 -244
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli/remote-manager.d.ts +6 -0
  69. package/dist/cli/remote-manager.d.ts.map +1 -1
  70. package/dist/cli/utils/parse.d.ts +1 -0
  71. package/dist/cli/utils/parse.d.ts.map +1 -1
  72. package/dist/cli/utils/skills.d.ts +1 -1
  73. package/dist/cli/utils/skills.d.ts.map +1 -1
  74. package/dist/cli/utils/workflow-message.d.ts +3 -0
  75. package/dist/cli/utils/workflow-message.d.ts.map +1 -1
  76. package/dist/config.d.ts +1 -0
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/core/bootstrap.d.ts.map +1 -1
  79. package/dist/core/runtime-assemblies.d.ts +2 -1
  80. package/dist/core/runtime-assemblies.d.ts.map +1 -1
  81. package/dist/core/types.d.ts +1 -1
  82. package/dist/core/types.d.ts.map +1 -1
  83. package/dist/desktop/runtime.d.ts +1 -0
  84. package/dist/desktop/runtime.d.ts.map +1 -1
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +729 -448
  87. package/dist/index.js.map +1 -1
  88. package/dist/inspiredesign/handoff.d.ts +34 -0
  89. package/dist/inspiredesign/handoff.d.ts.map +1 -0
  90. package/dist/opendevbrowser.d.ts.map +1 -1
  91. package/dist/opendevbrowser.js +729 -448
  92. package/dist/opendevbrowser.js.map +1 -1
  93. package/dist/providers/browser-fallback.d.ts.map +1 -1
  94. package/dist/providers/constraint.d.ts +11 -0
  95. package/dist/providers/constraint.d.ts.map +1 -1
  96. package/dist/providers/cookie-source.d.ts +8 -0
  97. package/dist/providers/cookie-source.d.ts.map +1 -0
  98. package/dist/providers/index.d.ts.map +1 -1
  99. package/dist/providers/inspiredesign-capture.d.ts +17 -0
  100. package/dist/providers/inspiredesign-capture.d.ts.map +1 -0
  101. package/dist/providers/inspiredesign-contract.d.ts +110 -0
  102. package/dist/providers/inspiredesign-contract.d.ts.map +1 -0
  103. package/dist/providers/renderer.d.ts +23 -0
  104. package/dist/providers/renderer.d.ts.map +1 -1
  105. package/dist/providers/runtime-bundle.d.ts +2 -1
  106. package/dist/providers/runtime-bundle.d.ts.map +1 -1
  107. package/dist/providers/runtime-factory.d.ts +4 -2
  108. package/dist/providers/runtime-factory.d.ts.map +1 -1
  109. package/dist/providers/shopping/index.d.ts +1 -1
  110. package/dist/providers/types.d.ts +3 -2
  111. package/dist/providers/types.d.ts.map +1 -1
  112. package/dist/providers/workflow-contracts.d.ts +1 -1
  113. package/dist/providers/workflow-contracts.d.ts.map +1 -1
  114. package/dist/providers/workflow-handoff.d.ts +14 -0
  115. package/dist/providers/workflow-handoff.d.ts.map +1 -0
  116. package/dist/providers/workflows.d.ts +21 -2
  117. package/dist/providers/workflows.d.ts.map +1 -1
  118. package/dist/{providers-G36AM3Z2.js → providers-ZIVHHH4F.js} +6 -2
  119. package/dist/public-surface/generated-manifest.d.ts +143 -7
  120. package/dist/public-surface/generated-manifest.d.ts.map +1 -1
  121. package/dist/public-surface/source.d.ts +102 -3
  122. package/dist/public-surface/source.d.ts.map +1 -1
  123. package/dist/relay/protocol.d.ts +1 -1
  124. package/dist/relay/protocol.d.ts.map +1 -1
  125. package/dist/relay/relay-server.d.ts +1 -0
  126. package/dist/relay/relay-server.d.ts.map +1 -1
  127. package/dist/skills/skill-loader.js +1 -1
  128. package/dist/tools/automation-shared.d.ts +6 -0
  129. package/dist/tools/automation-shared.d.ts.map +1 -0
  130. package/dist/tools/index.d.ts.map +1 -1
  131. package/dist/tools/inspiredesign_run.d.ts +4 -0
  132. package/dist/tools/inspiredesign_run.d.ts.map +1 -0
  133. package/dist/tools/review_desktop.d.ts +4 -0
  134. package/dist/tools/review_desktop.d.ts.map +1 -0
  135. package/dist/tools/session_inspector.d.ts.map +1 -1
  136. package/dist/tools/session_inspector_audit.d.ts +4 -0
  137. package/dist/tools/session_inspector_audit.d.ts.map +1 -0
  138. package/dist/tools/session_inspector_plan.d.ts +4 -0
  139. package/dist/tools/session_inspector_plan.d.ts.map +1 -0
  140. package/dist/tools/status_capabilities.d.ts +4 -0
  141. package/dist/tools/status_capabilities.d.ts.map +1 -0
  142. package/extension/dist/background.js +70 -10
  143. package/extension/dist/canvas/canvas-runtime.js +14 -1
  144. package/extension/dist/ops/ops-runtime.js +18 -1
  145. package/extension/dist/popup.js +29 -16
  146. package/extension/dist/services/ConnectionManager.js +27 -2
  147. package/extension/manifest.json +1 -1
  148. package/extension/popup.html +11 -0
  149. package/package.json +5 -5
  150. package/skills/AGENTS.md +2 -2
  151. package/skills/opendevbrowser-best-practices/SKILL.md +50 -15
  152. package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +31 -12
  153. package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +64 -15
  154. package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +4 -0
  155. package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +11 -10
  156. package/skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json +28 -22
  157. package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +18 -17
  158. package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +135 -17
  159. package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +55 -8
  160. package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +18 -4
  161. package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +16 -4
  162. package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +3 -1
  163. package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +68 -25
  164. package/skills/opendevbrowser-design-agent/SKILL.md +9 -4
  165. package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +15 -6
  166. package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +18 -17
  167. package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +11 -0
  168. package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +57 -0
  169. package/skills/opendevbrowser-product-presentation-asset/SKILL.md +2 -2
  170. package/dist/chunk-5FZQJRBQ.js.map +0 -1
  171. package/dist/chunk-W4IHGDXV.js.map +0 -1
  172. package/dist/chunk-YBQECXZX.js.map +0 -1
  173. /package/dist/{providers-G36AM3Z2.js.map → providers-ZIVHHH4F.js.map} +0 -0
@@ -84,7 +84,8 @@ Start every surface audit with generated help so the capability map reflects the
84
84
 
85
85
  - Browser replay: `screencast-start`, `screencast-stop`
86
86
  - Desktop observation: `desktop-status`, `desktop-windows`, `desktop-active-window`, `desktop-capture-desktop`, `desktop-capture-window`, `desktop-accessibility-snapshot`
87
- - Browser-scoped computer use: `--challenge-automation-mode off|browser|browser_with_helper` plus manager-owned `review`, `session-inspector`, and workflow fallback metadata
87
+ - Desktop-assisted browser review: `review-desktop`
88
+ - Browser-scoped computer use: `--challenge-automation-mode off|browser|browser_with_helper`, `status-capabilities`, `session-inspector-plan`, `session-inspector-audit`, plus manager-owned `review`, `session-inspector`, and workflow fallback metadata
88
89
 
89
90
  Boundary rules:
90
91
  - desktop observation is public and read-only
@@ -99,7 +100,7 @@ Load this section directly with:
99
100
  opendevbrowser_skill_load opendevbrowser-best-practices "validated capability lanes"
100
101
  ```
101
102
 
102
- Current reliable lanes from the April 6 validation pass:
103
+ Current reliable lanes:
103
104
 
104
105
  1. Public-first YouTube transcript retrieval.
105
106
 
@@ -134,17 +135,28 @@ npx opendevbrowser shopping run --query "wireless earbuds" --providers shopping/
134
135
  Rules:
135
136
  - use explicit providers plus `--browser-mode managed` for the most reproducible reruns
136
137
  - treat `--region` as advisory unless `meta.selection.region_authoritative=true`
137
- - inspect `meta.primaryConstraintSummary` and `meta.offerFilterDiagnostics` before calling a no-offer run a provider outage
138
+ - inspect `meta.primaryConstraintSummary` first on no-offer runs
139
+ - if `meta.primaryConstraint.guidance` is present, follow `meta.primaryConstraint.guidance.reason` and `meta.primaryConstraint.guidance.recommendedNextCommands[]`
140
+ - if guidance is absent, inspect `meta.offerFilterDiagnostics` before calling a no-offer run a provider outage
141
+
142
+ 4. Design-contract synthesis with repeated public references.
143
+
144
+ ```bash
145
+ npx opendevbrowser inspiredesign run --brief "Design a premium docs workspace" --url "https://example.com/reference-a" --url "https://example.com/reference-b" --capture-mode off --include-prototype-guidance --mode json --output-format json
146
+ ```
147
+
148
+ Rules:
149
+ - keep inspiredesign references public-first unless the task explicitly requires deeper browser capture
150
+ - use repeated `--url` flags instead of packed URL strings
151
+ - pair this lane with `opendevbrowser-design-agent` when the brief moves from contract synthesis into implementation or `/canvas`
138
152
 
139
153
  ## Agent Sync Targets
140
154
 
141
155
  Skill-pack installation and discovery are synchronized for:
142
156
  - `opencode` (`~/.config/opencode/skill`, project `./.opencode/skill`)
143
157
  - `codex` (`$CODEX_HOME/skills` fallback `~/.codex/skills`, project `./.codex/skills`)
144
- - `claudecode` (`$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` fallback `~/.claude/skills`, project `./.claude/skills`)
145
- - `ampcli` (`$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` fallback `~/.amp/skills`, project `./.amp/skills`)
146
-
147
- Legacy compatibility aliases `claude` and `amp` are preserved in installer target metadata.
158
+ - `claudecode` (`$CLAUDECODE_HOME/skills` fallback `~/.claude/skills`, project `./.claude/skills`)
159
+ - `ampcli` (`$AMP_CLI_HOME/skills` fallback `~/.amp/skills`, project `./.amp/skills`)
148
160
 
149
161
  Install and update refresh managed copies of these canonical packs; uninstall removes managed canonical packs and only prunes empty legacy `research` or `shopping` leftovers.
150
162
 
@@ -247,6 +259,7 @@ Use the router script to avoid retyping flows:
247
259
  ```bash
248
260
  ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh provider-search
249
261
  ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh provider-crawl
262
+ ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh inspiredesign
250
263
  ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh qa-debug
251
264
  ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh social-readonly-check
252
265
  ./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh parity-check
@@ -288,7 +301,7 @@ node scripts/live-regression-direct.mjs --out artifacts/live-regression-direct.j
288
301
  ```
289
302
 
290
303
  Surface inventory source of truth:
291
- - `docs/SURFACE_REFERENCE.md` (72 CLI commands, 65 tools, 59 `/ops` commands, 35 `/canvas` commands, `/cdp` envelope contracts; mirrored by `npx opendevbrowser --help` and `npx opendevbrowser help`)
304
+ - `docs/SURFACE_REFERENCE.md` (77 CLI commands, 70 tools, 59 `/ops` commands, 35 `/canvas` commands, `/cdp` envelope contracts; mirrored by `npx opendevbrowser --help` and `npx opendevbrowser help`)
292
305
  - `artifacts/command-channel-reference.md` (skill-pack operational digest)
293
306
  - `artifacts/skill-runtime-surface-matrix.md` and `assets/templates/skill-runtime-pack-matrix.json` (canonical pack/runtime audit inventory)
294
307
 
@@ -316,18 +329,25 @@ Realignment rule:
316
329
  Use the design-canvas surface when the workflow needs persisted design documents, explicit governance state, preview tabs, or overlay selection.
317
330
 
318
331
  Recommended command order:
319
- 1. `opendevbrowser_canvas` or `opendevbrowser canvas --command canvas.session.open` to get `canvasSessionId`, `leaseId`, `preflightState`, governance block states, and generation-plan requirements.
332
+ 1. `opendevbrowser_canvas` or `opendevbrowser canvas --command canvas.session.open` to get `canvasSessionId`, `leaseId`, `preflightState`, `planStatus`, governance block states, generation-plan requirements, and `guidance.recommendedNextCommands`.
320
333
  2. Read the handshake before mutating. The handshake is the source of truth for:
334
+ - `planStatus`
335
+ - `preflightState`
321
336
  - `governanceRequirements.requiredBeforeMutation`
322
337
  - `governanceRequirements.requiredBeforeSave`
323
338
  - `generationPlanRequirements.requiredBeforeMutation`
339
+ - `generationPlanRequirements.allowedValues`
340
+ - `generationPlanIssues`
324
341
  - `allowedLibraries`
325
342
  - `mutationPolicy.allowedBeforePlan`
343
+ - `guidance.recommendedNextCommands`
344
+ - `guidance.reason`
326
345
  - treat `allowedLibraries.components`, `allowedLibraries.icons`, and `allowedLibraries.styling` as separate policy lanes:
327
346
  `components` are reusable UI adapters such as `shadcn`,
328
347
  `icons` are approved icon families,
329
348
  `styling` is for utility/theme adapters such as `tailwindcss`
330
- 3. Submit `canvas.plan.set` with all required non-empty objects:
349
+ 3. Require `preflightState="handshake_read"` or inspect the returned invalid-plan state before moving on. If the response already carries `guidance.recommendedNextCommands`, follow that list instead of guessing.
350
+ 4. Submit `canvas.plan.set` with all required non-empty objects:
331
351
  - `targetOutcome`
332
352
  - `visualDirection`
333
353
  - `layoutStrategy`
@@ -337,10 +357,24 @@ Recommended command order:
337
357
  - `responsivePosture`
338
358
  - `accessibilityPosture`
339
359
  - `validationTargets`
340
- 4. Only after the plan is accepted, call `canvas.document.patch`.
341
- 5. Use `canvas.preview.render`, `canvas.tab.open`, `canvas.overlay.mount`, and `canvas.overlay.select` when a browser-backed live view is required.
342
- 6. Use `canvas.feedback.poll` for snapshot audits between mutation rounds, and use `canvas.feedback.subscribe` -> `canvas.feedback.next` -> `canvas.feedback.unsubscribe` when a live pull-stream is needed.
343
- 7. Use `canvas.document.save` or `canvas.document.export` to persist artifacts.
360
+ Minimum nested fields that commonly cause `generation_plan_invalid` if omitted:
361
+ - `visualDirection.themeStrategy`
362
+ - `layoutStrategy.navigationModel`
363
+ - `componentStrategy.interactionStates`
364
+ - `motionPosture.reducedMotion`
365
+ - `responsivePosture.requiredViewports`
366
+ - `accessibilityPosture.keyboardNavigation`
367
+ - `validationTargets.requiredThemes`
368
+ - `validationTargets.browserValidation`
369
+ - `validationTargets.maxInteractionLatencyMs`
370
+ 5. Immediately inspect the `canvas.plan.set` response.
371
+ - If `planStatus="accepted"` or `preflightState="plan_accepted"`, follow the returned `guidance.recommendedNextCommands`.
372
+ - If the command fails with `generation_plan_invalid`, inspect `details.missingFields`, `details.issues`, and the handshake `generationPlanIssues`, then optionally re-read with `canvas.plan.get` or `canvas.capabilities.get` before resubmitting.
373
+ 6. Only after the plan is accepted, call `canvas.document.patch`.
374
+ 7. After every successful `canvas.document.patch`, `canvas.preview.render`, `canvas.preview.refresh`, `canvas.feedback.poll`, `canvas.document.save`, or `canvas.document.export`, read `guidance.recommendedNextCommands` and `guidance.reason` before deciding the next command.
375
+ 8. Use `canvas.preview.render`, `canvas.tab.open`, `canvas.overlay.mount`, and `canvas.overlay.select` when a browser-backed live view is required.
376
+ 9. Use `canvas.feedback.poll` for snapshot audits between mutation rounds. When the plan is still missing or invalid, expect a synthetic `preflight-blocker` item instead of normal stage feedback. Use `canvas.feedback.subscribe` -> `canvas.feedback.next` -> `canvas.feedback.unsubscribe` when a live pull-stream is needed.
377
+ 10. Use `canvas.document.save` or `canvas.document.export` to persist artifacts.
344
378
 
345
379
  Code-sync surface:
346
380
  - `canvas.session.attach` joins an existing canvas session as an `observer` or reclaims the write lease with `attachMode=lease_reclaim`.
@@ -357,11 +391,12 @@ Current `/canvas` parity notes:
357
391
 
358
392
  Tailwind usage rule:
359
393
  - When `allowedLibraries.styling` includes `tailwindcss`, use it for layout, spacing, responsive, and state styling over canonical tokens/theme variables.
360
- - Do not treat Tailwind as a component inventory source or mix it into `componentStrategy.approvedLibraries`.
394
+ - Do not treat Tailwind as a component inventory source or invent generation-plan allowlists for it; keep styling policy in `allowedLibraries` / `libraryPolicy`.
361
395
  - Preview/export should materialize a deterministic utility-class layer and stay self-contained; do not depend on a remote Tailwind CDN for canvas preview correctness.
362
396
 
363
397
  Failure handling:
364
398
  - `plan_required`: immediately call `canvas.plan.set`.
399
+ - `generation_plan_invalid`: resubmit `canvas.plan.set` with every required non-empty generation-plan block present, using `generationPlanIssues` plus `details.missingFields` and `details.issues` as the repair checklist.
365
400
  - `revision_conflict`: reload with `canvas.document.load` and replay the patch batch against the latest revision.
366
401
  - `unsupported_target` or `restricted_url`: move the preview to a normal http(s) tab or fall back to managed mode.
367
402
  - If a freshly rebuilt unpacked extension still shows old `/canvas` or popup behavior, reload the extension in Chrome before trusting the live result; stale MV3 runtime state can preserve old service-worker logic after `npm run extension:build`.
@@ -7,15 +7,16 @@ Use this playbook before any `/canvas` mutation and during every design-feedback
7
7
  ## Required command order
8
8
 
9
9
  1. `canvas.session.open`
10
- 2. Read the handshake and confirm `preflightState: "handshake_read"`
11
- 3. `canvas.plan.set`
12
- 4. `canvas.plan.get` or `canvas.capabilities.get` until the runtime reports `plan_accepted`
13
- 5. `canvas.document.patch`
14
- 6. `canvas.preview.render` or `canvas.tab.open`
15
- 7. `canvas.feedback.poll`
16
- 8. `canvas.document.save` or `canvas.document.export`
10
+ 2. Read the handshake and inspect `planStatus`, `preflightState`, `generationPlanRequirements.allowedValues`, `generationPlanIssues`, `guidance.recommendedNextCommands`, and `guidance.reason`
11
+ 3. Follow `guidance.recommendedNextCommands` from the handshake before choosing the next command
12
+ 4. `canvas.plan.set`
13
+ 5. If the response is accepted, follow the returned guidance into `canvas.document.patch`
14
+ 6. If the response fails with `generation_plan_invalid`, inspect `details.missingFields`, `details.issues`, and `generationPlanIssues`, then optionally re-read with `canvas.plan.get` or `canvas.capabilities.get`
15
+ 7. `canvas.preview.render` or `canvas.tab.open`
16
+ 8. `canvas.feedback.poll`
17
+ 9. `canvas.document.save` or `canvas.document.export`
17
18
 
18
- Mutation is blocked until the handshake has been read and the plan is accepted. A save is still invalid when required governance blocks remain missing in `requiredBeforeSave`.
19
+ Mutation is blocked until the handshake has been read and the plan is accepted. A save is still invalid when required governance blocks remain missing in `requiredBeforeSave`. `canvas.plan.get` is a diagnostics path after invalid-plan responses or attach, not a required success-path checkpoint.
19
20
 
20
21
  ## Handshake requirements
21
22
 
@@ -26,21 +27,27 @@ Every `canvas.session.open` response is the runtime contract. Read these fields
26
27
  - `documentId`
27
28
  - `leaseId`
28
29
  - `preflightState`
30
+ - `planStatus`
29
31
  - `governanceRequirements.requiredBeforeMutation`
30
32
  - `governanceRequirements.requiredBeforeSave`
31
33
  - `generationPlanRequirements.requiredBeforeMutation`
34
+ - `generationPlanRequirements.allowedValues`
35
+ - `generationPlanIssues`
32
36
  - `allowedLibraries`
33
- - `allowedBeforePlan`
37
+ - `mutationPolicy.allowedBeforePlan`
38
+ - `guidance.recommendedNextCommands`
39
+ - `guidance.reason`
34
40
 
35
41
  Interpret `allowedLibraries` by lane:
36
42
  - `components` are reusable UI adapters such as `shadcn`
37
43
  - `icons` are approved icon families
38
44
  - `styling` is for utility/theme adapters such as `tailwindcss`
39
- - do not mix icon or styling libraries into `componentStrategy.approvedLibraries`
45
+ - do not invent extra library allowlists inside `generationPlan`; keep icon and styling policy in `allowedLibraries` / `libraryPolicy`
40
46
 
41
47
  Preflight states:
42
48
  - `handshake_read`
43
49
  - `plan_submitted`
50
+ - `plan_invalid`
44
51
  - `plan_accepted`
45
52
  - `patching_enabled`
46
53
 
@@ -74,6 +81,18 @@ The first accepted `generationPlan` must include:
74
81
  - `accessibilityPosture`
75
82
  - `validationTargets`
76
83
 
84
+ Minimum nested fields to confirm before resubmitting an invalid plan:
85
+
86
+ - `visualDirection.themeStrategy`
87
+ - `layoutStrategy.navigationModel`
88
+ - `componentStrategy.interactionStates`
89
+ - `motionPosture.reducedMotion`
90
+ - `responsivePosture.requiredViewports`
91
+ - `accessibilityPosture.keyboardNavigation`
92
+ - `validationTargets.requiredThemes`
93
+ - `validationTargets.browserValidation`
94
+ - `validationTargets.maxInteractionLatencyMs`
95
+
77
96
  ## Blocker handling
78
97
 
79
98
  Canonical blocker path:
@@ -95,11 +114,11 @@ If `canvas.document.patch` or `canvas.document.save` returns a blocker, stop mut
95
114
  |---|---|---|---|
96
115
  | `CANVAS-01` | Handshake missing or unread before mutation | `plan_required`, missing `handshake_read` evidence | Re-run `canvas.session.open` or `canvas.capabilities.get`, then `canvas.plan.set` |
97
116
  | `CANVAS-02` | Required governance block missing | save blocker, empty `requiredBeforeSave`, validation warning | Fill missing `designGovernance.*` fields before save/export |
98
- | `CANVAS-03` | Required `generationPlan` field missing or malformed | `canvas.plan.set` rejected or warnings retained | Submit a complete plan and wait for acceptance |
117
+ | `CANVAS-03` | Required `generationPlan` field missing or malformed | `canvas.plan.set` rejected with `generation_plan_invalid`, plus `generationPlanIssues` or issue details | Submit a complete plan and wait for acceptance |
99
118
  | `CANVAS-04` | Library or icon-policy violation | validation warning, policy blocker, downgraded export | Adjust component/library choice to match `libraryPolicy` and `iconSystem` |
100
119
  | `CANVAS-05` | Unsupported target or overlay mount failure | `unsupported_target`, `restricted_url`, overlay mount error | Move to a normal http(s) preview target or managed mode |
101
120
  | `CANVAS-06` | Runtime budget exceeded or preview downgrade ignored | degrade warning, overflowed media/fonts/telemetry budget | Reduce preview cost or accept the downgrade before proceeding |
102
- | `CANVAS-07` | Feedback missing target attribution or validation metadata | feedback lacks `targetId`, `pageId`, `class`, or `evidenceRefs` | Re-poll or fix the feedback source before trusting the result |
121
+ | `CANVAS-07` | Feedback loop blocked before stage validation is ready | `canvas.feedback.poll` returns `preflight-blocker` for `plan_required` or `generation_plan_invalid` | Return to `canvas.plan.set`, then re-enter the preview/feedback loop |
103
122
 
104
123
  ## Feedback evaluation loop
105
124
 
@@ -6,8 +6,8 @@ Compact operational map of the current OpenDevBrowser surfaces, with the `/canva
6
6
 
7
7
  ## Current coverage snapshot
8
8
 
9
- - CLI commands: `72`
10
- - Plugin tools: `65`
9
+ - CLI commands: `77`
10
+ - Plugin tools: `70`
11
11
  - `/ops` command names: `59`
12
12
  - `/canvas` command names: `35`
13
13
  - Legacy `/cdp` relay: generic CDP forwarding (method-level)
@@ -21,27 +21,25 @@ Help-led highlights: browser replay (`screencast-start`, `screencast-stop`), pub
21
21
  Skill-pack installation and discovery are synchronized for:
22
22
  - `opencode`: `~/.config/opencode/skill` and `./.opencode/skill`
23
23
  - `codex`: `$CODEX_HOME/skills` (fallback `~/.codex/skills`) and `./.codex/skills`
24
- - `claudecode`: `$CLAUDECODE_HOME/skills` or `$CLAUDE_HOME/skills` (fallback `~/.claude/skills`) and `./.claude/skills`
25
- - `ampcli`: `$AMPCLI_HOME/skills` or `$AMP_CLI_HOME/skills` or `$AMP_HOME/skills` (fallback `~/.amp/skills`) and `./.amp/skills`
26
-
27
- Legacy aliases `claude` and `amp` remain present in installer target metadata for compatibility.
24
+ - `claudecode`: `$CLAUDECODE_HOME/skills` (fallback `~/.claude/skills`) and `./.claude/skills`
25
+ - `ampcli`: `$AMP_CLI_HOME/skills` (fallback `~/.amp/skills`) and `./.amp/skills`
28
26
 
29
27
  ## CLI surface categories
30
28
 
31
29
  - Install/runtime: `install`, `update`, `uninstall`, `help`, `version`, `serve`, `daemon`, `native`, `run`, `artifacts`
32
- - Session/connection/workflow: `launch`, `connect`, `disconnect`, `status`, `cookie-import`, `cookie-list`, `research`, `shopping`, `product-video`
33
- - Navigation/interaction: `goto`, `wait`, `snapshot`, `click`, `hover`, `press`, `check`, `uncheck`, `type`, `select`, `scroll`, `scroll-into-view`, `upload`
30
+ - Session/connection/workflow: `launch`, `connect`, `disconnect`, `status`, `status-capabilities`, `cookie-import`, `cookie-list`, `research`, `shopping`, `product-video`, `inspiredesign`
31
+ - Navigation/interaction: `goto`, `wait`, `snapshot`, `review`, `review-desktop`, `click`, `hover`, `press`, `check`, `uncheck`, `type`, `select`, `scroll`, `scroll-into-view`, `upload`
34
32
  - Pointer controls: `pointer-move`, `pointer-down`, `pointer-up`, `pointer-drag`
35
33
  - Targets/pages/DOM: `targets-list`, `target-use`, `target-new`, `target-close`, `page`, `pages`, `page-close`, `dom-html`, `dom-text`, `dom-attr`, `dom-value`, `dom-visible`, `dom-enabled`, `dom-checked`
36
34
  - Temporal capture: `screenshot`, `screencast-start`, `screencast-stop`
37
35
  - Desktop observation: `desktop-status`, `desktop-windows`, `desktop-active-window`, `desktop-capture-desktop`, `desktop-capture-window`, `desktop-accessibility-snapshot`
38
36
  - Browser-scoped computer-use control: `--challenge-automation-mode` on workflow and macro execute lanes, surfaced through manager-owned review, session-inspector, and fallback metadata rather than a standalone command family
39
37
  - Design canvas: `canvas`
40
- - Export/diagnostics/power: `clone-page`, `clone-component`, `perf`, `dialog`, `console-poll`, `network-poll`, `debug-trace-snapshot`, `session-inspector`, `macro-resolve`, `annotate`, `rpc`
38
+ - Export/diagnostics/power: `clone-page`, `clone-component`, `perf`, `dialog`, `console-poll`, `network-poll`, `debug-trace-snapshot`, `session-inspector`, `session-inspector-plan`, `session-inspector-audit`, `macro-resolve`, `annotate`, `rpc`
41
39
 
42
40
  ## Tool surface categories
43
41
 
44
- - Runtime parity tools map to the CLI runtime categories, including `opendevbrowser_canvas` and `opendevbrowser_session_inspector`.
42
+ - Runtime parity tools map to the CLI runtime categories, including `opendevbrowser_status_capabilities`, `opendevbrowser_review_desktop`, `opendevbrowser_session_inspector`, `opendevbrowser_session_inspector_plan`, `opendevbrowser_session_inspector_audit`, and `opendevbrowser_canvas`.
45
43
  - Additional parity tools cover temporal browser capture (`opendevbrowser_screencast_start`, `opendevbrowser_screencast_stop`) and sibling desktop observation (`opendevbrowser_desktop_status`, `opendevbrowser_desktop_windows`, `opendevbrowser_desktop_active_window`, `opendevbrowser_desktop_capture_desktop`, `opendevbrowser_desktop_capture_window`, `opendevbrowser_desktop_accessibility_snapshot`).
46
44
  - Tool-only: `opendevbrowser_prompting_guide`, `opendevbrowser_skill_list`, `opendevbrowser_skill_load`.
47
45
  - CLI-only: `install`, `update`, `uninstall`, `help`, `version`, `serve`, `daemon`, `native`, `artifacts`, `rpc`.
@@ -103,19 +101,63 @@ Minimum handshake payload shape:
103
101
  "documentId": "dc_01",
104
102
  "leaseId": "lease_01",
105
103
  "preflightState": "handshake_read",
104
+ "planStatus": "missing",
106
105
  "attachModes": ["observer", "lease_reclaim"],
107
106
  "governanceRequirements": {
108
- "requiredBeforeMutation": ["intent", "generationPlan", "designLanguage"],
109
- "requiredBeforeSave": ["intent", "generationPlan", "runtimeBudgets"]
107
+ "requiredBeforeMutation": [
108
+ "intent",
109
+ "generationPlan",
110
+ "designLanguage",
111
+ "contentModel",
112
+ "layoutSystem",
113
+ "typographySystem",
114
+ "motionSystem",
115
+ "responsiveSystem",
116
+ "accessibilityPolicy"
117
+ ],
118
+ "requiredBeforeSave": [
119
+ "intent",
120
+ "generationPlan",
121
+ "designLanguage",
122
+ "contentModel",
123
+ "layoutSystem",
124
+ "typographySystem",
125
+ "colorSystem",
126
+ "surfaceSystem",
127
+ "iconSystem",
128
+ "motionSystem",
129
+ "responsiveSystem",
130
+ "accessibilityPolicy",
131
+ "libraryPolicy",
132
+ "runtimeBudgets"
133
+ ]
110
134
  },
111
135
  "generationPlanRequirements": {
112
- "requiredBeforeMutation": ["targetOutcome", "visualDirection", "layoutStrategy"]
136
+ "requiredBeforeMutation": [
137
+ "targetOutcome",
138
+ "visualDirection",
139
+ "layoutStrategy",
140
+ "contentStrategy",
141
+ "componentStrategy",
142
+ "motionPosture",
143
+ "responsivePosture",
144
+ "accessibilityPosture",
145
+ "validationTargets"
146
+ ],
147
+ "allowedValues": {
148
+ "targetOutcomeModes": ["low-fi-wireframe", "high-fi-live-edit", "dual-track", "document-only"],
149
+ "themeStrategies": ["single-theme", "light-dark-parity", "multi-theme-system"],
150
+ "navigationModels": ["global-header", "sidebar", "tabbed", "contextual", "immersive"],
151
+ "browserValidationModes": ["required", "optional"]
152
+ }
113
153
  },
114
154
  "allowedLibraries": {
115
155
  "components": ["shadcn"],
116
- "icons": ["lucide"],
156
+ "icons": ["3dicons", "tabler", "microsoft-fluent-ui-system-icons", "@lobehub/fluent-emoji-3d"],
117
157
  "styling": ["tailwindcss"]
118
158
  },
159
+ "warningClasses": ["missing-generation-plan", "invalid-generation-plan", "missing-governance-block"],
160
+ "generationPlanIssues": [],
119
161
  "mutationPolicy": {
120
162
  "planRequiredBeforePatch": true,
121
163
  "allowedBeforePlan": [
@@ -126,6 +168,10 @@ Minimum handshake payload shape:
126
168
  "canvas.session.attach",
127
169
  "canvas.session.status"
128
170
  ]
171
+ },
172
+ "guidance": {
173
+ "recommendedNextCommands": ["canvas.plan.set"],
174
+ "reason": "Handshake is complete. Submit a complete generationPlan before mutation."
129
175
  }
130
176
  }
131
177
  ```
@@ -133,10 +179,11 @@ Minimum handshake payload shape:
133
179
  Preflight state machine:
134
180
  - `handshake_read`
135
181
  - `plan_submitted`
182
+ - `plan_invalid`
136
183
  - `plan_accepted`
137
184
  - `patching_enabled`
138
185
 
139
- The first mutation path must stay blocked until `canvas.plan.set` has been accepted. The canonical blocker is `plan_required` and should carry `details.auditId: "CANVAS-01"`.
186
+ The first mutation path must stay blocked until `canvas.plan.set` has been accepted. The canonical blocker is `plan_required` and should carry `details.auditId: "CANVAS-01"`. Invalid governance payloads should fail with `generation_plan_invalid`, `details.auditId: "CANVAS-03"`, plus `details.missingFields` and `details.issues`. Successful handshake, plan, patch, preview, feedback, and persistence responses should also carry `guidance.recommendedNextCommands` plus `guidance.reason` so agents know the next valid step without inferring it from raw state alone. `canvas.plan.get` is a diagnostics path after invalid-plan responses or attach, not a required checkpoint after a successful `canvas.plan.set`.
140
187
 
141
188
  Recommended blocker envelope:
142
189
 
@@ -169,6 +216,8 @@ Current operational constraints:
169
216
 
170
217
  Operational rule:
171
218
  - Read `canvas.session.open` or `canvas.capabilities.get` before mutation.
219
+ - Inspect `planStatus`, `preflightState`, `generationPlanRequirements.allowedValues`, `generationPlanIssues`, and `guidance.recommendedNextCommands` before choosing the next command.
220
+ - After every successful handshake, plan, patch, preview, feedback, save, or export response, inspect `guidance.recommendedNextCommands` before choosing the next command.
172
221
  - Use `canvas.feedback.poll` after each patch/render loop.
173
222
  - Do not save if `governanceRequirements.requiredBeforeSave` still reports missing governance blocks.
174
223
 
@@ -62,6 +62,8 @@ Expected output:
62
62
 
63
63
  Expected output:
64
64
  - `readResult` + `authBlockerDiagnostics`
65
+ - `meta.primaryConstraintSummary` for the canonical follow-up summary
66
+ - `meta.primaryConstraint.guidance.reason` and `meta.primaryConstraint.guidance.recommendedNextCommands[]` when the workflow knows the next provider recovery step
65
67
 
66
68
  ## Workflow E: Parallel Multipage (Reliable As-Is)
67
69
 
@@ -87,9 +89,11 @@ Expected output:
87
89
  - Use `node scripts/provider-direct-runs.mjs --release-gate --out artifacts/release/vX.Y.Z/provider-direct-runs.json` for provider live release proof.
88
90
  - Use `node scripts/live-regression-direct.mjs --release-gate --out artifacts/release/vX.Y.Z/live-regression-direct.json` for cross-surface live release proof.
89
91
  - Treat parity matrix tests as contract coverage, not live release proof.
92
+ - Read `data.guidanceReason` and `data.recommendedNextCommand` in the provider-direct report before escalating a provider failure to manual follow-up.
90
93
 
91
94
  ## Failure Policy
92
95
 
93
96
  - stale refs: re-snapshot and retry once
94
97
  - repeated 403/429: stop and cooldown
95
98
  - inconsistent mode behavior: flag parity failure
99
+ - workflow/provider follow-up: inspect `meta.primaryConstraintSummary` first, then `meta.primaryConstraint.guidance.reason`, then `meta.primaryConstraint.guidance.recommendedNextCommands[]`
@@ -1,12 +1,12 @@
1
1
  # Skill Runtime Surface Matrix
2
2
 
3
- Canonical inventory of repo-local OpenDevBrowser skill packs and the runtime surfaces they must prove with real workflow execution.
3
+ Canonical inventory of repo-local OpenDevBrowser skill packs and the audit evidence lanes that currently cover their surfaced runtime contracts.
4
4
 
5
5
  ## Canonical skill packs
6
6
 
7
- | Pack | Type | Validator | Runtime surfaces | Real workflow proof lane | External boundary |
7
+ | Pack | Type | Validator | Runtime surfaces | Audit evidence lanes | External boundary |
8
8
  |---|---|---|---|---|---|
9
- | `opendevbrowser-best-practices` | `governance` | `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh` | surface docs, workflow router, release evidence policy, CLI or tool or `/ops` or `/canvas` inventory | `node scripts/docs-drift-check.mjs`, `./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh`, `node scripts/cli-smoke-test.mjs`, `node scripts/provider-direct-runs.mjs`, `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs` | extension unavailable at start, auth walls, anti-bot pressure, rate limits, upstream outage |
9
+ | `opendevbrowser-best-practices` | `governance` | `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh` | first-contact help/onboarding inventory, inspiredesign operator lane, browser replay, desktop observation, surface docs, workflow router, release evidence policy, CLI or tool or `/ops` or `/canvas` inventory | `node scripts/docs-drift-check.mjs`, `./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh`, `node scripts/cli-smoke-test.mjs`, `node scripts/provider-direct-runs.mjs`, `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs` | extension unavailable at start, auth walls, anti-bot pressure, rate limits, upstream outage |
10
10
  | `opendevbrowser-continuity-ledger` | `doc_only` | `./skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh` | continuity ownership, ledger template, reply protocol | validator output plus `skill-discovery` and `docs-drift`; no live browser probe | not applicable |
11
11
  | `opendevbrowser-data-extraction` | `workflow` | `./skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh` | snapshot, DOM text/html extraction, pagination, quality gates, structured extraction | `node scripts/cli-smoke-test.mjs` plus `node scripts/product-video-fixture-live-probe.mjs` for structured extraction on a repo-local product page | extension unavailable at start if extension mode is audited separately |
12
12
  | `opendevbrowser-design-agent` | `browser_surface` | `./skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh` | `/canvas`, annotate send/stored semantics, design contract workflow, real-surface validation | `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs` | extension unavailable at start, optional Figma live smoke |
@@ -18,7 +18,7 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the runtime sur
18
18
 
19
19
  ## Shared runtime families
20
20
 
21
- | Runtime family | Representative CLI surface | Representative tool surface | Real task | Proof lane |
21
+ | Runtime family | Representative CLI surface | Representative tool surface | Real task | Mapped audit lanes |
22
22
  |---|---|---|---|---|
23
23
  | Session lifecycle and daemon control | `serve`, `status`, `launch`, `disconnect` | `opendevbrowser_launch`, `opendevbrowser_status`, `opendevbrowser_disconnect` | start a session, inspect state, then close it cleanly | `node scripts/cli-smoke-test.mjs`, `node scripts/live-regression-direct.mjs` |
24
24
  | Navigation and interaction | `goto`, `wait`, `click`, `hover`, `press`, `type`, `select`, `scroll`, `scroll-into-view` | matching `opendevbrowser_*` interaction tools | move through an interactive page and complete an action loop | `node scripts/cli-smoke-test.mjs`, `node scripts/login-fixture-live-probe.mjs` |
@@ -26,10 +26,10 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the runtime sur
26
26
  | DOM and extraction | `dom-html`, `dom-text`, `dom-attr`, `dom-value`, `dom-visible`, `dom-enabled`, `dom-checked` | matching `opendevbrowser_dom_*` tools | extract structured fields and validate state transitions | `node scripts/cli-smoke-test.mjs`, `node scripts/product-video-fixture-live-probe.mjs` |
27
27
  | Targets and pages | `targets-list`, `target-use`, `target-new`, `target-close`, `page`, `pages`, `page-close` | matching `opendevbrowser_target_*` tools | switch tabs/pages during a real flow | `node scripts/cli-smoke-test.mjs` |
28
28
  | Diagnostics and export | `perf`, `screenshot`, `console-poll`, `network-poll`, `clone-page`, `clone-component`, `debug-trace-snapshot` | matching diagnostics/export tools | capture browser evidence after a real workflow step | `node scripts/cli-smoke-test.mjs`, `node scripts/live-regression-direct.mjs` |
29
- | Browser replay and desktop observation | `screencast-start`, `screencast-stop`, `desktop-status`, `desktop-capture-desktop` | matching replay/desktop tools | capture time-based browser evidence or read-only sibling desktop state during an investigation | `node scripts/live-regression-direct.mjs`, `node scripts/docs-drift-check.mjs` |
30
- | Workflow wrappers | `research run`, `shopping run`, `product-video run` | `opendevbrowser_research_run`, `opendevbrowser_shopping_run`, `opendevbrowser_product_video_run` | run end-to-end research, shopping, and product asset workflows | `scripts/skill-runtime-audit.mjs`, `scripts/provider-direct-runs.mjs`, `scripts/product-video-fixture-live-probe.mjs` |
29
+ | Workflow wrappers | `research run`, `shopping run`, `product-video run`, `inspiredesign run` | `opendevbrowser_research_run`, `opendevbrowser_shopping_run`, `opendevbrowser_product_video_run`, `opendevbrowser_inspiredesign_run` | run end-to-end research, shopping, and product asset workflows, plus inspiredesign contract synthesis coverage | `scripts/skill-runtime-audit.mjs`, `scripts/provider-direct-runs.mjs`, `scripts/product-video-fixture-live-probe.mjs`, `tests/providers-inspiredesign-workflow.test.ts` |
30
+ | Browser replay and desktop observation | `screencast-start`, `screencast-stop`, `desktop-status`, `desktop-capture-desktop` | `opendevbrowser_screencast_start`, `opendevbrowser_screencast_stop`, `opendevbrowser_desktop_status`, `opendevbrowser_desktop_capture_desktop` | capture time-based browser evidence or read-only sibling desktop state during an investigation | `node scripts/docs-drift-check.mjs`, `node scripts/live-regression-direct.mjs` |
31
31
  | Canvas and design relay | `canvas` CLI and `/canvas` commands | `opendevbrowser_canvas` | open a canvas session, mutate safely, render preview, and validate feedback | `node scripts/live-regression-direct.mjs`, `node scripts/canvas-competitive-validation.mjs` |
32
- | Extension `/ops` relay | `/ops` session, target, nav, interact, pointer, DOM, overlay, preview bridge envelopes | extension-backed tool parity via daemon | attach the extension, verify `/ops` readiness, and run real command loops | `node scripts/live-regression-direct.mjs`, `node scripts/docs-drift-check.mjs` |
32
+ | Extension /ops relay | `/ops` session, target, nav, interact, pointer, DOM, overlay, preview bridge envelopes | extension-backed tool parity via daemon | attach the extension, verify `/ops` readiness, and run real command loops | `node scripts/live-regression-direct.mjs`, `node scripts/docs-drift-check.mjs` |
33
33
  | Skill discovery and loading | bundled `skills/` directories and loader search paths | `opendevbrowser_skill_list`, `opendevbrowser_skill_load` | enumerate and load the canonical packs | `node scripts/skill-runtime-audit.mjs` |
34
34
 
35
35
  ## Audit domains
@@ -37,12 +37,12 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the runtime sur
37
37
  | Audit domain | Covers | Proof lanes | Contract tests | Targeted reruns |
38
38
  |---|---|---|---|---|
39
39
  | `skills-assets-discovery` | bundled skills, validator assets, loader discovery, install targets | `skill-discovery`, `docs-drift` | `tests/skill-loader.test.ts`, `tests/skill-workflow-packs.test.ts`, `tests/cli-skills-installer.test.ts` | `./skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh`, `node scripts/skill-runtime-audit.mjs --smoke --out artifacts/skill-runtime-audit/smoke.json` |
40
- | `cli-tools-surface` | CLI args/help, tool registry, surface inventory docs | `docs-drift`, `cli-smoke` | `tests/cli-help.test.ts`, `tests/cli-help-parity.test.ts`, `tests/daemon-commands.integration.test.ts` | `node scripts/docs-drift-check.mjs`, `node scripts/cli-smoke-test.mjs` |
41
- | `scripts-and-governance` | audit scripts, workflow router, drift and robustness policy | `docs-drift`, `best-practices-robustness`, `skill-discovery` | `tests/docs-drift-check.test.ts`, `tests/skill-runtime-audit.test.ts`, `tests/audit-zombie-files.test.ts` | `./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh`, `node scripts/docs-drift-check.mjs` |
40
+ | `cli-tools-surface` | CLI args/help, tool registry, surface inventory docs, generated help, onboarding metadata, and first-contact owners | `docs-drift`, `cli-smoke` | `tests/cli-help.test.ts`, `tests/cli-help-parity.test.ts`, `tests/daemon-commands.integration.test.ts` | `node scripts/docs-drift-check.mjs`, `node scripts/cli-smoke-test.mjs` |
41
+ | `scripts-and-governance` | audit scripts, workflow router, drift and robustness policy, machine matrix, prose mirror, and surface-audit checklist | `docs-drift`, `best-practices-robustness`, `skill-discovery` | `tests/docs-drift-check.test.ts`, `tests/skill-runtime-audit.test.ts`, `tests/audit-zombie-files.test.ts` | `./skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh`, `node scripts/docs-drift-check.mjs` |
42
42
  | `browser-snapshot-interaction` | browser lifecycle, snapshot refs, DOM reads, click/type flows | `cli-smoke`, `login-fixture`, `product-video-fixture` | `tests/tools-workflows.test.ts`, `tests/tools-workflows-branches.test.ts`, `tests/browser-manager.test.ts` | `node scripts/cli-smoke-test.mjs`, `node scripts/login-fixture-live-probe.mjs --out artifacts/skill-runtime-audit/lanes/login-fixture.json` |
43
43
  | `canvas-annotate-design` | `/canvas`, annotate delivery, design-agent workflow, extension canvas runtime | `live-regression`, `canvas-competitive` | `tests/canvas-command-inventory.test.ts`, `tests/canvas-live-workflow-script.test.ts`, `tests/annotate-live-probe-script.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `node scripts/canvas-competitive-validation.mjs --out artifacts/skill-runtime-audit/lanes/canvas-competitive.json` |
44
44
  | `extension-relay-cdp` | extension `/ops`, relay contracts, legacy CDP, target-session routing | `live-regression`, `docs-drift` | `tests/parity-matrix.test.ts`, `tests/relay-server.test.ts`, `tests/ops-browser-manager.test.ts` | `node scripts/live-regression-direct.mjs --out artifacts/skill-runtime-audit/lanes/live-regression.json`, `./skills/opendevbrowser-best-practices/scripts/odb-workflow.sh cdp-channel-check` |
45
- | `providers-macros-workflows` | providers, workflow wrappers, macro resolve or execute, product-video | `provider-direct`, `research-live`, `product-video-fixture` | `tests/provider-direct-runs.test.ts`, `tests/macro-resolve.test.ts`, `tests/cli-macro-resolve.test.ts` | `node scripts/provider-direct-runs.mjs --smoke --out artifacts/skill-runtime-audit/lanes/provider-direct.json`, `npm run test -- tests/macro-resolve.test.ts tests/cli-macro-resolve.test.ts` |
45
+ | `providers-macros-workflows` | providers, workflow wrappers, inspiredesign contract synthesis, macro resolve or execute, product-video | `provider-direct`, `research-live`, `product-video-fixture` | `tests/provider-direct-runs.test.ts`, `tests/macro-resolve.test.ts`, `tests/cli-macro-resolve.test.ts`, `tests/providers-inspiredesign-workflow.test.ts` | `node scripts/provider-direct-runs.mjs --smoke --out artifacts/skill-runtime-audit/lanes/provider-direct.json`, `npm run test -- tests/macro-resolve.test.ts tests/cli-macro-resolve.test.ts tests/providers-inspiredesign-workflow.test.ts` |
46
46
  | `challenges-and-guardrails` | challenge coordinator, browser-scoped `challengeAutomationMode` computer-use boundary, login/form challenge branches, blocker envelopes | `login-fixture`, `provider-direct`, `research-live`, `live-regression` | `tests/challenges-capability-matrix.test.ts`, `tests/browser-manager-challenge-runtime-handle.test.ts`, `tests/ops-browser-manager-challenge-runtime-handle.test.ts` | `node scripts/login-fixture-live-probe.mjs --out artifacts/skill-runtime-audit/lanes/login-fixture.json`, `node scripts/provider-direct-runs.mjs --smoke --out artifacts/skill-runtime-audit/lanes/provider-direct.json` |
47
47
  | `runtime-infrastructure` | bootstrap, runtime factory, daemon client, shared hub utilities | `cli-smoke`, `live-regression` | `tests/core-bootstrap.test.ts`, `tests/providers-runtime-factory.test.ts`, `tests/daemon-client.test.ts` | `npm run test -- tests/core-bootstrap.test.ts tests/providers-runtime-factory.test.ts tests/daemon-client.test.ts`, `node scripts/cli-smoke-test.mjs` |
48
48
 
@@ -54,5 +54,6 @@ Canonical inventory of repo-local OpenDevBrowser skill packs and the runtime sur
54
54
  - Full-mode `provider-direct` and `live-regression` lanes must reuse the current configured daemon/environment so extension and auth-backed coverage is real when available.
55
55
  - Non-release provider-direct profiles may emit skipped coverage-gap advisories when reduced mode coverage omits provider ids; release-gate mode upgrades the same gap to a failure.
56
56
  - A shared runtime family is considered covered only when at least one live proof lane exercised that family during the same audit pass.
57
+ - Inspiredesign remains a surfaced contract workflow; the current audit model maps it through domain/test coverage and does not compute a dedicated inspiredesign live-proof lane.
57
58
  - An audit domain is `fail` when any mapped proof lane or mapped pack reports a repo-owned defect.
58
59
  - An audit domain is `env_limited` when it has no repo defects but a mapped proof lane hit real external blockers.
@@ -1,5 +1,5 @@
1
1
  {
2
- "schemaVersion": "1.0",
2
+ "schemaVersion": "1.1",
3
3
  "canvasSessionId": "<canvas-session-id>",
4
4
  "documentId": "<document-id>",
5
5
  "blockers": [
@@ -14,10 +14,11 @@
14
14
  },
15
15
  {
16
16
  "auditId": "CANVAS-02",
17
- "code": "governance_required",
17
+ "code": "policy_violation",
18
18
  "blockingCommand": "canvas.document.save",
19
19
  "requiredNextCommands": [
20
- "canvas.capabilities.get"
20
+ "canvas.plan.get",
21
+ "canvas.document.load"
21
22
  ],
22
23
  "status": "pending"
23
24
  },
@@ -26,16 +27,8 @@
26
27
  "code": "generation_plan_invalid",
27
28
  "blockingCommand": "canvas.plan.set",
28
29
  "requiredNextCommands": [
29
- "canvas.plan.set"
30
- ],
31
- "status": "pending"
32
- },
33
- {
34
- "auditId": "CANVAS-04",
35
- "code": "policy_violation",
36
- "blockingCommand": "canvas.document.patch",
37
- "requiredNextCommands": [
38
- "canvas.capabilities.get"
30
+ "canvas.plan.set",
31
+ "canvas.plan.get"
39
32
  ],
40
33
  "status": "pending"
41
34
  },
@@ -47,24 +40,37 @@
47
40
  "canvas.tab.open"
48
41
  ],
49
42
  "status": "pending"
43
+ }
44
+ ],
45
+ "reviewChecks": [
46
+ {
47
+ "auditId": "CANVAS-04",
48
+ "classes": [
49
+ "library-policy-violation",
50
+ "icon-policy-violation"
51
+ ],
52
+ "reviewCommand": "canvas.feedback.poll",
53
+ "status": "pending"
50
54
  },
51
55
  {
52
56
  "auditId": "CANVAS-06",
53
- "code": "budget_exceeded",
54
- "blockingCommand": "canvas.preview.render",
55
- "requiredNextCommands": [
56
- "canvas.preview.refresh"
57
+ "classes": [
58
+ "runtime-budget-exceeded",
59
+ "overflow"
57
60
  ],
61
+ "reviewCommand": "canvas.preview.refresh",
58
62
  "status": "pending"
59
63
  },
60
64
  {
61
65
  "auditId": "CANVAS-07",
62
- "code": "feedback_metadata_missing",
63
- "blockingCommand": "canvas.feedback.poll",
64
- "requiredNextCommands": [
65
- "canvas.feedback.poll"
66
+ "classes": [
67
+ "preflight-blocker"
66
68
  ],
67
- "status": "pending"
69
+ "reviewCommand": "canvas.feedback.poll",
70
+ "status": "pending",
71
+ "notes": [
72
+ "feedback.item responses should preserve targetId, pageId, class, and evidenceRefs once the live loop is active"
73
+ ]
68
74
  }
69
75
  ]
70
76
  }
@@ -5,33 +5,32 @@
5
5
  "documentId": "<document-id>",
6
6
  "generationPlan": {
7
7
  "targetOutcome": {
8
- "mode": "high-fi-live-edit",
8
+ "mode": "dual-track",
9
9
  "summary": "Refine hero hierarchy and CTA clarity"
10
10
  },
11
11
  "visualDirection": {
12
12
  "profile": "cinematic-minimal",
13
- "styleAxes": {
14
- "contrast": "high",
15
- "density": "airy"
16
- }
13
+ "themeStrategy": "single-theme"
17
14
  },
18
15
  "layoutStrategy": {
19
- "approach": "hero-led-grid"
16
+ "approach": "hero-led-grid",
17
+ "navigationModel": "global-header"
20
18
  },
21
19
  "contentStrategy": {
22
20
  "source": "document-context"
23
21
  },
24
22
  "componentStrategy": {
25
23
  "mode": "reuse-first",
26
- "approvedLibraries": [
27
- "shadcn"
24
+ "interactionStates": [
25
+ "default",
26
+ "hover",
27
+ "focus",
28
+ "disabled"
28
29
  ]
29
30
  },
30
31
  "motionPosture": {
31
32
  "level": "subtle",
32
- "allow3D": false,
33
- "allowParallax": false,
34
- "allowCustomSmoothScroll": false
33
+ "reducedMotion": "respect-user-preference"
35
34
  },
36
35
  "responsivePosture": {
37
36
  "primaryViewport": "desktop",
@@ -43,16 +42,18 @@
43
42
  },
44
43
  "accessibilityPosture": {
45
44
  "target": "WCAG_2_2_AA",
46
- "reducedMotion": "required",
47
- "keyboardParity": true
45
+ "keyboardNavigation": "full"
48
46
  },
49
47
  "validationTargets": {
50
48
  "blockOn": [
51
- "contrast-failure"
52
- ],
53
- "warnOn": [
49
+ "contrast-failure",
54
50
  "responsive-mismatch"
55
- ]
51
+ ],
52
+ "requiredThemes": [
53
+ "light"
54
+ ],
55
+ "browserValidation": "required",
56
+ "maxInteractionLatencyMs": 180
56
57
  }
57
58
  },
58
59
  "requiredIssueClasses": [