[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71CEWNWDZMEKMQYXBZ7PY3C":3,"skill-same:01M71CEWNWDZMEKMQYXBZ7PY3C":95},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":69,"commitSha":70,"skillDirectory":71,"forksCount":72,"repositoryHtmlUrl":73,"repositoryHomepageUrl":6,"ownerHtmlUrl":74,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":75,"install":76,"resources":88},"01M71CEWNWDZMEKMQYXBZ7PY3C","best-practices-kde",null,"Repo-specific KDE\u002FQML best practices for agentic coding: singleton design systems, property ordering, accessibility, performance (binding loops, delegate recycling), Plasma integration, and D-Bus patterns.","cateyephotos\u002Fagent-skills","cateyephotos","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F110843613?v=4","01M71CCSDD8VJ7CZ4V1QQGBMA7","01M71CCSE1VRT329KB810CRC0V",0,"MIT","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fbest-practices-kde\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"best practices","best practices kde","best-practices","true","monitor","agentic coding","repo","for","coding","patterns","pattern","loops","review","agentic","singleton","design systems","design","delegate","performance","recycling","2026-11-10 10:12:30",false,"---\nname: best-practices-kde\ndescription: >\n  Repo-specific KDE\u002FQML best practices for agentic coding: singleton design systems,\n  property ordering, accessibility, performance (binding loops, delegate recycling),\n  Plasma integration, and D-Bus patterns.\ntriggers:\n  - best practices kde\n  - qml review\n  - kde plasma\n  - plasmoid\n  - dbus pattern\nlicense: MIT\nmetadata:\n  language: qml\n  qt_versions: [\"6.x\"]\n  defaults:\n    style:\n      max_lines_per_file: 600\n      design_system: singleton\n      property_ordering: required\n      accessibility: required\n    performance:\n      avoid_binding_loops: true\n      delegate_recycling: true\n      shader_effects_gpu_only: true\n    integration:\n      dbus: required\n      plasma_hig: recommended\n\nprovides:\n  - best-practices-kde\ncomposes:\n  - task-monitor\n---\n\n# KDE \u002F QML Best Practices (Project Skill)\n\nCurated rules for writing and reviewing QML in this repo's KDE surface area\n(primarily `apps\u002Fhorus-overlay\u002F`).\n\n## When to Apply\n\nUse this skill whenever you:\n\n- create or modify `.qml` files\n- add or change KDE Plasma integration (D-Bus, KWin scripts, global shortcuts)\n- design plugin UIs for the overlay system\n- review accessibility or keyboard navigation in QML\n\n## Project Defaults\n\n- **Design System:** Use a `pragma Singleton` style object (e.g. `HorusStyle.qml`) — never hard-code colors, sizes, or animation durations\n- **Property Ordering:** Follow the canonical order (see below)\n- **Accessibility:** Every interactive element needs `Accessible.name`, `Accessible.role`, and `Accessible.description`\n- **File Size:** No QML file over **600** lines — extract delegates, sub-components, and style objects\n- **Effects:** `MultiEffect` \u002F `layer.effect` only when GPU-composited; disable on software renderers\n\n## Property Ordering (within a QML type)\n\n```qml\nItem {\n    \u002F\u002F 1. id\n    id: root\n\n    \u002F\u002F 2. Custom properties (readonly first, then mutable)\n    readonly property string label: \"Hello\"\n    property int count: 0\n\n    \u002F\u002F 3. Sizing & geometry\n    width: 200; height: 100\n\n    \u002F\u002F 4. Anchors \u002F Layout properties\n    anchors.fill: parent\n    Layout.fillWidth: true\n\n    \u002F\u002F 5. Visual properties (color, opacity, radius, clip, z, visible)\n    color: HorusStyle.colors.bg\n    opacity: 1.0\n    visible: true\n\n    \u002F\u002F 6. Behaviors & Transitions\n    Behavior on opacity { NumberAnimation { duration: HorusStyle.anim.fast } }\n\n    \u002F\u002F 7. Signals\n    signal clicked(string itemId)\n\n    \u002F\u002F 8. Signal handlers (on*)\n    onVisibleChanged: { \u002F* ... *\u002F }\n\n    \u002F\u002F 9. Functions\n    function doSomething() { \u002F* ... *\u002F }\n\n    \u002F\u002F 10. Child items (deepest nesting last)\n    Text { text: root.label }\n}\n```\n\n## Categories (priority order)\n\n1. Correctness (CRITICAL): `correctness-`\n2. Accessibility (HIGH): `a11y-`\n3. Performance (HIGH): `perf-`\n4. Design System (HIGH): `design-`\n5. Integration (MEDIUM): `integration-`\n6. Style & Maintainability (MEDIUM): `style-`\n\n## Rules\n\n### `design-singleton-style`\n\n**Impact: HIGH** — All colors, spacing, typography, and animation durations MUST come from the singleton design system (`HorusStyle`). Hard-coded hex colors in component files are a violation.\n\n```qml\n\u002F\u002F ❌ BAD\ncolor: \"#1e293b\"\nfont.pixelSize: 14\n\n\u002F\u002F ✅ GOOD\ncolor: HorusStyle.colors.bgElevated\nfont.pixelSize: HorusStyle.text.bodySize\n```\n\n### `design-token-completeness`\n\n**Impact: MEDIUM** — When adding a new visual concept, add the token to `HorusStyle.qml` first, then reference it. Don't add ad-hoc `property color` declarations in leaf components.\n\n### `a11y-interactive-elements`\n\n**Impact: HIGH** — Every `Button`, `MouseArea` acting as a button, `TextField`, and `ListView` MUST declare:\n\n- `Accessible.name` — concise label\n- `Accessible.role` — correct semantic role\n- `Accessible.description` — context for screen readers (optional for obvious elements)\n\n```qml\nButton {\n    Accessible.name: \"Stop recording\"\n    Accessible.role: Accessible.Button\n    Accessible.description: \"Stops the current voice recording\"\n}\n```\n\n### `a11y-keyboard-navigation`\n\n**Impact: HIGH** — All primary flows must be operable via keyboard:\n\n- `Tab` \u002F `Shift+Tab` for focus cycling\n- `Enter` \u002F `Return` for activation\n- `Escape` for dismissal\n- Arrow keys within lists (`keyNavigationEnabled: true`)\n- Visible focus indicators (border or glow on `activeFocus`)\n\n### `perf-binding-loops`\n\n**Impact: CRITICAL** — Never create circular property bindings. If the QML engine warns `\"Binding loop detected\"`, it's a hard error.\n\n```qml\n\u002F\u002F ❌ BAD — width depends on child, child depends on parent width\nwidth: childItem.implicitWidth + 20\n\u002F\u002F ... where childItem has: width: parent.width - 40\n\n\u002F\u002F ✅ GOOD — break the loop with explicit sizing or implicitWidth\nimplicitWidth: childItem.implicitWidth + 20\n```\n\n### `perf-delegate-recycling`\n\n**Impact: HIGH** — `ListView` and `GridView` delegates MUST be lightweight:\n\n- No `Component.onCompleted` with heavy logic\n- Prefer model role bindings over imperative JS in delegates\n- Use `cacheBuffer` for off-screen pre-loading\n- Set `clip: true` on the view\n\n### `perf-layer-effects`\n\n**Impact: MEDIUM** — `layer.enabled` and `MultiEffect` force GPU texture allocation. Guard with a condition:\n\n```qml\nlayer.enabled: someCondition  \u002F\u002F not always-on\nlayer.effect: MultiEffect {\n    shadowEnabled: true\n    \u002F\u002F ...\n}\n```\n\n### `perf-canvas-repaint`\n\n**Impact: MEDIUM** — `Canvas.onPaint` is CPU-bound. Minimize repaints:\n\n- Only call `requestPaint()` when data actually changes\n- Avoid repainting on every frame (use a timer or data-change signal)\n\n### `integration-dbus`\n\n**Impact: MEDIUM** — Use D-Bus for communication between the QML frontend and Python backend. Follow patterns:\n\n- Register well-known names under `org.openclaw.*`\n- Use `QDBusConnection::sessionBus()` (not system bus) for user-scope services\n- Expose properties via D-Bus properties interface for external tooling\n\n### `integration-global-shortcuts`\n\n**Impact: MEDIUM** — Register global shortcuts via KGlobalAccel, not raw X11\u002FWayland grabs. This ensures they appear in System Settings and respect user overrides.\n\n### `style-max-600-lines`\n\n**Impact: MEDIUM** — QML files over 600 lines should be decomposed:\n\n- Extract reusable delegates into separate `.qml` files\n- Extract complex sub-layouts into components\n- Keep the design system singleton as a separate file\n\n### `style-signal-naming`\n\n**Impact: LOW** — Signal names should be verb phrases: `clicked`, `toggled`, `dataReceived`. Avoid noun-only signals like `data` or `result`.\n\n### `correctness-null-guards`\n\n**Impact: HIGH** — Guard against `undefined` \u002F `null` model data in delegates and dynamic property access:\n\n```qml\ntext: model.title || \"\"\nvisible: (model.items && model.items.length > 0) || false\n```\n\n## Skill-App Pattern\n\nAny skill needing a GUI beyond TUI should launch a **KDE app** matching the Tauri app's design system. This creates **agent accountability** — when the agent says \"I trained the voice model,\" a human opens the same skill's GUI and verifies visually. The GUI is the audit surface that prevents hallucination.\n\n### Convention\n\n- **Launch via** `.\u002Frun.sh gui` — every skill with a GUI exposes this command\n- **Framework:** PySide6 + QML with `EmbryStyle.qml` design tokens (singleton)\n- **Tab-based navigation** with `tab-registry.json` (matching the Tauri `tab-registry.json` pattern)\n- **Keyboard shortcuts** per tab (number keys 1-9 switch tabs)\n- **EmbryParticles** as universal state indicator (header or sidebar)\n- **Accessible:** all interactive elements have `Accessible.name` + `Accessible.role`\n- **Agent-invocable:** `.\u002Frun.sh gui --tab \u003Cid>` opens a specific panel for human review\n- **Two bridges pattern:** skills with multiple concerns register separate QObject bridges\n  (e.g. `editorBridge` + `guiBridge`), each as a named context property — never merge\n\n### File Layout\n\n```\nskill-name\u002F\n  qml\u002F\n    SkillNameApp.qml        # ApplicationWindow with header, tab bar, StackLayout\n    tab-registry.json       # Tab config: groups, shortcuts, voice keywords\n    EmbryStyle.qml          # Symlink or copy of the shared design system\n    PageOne.qml             # Tab content pages\n    PageTwo.qml\n  app.py                    # Unified launcher (registers bridges, loads App.qml)\n  run.sh                    # .\u002Frun.sh gui, .\u002Frun.sh gui --tab \u003Cid>\n```\n\n### Shared Mic Pattern\n\nWhen multiple bridges need mic input, **one bridge owns pw-record** and others read from it via `set_mic_source(owner_bridge)`. This avoids duplicate PipeWire readers.\n\n### Reference Implementation\n\nSee `voice-lab\u002F` for the canonical example: `VoiceLabApp.qml` with 4 tabs across 2 groups, shared mic meter, two coexisting bridges.\n\n## Quick Reference (house rules)\n\n- `design-singleton-style`\n- `design-token-completeness`\n- `a11y-interactive-elements`\n- `a11y-keyboard-navigation`\n- `perf-binding-loops`\n- `perf-delegate-recycling`\n- `perf-layer-effects`\n- `perf-canvas-repaint`\n- `integration-dbus`\n- `integration-global-shortcuts`\n- `style-max-600-lines`\n- `style-signal-naming`\n- `correctness-null-guards`\n","# KDE \u002F QML Best Practices (Project Skill)\n\nCurated rules for writing and reviewing QML in this repo's KDE surface area\n(primarily `apps\u002Fhorus-overlay\u002F`).\n\n## When to Apply\n\nUse this skill whenever you:\n\n- create or modify `.qml` files\n- add or change KDE Plasma integration (D-Bus, KWin scripts, global shortcuts)\n- design plugin UIs for the overlay system\n- review accessibility or keyboard navigation in QML\n\n## Project Defaults\n\n- **Design System:** Use a `pragma Singleton` style object (e.g. `HorusStyle.qml`) — never hard-code colors, sizes, or animation durations\n- **Property Ordering:** Follow the canonical order (see below)\n- **Accessibility:** Every interactive element needs `Accessible.name`, `Accessible.role`, and `Accessible.description`\n- **File Size:** No QML file over **600** lines — extract delegates, sub-components, and style objects\n- **Effects:** `MultiEffect` \u002F `layer.effect` only when GPU-composited; disable on software renderers\n\n## Property Ordering (within a QML type)\n\n```qml\nItem {\n    \u002F\u002F 1. id\n    id: root\n\n    \u002F\u002F 2. Custom properties (readonly first, then mutable)\n    readonly property string label: \"Hello\"\n    property int count: 0\n\n    \u002F\u002F 3. Sizing & geometry\n    width: 200; height: 100\n\n    \u002F\u002F 4. Anchors \u002F Layout properties\n    anchors.fill: parent\n    Layout.fillWidth: true\n\n    \u002F\u002F 5. Visual properties (color, opacity, radius, clip, z, visible)\n    color: HorusStyle.colors.bg\n    opacity: 1.0\n    visible: true\n\n    \u002F\u002F 6. Behaviors & Transitions\n    Behavior on opacity { NumberAnimation { duration: HorusStyle.anim.fast } }\n\n    \u002F\u002F 7. Signals\n    signal clicked(string itemId)\n\n    \u002F\u002F 8. Signal handlers (on*)\n    onVisibleChanged: { \u002F* ... *\u002F }\n\n    \u002F\u002F 9. Functions\n    function doSomething() { \u002F* ... *\u002F }\n\n    \u002F\u002F 10. Child items (deepest nesting last)\n    Text { text: root.label }\n}\n```\n\n## Categories (priority order)\n\n1. Correctness (CRITICAL): `correctness-`\n2. Accessibility (HIGH): `a11y-`\n3. Performance (HIGH): `perf-`\n4. Design System (HIGH): `design-`\n5. Integration (MEDIUM): `integration-`\n6. Style & Maintainability (MEDIUM): `style-`\n\n## Rules\n\n### `design-singleton-style`\n\n**Impact: HIGH** — All colors, spacing, typography, and animation durations MUST come from the singleton design system (`HorusStyle`). Hard-coded hex colors in component files are a violation.\n\n```qml\n\u002F\u002F ❌ BAD\ncolor: \"#1e293b\"\nfont.pixelSize: 14\n\n\u002F\u002F ✅ GOOD\ncolor: HorusStyle.colors.bgElevated\nfont.pixelSize: HorusStyle.text.bodySize\n```\n\n### `design-token-completeness`\n\n**Impact: MEDIUM** — When adding a new visual concept, add the token to `HorusStyle.qml` first, then reference it. Don't add ad-hoc `property color` declarations in leaf components.\n\n### `a11y-interactive-elements`\n\n**Impact: HIGH** — Every `Button`, `MouseArea` acting as a button, `TextField`, and `ListView` MUST declare:\n\n- `Accessible.name` — concise label\n- `Accessible.role` — correct semantic role\n- `Accessible.description` — context for screen readers (optional for obvious elements)\n\n```qml\nButton {\n    Accessible.name: \"Stop recording\"\n    Accessible.role: Accessible.Button\n    Accessible.description: \"Stops the current voice recording\"\n}\n```\n\n### `a11y-keyboard-navigation`\n\n**Impact: HIGH** — All primary flows must be operable via keyboard:\n\n- `Tab` \u002F `Shift+Tab` for focus cycling\n- `Enter` \u002F `Return` for activation\n- `Escape` for dismissal\n- Arrow keys within lists (`keyNavigationEnabled: true`)\n- Visible focus indicators (border or glow on `activeFocus`)\n\n### `perf-binding-loops`\n\n**Impact: CRITICAL** — Never create circular property bindings. If the QML engine warns `\"Binding loop detected\"`, it's a hard error.\n\n```qml\n\u002F\u002F ❌ BAD — width depends on child, child depends on parent width\nwidth: childItem.implicitWidth + 20\n\u002F\u002F ... where childItem has: width: parent.width - 40\n\n\u002F\u002F ✅ GOOD — break the loop with explicit sizing or implicitWidth\nimplicitWidth: childItem.implicitWidth + 20\n```\n\n### `perf-delegate-recycling`\n\n**Impact: HIGH** — `ListView` and `GridView` delegates MUST be lightweight:\n\n- No `Component.onCompleted` with heavy logic\n- Prefer model role bindings over imperative JS in delegates\n- Use `cacheBuffer` for off-screen pre-loading\n- Set `clip: true` on the view\n\n### `perf-layer-effects`\n\n**Impact: MEDIUM** — `layer.enabled` and `MultiEffect` force GPU texture allocation. Guard with a condition:\n\n```qml\nlayer.enabled: someCondition  \u002F\u002F not always-on\nlayer.effect: MultiEffect {\n    shadowEnabled: true\n    \u002F\u002F ...\n}\n```\n\n### `perf-canvas-repaint`\n\n**Impact: MEDIUM** — `Canvas.onPaint` is CPU-bound. Minimize repaints:\n\n- Only call `requestPaint()` when data actually changes\n- Avoid repainting on every frame (use a timer or data-change signal)\n\n### `integration-dbus`\n\n**Impact: MEDIUM** — Use D-Bus for communication between the QML frontend and Python backend. Follow patterns:\n\n- Register well-known names under `org.openclaw.*`\n- Use `QDBusConnection::sessionBus()` (not system bus) for user-scope services\n- Expose properties via D-Bus properties interface for external tooling\n\n### `integration-global-shortcuts`\n\n**Impact: MEDIUM** — Register global shortcuts via KGlobalAccel, not raw X11\u002FWayland grabs. This ensures they appear in System Settings and respect user overrides.\n\n### `style-max-600-lines`\n\n**Impact: MEDIUM** — QML files over 600 lines should be decomposed:\n\n- Extract reusable delegates into separate `.qml` files\n- Extract complex sub-layouts into components\n- Keep the design system singleton as a separate file\n\n### `style-signal-naming`\n\n**Impact: LOW** — Signal names should be verb phrases: `clicked`, `toggled`, `dataReceived`. Avoid noun-only signals like `data` or `result`.\n\n### `correctness-null-guards`\n\n**Impact: HIGH** — Guard against `undefined` \u002F `null` model data in delegates and dynamic property access:\n\n```qml\ntext: model.title || \"\"\nvisible: (model.items && model.items.length > 0) || false\n```\n\n## Skill-App Pattern\n\nAny skill needing a GUI beyond TUI should launch a **KDE app** matching the Tauri app's design system. This creates **agent accountability** — when the agent says \"I trained the voice model,\" a human opens the same skill's GUI and verifies visually. The GUI is the audit surface that prevents hallucination.\n\n### Convention\n\n- **Launch via** `.\u002Frun.sh gui` — every skill with a GUI exposes this command\n- **Framework:** PySide6 + QML with `EmbryStyle.qml` design tokens (singleton)\n- **Tab-based navigation** with `tab-registry.json` (matching the Tauri `tab-registry.json` pattern)\n- **Keyboard shortcuts** per tab (number keys 1-9 switch tabs)\n- **EmbryParticles** as universal state indicator (header or sidebar)\n- **Accessible:** all interactive elements have `Accessible.name` + `Accessible.role`\n- **Agent-invocable:** `.\u002Frun.sh gui --tab \u003Cid>` opens a specific panel for human review\n- **Two bridges pattern:** skills with multiple concerns register separate QObject bridges\n  (e.g. `editorBridge` + `guiBridge`), each as a named context property — never merge\n\n### File Layout\n\n```\nskill-name\u002F\n  qml\u002F\n    SkillNameApp.qml        # ApplicationWindow with header, tab bar, StackLayout\n    tab-registry.json       # Tab config: groups, shortcuts, voice keywords\n    EmbryStyle.qml          # Symlink or copy of the shared design system\n    PageOne.qml             # Tab content pages\n    PageTwo.qml\n  app.py                    # Unified launcher (registers bridges, loads App.qml)\n  run.sh                    # .\u002Frun.sh gui, .\u002Frun.sh gui --tab \u003Cid>\n```\n\n### Shared Mic Pattern\n\nWhen multiple bridges need mic input, **one bridge owns pw-record** and others read from it via `set_mic_source(owner_bridge)`. This avoids duplicate PipeWire readers.\n\n### Reference Implementation\n\nSee `voice-lab\u002F` for the canonical example: `VoiceLabApp.qml` with 4 tabs across 2 groups, shared mic meter, two coexisting bridges.\n\n## Quick Reference (house rules)\n\n- `design-singleton-style`\n- `design-token-completeness`\n- `a11y-interactive-elements`\n- `a11y-keyboard-navigation`\n- `perf-binding-loops`\n- `perf-delegate-recycling`\n- `perf-layer-effects`\n- `perf-canvas-repaint`\n- `integration-dbus`\n- `integration-global-shortcuts`\n- `style-max-600-lines`\n- `style-signal-naming`\n- `correctness-null-guards`\n",{"name":5,"license":14,"composes":48,"metadata":50,"provides":62,"triggers":63,"description":68},[49],"task-monitor",{"defaults":51,"language":59,"qt_versions":60},{"style":52,"integration":55,"performance":57},{"accessibility":53,"design_system":37,"property_ordering":53,"max_lines_per_file":54},"required",600,{"dbus":53,"plasma_hig":56},"recommended",{"delegate_recycling":58,"avoid_binding_loops":58,"shader_effects_gpu_only":58},true,"qml",[61],"6.x",[5],[24,64,65,66,67],"qml review","kde plasma","plasmoid","dbus pattern","Repo-specific KDE\u002FQML best practices for agentic coding: singleton design systems, property ordering, accessibility, performance (binding loops, delegate recycling), Plasma integration, and D-Bus patterns.\n","main","92d3cf5de96f8f7e1668e121e82a95faaa78a995","skills.pre-symlink-1776435493\u002Fbest-practices-kde",2,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills","https:\u002F\u002Fgithub.com\u002Fcateyephotos","2026-06-13 12:05:20",{"source":8,"skillName":5,"commands":77,"prompt":87,"zipAvailable":58},[78,81,84],{"tool":79,"command":80},"npx","npx skills add cateyephotos\u002Fagent-skills --skill best-practices-kde",{"tool":82,"command":83},"bunx","bunx skills add cateyephotos\u002Fagent-skills --skill best-practices-kde",{"tool":85,"command":86},"pnpm","pnpm dlx skills add cateyephotos\u002Fagent-skills --skill best-practices-kde","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fbest-practices-kde\u002FSKILL.md",[89],{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"sanity.sh","SCRIPT","脚本",1248,"https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills.pre-symlink-1776435493\u002Fbest-practices-kde\u002Fsanity.sh",[96,119,146,171,196,214],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":43},"01M71DBADHWPBVJWYQT9VAD1XE","best-practices-streamdeck","Project-specific best practices for the Stream Deck control suite: icon format constraints, socket vs config boundaries, widget button lifecycle, page creation via build_page, ArangoDB fallback patterns, and NVIS palette compliance.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-streamdeck\u002FSKILL.md",[],[23,103,104,30,105,106,107,108,109,110,27,111,25,112,113,114,115,116,117,118],"best practices streamdeck","creation","project","page","static","deck","socket","lifecycle","typer","icon","task","palette","control","native","via","build",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":128,"publishedAt":43},"01M71DARX9YN0QEXS6EM2C6E4X","best-practices-scillm","Error recovery and anti-patterns for scillm LLM proxy. Load this when scillm calls fail, timeout, or return unexpected results. Covers batch sizing, header requirements, model selection, and debugging workflow.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-scillm\u002FSKILL.md",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[129,23,130,131,132,133,134,135,136,137,138,139,140,141,142,143,32,144,145,30],"best practices scillm","scillm","error","processing","model","selection","model selection","error recovery","debugging","when","workflow","batch","anti-patterns","rate","rate limit","limit","proxy",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":155,"publishedAt":43},"01M71DAMV3PAAPBADP5EY1N61S","best-practices-rust","Repo-specific Rust best practices for agentic coding: thiserror + anyhow error handling, tokio async runtime, tracing for observability, clap for CLI, axum for HTTP, serde patterns, cargo workspace conventions, ownership and lifetimes, and idiomatic Rust 2024 edition patterns.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-rust\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查",[156,157,23,131,158,159,41,160,161,36,162,35,163,164,165,166,167,168,169,170],"rust","best practices rust","async runtime","tokio","code review","2024","code","resilience","server","cli","axum","rust error handling","polars","rust best practices","tracing",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":180,"publishedAt":43},"01M71DACXQ43RCTYYCB8WB1KPG","react-native-skills","React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-react\u002Fskills\u002Freact-native-skills\u002FSKILL.md",[177],{"categoryNo":178,"categoryName":179,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[181,182,116,183,184,185,186,30,41,187,188,189,190,191,192,138,23,193,194,195],"react","react native","react native skills","modules","platform","animations","vercel","implementing","triggers","use","react native components","apps","tasks","components","with",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":203,"publishedAt":43},"01M71DA9YZ05NTRPEK9JAX283K","react-best-practices","React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React\u002FNext.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-react\u002Fskills\u002Freact-best-practices\u002FSKILL.md",[202],{"categoryNo":178,"categoryName":179,"taxonomyType":20,"taxonomyTypeDesc":21},[181,204,23,41,205,138,162,193,194,206,207,208,209,210,32,211,187,212,189,213],"react best practices","writing","data fetching","react components","next","refactoring","data","Optimization","guidelines","pages",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":43},"01M71DA77CYKDT0Q7VAXG4Y9QW","composition-patterns","React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.","https:\u002F\u002Fgithub.com\u002Fcateyephotos\u002Fagent-skills\u002Fblob\u002Fmain\u002Fskills\u002Fbest-practices-react\u002Fskills\u002Fcomposition-patterns\u002FSKILL.md",[220],{"categoryNo":178,"categoryName":179,"taxonomyType":20,"taxonomyTypeDesc":21},[222,223,32,224,225,187,226,189,227,228,190,138,229,193,194,230,231,232,181,195],"Composition","composition patterns","react composition patterns","react 19","render","boolean","component architecture","reusable","architecture","react composition","api"]