loonghao/auroraview/qt-to-auroraview-migration
Claude Code and agent skill by loonghao/auroraview
- community
Checking that the SKILL.md file is still in the repository.
Convert an existing Qt/PySide/PyQt desktop project (QWebEngineView-based UI, QMainWindow browsers, Qt DCC tools) into an AuroraView project so it ships a lighter, Rust-powered WebView and gets full MCP automation for free. Use this skill whenever the user asks to "migrate", "convert", "port" a Qt/PySide/PyQt app to AuroraView, or when they want MCP-controllable Qt tooling.
Install
npx vskill@latest install loonghao/auroraview/qt-to-auroraview-migrationSKILL.md
Qt → AuroraView migration skill
This skill turns an existing Qt-based Python project (typically one that uses QWebEngineView, a custom QMainWindow, or a DCC tool dialog with embedded HTML) into an AuroraView project with:
- A native Rust-powered WebView (~5 MB vs ~120 MB Qt WebEngine)
- Unified
create_webview()entry point (standalone / Qt parent / HWND) - Bidirectional Python ↔ JavaScript bridge (
webview.emit/@webview.on) - Full MCP control out of the box via
dcc-mcp-core's gateway — every
AuroraView window registers itself into the gateway and exposes a CDP bridge, so agents can click, fill, screenshot, and call Python APIs over standard MCP without the user writing any Python glue
When to use this skill
Use it when you see any of these signals in the source project:
from PySide6.QtWebEngineWidgets import QWebEngineView(or PySide2 / PyQt5 / PyQt6)QWebChannel+registerObjectfor JS↔Python IPC- A DCC-embedded Qt dialog that loads an HTML/React/Vue frontend
- A
QMainWindowwhose central widget is basically a browser - The user says "convert/migrate/port this Qt tool to AuroraView" or
"I want to control this Qt app with MCP"
Decision tree
All three paths return the same WebView API; only the parent argument differs.
Migration playbook
Perform these steps in order. Each has a concrete before/after snippet so you can grep-and-replace safely.
Step 1 — Dependencies
Replace Qt WebEngine with AuroraView. Keep qtpy / a Qt binding only if the tool still needs Qt widgets around the webview (toolbars, dock panels, DCC integration).
Step 2 — Replace QWebEngineView
When there is no Qt parent, pass nothing:
Step 3 — Replace QWebChannel IPC
AuroraView ships a first-class bridge — drop QWebChannel, registerObject, and the custom JS adapter entirely.
On the JS side, replace the qtwebchannel.js adapter with the AuroraView SDK:
Step 4 — Replace QMainWindow browser shells
If the project is a custom browser (tabs, URL bar, history), keep the Qt chrome but swap every QWebEngineView for AuroraView. The @examples/qt_browser.py file in this repo is the before; here is the AFTER pattern:
Note: for native tab switching/reloading, call webview.load_url(...), webview.reload(), webview.back(), webview.forward().
Step 5 — DCC integration (Maya / Houdini / Nuke / 3ds Max)
Thread-dispatcher backends are already bundled. The migration is literally:
For non-Qt DCCs (Unreal) pass the HWND as an int:
Step 6 — Enable MCP control (the "for free" part)
Once the app is on AuroraView, agents drive it over MCP with zero extra code on the project side. AuroraView windows register themselves into the shared dcc-mcp-core gateway and expose their CDP endpoint automatically; agents discover them and call tools through the gateway.
Agents see tools exposed through dcc-mcp-core's progressive discovery — tools/list stays small because the gateway hides detail-level tools behind load_skill. For AuroraView the shipped skills are:
| Skill | Tools (visible by default / after load_skill) | |
|---|---|---|
auroraview-diagnostics | list_windows, cdp_health, dump_console (implicit-invocation on) | |
auroraview-devtools | evaluate_js, reload, capture_screenshot (explicit load_skill) |
See Epic #364 for the rollout status — the Rust adapter crate (crates/auroraview-mcp) and the skills listed above are tracked under issues #365–#368.
To expose custom Python methods to agents, decorate them and bind via auroraview.api:
One-shot migration checklist
Use this checklist when applying the skill to a repo. Tick every item.
- [ ] Grep for
QWebEngineView/QWebEnginePage/QWebChannel— zero hits - [ ] Grep for
PySide*-WebEngine/PyQtWebEnginein deps — zero hits - [ ]
from auroraview import create_webviewreplaces WebEngine imports - [ ]
@webview.on(...)/webview.emit(...)replacesQWebChannelslots - [ ] JS side uses
@auroraview/sdkinstead ofqwebchannel.js - [ ] Installed
dcc-mcp-core+ ranauroraview-cli skills install - [ ] Verified with the agent: calling
list_windowsfrom
auroraview-diagnostics returns at least the migrated app's window
- [ ] All DCC entry points use
create_webview(parent=...)(neverQWebEngineView) - [ ] Sample/smoke test: agent
load_skill("auroraview-devtools")then
capture_screenshot returns a PNG
- [ ] README migration note added
References (read these on demand)
python/auroraview/api.py— unifiedcreate_webview()contractpython/auroraview/__init__.py— full public API surfacepython/auroraview/integration/qt/— Qt embedding internalsexamples/qt_browser.py— canonical BEFORE example (pure Qt WebEngine)examples/maya_qt_echo_demo.py— canonical AFTER example (Qt host + AuroraView + API bridge)packages/auroraview-sdk/— JS-side bridge (@auroraview/sdk)crates/auroraview-mcp/— Rust adapter crate that plugs AuroraView into
dcc-mcp-core's gateway (tracks Epic #364; part of the new MCP story)
- `dcc-mcp-core` upstream — gateway,
skill runtime, and progressive tool discovery; MCP tools ship as SKILL.md packages delivered via auroraview-cli skills install
Troubleshooting
| Symptom | Likely cause | Fix | |
|---|---|---|---|
RuntimeError: No Qt binding found | qtpy can't resolve a binding | Install PySide6 (or pass parent=None for standalone) | |
| Window shows but DCC freezes | Using WebView directly in a Qt host | Switch to create_webview(parent=qwidget) which picks QtWebView | |
discover_instances returns empty list | WebView was started with debug=False | Leave debug=True (default) so the CDP port opens | |
JS av.call() hangs | Python handler raised without returning JSON-serializable | Return a plain dict / list / str | |
MCP click(selector=...) fails | Page not selected | Call select_page(url_pattern=...) first |
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingcrates/auroraview-cli/skills/qt-to-auroraview-migration/SKILL.md
Popularity
- Repository stars
- 42
- Repository forks
- 6
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/loonghao/auroraview/qt-to-auroraview-migration)