[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CP9JC5CX9YR52QF5GQG6M8":3,"skill-same:01M6CP9JC5CX9YR52QF5GQG6M8":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":65},"01M6CP9JC5CX9YR52QF5GQG6M8","test-desktop-app",null,"Use when testing the Hubble Electron desktop app, especially when inspecting, clicking, screenshotting, or verifying a real note edit in the running app.","bholmesdev\u002Fhubble.md","bholmesdev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F51384119?v=4","01M6CP8SJ3N9W8FYVCGV41QT3G","Ben Holmes","01M6CP8SP3A84K1TFMVS8BEBDW",1524,"MIT","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftest-desktop-app\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35],"test","desktop","desktop app","test desktop app","app","testing","electron","edit","use","electron desktop","note","true","2026-11-10 10:12:30",false,"---\nname: test-desktop-app\ndescription: Use when testing the Hubble Electron desktop app, especially when inspecting, clicking, screenshotting, or verifying a real note edit in the running app.\nmetadata:\n  internal: true\n---\n\n# Test Desktop App\n\n1. Run `HUBBLE_DESKTOP_BACKGROUND=1 HUBBLE_DESKTOP_ENABLE_CDP=1 pnpm dev:desktop`. `HUBBLE_DESKTOP_BACKGROUND=1` keeps the window hidden so it never covers or takes focus from the user's screen; drive it over CDP.\n2. Read the terminal output for:\n   - `Playground: \u003Cpath>`\n   - `DevTools listening on ws:\u002F\u002F127.0.0.1:9222\u002F...`\n3. Use the auto-opened editable playground at `apps\u002Fdesktop\u002F.dev-electron\u002Fplayground` instead of file pickers or checked-in fixtures.\n4. Prefer the Chrome DevTools Protocol endpoint for interaction-heavy verification. It can inspect DOM state, evaluate JavaScript, click controls, inspect iframe contents, and capture screenshots from the real Electron renderer. This is useful when Computer Use has limitations interacting with the dev app window.\n5. For CDP setup, fetch `http:\u002F\u002F127.0.0.1:9222\u002Fjson\u002Flist`, connect to the page `webSocketDebuggerUrl`, and drive the renderer with DevTools Protocol commands.\n6. When you're done, stop the dev server and confirm no `Hubble Dev` process remains.\n\nGotchas:\n\n- Build `packages\u002Fui` and `packages\u002Feditor` first; the desktop app imports their dist output.\n- Screenshots are DPR 2: CSS px times 2.\n- Right clicks need real `Input.dispatchMouseEvent` events; synthetic `contextmenu` events don't open base-ui context menus.\n- Popup open in the DOM but missing from a screenshot? Check stacking with `document.elementFromPoint`.\n- xterm refits through a debounced ResizeObserver and can lag layout changes by a few seconds; re-measure before calling it a bug.\n","# Test Desktop App\n\n1. Run `HUBBLE_DESKTOP_BACKGROUND=1 HUBBLE_DESKTOP_ENABLE_CDP=1 pnpm dev:desktop`. `HUBBLE_DESKTOP_BACKGROUND=1` keeps the window hidden so it never covers or takes focus from the user's screen; drive it over CDP.\n2. Read the terminal output for:\n   - `Playground: \u003Cpath>`\n   - `DevTools listening on ws:\u002F\u002F127.0.0.1:9222\u002F...`\n3. Use the auto-opened editable playground at `apps\u002Fdesktop\u002F.dev-electron\u002Fplayground` instead of file pickers or checked-in fixtures.\n4. Prefer the Chrome DevTools Protocol endpoint for interaction-heavy verification. It can inspect DOM state, evaluate JavaScript, click controls, inspect iframe contents, and capture screenshots from the real Electron renderer. This is useful when Computer Use has limitations interacting with the dev app window.\n5. For CDP setup, fetch `http:\u002F\u002F127.0.0.1:9222\u002Fjson\u002Flist`, connect to the page `webSocketDebuggerUrl`, and drive the renderer with DevTools Protocol commands.\n6. When you're done, stop the dev server and confirm no `Hubble Dev` process remains.\n\nGotchas:\n\n- Build `packages\u002Fui` and `packages\u002Feditor` first; the desktop app imports their dist output.\n- Screenshots are DPR 2: CSS px times 2.\n- Right clicks need real `Input.dispatchMouseEvent` events; synthetic `contextmenu` events don't open base-ui context menus.\n- Popup open in the DOM but missing from a screenshot? Check stacking with `document.elementFromPoint`.\n- xterm refits through a debounced ResizeObserver and can lag layout changes by a few seconds; re-measure before calling it a bug.\n",{"name":5,"metadata":41,"description":7},{"internal":42},true,"main","cf633b3221b9572f22604168ac77c1ffa921debe",".agents\u002Fskills\u002Ftest-desktop-app",99,"https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md","https:\u002F\u002Fhubble.md","https:\u002F\u002Fgithub.com\u002Fbholmesdev","https:\u002F\u002Fbholmes.dev","Web developer, teacher, whiteboardist. Building the next terminal @warpdotdev ","2026-11-06 02:02:39",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":42},[55,58,61],{"tool":56,"command":57},"npx","npx skills add bholmesdev\u002Fhubble.md --skill test-desktop-app",{"tool":59,"command":60},"bunx","bunx skills add bholmesdev\u002Fhubble.md --skill test-desktop-app",{"tool":62,"command":63},"pnpm","pnpm dlx skills add bholmesdev\u002Fhubble.md --skill test-desktop-app","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftest-desktop-app\u002FSKILL.md",[],[67,84,100,119,138,163],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":76,"publishedAt":36},"01M6PQAVS5DTTVEV9VA313YSYM","review-markdown-comments","Reply to, resolve, or reopen Hubble review comments stored as CriticMarkup in Markdown files. Use when asked to address a Hubble review comment.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-markdown-comments\u002FSKILL.md",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[77,78,79,80,81,82,83,32],"review markdown comments","comments","review","markdown","as","files","reply",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":36},"01M6PQAH29FCQB6921Y94CA8F4","merge-risk","Use when assessing the risk of merging a PR","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmerge-risk\u002FSKILL.md",[],[91,92,93,94,95,96,97,98,35,99,32,43],"merge","risk","merge risk","github","blob","pr","https","engineering","matt pocock",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":110,"publishedAt":36},"01M6PQA0ADFHMANPW4KRAV7EA6","embed-html-app","Embed a Hubble HTML App inline inside a Markdown File using an iframe block. Use when an app should be viewed in the context of a document.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fembed-html-app\u002FSKILL.md",[106,107],{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[111,28,112,113,114,115,80,116,32,117,118],"html","embed","embed html app","inline","file","context","document","block",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":36},"01M6PQ9WQM5HF4QQ1J750346NY","edit-diagram","Create or edit a Hubble diagram: a .tldr file Hubble opens in its built-in tldraw canvas. With this skill installed, any diagram, canvas, whiteboard, or .tldr file is a Hubble diagram: use this skill instead of tldraw-offline, unless the user names the tldraw offline app or the file is a .tldraw archive.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fedit-diagram\u002FSKILL.md",[],[126,31,127,32,128,129,130,131,115,132,133,134,135,28,136,137],"edit diagram","diagram","whiteboard","canvas","create","offline","tldraw offline","archive","tldr","user","tldraw","with",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":148,"publishedAt":36},"01M6PQ9JKMF9ZDQWNVSA38VCTT","create-html-app","Create or update a Hubble HTML App: a folder-local .html file Hubble runs as a self-contained interactive UI, with Alpine, Tailwind, Hubble theme tokens, and the injected hubble runtime API.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcreate-html-app\u002FSKILL.md",[144,145],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[149,28,111,130,150,151,152,153,154,155,156,157,158,159,115,160,81,161,137,162],"create html app","ui","theme tokens","runtime","tokens","local","self","interactive","Tailwind","api","alpine","update","theme","folder",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":36},"01M6CPAR6ECFN9P9H1S4XWDCB1","convex","Routes general Convex requests to the right project skill. Use when the user asks which Convex skill to use or gives an underspecified Convex app task.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002Fpackages\u002Fsync-backend\u002F.agents\u002Fskills\u002Fconvex\u002FSKILL.md",[],[165,170,171,172,32,135],"task","general","project skill"]