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.
- package/README.md +32 -24
- package/dist/automation/coordinator.d.ts +61 -2
- package/dist/automation/coordinator.d.ts.map +1 -1
- package/dist/browser/browser-manager.d.ts +6 -1
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/canvas-manager.d.ts +4 -0
- package/dist/browser/canvas-manager.d.ts.map +1 -1
- package/dist/browser/manager-types.d.ts +6 -1
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts +6 -1
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/browser/screencast-recorder.d.ts.map +1 -1
- package/dist/browser/session-inspector.d.ts +39 -0
- package/dist/browser/session-inspector.d.ts.map +1 -1
- package/dist/canvas/document-store.d.ts +14 -5
- package/dist/canvas/document-store.d.ts.map +1 -1
- package/dist/canvas/starters/catalog.d.ts.map +1 -1
- package/dist/canvas/types.d.ts +120 -9
- package/dist/canvas/types.d.ts.map +1 -1
- package/dist/challenges/action-loop.d.ts +2 -1
- package/dist/challenges/action-loop.d.ts.map +1 -1
- package/dist/challenges/capture.d.ts +14 -0
- package/dist/challenges/capture.d.ts.map +1 -0
- package/dist/challenges/index.d.ts +3 -1
- package/dist/challenges/index.d.ts.map +1 -1
- package/dist/challenges/inspect-plan.d.ts +40 -0
- package/dist/challenges/inspect-plan.d.ts.map +1 -0
- package/dist/challenges/orchestrator.d.ts.map +1 -1
- package/dist/challenges/types.d.ts +34 -0
- package/dist/challenges/types.d.ts.map +1 -1
- package/dist/{chunk-YBQECXZX.js → chunk-3VA6XR25.js} +3 -3
- package/dist/chunk-3VA6XR25.js.map +1 -0
- package/dist/{chunk-W4IHGDXV.js → chunk-4KVXCXV3.js} +25778 -24279
- package/dist/chunk-4KVXCXV3.js.map +1 -0
- package/dist/{chunk-5FZQJRBQ.js → chunk-ZE2E7ZGH.js} +3013 -1010
- package/dist/chunk-ZE2E7ZGH.js.map +1 -0
- package/dist/cli/commands/challenge-automation-mode.d.ts +3 -0
- package/dist/cli/commands/challenge-automation-mode.d.ts.map +1 -0
- package/dist/cli/commands/inspiredesign.d.ts +25 -0
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/nav/review-desktop.d.ts +7 -0
- package/dist/cli/commands/nav/review-desktop.d.ts.map +1 -0
- package/dist/cli/commands/nav/review-shared.d.ts +10 -0
- package/dist/cli/commands/nav/review-shared.d.ts.map +1 -0
- package/dist/cli/commands/nav/review.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/session/inspector-audit.d.ts +7 -0
- package/dist/cli/commands/session/inspector-audit.d.ts.map +1 -0
- package/dist/cli/commands/session/inspector-plan.d.ts +7 -0
- package/dist/cli/commands/session/inspector-plan.d.ts.map +1 -0
- package/dist/cli/commands/session/inspector-shared.d.ts +11 -0
- package/dist/cli/commands/session/inspector-shared.d.ts.map +1 -0
- package/dist/cli/commands/session/inspector.d.ts +1 -11
- package/dist/cli/commands/session/inspector.d.ts.map +1 -1
- package/dist/cli/commands/status-capabilities.d.ts +7 -0
- package/dist/cli/commands/status-capabilities.d.ts.map +1 -0
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-status.d.ts +5 -0
- package/dist/cli/daemon-status.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts +5 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/help.d.ts +2 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +660 -244
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/remote-manager.d.ts +6 -0
- package/dist/cli/remote-manager.d.ts.map +1 -1
- package/dist/cli/utils/parse.d.ts +1 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/cli/utils/skills.d.ts +1 -1
- package/dist/cli/utils/skills.d.ts.map +1 -1
- package/dist/cli/utils/workflow-message.d.ts +3 -0
- package/dist/cli/utils/workflow-message.d.ts.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/runtime-assemblies.d.ts +2 -1
- package/dist/core/runtime-assemblies.d.ts.map +1 -1
- package/dist/core/types.d.ts +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/desktop/runtime.d.ts +1 -0
- package/dist/desktop/runtime.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +729 -448
- package/dist/index.js.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +34 -0
- package/dist/inspiredesign/handoff.d.ts.map +1 -0
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +729 -448
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/providers/browser-fallback.d.ts.map +1 -1
- package/dist/providers/constraint.d.ts +11 -0
- package/dist/providers/constraint.d.ts.map +1 -1
- package/dist/providers/cookie-source.d.ts +8 -0
- package/dist/providers/cookie-source.d.ts.map +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/inspiredesign-capture.d.ts +17 -0
- package/dist/providers/inspiredesign-capture.d.ts.map +1 -0
- package/dist/providers/inspiredesign-contract.d.ts +110 -0
- package/dist/providers/inspiredesign-contract.d.ts.map +1 -0
- package/dist/providers/renderer.d.ts +23 -0
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/runtime-bundle.d.ts +2 -1
- package/dist/providers/runtime-bundle.d.ts.map +1 -1
- package/dist/providers/runtime-factory.d.ts +4 -2
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts +1 -1
- package/dist/providers/types.d.ts +3 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/workflow-contracts.d.ts +1 -1
- package/dist/providers/workflow-contracts.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +14 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts +21 -2
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-G36AM3Z2.js → providers-ZIVHHH4F.js} +6 -2
- package/dist/public-surface/generated-manifest.d.ts +143 -7
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +102 -3
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/relay/protocol.d.ts +1 -1
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +1 -0
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +1 -1
- package/dist/tools/automation-shared.d.ts +6 -0
- package/dist/tools/automation-shared.d.ts.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/inspiredesign_run.d.ts +4 -0
- package/dist/tools/inspiredesign_run.d.ts.map +1 -0
- package/dist/tools/review_desktop.d.ts +4 -0
- package/dist/tools/review_desktop.d.ts.map +1 -0
- package/dist/tools/session_inspector.d.ts.map +1 -1
- package/dist/tools/session_inspector_audit.d.ts +4 -0
- package/dist/tools/session_inspector_audit.d.ts.map +1 -0
- package/dist/tools/session_inspector_plan.d.ts +4 -0
- package/dist/tools/session_inspector_plan.d.ts.map +1 -0
- package/dist/tools/status_capabilities.d.ts +4 -0
- package/dist/tools/status_capabilities.d.ts.map +1 -0
- package/extension/dist/background.js +70 -10
- package/extension/dist/canvas/canvas-runtime.js +14 -1
- package/extension/dist/ops/ops-runtime.js +18 -1
- package/extension/dist/popup.js +29 -16
- package/extension/dist/services/ConnectionManager.js +27 -2
- package/extension/manifest.json +1 -1
- package/extension/popup.html +11 -0
- package/package.json +5 -5
- package/skills/AGENTS.md +2 -2
- package/skills/opendevbrowser-best-practices/SKILL.md +50 -15
- package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +31 -12
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +64 -15
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +4 -0
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +11 -10
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json +28 -22
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +18 -17
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +135 -17
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +55 -8
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +18 -4
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +16 -4
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +3 -1
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +68 -25
- package/skills/opendevbrowser-design-agent/SKILL.md +9 -4
- package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +15 -6
- package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +18 -17
- package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +11 -0
- package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +57 -0
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +2 -2
- package/dist/chunk-5FZQJRBQ.js.map +0 -1
- package/dist/chunk-W4IHGDXV.js.map +0 -1
- package/dist/chunk-YBQECXZX.js.map +0 -1
- /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
|
-
-
|
|
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
|
|
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`
|
|
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`
|
|
145
|
-
- `ampcli` (`$
|
|
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` (
|
|
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,
|
|
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.
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
|
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
|
|
11
|
-
3. `
|
|
12
|
-
4. `canvas.plan.
|
|
13
|
-
5. `canvas.document.patch`
|
|
14
|
-
6. `canvas.
|
|
15
|
-
7. `canvas.
|
|
16
|
-
8. `canvas.
|
|
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
|
|
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
|
|
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
|
|
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: `
|
|
10
|
-
- Plugin tools: `
|
|
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`
|
|
25
|
-
- `ampcli`: `$
|
|
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 `
|
|
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": [
|
|
109
|
-
|
|
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": [
|
|
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": ["
|
|
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
|
|
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 |
|
|
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 |
|
|
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
|
-
|
|
|
30
|
-
|
|
|
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
|
|
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.
|
|
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": "
|
|
17
|
+
"code": "policy_violation",
|
|
18
18
|
"blockingCommand": "canvas.document.save",
|
|
19
19
|
"requiredNextCommands": [
|
|
20
|
-
"canvas.
|
|
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
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
"
|
|
63
|
-
|
|
64
|
-
"requiredNextCommands": [
|
|
65
|
-
"canvas.feedback.poll"
|
|
66
|
+
"classes": [
|
|
67
|
+
"preflight-blocker"
|
|
66
68
|
],
|
|
67
|
-
"
|
|
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
|
}
|
package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json
CHANGED
|
@@ -5,33 +5,32 @@
|
|
|
5
5
|
"documentId": "<document-id>",
|
|
6
6
|
"generationPlan": {
|
|
7
7
|
"targetOutcome": {
|
|
8
|
-
"mode": "
|
|
8
|
+
"mode": "dual-track",
|
|
9
9
|
"summary": "Refine hero hierarchy and CTA clarity"
|
|
10
10
|
},
|
|
11
11
|
"visualDirection": {
|
|
12
12
|
"profile": "cinematic-minimal",
|
|
13
|
-
"
|
|
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
|
-
"
|
|
27
|
-
"
|
|
24
|
+
"interactionStates": [
|
|
25
|
+
"default",
|
|
26
|
+
"hover",
|
|
27
|
+
"focus",
|
|
28
|
+
"disabled"
|
|
28
29
|
]
|
|
29
30
|
},
|
|
30
31
|
"motionPosture": {
|
|
31
32
|
"level": "subtle",
|
|
32
|
-
"
|
|
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
|
-
"
|
|
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": [
|