[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DCH7N6FVP3MSTDA68TXWBV":3,"skill-same:01M6DCH7N6FVP3MSTDA68TXWBV":76},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6DCH7N6FVP3MSTDA68TXWBV","desktop-gui-scripting",null,"Create lightweight Python desktop widgets when GUI automation is unavailable.","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F14\u002F14e422def5643c29c58a7690debabf01a1c8cb526aa62cd197baf62b74f92ea3\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"desktop","scripting","desktop gui scripting","macos","python","linux","automation","windows","create","computer","hermes","hermes agent","use","widgets","tkinter","gui","2026-11-10 10:12:30",false,"---\r\nname: desktop-gui-scripting\r\ndescription: Create lightweight Python desktop widgets when GUI automation is unavailable.\r\nversion: 1.0.0\r\nauthor: Hermes Agent\r\nlicense: MIT\r\nplatforms: [windows, macos, linux]\r\ntags: [desktop, python, tkinter, gui, widgets]\r\ncategory: desktop\r\nmetadata:\r\n  hermes:\r\n    tags: [desktop, python, tkinter, gui, widgets]\r\n    category: desktop\r\n    related_skills: [computer-use]\r\n---\r\n\r\n# Desktop GUI Scripting Skill\r\n\r\nThis skill creates small native desktop utilities such as clocks, timers, overlays, and status widgets with Python's standard-library `tkinter`. It is a fallback for cases where direct desktop automation is unavailable; it does not replace `computer_use` for interacting with existing applications.\r\n\r\n## When to Use\r\n\r\n- The user asks for a simple desktop widget or overlay.\r\n- The widget should run locally without a package installation.\r\n- `computer_use` is unavailable or not suitable for creating the artifact.\r\n- The user needs a persistent, always-on-top display with a simple exit path.\r\n\r\n## Prerequisites\r\n\r\n- Python with Tk support installed.\r\n- A writable destination such as the user's Desktop.\r\n- On Windows, prefer the launcher requested by the workspace convention (`py -3`) when available.\r\n\r\n## How to Run\r\n\r\n1. Create a standalone `.py` file with `tkinter` and no third-party dependencies.\r\n2. Validate syntax before launch.\r\n3. Launch it as a tracked long-running background process.\r\n4. Confirm the process remains running; report the absolute file path and exit controls.\r\n\r\nFor the reusable skeleton, see `templates\u002Fdesktop_widget.py`.\r\nFor the clock-specific implementation notes from the reference session, see `references\u002Fdigital-clock.md`.\r\n\r\n## Quick Reference\r\n\r\n```python\r\nroot.attributes(\"-topmost\", True)\r\nroot.attributes(\"-alpha\", 0.90)\r\nroot.after(250, update)\r\nroot.bind(\"\u003CEscape>\", close)\r\nroot.protocol(\"WM_DELETE_WINDOW\", close)\r\n```\r\n\r\n## Procedure\r\n\r\n1. **Clarify the widget contract.** Identify what is displayed, whether it should stay above other windows, and how the user will close it.\r\n2. **Keep the implementation self-contained.** Use `tkinter`, `datetime`, and other standard-library modules unless the user explicitly requests a richer framework.\r\n3. **Design for visibility.** Use readable fonts, sufficient contrast, and conservative padding. Add date or secondary status only when useful.\r\n4. **Add multiple exit paths.** Bind Escape, window close, and—when appropriate—a right-click context menu.\r\n5. **Use an update loop correctly.** Schedule refreshes with `root.after()` rather than blocking with `sleep()` inside the UI thread.\r\n6. **Write to an explicit path.** Prefer an absolute user-facing path, especially when the process will outlive the current shell.\r\n7. **Validate and launch.** Run a syntax check, then launch from the script's directory or use an absolute path. Poll the background process to distinguish a live GUI from an immediate startup failure.\r\n8. **Report operation.** Give the user the file path, current behavior, exit instructions, and optional customization points.\r\n\r\n## Pitfalls\r\n\r\n- **Relative-path launch failure:** A path such as `py -3 desktop_clock.py` only works when the working directory is the script directory. Use an absolute path or set `workdir` explicitly.\r\n- **GUI lifetime:** A widget is intentionally long-running. Use a tracked background process with no completion notification, then poll once to verify it is still alive.\r\n- **Automation fallback loop:** If `computer_use` repeatedly fails during initialization, do not keep retrying blindly; switch to a file-and-process workflow and mention the limitation accurately.\r\n- **Tk update blocking:** Never use a tight loop or `time.sleep()` on the main thread; use `after()`.\r\n- **Overlays and focus:** `-topmost` keeps the widget visible, but platform window managers may still affect focus. Keep a normal title bar unless the user explicitly wants a borderless overlay.\r\n- **Transparency portability:** `-alpha` is optional and may vary by window manager; retain a readable opaque fallback.\r\n- **Unverified visual claim:** Process liveness confirms the event loop started, not that the window is visible on the user's monitor. Avoid claiming a screenshot-level verification when desktop capture is unavailable.\r\n\r\n## Verification\r\n\r\n- Syntax validation returns success.\r\n- The background process remains running after launch.\r\n- The script has at least one timer callback and at least two clean exit paths.\r\n- The final response contains an absolute artifact path and truthful verification scope.\r\n- If visual confirmation is needed, use `computer_use` after the widget is launched or ask the user to confirm visibility.\r\n","# Desktop GUI Scripting Skill\r\n\r\nThis skill creates small native desktop utilities such as clocks, timers, overlays, and status widgets with Python's standard-library `tkinter`. It is a fallback for cases where direct desktop automation is unavailable; it does not replace `computer_use` for interacting with existing applications.\r\n\r\n## When to Use\r\n\r\n- The user asks for a simple desktop widget or overlay.\r\n- The widget should run locally without a package installation.\r\n- `computer_use` is unavailable or not suitable for creating the artifact.\r\n- The user needs a persistent, always-on-top display with a simple exit path.\r\n\r\n## Prerequisites\r\n\r\n- Python with Tk support installed.\r\n- A writable destination such as the user's Desktop.\r\n- On Windows, prefer the launcher requested by the workspace convention (`py -3`) when available.\r\n\r\n## How to Run\r\n\r\n1. Create a standalone `.py` file with `tkinter` and no third-party dependencies.\r\n2. Validate syntax before launch.\r\n3. Launch it as a tracked long-running background process.\r\n4. Confirm the process remains running; report the absolute file path and exit controls.\r\n\r\nFor the reusable skeleton, see `templates\u002Fdesktop_widget.py`.\r\nFor the clock-specific implementation notes from the reference session, see `references\u002Fdigital-clock.md`.\r\n\r\n## Quick Reference\r\n\r\n```python\r\nroot.attributes(\"-topmost\", True)\r\nroot.attributes(\"-alpha\", 0.90)\r\nroot.after(250, update)\r\nroot.bind(\"\u003CEscape>\", close)\r\nroot.protocol(\"WM_DELETE_WINDOW\", close)\r\n```\r\n\r\n## Procedure\r\n\r\n1. **Clarify the widget contract.** Identify what is displayed, whether it should stay above other windows, and how the user will close it.\r\n2. **Keep the implementation self-contained.** Use `tkinter`, `datetime`, and other standard-library modules unless the user explicitly requests a richer framework.\r\n3. **Design for visibility.** Use readable fonts, sufficient contrast, and conservative padding. Add date or secondary status only when useful.\r\n4. **Add multiple exit paths.** Bind Escape, window close, and—when appropriate—a right-click context menu.\r\n5. **Use an update loop correctly.** Schedule refreshes with `root.after()` rather than blocking with `sleep()` inside the UI thread.\r\n6. **Write to an explicit path.** Prefer an absolute user-facing path, especially when the process will outlive the current shell.\r\n7. **Validate and launch.** Run a syntax check, then launch from the script's directory or use an absolute path. Poll the background process to distinguish a live GUI from an immediate startup failure.\r\n8. **Report operation.** Give the user the file path, current behavior, exit instructions, and optional customization points.\r\n\r\n## Pitfalls\r\n\r\n- **Relative-path launch failure:** A path such as `py -3 desktop_clock.py` only works when the working directory is the script directory. Use an absolute path or set `workdir` explicitly.\r\n- **GUI lifetime:** A widget is intentionally long-running. Use a tracked background process with no completion notification, then poll once to verify it is still alive.\r\n- **Automation fallback loop:** If `computer_use` repeatedly fails during initialization, do not keep retrying blindly; switch to a file-and-process workflow and mention the limitation accurately.\r\n- **Tk update blocking:** Never use a tight loop or `time.sleep()` on the main thread; use `after()`.\r\n- **Overlays and focus:** `-topmost` keeps the widget visible, but platform window managers may still affect focus. Keep a normal title bar unless the user explicitly wants a borderless overlay.\r\n- **Transparency portability:** `-alpha` is optional and may vary by window manager; retain a readable opaque fallback.\r\n- **Unverified visual claim:** Process liveness confirms the event loop started, not that the window is visible on the user's monitor. Avoid claiming a screenshot-level verification when desktop capture is unavailable.\r\n\r\n## Verification\r\n\r\n- Syntax validation returns success.\r\n- The background process remains running after launch.\r\n- The script has at least one timer callback and at least two clean exit paths.\r\n- The final response contains an absolute artifact path and truthful verification scope.\r\n- If visual confirmation is needed, use `computer_use` after the widget is launched or ask the user to confirm visibility.\r\n",{"name":5,"tags":45,"author":46,"license":15,"version":47,"category":24,"metadata":48,"platforms":53,"description":7},[24,28,38,39,37],"Hermes Agent","1.0.0",{"hermes":49},{"tags":50,"category":24,"related_skills":51},[24,28,38,39,37],[52],"computer-use",[31,27,29],"main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002F14\u002F14e422def5643c29c58a7690debabf01a1c8cb526aa62cd197baf62b74f92ea3",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add zapabob\u002FSkills --skill desktop-gui-scripting",{"tool":68,"command":69},"bunx","bunx skills add zapabob\u002FSkills --skill desktop-gui-scripting",{"tool":71,"command":72},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill desktop-gui-scripting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002F14\u002F14e422def5643c29c58a7690debabf01a1c8cb526aa62cd197baf62b74f92ea3\u002FSKILL.md",true,[],[77,106,141,167,194,210],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":92,"publishedAt":40},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[83,86,87],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[79,93,27,94,95,29,31,96,97,98,99,100,101,34,35,102,54,103,104,105],"openclaw","cli","github","official","search","https","social-media","api","Media","twitter","social","via","post",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":123,"publishedAt":40},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[112,115,118,119,120],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},{"categoryNo":121,"categoryName":122,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000036","内容创作者",[124,125,126,127,27,128,29,129,31,130,131,132,133,134,135,136,137,138,139,140],"writing","writing plans","plans","design","review","workflow","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":150,"publishedAt":40},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[143,27,29,151,152,153,154,155,156,157,158,159,36,160,161,162,163,164,165,166],"openai","speech","multimodal","Transformers","ASR","Audio","text","model","speech recognition","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":176,"publishedAt":40},"01M6GJSMRQ8EETZTYMG72P70EA","weights-and-biases","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[173],{"categoryNo":174,"categoryName":175,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000013","分析与可视化",[177,27,178,179,31,180,181,182,183,184,185,158,186,187,188,189,190,191,192,193],"weights and biases","tensorflow","experiments","pytorch","visualization","registry","real-time","tuning","dashboards","experiment","log","time","Experiment Tracking","Model Registry","Hyperparameter Tuning","WandB","Real-Time Visualization",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":201,"publishedAt":40},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[200],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[196,27,202,95,29,30,203,204,205,206,207,34,35,208,209],"terminal","http","monitoring","cron","json","rss","devops","with",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":218,"publishedAt":40},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[216,217],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},[219,220,221,29,222,151,223,224,225,154,226,100,227,228,229,230,231,232,233,234],"llms","vLLM","serving llms vllm","research","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]