[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DC2WQYQKJZPSGW05FKJQGD":3,"skill-same:01M6DC2WQYQKJZPSGW05FKJQGD":148},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6DC2WQYQKJZPSGW05FKJQGD","ui-drive",null,"Thin rail-router driver for a LIVE running web or Electron app — attach to it, resolve any target through three fallback rails (a11y-ref then CDP css then vision xy), point at an element with a screenshot-visible highlight, discuss it with full context, and actuate it (click\u002Ffill\u002Fhover\u002Fpress\u002Fselect). Also drives the ephemeral restyle loop — preview a CSS candidate as an injected style overlay, apply\u002Faccept\u002Frevert it, and harvest the accepted deltas as a PROPOSED patch — WITHOUT ever editing application source. Rides the vendored playwright at exactly 1.61.1 from the sibling ui-audit skill, so no new browser dependency. Every mutating verb logs to a bounded shadow sink (observe-only, never blocks). Use as the low-level app-driving and pointing channel under design-studio-session and design-studio. NOT for the design-quality verdict (use ui-audit) and NOT for element-to-source mapping or micro-commits (use design-studio-session).","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fui-drive\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"ui drive","ui","drive","deltas","click","app","preview","cdp","Actuate","observe","patch","design","only","never","router","select","loop","logs","browser","css","2026-11-10 10:12:30",false,"---\nname: ui-drive\ndescription: Thin rail-router driver for a LIVE running web or Electron app — attach to it, resolve any target through three fallback rails (a11y-ref then CDP css then vision xy), point at an element with a screenshot-visible highlight, discuss it with full context, and actuate it (click\u002Ffill\u002Fhover\u002Fpress\u002Fselect). Also drives the ephemeral restyle loop — preview a CSS candidate as an injected style overlay, apply\u002Faccept\u002Frevert it, and harvest the accepted deltas as a PROPOSED patch — WITHOUT ever editing application source. Rides the vendored playwright at exactly 1.61.1 from the sibling ui-audit skill, so no new browser dependency. Every mutating verb logs to a bounded shadow sink (observe-only, never blocks). Use as the low-level app-driving and pointing channel under design-studio-session and design-studio. NOT for the design-quality verdict (use ui-audit) and NOT for element-to-source mapping or micro-commits (use design-studio-session).\nmetadata:\n  origin: user\n---\n\n# ui-drive Skill\n\nA **thin rail-router driver** for a live app. Where `ui-audit` *looks* and *scores*, `ui-drive`\n*points*, *drives*, and *previews* — the actuation channel an agent uses to touch a running UI.\n\n**Skill location:** `~\u002F.claude\u002Fskills\u002Fui-drive\u002F` (files: `SKILL.md`, `drive.mjs`).\n\n---\n\n## When to use\n\n- Point Claude (or the owner) at a specific live element and screenshot it with a highlight box.\n- Actuate a running app deterministically: click, fill, hover, press, check, select, scroll, focus.\n- Drive the **ephemeral restyle loop** — preview a CSS candidate as an injected overlay, apply \u002F\n  accept \u002F revert it, then **harvest** the accepted deltas as a proposed patch — with **zero**\n  source edits.\n- As the low-level driver invoked by **`design-studio session`** (interactive-modify, N.2) and the\n  **`design-studio`** gates.\n\n**Not for:** the design-quality VERDICT (use `ui-audit`), nor element→source resolution and\nmicro-commits (use `design-studio-session`).\n\n---\n\n## Zero new dependency (Correction 3: near-zero-build)\n\n`ui-drive` imports the browser stack that the sibling `ui-audit` skill already vendors at exactly\n`playwright@1.61.1`, resolved by absolute file URL from\n`..\u002Fui-audit\u002Fnode_modules\u002Fplaywright\u002Findex.mjs` (override with `UI_DRIVE_PLAYWRIGHT`). No `npm\ninstall` in this skill. If `ui-audit` has not had `npm install && npx playwright install chromium`\nrun once, do that in `ui-audit` first — its browser binaries are shared here.\n\n---\n\n## The three rails\n\nA `--target` string is resolved through fallback rails; the resolver reports which rail hit.\n\n| Rail | Target syntax | Backing Playwright API |\n|------|---------------|------------------------|\n| **a11y-ref** (preferred) | `ref:N` · `role:button\\|Save` · `text:Export` · `label:...` · `placeholder:...` · `alt:...` · `title:...` | ref map + `getByRole` \u002F `getByText` \u002F `getByLabel` \u002F ... |\n| **CDP** (css\u002FDOM) | `css:.btn` · `testid:submit` | `page.locator(css)` \u002F `getByTestId` |\n| **vision** (coordinate, last resort) | `xy:120,340` | `page.mouse` \u002F drawn box overlay |\n\n- `ref:N` comes from the **ref map** printed by `attach` — a deterministic enumeration of every\n  visible interactive element with its role, accessible name, tag, selector and rect. (Playwright\n  1.61.1's `ariaSnapshot({ref:true})` does **not** emit `[ref=]` markers, so ui-drive builds and\n  owns its own stable ref map.)\n- A **bare** target (no prefix) cascades automatically: a11y text → css → vision-fail (which tells\n  you to supply an `xy:`).\n\n---\n\n## The pinned highlight (why `point` works)\n\n`point` draws a highlight and screenshots it. The exact call was **pinned empirically against the\nvendored 1.61.1 at build time**:\n\n- **Real path:** `await locator.highlight()` injects an `\u003Cx-pw-glass>` overlay that **is captured by\n  `page.screenshot()`** (verified: the highlighted PNG differs from the plain PNG). `await\n  page.hideHighlight()` clears it afterward so later captures\u002Factions are pristine.\n- **The `show --annotate\u002F--highlight` CLI subcommand does NOT exist** and is not used — that path was\n  the unconfirmed caveat in Correction 3; it is now closed.\n- For a **vision** (`xy:`) target there is no locator, so `point` draws its own `#__ui_drive_box`\n  overlay at the coordinate instead.\n\n---\n\n## Verbs\n\n| Verb | Effect | Mutates? |\n|------|--------|----------|\n| `attach` | Connect to a running app (`--cdp`) or launch one (`--url` \u002F `--electron`); build + print the ref map. | live nav only |\n| `point` | Resolve a target, highlight it (pinned), screenshot; report rail, count, bbox, accessible name. | read-only |\n| `discuss` | `point` + element context: `ariaSnapshot`, key computed styles, nearby text. | read-only |\n| `drive` | Actuate the live app: `click`\u002F`dblclick`\u002F`hover`\u002F`fill`\u002F`type`\u002F`press`\u002F`check`\u002F`uncheck`\u002F`select`\u002F`scroll`\u002F`focus`. | **live app** |\n| `preview` | Inject an **ephemeral** `\u003Cstyle>` candidate; screenshot before\u002Fafter. | overlay only |\n| `apply` | Promote the preview to a persistent (session) overlay; re-injected after navigation. | overlay only |\n| `accept` | Mark the most-recent applied overlay as accepted (what `harvest` exports). | state only |\n| `revert` | Remove an overlay (`--scope preview\\|applied\\|accepted\\|all`), restoring visuals. | overlay only |\n| `harvest` | Emit accepted overlays as a **proposed** CSS patch (`.css` + `.json`). | **writes no source** |\n\n`drive` is the one verb that changes the running application — that is what a driver does. It never\nedits source files. `preview\u002Fapply\u002Faccept` only inject removable `\u003Cstyle>` tags; `harvest` only\nproposes deltas for a human\u002Fagent to translate to the real stylesheet (that translation is\n`design-studio-session`'s job).\n\n---\n\n## Safety \u002F shadow mode (COUNCIL C5)\n\n- ui-drive **never edits application source** — the strongest gate is structural.\n- Every mutating verb (`drive`, `preview`, `apply`, `accept`, `revert`, `harvest`) appends a JSONL\n  line to a **bounded, rotating shadow sink** (`UI_DRIVE_SHADOW_LOG`, default under the OS temp dir).\n  It is **observe-only**: it never blocks, never nags, and any sink failure is swallowed.\n\n---\n\n## Usage — programmatic (primary: one process holds the whole session)\n\n```js\nimport { Driver } from '.\u002Fdrive.mjs';\n\nconst d = await Driver.attach({ url: 'http:\u002F\u002Flocalhost:5173' });   \u002F\u002F or { cdp }, { electron }\nconsole.log(d.snapshot());                          \u002F\u002F { refs: [{ ref, role, name, tag, rect }], ... }\n\nawait d.point('role:button|Save', { outDir: '.\u002Fout' });   \u002F\u002F highlight + screenshot\nconst info = await d.discuss('ref:3');                    \u002F\u002F styles + ariaSnapshot + nearby text\nawait d.drive('fill', 'label:Email', 'a@b.com');\nawait d.drive('click', 'text:Save');\n\nawait d.preview('.primary{background:#0a7;border-radius:10px}');   \u002F\u002F ephemeral overlay\nawait d.apply(); await d.accept();\nconst patch = await d.harvest({ outDir: '.\u002Fout' });       \u002F\u002F proposed CSS deltas — NOT written to source\nawait d.revert({ scope: 'all' });\nawait d.close();\n```\n\nThe importable surface: `Driver` (with static `attach` and instance verbs `snapshot`, `resolve`,\n`point`, `discuss`, `drive`, `preview`, `apply`, `accept`, `revert`, `harvest`, `refresh`, `close`),\nplus helpers `resolvePlaywright`, `parseTarget`, `shadowLog`, `shadowLogPath`.\n\n---\n\n## Usage — CLI\n\n`--cdp \u003Cendpoint>` attaches to an **already-running** app (cross-process; verbs reconnect and\noverlay state persists via a session file). `--url` \u002F `--electron` run the verb **oneshot** in a\nsingle process.\n\n```powershell\n# Cross-process against a running app (Chrome started with --remote-debugging-port=9222,\n# or an Electron app exposing a CDP endpoint):\nnode drive.mjs attach  --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs point   --cdp http:\u002F\u002Flocalhost:9222 --target ref:5 --out .\u002Fout\nnode drive.mjs discuss --cdp http:\u002F\u002Flocalhost:9222 --target \"role:button|Export\"\nnode drive.mjs drive   --cdp http:\u002F\u002Flocalhost:9222 --action click --target \"text:Export\"\nnode drive.mjs preview --cdp http:\u002F\u002Flocalhost:9222 --css \".btn{background:#0a7}\"\nnode drive.mjs apply   --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs accept  --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs harvest --cdp http:\u002F\u002Flocalhost:9222 --out .\u002Fout\nnode drive.mjs revert  --cdp http:\u002F\u002Flocalhost:9222 --scope all\n\n# Oneshot launch (single process; multi-verb sessions want --cdp or the programmatic Driver):\nnode drive.mjs point   --url http:\u002F\u002Flocalhost:5173 --target \"role:button|Save\" --out .\u002Fout\nnode drive.mjs attach  --electron .\u002Fpath\u002Fto\u002Fmain.js\n```\n\nFlags: `--url` `--electron` `--cdp` `--target` `--action` `--value` `--css` `--scope` `--out`\n`--session` `--headed` `--wait-selector` `--settle` `--include-applied`. Every run ends with a\nterminal-state marker `SUCCESS:ui-drive:\u003Cverb>` or `FAILED:ui-drive:\u003Cverb> \u003Creason>`.\n\n**Cross-process caveat (honest):** `--url`\u002F`--electron` launched browsers die when the node process\nexits, and `launchServer + connect` does not preserve pages across a client disconnect — so\nmulti-verb cross-process sequences are supported **only** in `--cdp` mode (attach to an app that owns\nits own lifetime) or in one programmatic `Driver` process. This is by design, not a gap.\n\n---\n\n## Relationship to the design suite\n\n`ui-drive` is the actuation layer beneath the UI\u002FUX consolidation:\n\n- **`ui-audit`** — sees and scores (READ-ONLY verdict). ui-drive drives and previews.\n- **`design-studio-session`** (N.2) — orchestrates ui-drive's preview→apply→accept→revert→harvest\n  loop, adds element→source mapping and scoped micro-commits, and re-audits via `ui-audit`.\n- **`design-studio`** — the batch G0–G7 state machine that can call ui-drive to point at and\n  drive individual screens.\n","# ui-drive Skill\n\nA **thin rail-router driver** for a live app. Where `ui-audit` *looks* and *scores*, `ui-drive`\n*points*, *drives*, and *previews* — the actuation channel an agent uses to touch a running UI.\n\n**Skill location:** `~\u002F.claude\u002Fskills\u002Fui-drive\u002F` (files: `SKILL.md`, `drive.mjs`).\n\n---\n\n## When to use\n\n- Point Claude (or the owner) at a specific live element and screenshot it with a highlight box.\n- Actuate a running app deterministically: click, fill, hover, press, check, select, scroll, focus.\n- Drive the **ephemeral restyle loop** — preview a CSS candidate as an injected overlay, apply \u002F\n  accept \u002F revert it, then **harvest** the accepted deltas as a proposed patch — with **zero**\n  source edits.\n- As the low-level driver invoked by **`design-studio session`** (interactive-modify, N.2) and the\n  **`design-studio`** gates.\n\n**Not for:** the design-quality VERDICT (use `ui-audit`), nor element→source resolution and\nmicro-commits (use `design-studio-session`).\n\n---\n\n## Zero new dependency (Correction 3: near-zero-build)\n\n`ui-drive` imports the browser stack that the sibling `ui-audit` skill already vendors at exactly\n`playwright@1.61.1`, resolved by absolute file URL from\n`..\u002Fui-audit\u002Fnode_modules\u002Fplaywright\u002Findex.mjs` (override with `UI_DRIVE_PLAYWRIGHT`). No `npm\ninstall` in this skill. If `ui-audit` has not had `npm install && npx playwright install chromium`\nrun once, do that in `ui-audit` first — its browser binaries are shared here.\n\n---\n\n## The three rails\n\nA `--target` string is resolved through fallback rails; the resolver reports which rail hit.\n\n| Rail | Target syntax | Backing Playwright API |\n|------|---------------|------------------------|\n| **a11y-ref** (preferred) | `ref:N` · `role:button\\|Save` · `text:Export` · `label:...` · `placeholder:...` · `alt:...` · `title:...` | ref map + `getByRole` \u002F `getByText` \u002F `getByLabel` \u002F ... |\n| **CDP** (css\u002FDOM) | `css:.btn` · `testid:submit` | `page.locator(css)` \u002F `getByTestId` |\n| **vision** (coordinate, last resort) | `xy:120,340` | `page.mouse` \u002F drawn box overlay |\n\n- `ref:N` comes from the **ref map** printed by `attach` — a deterministic enumeration of every\n  visible interactive element with its role, accessible name, tag, selector and rect. (Playwright\n  1.61.1's `ariaSnapshot({ref:true})` does **not** emit `[ref=]` markers, so ui-drive builds and\n  owns its own stable ref map.)\n- A **bare** target (no prefix) cascades automatically: a11y text → css → vision-fail (which tells\n  you to supply an `xy:`).\n\n---\n\n## The pinned highlight (why `point` works)\n\n`point` draws a highlight and screenshots it. The exact call was **pinned empirically against the\nvendored 1.61.1 at build time**:\n\n- **Real path:** `await locator.highlight()` injects an `\u003Cx-pw-glass>` overlay that **is captured by\n  `page.screenshot()`** (verified: the highlighted PNG differs from the plain PNG). `await\n  page.hideHighlight()` clears it afterward so later captures\u002Factions are pristine.\n- **The `show --annotate\u002F--highlight` CLI subcommand does NOT exist** and is not used — that path was\n  the unconfirmed caveat in Correction 3; it is now closed.\n- For a **vision** (`xy:`) target there is no locator, so `point` draws its own `#__ui_drive_box`\n  overlay at the coordinate instead.\n\n---\n\n## Verbs\n\n| Verb | Effect | Mutates? |\n|------|--------|----------|\n| `attach` | Connect to a running app (`--cdp`) or launch one (`--url` \u002F `--electron`); build + print the ref map. | live nav only |\n| `point` | Resolve a target, highlight it (pinned), screenshot; report rail, count, bbox, accessible name. | read-only |\n| `discuss` | `point` + element context: `ariaSnapshot`, key computed styles, nearby text. | read-only |\n| `drive` | Actuate the live app: `click`\u002F`dblclick`\u002F`hover`\u002F`fill`\u002F`type`\u002F`press`\u002F`check`\u002F`uncheck`\u002F`select`\u002F`scroll`\u002F`focus`. | **live app** |\n| `preview` | Inject an **ephemeral** `\u003Cstyle>` candidate; screenshot before\u002Fafter. | overlay only |\n| `apply` | Promote the preview to a persistent (session) overlay; re-injected after navigation. | overlay only |\n| `accept` | Mark the most-recent applied overlay as accepted (what `harvest` exports). | state only |\n| `revert` | Remove an overlay (`--scope preview\\|applied\\|accepted\\|all`), restoring visuals. | overlay only |\n| `harvest` | Emit accepted overlays as a **proposed** CSS patch (`.css` + `.json`). | **writes no source** |\n\n`drive` is the one verb that changes the running application — that is what a driver does. It never\nedits source files. `preview\u002Fapply\u002Faccept` only inject removable `\u003Cstyle>` tags; `harvest` only\nproposes deltas for a human\u002Fagent to translate to the real stylesheet (that translation is\n`design-studio-session`'s job).\n\n---\n\n## Safety \u002F shadow mode (COUNCIL C5)\n\n- ui-drive **never edits application source** — the strongest gate is structural.\n- Every mutating verb (`drive`, `preview`, `apply`, `accept`, `revert`, `harvest`) appends a JSONL\n  line to a **bounded, rotating shadow sink** (`UI_DRIVE_SHADOW_LOG`, default under the OS temp dir).\n  It is **observe-only**: it never blocks, never nags, and any sink failure is swallowed.\n\n---\n\n## Usage — programmatic (primary: one process holds the whole session)\n\n```js\nimport { Driver } from '.\u002Fdrive.mjs';\n\nconst d = await Driver.attach({ url: 'http:\u002F\u002Flocalhost:5173' });   \u002F\u002F or { cdp }, { electron }\nconsole.log(d.snapshot());                          \u002F\u002F { refs: [{ ref, role, name, tag, rect }], ... }\n\nawait d.point('role:button|Save', { outDir: '.\u002Fout' });   \u002F\u002F highlight + screenshot\nconst info = await d.discuss('ref:3');                    \u002F\u002F styles + ariaSnapshot + nearby text\nawait d.drive('fill', 'label:Email', 'a@b.com');\nawait d.drive('click', 'text:Save');\n\nawait d.preview('.primary{background:#0a7;border-radius:10px}');   \u002F\u002F ephemeral overlay\nawait d.apply(); await d.accept();\nconst patch = await d.harvest({ outDir: '.\u002Fout' });       \u002F\u002F proposed CSS deltas — NOT written to source\nawait d.revert({ scope: 'all' });\nawait d.close();\n```\n\nThe importable surface: `Driver` (with static `attach` and instance verbs `snapshot`, `resolve`,\n`point`, `discuss`, `drive`, `preview`, `apply`, `accept`, `revert`, `harvest`, `refresh`, `close`),\nplus helpers `resolvePlaywright`, `parseTarget`, `shadowLog`, `shadowLogPath`.\n\n---\n\n## Usage — CLI\n\n`--cdp \u003Cendpoint>` attaches to an **already-running** app (cross-process; verbs reconnect and\noverlay state persists via a session file). `--url` \u002F `--electron` run the verb **oneshot** in a\nsingle process.\n\n```powershell\n# Cross-process against a running app (Chrome started with --remote-debugging-port=9222,\n# or an Electron app exposing a CDP endpoint):\nnode drive.mjs attach  --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs point   --cdp http:\u002F\u002Flocalhost:9222 --target ref:5 --out .\u002Fout\nnode drive.mjs discuss --cdp http:\u002F\u002Flocalhost:9222 --target \"role:button|Export\"\nnode drive.mjs drive   --cdp http:\u002F\u002Flocalhost:9222 --action click --target \"text:Export\"\nnode drive.mjs preview --cdp http:\u002F\u002Flocalhost:9222 --css \".btn{background:#0a7}\"\nnode drive.mjs apply   --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs accept  --cdp http:\u002F\u002Flocalhost:9222\nnode drive.mjs harvest --cdp http:\u002F\u002Flocalhost:9222 --out .\u002Fout\nnode drive.mjs revert  --cdp http:\u002F\u002Flocalhost:9222 --scope all\n\n# Oneshot launch (single process; multi-verb sessions want --cdp or the programmatic Driver):\nnode drive.mjs point   --url http:\u002F\u002Flocalhost:5173 --target \"role:button|Save\" --out .\u002Fout\nnode drive.mjs attach  --electron .\u002Fpath\u002Fto\u002Fmain.js\n```\n\nFlags: `--url` `--electron` `--cdp` `--target` `--action` `--value` `--css` `--scope` `--out`\n`--session` `--headed` `--wait-selector` `--settle` `--include-applied`. Every run ends with a\nterminal-state marker `SUCCESS:ui-drive:\u003Cverb>` or `FAILED:ui-drive:\u003Cverb> \u003Creason>`.\n\n**Cross-process caveat (honest):** `--url`\u002F`--electron` launched browsers die when the node process\nexits, and `launchServer + connect` does not preserve pages across a client disconnect — so\nmulti-verb cross-process sequences are supported **only** in `--cdp` mode (attach to an app that owns\nits own lifetime) or in one programmatic `Driver` process. This is by design, not a gap.\n\n---\n\n## Relationship to the design suite\n\n`ui-drive` is the actuation layer beneath the UI\u002FUX consolidation:\n\n- **`ui-audit`** — sees and scores (READ-ONLY verdict). ui-drive drives and previews.\n- **`design-studio-session`** (N.2) — orchestrates ui-drive's preview→apply→accept→revert→harvest\n  loop, adds element→source mapping and scoped micro-commits, and re-audits via `ui-audit`.\n- **`design-studio`** — the batch G0–G7 state machine that can call ui-drive to point at and\n  drive individual screens.\n",{"name":5,"metadata":54,"description":7},{"origin":55},"user","main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fskills\u002Fui-drive","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill ui-drive",{"tool":68,"command":69},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill ui-drive",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill ui-drive","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fui-drive\u002FSKILL.md",true,[76,82,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"drive.mjs","SCRIPT","脚本",36176,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fui-drive\u002Fdrive.mjs",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"README.md","REFERENCE","参考文档",886,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002FREADME.md",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fanimation-design-thinking.md",7205,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fanimation-design-thinking.md",{"path":93,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fanimations.md",8836,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fanimations.md",{"path":97,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fcamera-and-3d.md",4132,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fcamera-and-3d.md",{"path":101,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fdecorations.md",5006,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fdecorations.md",{"path":105,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fequations.md",6086,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fequations.md",{"path":109,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fgraphs-and-data.md",4628,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fgraphs-and-data.md",{"path":113,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002Fmobjects.md",9739,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fmobjects.md",{"path":117,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":118,"sourceHtmlUrl":119},"references\u002Fpaper-explainer.md",9333,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fpaper-explainer.md",{"path":121,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":122,"sourceHtmlUrl":123},"references\u002Fproduction-quality.md",5904,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fproduction-quality.md",{"path":125,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":126,"sourceHtmlUrl":127},"references\u002Frendering.md",5375,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Frendering.md",{"path":129,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":130,"sourceHtmlUrl":131},"references\u002Fscene-planning.md",2751,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fscene-planning.md",{"path":133,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":134,"sourceHtmlUrl":135},"references\u002Ftroubleshooting.md",4319,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Ftroubleshooting.md",{"path":137,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":138,"sourceHtmlUrl":139},"references\u002Fupdaters-and-trackers.md",8500,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fupdaters-and-trackers.md",{"path":141,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":142,"sourceHtmlUrl":143},"references\u002Fvisual-design.md",4762,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Freferences\u002Fvisual-design.md",{"path":145,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":146,"sourceHtmlUrl":147},"scripts\u002Fsetup.sh",921,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fmanim-video\u002Fscripts\u002Fsetup.sh",[149,171,200,226,240,255],{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":49},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[156,157,158,159,160,161,162,163,164,165,166,167,168,169,170],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","use","context","repo","injection","execution","file",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":180,"publishedAt":49},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[177],{"categoryNo":178,"categoryName":179,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[181,182,183,184,185,186,187,188,189,190,191,192,193,194,165,195,196,197,198,199],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":212,"publishedAt":49},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[206,209],{"categoryNo":207,"categoryName":208,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":210,"categoryName":211,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[213,214,215,216,217,218,219,220,221,222,182,30,223,224,225],"review","visual","visual review","pages","web","false","iteration","take","check","slides","screenshot","playwright","screenshots",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":232,"publishedAt":49},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[228,233,234,235,236,237,238,239],"setup","report","project","installation","project setup","issues","state",{"skillNo":241,"name":242,"nameZh":6,"description":243,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":244,"categories":245,"keywords":247,"publishedAt":49},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[246],{"categoryNo":178,"categoryName":179,"taxonomyType":21,"taxonomyTypeDesc":22},[242,248,161,249,250,251,165,55,252,253,254],"start issue","issue","ready","work on issue","work","work on","development",{"skillNo":256,"name":233,"nameZh":6,"description":257,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":258,"categories":259,"keywords":260,"publishedAt":49},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[233,235,197,261,237,262],"files","interactive"]