Capture an existing product, turn it into build-ready artifacts, and verify your clone against the reference.
- capture web pages, saved HTML, screenshots, and traces as a structured reference session
- record browser flows with screenshots, DOM snapshots, and Playwright trace output
- record plan-driven macOS desktop flows with screenshots and normalized sessions
- generate clone specs, fixtures, candidate manifests, and Playwright tests
- compare a candidate build against the reference with screenshot diff and verification reports
Desktop capture stays generic. Product-specific steps belong in the runtime plan, not in the engine.
npm installInspect the bundled tools:
node ./src/cli.js toolsCapture a page:
node ./src/cli.js capture-web --url https://example.com --out ./output/web-demoGenerate a capture plan:
node ./src/cli.js plan-capture --session ./examples/reference-session.json --goal "Cover the signup path" --out ./output/capture-plan-demoVerify a candidate:
node ./src/cli.js verify ./examples/reference-session.json ./examples/candidate-manifest.json --out ./output/verify-demonode ./src/cli.js tools
node ./src/cli.js skills
node ./src/cli.js capture-web --url <url> --out <dir>
node ./src/cli.js record-web-trace --plan <plan.json> --out <dir>
node ./src/cli.js check-desktop-permissions
node ./src/cli.js record-desktop-trace --plan <plan.json> --approve-app <AppName> --out <dir>
node ./src/cli.js summarize-trace <trace.json> --out <dir>
node ./src/cli.js generate-fixtures --session <session> --out <dir>
node ./src/cli.js emit-playwright --session <session> --candidate-base-url <url> --out <dir>
node ./src/cli.js spec <session> --out <dir>
node ./src/cli.js candidate-manifest <session> --out <file>
node ./src/cli.js diff <session> <candidate-manifest.json> --out <dir>
node ./src/cli.js verify <session> <candidate-manifest.json> --out <dir>
node ./src/cli.js plan-repair --reference <session> --candidate <candidate-manifest.json> --out <dir>Desktop capture requires:
- macOS Automation
- Accessibility
- Screen Recording
It also has two runtime gates:
- the app must be allowlisted
- the app must be explicitly approved for the current run
Example:
node ./src/cli.js record-desktop-trace \
--plan ./examples/desktop-trace-plan.json \
--approve-app TextEdit \
--out ./output/desktop-trace-demoThis repo already includes the files Codex needs:
.codex-plugin/plugin.json.mcp.jsonskills/
Add the repository root as a local plugin.
This repo also works as a Claude plugin and marketplace package.
Validate it locally:
claude plugin validate .Add and install it:
claude plugin marketplace add .
claude plugin install opensource-everything@opensource-everything-marketplaceIf the repo is on GitHub, replace . with owner/repo.
capture_web_referencerecord_web_tracerecord_desktop_tracecheck_desktop_permissionsplan_capturegenerate_playwright_testsgenerate_candidate_manifestverify_live_web_cloneplan_repairscaffold_clone_loopscaffold_editor_loopverify_editor_clone
computer-use-researchopensource-everything
src/- core implementationskills/- bundled skillsexamples/- sample inputsdocs/- notes and adapter docs.codex-plugin/- Codex plugin metadata.claude-plugin/- Claude plugin and marketplace metadata
editor-loopis an optional markdown editor template, not a built-in product workflowplan_captureandplan_repairwrite short planning files on purpose- generated demo output goes to
output/, which is ignored by git