瀏覽代碼

Update agent skills specification and documentation

wandl-6A72h 5 月之前
父節點
當前提交
ca261e7e2c
共有 100 個文件被更改,包括 689 次插入12050 次删除
  1. 651 200
      .claude-plugin/marketplace.json
  2. 8 5
      AGENTS.md
  3. 0 119
      adapters/CONVERSION_COMPLETE.md
  4. 0 102
      adapters/EXAMPLES.md
  5. 0 141
      adapters/SUMMARY.md
  6. 0 71
      adapters/codebuddy/README.md
  7. 0 243
      adapters/codebuddy/convert_to_codebuddy.py
  8. 0 99
      adapters/convert_all.py
  9. 0 68
      adapters/cursor/README.md
  10. 0 222
      adapters/cursor/convert_to_cursor.py
  11. 0 70
      adapters/qoder/README.md
  12. 0 359
      adapters/qoder/convert_to_qoder.py
  13. 0 7
      adapters/requirements.txt
  14. 0 47
      adapters/trae/README.md
  15. 0 171
      adapters/trae/convert_to_trae.py
  16. 0 96
      adapters/windsurf/README.md
  17. 0 161
      adapters/windsurf/convert_to_windsurf.py
  18. 1 1
      docs/pipeline-stage-to-skills.md
  19. 29 5
      docs/skills-ecosystem.md
  20. 0 266
      scripts/update-skill-descriptions.py
  21. 0 202
      skills/adobe-xd/LICENSE.txt
  22. 0 22
      skills/adobe-xd/SKILL.md
  23. 0 17
      skills/agent-browser/LICENSE.txt
  24. 0 138
      skills/agent-browser/SKILL.md
  25. 0 289
      skills/agent-browser/api/commands.md
  26. 0 203
      skills/agent-browser/api/options.md
  27. 0 98
      skills/agent-browser/api/selectors.md
  28. 0 70
      skills/agent-browser/examples/advanced/architecture.md
  29. 0 77
      skills/agent-browser/examples/advanced/authenticated-sessions.md
  30. 0 89
      skills/agent-browser/examples/advanced/cdp-mode.md
  31. 0 80
      skills/agent-browser/examples/advanced/custom-executable.md
  32. 0 69
      skills/agent-browser/examples/advanced/headed-mode.md
  33. 0 70
      skills/agent-browser/examples/advanced/platforms.md
  34. 0 95
      skills/agent-browser/examples/advanced/sessions.md
  35. 0 140
      skills/agent-browser/examples/advanced/streaming.md
  36. 0 110
      skills/agent-browser/examples/advanced/usage-with-agents.md
  37. 0 142
      skills/agent-browser/examples/agent-mode/integration.md
  38. 0 129
      skills/agent-browser/examples/agent-mode/introduction.md
  39. 0 135
      skills/agent-browser/examples/agent-mode/optimal-workflow.md
  40. 0 123
      skills/agent-browser/examples/commands/advanced-commands.md
  41. 0 127
      skills/agent-browser/examples/commands/basic-commands.md
  42. 0 116
      skills/agent-browser/examples/getting-started/installation.md
  43. 0 135
      skills/agent-browser/examples/options/global-options.md
  44. 0 117
      skills/agent-browser/examples/options/session-options.md
  45. 0 146
      skills/agent-browser/examples/options/snapshot-options.md
  46. 0 85
      skills/agent-browser/examples/quick-start/quick-start.md
  47. 0 122
      skills/agent-browser/examples/selectors/refs.md
  48. 0 139
      skills/agent-browser/examples/selectors/traditional-selectors.md
  49. 0 88
      skills/agent-browser/templates/ai-agent-workflow.md
  50. 0 41
      skills/agent-browser/templates/basic-automation.md
  51. 0 202
      skills/algorithmic-art/LICENSE.txt
  52. 0 403
      skills/algorithmic-art/SKILL.md
  53. 0 223
      skills/algorithmic-art/templates/generator_template.js
  54. 0 599
      skills/algorithmic-art/templates/viewer.html
  55. 0 202
      skills/android-kotlin/LICENSE.txt
  56. 0 22
      skills/android-kotlin/SKILL.md
  57. 0 202
      skills/angular/LICENSE.txt
  58. 0 22
      skills/angular/SKILL.md
  59. 0 202
      skills/ansible/LICENSE.txt
  60. 0 22
      skills/ansible/SKILL.md
  61. 0 202
      skills/ant-design-mini/LICENSE.txt
  62. 0 187
      skills/ant-design-mini/SKILL.md
  63. 0 72
      skills/ant-design-mini/api/component-api.md
  64. 0 87
      skills/ant-design-mini/api/props-and-events.md
  65. 0 75
      skills/ant-design-mini/examples/components/action-sheet.md
  66. 0 55
      skills/ant-design-mini/examples/components/avatar.md
  67. 0 61
      skills/ant-design-mini/examples/components/badge.md
  68. 0 81
      skills/ant-design-mini/examples/components/button.md
  69. 0 58
      skills/ant-design-mini/examples/components/card.md
  70. 0 94
      skills/ant-design-mini/examples/components/checkbox.md
  71. 0 78
      skills/ant-design-mini/examples/components/date-picker.md
  72. 0 56
      skills/ant-design-mini/examples/components/empty.md
  73. 0 81
      skills/ant-design-mini/examples/components/form.md
  74. 0 92
      skills/ant-design-mini/examples/components/input.md
  75. 0 80
      skills/ant-design-mini/examples/components/list.md
  76. 0 65
      skills/ant-design-mini/examples/components/loading.md
  77. 0 79
      skills/ant-design-mini/examples/components/modal.md
  78. 0 64
      skills/ant-design-mini/examples/components/nav-bar.md
  79. 0 60
      skills/ant-design-mini/examples/components/overview.md
  80. 0 84
      skills/ant-design-mini/examples/components/picker.md
  81. 0 74
      skills/ant-design-mini/examples/components/popup.md
  82. 0 56
      skills/ant-design-mini/examples/components/radio.md
  83. 0 76
      skills/ant-design-mini/examples/components/stepper.md
  84. 0 72
      skills/ant-design-mini/examples/components/switch.md
  85. 0 86
      skills/ant-design-mini/examples/components/tabs.md
  86. 0 61
      skills/ant-design-mini/examples/components/tag.md
  87. 0 72
      skills/ant-design-mini/examples/components/toast.md
  88. 0 90
      skills/ant-design-mini/examples/getting-started.md
  89. 0 80
      skills/ant-design-mini/examples/quick-start.md
  90. 0 116
      skills/ant-design-mini/templates/component-usage.md
  91. 0 65
      skills/ant-design-mini/templates/installation.md
  92. 0 203
      skills/ant-design-mobile/LICENSE.txt
  93. 0 155
      skills/ant-design-mobile/SKILL.md
  94. 0 515
      skills/ant-design-mobile/api/components.md
  95. 0 45
      skills/ant-design-mobile/api/config-provider.md
  96. 0 107
      skills/ant-design-mobile/examples/advanced/internationalization.md
  97. 0 115
      skills/ant-design-mobile/examples/advanced/theme-customization.md
  98. 0 137
      skills/ant-design-mobile/examples/components/action-sheet.md
  99. 0 111
      skills/ant-design-mobile/examples/components/avatar.md
  100. 0 137
      skills/ant-design-mobile/examples/components/badge.md

+ 651 - 200
.claude-plugin/marketplace.json

@@ -5,175 +5,343 @@
     "email": "partmeai@gmail.com"
   },
   "metadata": {
-    "description": "PartMeAI 免费技能市场 - 面向期望成为全栈技能人才的群体,提供按技能种类组织的实用工具技能集合。严格遵循 Agent Skills 规范,提供 174 个技能集合,按技能种类组织为 12 个插件类别,覆盖软件开发全生命周期。在 AI 时代,赋能全栈独立开发者,通过 AI 助手掌握专业技能,实现\"一个人 = 一个公司\"的愿景。",
+    "description": "PartMeAI 免费技能市场 - 严格按 skills/ 目录分组,每组一插件。遵循 Agent Skills 规范与 docs/skill-group-mapping.md,覆盖需求规格、Spec 驱动开发、界面设计、全栈开发全生命周期。",
     "version": "0.0.1"
   },
   "plugins": [
     {
-      "name": "development-skills",
-      "description": "全栈开发技能集合(74个技能):包含前端开发(Vue 2/3、React、Angular、Svelte 等框架;Vite、Webpack 等构建工具;Element Plus、Ant Design、Vant 等 UI 组件库;Vue Router、Pinia、Redux 等状态管理;Electron、Tauri 等桌面应用框架)、后端开发(Spring Boot、Spring Cloud、Spring AI 等 Java 生态;Express、NestJS、Koa、Fastify 等 Node.js 框架;Django、FastAPI、Flask 等 Python 框架;Gin 等 Go 框架)、移动端开发(UniApp、UniApp-x 跨平台框架;React Native、Flutter 跨平台框架;Android Kotlin、iOS Swift 原生开发;Cocos2d-x 游戏引擎;uCharts、Lime EChart 图表组件;UniCloud 云开发、Uni-ad 广告变现等)。帮助 AI 助手掌握全栈开发技能,支持 Web、移动端、桌面应用全平台开发。",
-      "source": "./",
-      "strict": false,
-      "skills": [
-        "./skills/vue2",
-        "./skills/vue3",
-        "./skills/vue-router",
-        "./skills/pinia",
-        "./skills/vite",
-        "./skills/react",
-        "./skills/react-hooks",
-        "./skills/nextjs",
-        "./skills/redux",
-        "./skills/angular",
-        "./skills/svelte",
-        "./skills/webpack",
-        "./skills/rollup",
-        "./skills/parcel",
-        "./skills/rspack",
-        "./skills/element-plus-vue3",
-        "./skills/ant-design-vue",
-        "./skills/ant-design-react",
-        "./skills/ant-design-mobile",
-        "./skills/ant-design-mini",
-        "./skills/bootstrap-vue3",
-        "./skills/vant-vue3",
-        "./skills/uview-vue2",
-        "./skills/uview-pro-vue3",
-        "./skills/layui-vue3",
-        "./skills/avue",
-        "./skills/avue-crud",
-        "./skills/avue-form",
-        "./skills/vue-router-v3",
-        "./skills/vue-router-v4",
-        "./skills/vuex-vue2",
-        "./skills/dart-sass",
-        "./skills/electron",
-        "./skills/electron-egg",
-        "./skills/tauri",
-        "./skills/spring-boot",
-        "./skills/spring-cloud",
-        "./skills/spring-cloud-alibaba",
-        "./skills/spring-ai",
-        "./skills/spring-ai-alibaba",
-        "./skills/spring-security",
-        "./skills/spring-data-jpa",
-        "./skills/express",
-        "./skills/nestjs",
-        "./skills/koa",
-        "./skills/fastify",
-        "./skills/django",
-        "./skills/fastapi",
-        "./skills/flask",
-        "./skills/gin",
-        "./skills/gin-gonic",
-        "./skills/uniapp-project-creator",
-        "./skills/uniapp-project",
-        "./skills/uniappx-project-creator",
-        "./skills/uniappx-project",
-        "./skills/uniapp-uview",
-        "./skills/uniappx-uview-pro",
-        "./skills/uniapp-ucharts",
-        "./skills/uniapp-ad",
-        "./skills/uniapp-cloud",
-        "./skills/uniapp-mini",
-        "./skills/uniapp-native-app",
-        "./skills/uniapp-native-plugin",
-        "./skills/uniapp-plugin",
-        "./skills/lime-echart",
-        "./skills/ucharts",
-        "./skills/upgradeLink",
-        "./skills/react-native",
-        "./skills/react-native-project-creater",
-        "./skills/flutter",
-        "./skills/flutter-project-creater",
-        "./skills/android-kotlin",
-        "./skills/ios-swift",
-        "./skills/cocos2d-x"
-      ]
-    },
-    {
-      "name": "development-skills-utils",
-      "description": "开发工具技能集合(15个技能):包含代码生成、测试编写、文档构建等基础工具;Java 代码注释生成(支持标准 JavaDoc 和 Java 编程规范严格格式);MyBatis-Plus 代码生成器(支持 MVC 和 DDD 架构,Java 和 Kotlin 语言);DDD 项目构建器(支持单体单模块、单体多模块、微服务架构);项目文档生成(14种文档模板,覆盖产品到运维全生命周期);MCP 构建器、Web 应用测试、前端设计、Web 工件构建器、主题工厂;Node.js 版本管理(nvm)、浏览器自动化;Maven 组件检索(从 Maven Central Repository 搜索和检索 Maven 依赖)等。帮助 AI 助手掌握开发工具链和工程化实践。",
-      "source": "./",
-      "strict": false,
-      "skills": [
-        "./skills/code-generator",
-        "./skills/test-writer",
-        "./skills/java-code-comments",
-        "./skills/mybatis-plus-generator",
-        "./skills/ddd4j-project-creator",
-        "./skills/documentation-builder",
-        "./skills/full-stack-doc",
-        "./skills/mcp-builder",
-        "./skills/webapp-testing",
-        "./skills/frontend-design",
-        "./skills/cli-ascii-logo",
-        "./skills/web-artifacts-builder",
-        "./skills/theme-factory",
-        "./skills/nvm",
-        "./skills/agent-browser",
-        "./skills/maven-search"
+      "name": "vue-skills",
+      "description": "Vue 2/3、Vue Router、Vuex、Pinia 状态管理(7个技能)。与 skill-group-mapping 一致。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/vue-skills/vue2",
+        "./skills/vue-skills/vue3",
+        "./skills/vue-skills/vue-router",
+        "./skills/vue-skills/vue-router-v3",
+        "./skills/vue-skills/vue-router-v4",
+        "./skills/vue-skills/vuex-vue2",
+        "./skills/vue-skills/pinia"
+      ]
+    },
+    {
+      "name": "react-skills",
+      "description": "React、React Hooks、React Native、Redux、Next.js(6个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/react-skills/react",
+        "./skills/react-skills/react-hooks",
+        "./skills/react-skills/react-native",
+        "./skills/react-skills/react-native-project-creater",
+        "./skills/react-skills/redux",
+        "./skills/react-skills/nextjs"
+      ]
+    },
+    {
+      "name": "angular-skills",
+      "description": "Angular 框架(1个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": ["./skills/angular-skills/angular"]
+    },
+    {
+      "name": "svelte-skills",
+      "description": "Svelte 框架(1个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": ["./skills/svelte-skills/svelte"]
+    },
+    {
+      "name": "build-skills",
+      "description": "前端构建与 CSS 预处理器:webpack、rollup、parcel、rspack、vite、dart-sass(6个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/build-skills/webpack",
+        "./skills/build-skills/rollup",
+        "./skills/build-skills/parcel",
+        "./skills/build-skills/rspack",
+        "./skills/build-skills/vite",
+        "./skills/build-skills/dart-sass"
+      ]
+    },
+    {
+      "name": "vue-ui-skills",
+      "description": "Vue 生态 UI 组件库:Element Plus、Bootstrap、Vant、Layui(4个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/vue-ui-skills/element-plus-vue3",
+        "./skills/vue-ui-skills/bootstrap-vue3",
+        "./skills/vue-ui-skills/vant-vue3",
+        "./skills/vue-ui-skills/layui-vue3"
+      ]
+    },
+    {
+      "name": "antd-skills",
+      "description": "Ant Design 各端:Vue/React/移动端/小程序(4个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/antd-skills/ant-design-vue",
+        "./skills/antd-skills/ant-design-react",
+        "./skills/antd-skills/ant-design-mobile",
+        "./skills/antd-skills/ant-design-mini"
+      ]
+    },
+    {
+      "name": "uview-skills",
+      "description": "uView 2.x 与 uView Pro (Vue 3)(2个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/uview-skills/uview-vue2",
+        "./skills/uview-skills/uview-pro-vue3"
+      ]
+    },
+    {
+      "name": "avue-skills",
+      "description": "Avue 基于 Element 的低代码/表单/CRUD(3个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/avue-skills/avue",
+        "./skills/avue-skills/avue-crud",
+        "./skills/avue-skills/avue-form"
+      ]
+    },
+    {
+      "name": "electron-skills",
+      "description": "Electron 桌面应用与 Electron Egg、升级链接(3个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/electron-skills/electron",
+        "./skills/electron-skills/electron-egg",
+        "./skills/electron-skills/upgradeLink"
+      ]
+    },
+    {
+      "name": "spring-skills",
+      "description": "Spring 生态:Boot、Cloud、Cloud Alibaba、AI、Security、Data JPA(7个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/spring-skills/spring-boot",
+        "./skills/spring-skills/spring-cloud",
+        "./skills/spring-skills/spring-cloud-alibaba",
+        "./skills/spring-skills/spring-ai",
+        "./skills/spring-skills/spring-ai-alibaba",
+        "./skills/spring-skills/spring-security",
+        "./skills/spring-skills/spring-data-jpa"
+      ]
+    },
+    {
+      "name": "nodejs-skills",
+      "description": "Node.js 后端框架:Express、Fastify、NestJS、Koa(4个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/nodejs-skills/express",
+        "./skills/nodejs-skills/fastify",
+        "./skills/nodejs-skills/nestjs",
+        "./skills/nodejs-skills/koa"
+      ]
+    },
+    {
+      "name": "python-skills",
+      "description": "Python 后端框架:Django、FastAPI、Flask(3个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/python-skills/django",
+        "./skills/python-skills/fastapi",
+        "./skills/python-skills/flask"
+      ]
+    },
+    {
+      "name": "go-skills",
+      "description": "Go 后端框架:Gin、Gin-Gonic(2个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/go-skills/gin",
+        "./skills/go-skills/gin-gonic"
+      ]
+    },
+    {
+      "name": "uniapp-skills",
+      "description": "UniApp/UniApp-x 项目创建、uView、uCharts、云开发、广告、小程序等(13个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/uniapp-skills/uniapp-project-creator",
+        "./skills/uniapp-skills/uniapp-project",
+        "./skills/uniapp-skills/uniappx-project-creator",
+        "./skills/uniapp-skills/uniappx-project",
+        "./skills/uniapp-skills/uniapp-uview",
+        "./skills/uniapp-skills/uniappx-uview-pro",
+        "./skills/uniapp-skills/uniapp-ucharts",
+        "./skills/uniapp-skills/uniapp-ad",
+        "./skills/uniapp-skills/uniapp-cloud",
+        "./skills/uniapp-skills/uniapp-mini",
+        "./skills/uniapp-skills/uniapp-native-app",
+        "./skills/uniapp-skills/uniapp-native-plugin",
+        "./skills/uniapp-skills/uniapp-plugin"
+      ]
+    },
+    {
+      "name": "chart-skills",
+      "description": "图表组件:Lime EChart、uCharts(2个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/chart-skills/lime-echart",
+        "./skills/chart-skills/ucharts"
+      ]
+    },
+    {
+      "name": "flutter-skills",
+      "description": "Flutter 跨平台开发与项目创建(2个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/flutter-skills/flutter",
+        "./skills/flutter-skills/flutter-project-creater"
+      ]
+    },
+    {
+      "name": "mobile-native-skills",
+      "description": "原生移动端:Android Kotlin、iOS Swift(2个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/mobile-native-skills/android-kotlin",
+        "./skills/mobile-native-skills/ios-swift"
+      ]
+    },
+    {
+      "name": "cocos-skills",
+      "description": "游戏引擎 Cocos2d-x(1个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": ["./skills/cocos-skills/cocos2d-x"]
+    },
+    {
+      "name": "ascii-skills",
+      "description": "ASCII/终端技能:表格、横幅、图表、进度条、动效、图像转 ASCII、MOTD 等(13个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/ascii-skills/ascii-ansi-colorizer",
+        "./skills/ascii-skills/ascii-cli-logo-banner",
+        "./skills/ascii-skills/ascii-cli-logo-banner-figletjs",
+        "./skills/ascii-skills/ascii-cli-logo-banner-python",
+        "./skills/ascii-skills/ascii-diagram-boxflow",
+        "./skills/ascii-skills/ascii-image-to-ascii",
+        "./skills/ascii-skills/ascii-mini-charts",
+        "./skills/ascii-skills/ascii-motd-profile-banner",
+        "./skills/ascii-skills/ascii-progress-and-spinner",
+        "./skills/ascii-skills/ascii-table-renderer",
+        "./skills/ascii-skills/ascii-terminal-animation-pack",
+        "./skills/ascii-skills/ascii-text-art-library",
+        "./skills/ascii-skills/cli-ascii-logo"
+      ]
+    },
+    {
+      "name": "dev-utils-skills",
+      "description": "开发工具链:代码生成、测试编写、文档构建、MCP 构建器、前端设计等(13个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/dev-utils-skills/code-generator",
+        "./skills/dev-utils-skills/test-writer",
+        "./skills/dev-utils-skills/java-code-comments",
+        "./skills/dev-utils-skills/mybatis-plus-generator",
+        "./skills/dev-utils-skills/documentation-builder",
+        "./skills/dev-utils-skills/full-stack-doc",
+        "./skills/dev-utils-skills/mcp-builder",
+        "./skills/dev-utils-skills/webapp-testing",
+        "./skills/dev-utils-skills/frontend-design",
+        "./skills/dev-utils-skills/web-artifacts-builder",
+        "./skills/dev-utils-skills/theme-factory",
+        "./skills/dev-utils-skills/agent-browser",
+        "./skills/dev-utils-skills/maven-search"
+      ]
+    },
+    {
+      "name": "ddd-skills",
+      "description": "DDD 架构与 COLA/六边形/整洁/事件驱动/微服务及 ddd4j 项目创建(6个技能)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/ddd-skills/ddd-cola",
+        "./skills/ddd-skills/ddd-microservices",
+        "./skills/ddd-skills/ddd-event-driven",
+        "./skills/ddd-skills/ddd-hexagonal-architecture",
+        "./skills/ddd-skills/ddd-clean-architecture",
+        "./skills/ddd-skills/ddd4j-project-creator"
       ]
     },
     {
       "name": "design-skills",
-      "description": "设计与创意技能集合(16个技能):包含 Figma、Sketch、Adobe XD、Axure、墨刀、Framer 等专业设计工具;Midjourney、DALL-E、Stable Diffusion、Runway ML、Galileo AI、Uizard、Figma AI 等 AI 设计工具;算法艺术、品牌指南、画布设计等创意工具。帮助 AI 助手掌握 UI/UX 设计、原型设计、AI 绘图等设计技能。",
+      "description": "设计与 AI 绘图:Figma、Sketch、Adobe XD、DALL-E、Uizard、Galileo AI、Runway ML、Framer、算法艺术、品牌指南、画布设计(12个技能,与 skill-group-mapping 一致)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/algorithmic-art",
-        "./skills/brand-guidelines",
-        "./skills/canvas-design",
-        "./skills/figma",
-        "./skills/figma-ai",
-        "./skills/sketch",
-        "./skills/adobe-xd",
-        "./skills/midjourney",
-        "./skills/dalle",
-        "./skills/stable-diffusion",
-        "./skills/uizard",
-        "./skills/galileo-ai",
-        "./skills/runway-ml",
-        "./skills/axure",
-        "./skills/modao",
-        "./skills/framer"
+        "./skills/design-skills/algorithmic-art",
+        "./skills/design-skills/brand-guidelines",
+        "./skills/design-skills/canvas-design",
+        "./skills/design-skills/figma",
+        "./skills/design-skills/figma-ai",
+        "./skills/design-skills/sketch",
+        "./skills/design-skills/adobe-xd",
+        "./skills/design-skills/dalle",
+        "./skills/design-skills/uizard",
+        "./skills/design-skills/galileo-ai",
+        "./skills/design-skills/runway-ml",
+        "./skills/design-skills/framer"
       ]
     },
     {
       "name": "document-skills",
-      "description": "文档处理技能集合(15个技能):包含 Word(docx)、PowerPoint(pptx)、Excel(xlsx)、PDF 等办公文档的创建、编辑和处理;OCRmyPDF 扫描件 OCR 识别(核心 OCR、图像处理、优化压缩、批量处理、Python API 及插件);文档协作(多人协作编辑);API 文档生成器;Draw.io 流程图绘制;ProcessOn 思维导图绘制;Mermaid 图表绘制;PlantUML 架构图绘制。帮助 AI 助手掌握文档处理、OCR 识别、图表绘制、文档协作等办公自动化技能。",
+      "description": "文档与图表:docx、pptx、pdf、xlsx、文档协作、API 文档生成、ProcessOn 思维导图、Mermaid、PlantUML(9个技能,与 skill-group-mapping 一致)。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/document-skills/docx",
+        "./skills/document-skills/pptx",
+        "./skills/document-skills/pdf",
+        "./skills/document-skills/xlsx",
+        "./skills/document-skills/doc-coauthoring",
+        "./skills/document-skills/api-doc-generator",
+        "./skills/document-skills/processon-mindmap",
+        "./skills/document-skills/mermaid",
+        "./skills/document-skills/plantuml"
+      ]
+    },
+    {
+      "name": "ocrmypdf-skills",
+      "description": "OCRmyPDF 核心 OCR、图像处理、优化压缩、批量处理、Python API(5个技能)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/docx",
-        "./skills/pptx",
-        "./skills/pdf",
-        "./skills/xlsx",
-        "./skills/ocrmypdf",
-        "./skills/ocrmypdf-image",
-        "./skills/ocrmypdf-optimize",
-        "./skills/ocrmypdf-batch",
-        "./skills/ocrmypdf-api",
-        "./skills/doc-coauthoring",
-        "./skills/api-doc-generator",
-        "./skills/drawio-flowchart",
-        "./skills/processon-mindmap",
-        "./skills/mermaid",
-        "./skills/plantuml"
+        "./skills/ocrmypdf-skills/ocrmypdf",
+        "./skills/ocrmypdf-skills/ocrmypdf-image",
+        "./skills/ocrmypdf-skills/ocrmypdf-optimize",
+        "./skills/ocrmypdf-skills/ocrmypdf-batch",
+        "./skills/ocrmypdf-skills/ocrmypdf-api"
       ]
     },
     {
-      "name": "architecture-skills",
-      "description": "架构技能集合(6个技能):包含 DDD 微服务架构、DDD 事件驱动架构、DDD 六边形架构、DDD 整洁架构、COLA 架构等架构模式;Draw.io 架构图绘制工具。帮助 AI 助手掌握企业级架构设计、领域建模、架构图绘制等架构设计技能。",
+      "name": "drawio-skills",
+      "description": "Draw.io 架构图与流程图绘制(2个技能)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/ddd-cola",
-        "./skills/ddd-microservices",
-        "./skills/ddd-event-driven",
-        "./skills/ddd-hexagonal-architecture",
-        "./skills/ddd-clean-architecture",
-        "./skills/drawio-architecture"
+        "./skills/drawio-skills/drawio-architecture",
+        "./skills/drawio-skills/drawio-flowchart"
       ]
     },
     {
@@ -182,72 +350,52 @@
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/jest",
-        "./skills/vitest",
-        "./skills/pytest",
-        "./skills/junit",
-        "./skills/cypress",
-        "./skills/playwright",
-        "./skills/selenium",
-        "./skills/appium",
-        "./skills/detox"
+        "./skills/testing-skills/jest",
+        "./skills/testing-skills/vitest",
+        "./skills/testing-skills/pytest",
+        "./skills/testing-skills/junit",
+        "./skills/testing-skills/cypress",
+        "./skills/testing-skills/playwright",
+        "./skills/testing-skills/selenium",
+        "./skills/testing-skills/appium",
+        "./skills/testing-skills/detox"
       ]
     },
     {
       "name": "devops-skills",
-      "description": "运维技能集合(9个技能):包含 Jenkins、GitLab CI、GitHub Actions 等 CI/CD 工具;Docker、Docker Compose、Kubernetes 等容器化和容器编排工具;Terraform、Ansible、CloudFormation 等基础设施即代码(IaC)工具。帮助 AI 助手掌握 DevOps 实践、自动化部署、容器化、基础设施管理等运维技能。",
+      "description": "CI/CD 与 IaC:GitLab CI、GitHub Actions、Kubernetes、Terraform、Ansible、CloudFormation(6个技能,与 skill-group-mapping 一致)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/jenkins",
-        "./skills/gitlab-ci",
-        "./skills/github-actions",
-        "./skills/docker",
-        "./skills/kubernetes",
-        "./skills/docker-compose",
-        "./skills/terraform",
-        "./skills/ansible",
-        "./skills/cloudformation"
+        "./skills/devops-skills/gitlab-ci",
+        "./skills/devops-skills/github-actions",
+        "./skills/devops-skills/kubernetes",
+        "./skills/devops-skills/terraform",
+        "./skills/devops-skills/ansible",
+        "./skills/devops-skills/cloudformation"
       ]
     },
     {
-      "name": "database-skills",
-      "description": "数据库技能集合(8个技能):包含 MySQL、PostgreSQL、Oracle 等关系型数据库;MongoDB、Redis、Elasticsearch 等 NoSQL 数据库和搜索引擎;Navicat、DBeaver 等数据库管理工具。帮助 AI 助手掌握数据库设计、SQL 优化、数据存储、数据检索等数据库技能。",
+      "name": "docker-skills",
+      "description": "Docker 与 Docker Compose 容器化(2个技能)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/mysql",
-        "./skills/postgresql",
-        "./skills/oracle",
-        "./skills/mongodb",
-        "./skills/redis",
-        "./skills/elasticsearch",
-        "./skills/navicat",
-        "./skills/dbeaver"
+        "./skills/docker-skills/docker",
+        "./skills/docker-skills/docker-compose"
       ]
     },
     {
-      "name": "cloud-skills",
-      "description": "云平台技能集合(16个技能):包含 AWS(EC2、S3、RDS、Lambda)、Azure(VM、Storage、SQL)、阿里云(ECS、OSS、RDS)、腾讯云(CVM、COS、CDB)、华为云(ECS、OBS、RDS)等主流云平台的核心服务。帮助 AI 助手掌握云计算、云服务使用、云架构设计等云平台技能,支持多云部署和云原生应用开发。",
+      "name": "database-skills",
+      "description": "数据库与工具:PostgreSQL、Oracle、Redis、Elasticsearch、DBeaver(5个技能,与 skill-group-mapping 一致)。",
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/cloud-aws-ec2",
-        "./skills/cloud-aws-s3",
-        "./skills/cloud-aws-rds",
-        "./skills/cloud-aws-lambda",
-        "./skills/cloud-azure-vm",
-        "./skills/cloud-azure-storage",
-        "./skills/cloud-azure-sql",
-        "./skills/cloud-aliyun-ecs",
-        "./skills/cloud-aliyun-oss",
-        "./skills/cloud-aliyun-rds",
-        "./skills/cloud-tencent-cvm",
-        "./skills/cloud-tencent-cos",
-        "./skills/cloud-tencent-cdb",
-        "./skills/cloud-huawei-ecs",
-        "./skills/cloud-huawei-obs",
-        "./skills/cloud-huawei-rds"
+        "./skills/database-skills/postgresql",
+        "./skills/database-skills/oracle",
+        "./skills/database-skills/redis",
+        "./skills/database-skills/elasticsearch",
+        "./skills/database-skills/dbeaver"
       ]
     },
     {
@@ -256,8 +404,8 @@
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/internal-comms",
-        "./skills/slack-gif-creator"
+        "./skills/social-skills/internal-comms",
+        "./skills/social-skills/slack-gif-creator"
       ]
     },
     {
@@ -266,9 +414,9 @@
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/course-designer",
-        "./skills/learning-assessor",
-        "./skills/teaching-resource-generator"
+        "./skills/teaching-skills/course-designer",
+        "./skills/teaching-skills/learning-assessor",
+        "./skills/teaching-skills/teaching-resource-generator"
       ]
     },
     {
@@ -277,9 +425,312 @@
       "source": "./",
       "strict": false,
       "skills": [
-        "./skills/skill-creator",
-        "./skills/skill-sop-creator",
-        "./skills/skill-installer"
+        "./skills/utility-skills/skill-creator",
+        "./skills/utility-skills/skill-sop-creator",
+        "./skills/utility-skills/skill-installer"
+      ]
+    },
+    {
+      "name": "nvm-skills",
+      "description": "Node Version Manager (nvm) 技能(15个):安装、配置、验证、基础用法、默认版本/.nvmrc、全局包、镜像与鉴权、Shell 集成、Docker/CI、卸载、项目元信息、macOS/Linux 故障排查。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/nvm-skills/nvm",
+        "./skills/nvm-skills/nvm-install",
+        "./skills/nvm-skills/nvm-setup",
+        "./skills/nvm-skills/nvm-verify",
+        "./skills/nvm-skills/nvm-usage-basics",
+        "./skills/nvm-skills/nvm-defaults-and-nvmrc",
+        "./skills/nvm-skills/nvm-global-packages",
+        "./skills/nvm-skills/nvm-mirror-and-auth",
+        "./skills/nvm-skills/nvm-shell-integration",
+        "./skills/nvm-skills/nvm-docker-ci",
+        "./skills/nvm-skills/nvm-uninstall",
+        "./skills/nvm-skills/nvm-misc",
+        "./skills/nvm-skills/nvm-project-meta",
+        "./skills/nvm-skills/nvm-troubleshooting-macos",
+        "./skills/nvm-skills/nvm-troubleshooting-linux"
+      ]
+    },
+    {
+      "name": "stitch-skills",
+      "description": "Stitch MCP 扩展技能(28个技能):design-md、mcp、react-components、remotion、shadcn-ui、ui-design-spec、uview/uviewpro/vue 组件等。与 skill-group-mapping 一致。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/stitch-skills/stitch-design-md",
+        "./skills/stitch-skills/stitch-mcp-create-project",
+        "./skills/stitch-skills/stitch-mcp-generate-screen-from-text",
+        "./skills/stitch-skills/stitch-mcp-get-project",
+        "./skills/stitch-skills/stitch-mcp-get-screen",
+        "./skills/stitch-skills/stitch-mcp-list-projects",
+        "./skills/stitch-skills/stitch-mcp-list-screens",
+        "./skills/stitch-skills/stitch-react-components",
+        "./skills/stitch-skills/stitch-remotion",
+        "./skills/stitch-skills/stitch-shadcn-ui",
+        "./skills/stitch-skills/stitch-skill-creator",
+        "./skills/stitch-skills/stitch-ued-guide",
+        "./skills/stitch-skills/stitch-ui-design-spec-bootstrap",
+        "./skills/stitch-skills/stitch-ui-design-spec-element-plus",
+        "./skills/stitch-skills/stitch-ui-design-spec-generator",
+        "./skills/stitch-skills/stitch-ui-design-spec-layui",
+        "./skills/stitch-skills/stitch-ui-design-spec-uview",
+        "./skills/stitch-skills/stitch-ui-design-spec-uviewpro",
+        "./skills/stitch-skills/stitch-ui-design-spec-vant",
+        "./skills/stitch-skills/stitch-ui-design-variants",
+        "./skills/stitch-skills/stitch-ui-designer",
+        "./skills/stitch-skills/stitch-ui-prompt-architect",
+        "./skills/stitch-skills/stitch-uview-components",
+        "./skills/stitch-skills/stitch-uviewpro-components",
+        "./skills/stitch-skills/stitch-vue-bootstrap-components",
+        "./skills/stitch-skills/stitch-vue-element-components",
+        "./skills/stitch-skills/stitch-vue-layui-components",
+        "./skills/stitch-skills/stitch-vue-vant-components"
+      ]
+    },
+    {
+      "name": "speckit-skills",
+      "description": "Spec 驱动开发(13个技能):install、initial、check、constitution、specify、clarify、plan、tasks、implement、baseline、analyze、checklist、taskstoissues。与 GitHub spec-kit 工作流对齐。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/speckit-skills/speckit-install",
+        "./skills/speckit-skills/speckit-initial",
+        "./skills/speckit-skills/speckit-check",
+        "./skills/speckit-skills/speckit-constitution",
+        "./skills/speckit-skills/speckit-specify",
+        "./skills/speckit-skills/speckit-clarify",
+        "./skills/speckit-skills/speckit-plan",
+        "./skills/speckit-skills/speckit-tasks",
+        "./skills/speckit-skills/speckit-implement",
+        "./skills/speckit-skills/speckit-baseline",
+        "./skills/speckit-skills/speckit-analyze",
+        "./skills/speckit-skills/speckit-checklist",
+        "./skills/speckit-skills/speckit-taskstoissues"
+      ]
+    },
+    {
+      "name": "pencil-skills",
+      "description": "Pencil 设计稿与 MCP 技能(28个技能):编排、Stitch 转 Pencil、MCP 原子工具、设计系统 Ant/Bootstrap/Element/Layui/uView/Vant/uCharts/ECharts。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/pencil-skills/pencil",
+        "./skills/pencil-skills/pencil-ui-designer",
+        "./skills/pencil-skills/pencil-design-from-stitch-html",
+        "./skills/pencil-skills/pencil-ui-design-spec-generator",
+        "./skills/pencil-skills/pencil-skill-creator",
+        "./skills/pencil-skills/pencil-mcp-batch-design",
+        "./skills/pencil-skills/pencil-mcp-batch-get",
+        "./skills/pencil-skills/pencil-mcp-open-document",
+        "./skills/pencil-skills/pencil-mcp-get-editor-state",
+        "./skills/pencil-skills/pencil-mcp-get-guidelines",
+        "./skills/pencil-skills/pencil-mcp-get-screenshot",
+        "./skills/pencil-skills/pencil-mcp-get-style-guide",
+        "./skills/pencil-skills/pencil-mcp-get-style-guide-tags",
+        "./skills/pencil-skills/pencil-mcp-get-variables",
+        "./skills/pencil-skills/pencil-mcp-set-variables",
+        "./skills/pencil-skills/pencil-mcp-find-empty-space-on-canvas",
+        "./skills/pencil-skills/pencil-mcp-replace-all-matching-properties",
+        "./skills/pencil-skills/pencil-mcp-search-all-unique-properties",
+        "./skills/pencil-skills/pencil-mcp-snapshot-layout",
+        "./skills/pencil-skills/pencil-ui-design-system-antd",
+        "./skills/pencil-skills/pencil-ui-design-system-bootstrap",
+        "./skills/pencil-skills/pencil-ui-design-system-element",
+        "./skills/pencil-skills/pencil-ui-design-system-layui",
+        "./skills/pencil-skills/pencil-ui-design-system-uview",
+        "./skills/pencil-skills/pencil-ui-design-system-uviewpro",
+        "./skills/pencil-skills/pencil-ui-design-system-vant",
+        "./skills/pencil-skills/pencil-ui-design-system-ucharts",
+        "./skills/pencil-skills/pencil-ui-design-system-echarts"
+      ]
+    },
+    {
+      "name": "openspec-skills",
+      "description": "OpenSpec Spec 驱动开发(15个技能):install、initial、update、explore、new、continue、ff、apply、verify、archive、sync、bulk-archive、onboard、schema、config。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/openspec-skills/openspec-install",
+        "./skills/openspec-skills/openspec-initial",
+        "./skills/openspec-skills/openspec-update",
+        "./skills/openspec-skills/openspec-explore",
+        "./skills/openspec-skills/openspec-new",
+        "./skills/openspec-skills/openspec-continue",
+        "./skills/openspec-skills/openspec-ff",
+        "./skills/openspec-skills/openspec-apply",
+        "./skills/openspec-skills/openspec-verify",
+        "./skills/openspec-skills/openspec-archive",
+        "./skills/openspec-skills/openspec-sync",
+        "./skills/openspec-skills/openspec-bulk-archive",
+        "./skills/openspec-skills/openspec-onboard",
+        "./skills/openspec-skills/openspec-schema",
+        "./skills/openspec-skills/openspec-config"
+      ]
+    },
+    {
+      "name": "tauri-skills",
+      "description": "Tauri 跨平台桌面/移动应用开发(52个技能):核心、系统、网络、移动、数据、UI、安全等。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/tauri-skills/tauri",
+        "./skills/tauri-skills/tauri-scaffold",
+        "./skills/tauri-skills/tauri-setup",
+        "./skills/tauri-skills/tauri-config",
+        "./skills/tauri-skills/tauri-build",
+        "./skills/tauri-skills/tauri-app-develop",
+        "./skills/tauri-skills/tauri-app-creator",
+        "./skills/tauri-skills/tauri-app-frontend-selection",
+        "./skills/tauri-skills/tauri-app-planning",
+        "./skills/tauri-skills/tauri-framework-upgrade",
+        "./skills/tauri-skills/tauri-concept",
+        "./skills/tauri-skills/tauri-app-cli",
+        "./skills/tauri-skills/tauri-app-clipboard",
+        "./skills/tauri-skills/tauri-app-file-system",
+        "./skills/tauri-skills/tauri-app-process",
+        "./skills/tauri-skills/tauri-app-shell",
+        "./skills/tauri-skills/tauri-app-os-info",
+        "./skills/tauri-skills/tauri-app-dialog",
+        "./skills/tauri-skills/tauri-app-notification",
+        "./skills/tauri-skills/tauri-app-global-shortcut",
+        "./skills/tauri-skills/tauri-app-autostart",
+        "./skills/tauri-skills/tauri-app-deep-linking",
+        "./skills/tauri-skills/tauri-app-single-instance",
+        "./skills/tauri-skills/tauri-app-system-tray",
+        "./skills/tauri-skills/tauri-app-window-menu",
+        "./skills/tauri-skills/tauri-app-logging",
+        "./skills/tauri-skills/tauri-app-http-client",
+        "./skills/tauri-skills/tauri-app-websocket",
+        "./skills/tauri-skills/tauri-app-upload",
+        "./skills/tauri-skills/tauri-app-localhost",
+        "./skills/tauri-skills/tauri-ipc",
+        "./skills/tauri-skills/tauri-app-sidecar-nodejs",
+        "./skills/tauri-skills/tauri-mobile",
+        "./skills/tauri-skills/tauri-app-nfc",
+        "./skills/tauri-skills/tauri-app-biometric",
+        "./skills/tauri-skills/tauri-app-barcode-scanner",
+        "./skills/tauri-skills/tauri-app-haptics",
+        "./skills/tauri-skills/tauri-app-geolocation",
+        "./skills/tauri-skills/tauri-app-store",
+        "./skills/tauri-skills/tauri-app-sql",
+        "./skills/tauri-skills/tauri-app-persisted-scope",
+        "./skills/tauri-skills/tauri-app-stronghold",
+        "./skills/tauri-skills/tauri-window",
+        "./skills/tauri-skills/tauri-app-opener",
+        "./skills/tauri-skills/tauri-app-splashscreen",
+        "./skills/tauri-skills/tauri-app-wasm",
+        "./skills/tauri-skills/tauri-app-window-state",
+        "./skills/tauri-skills/tauri-app-positioner",
+        "./skills/tauri-skills/tauri-security",
+        "./skills/tauri-skills/tauri-framework-security",
+        "./skills/tauri-skills/tauri-app-plugin-permissions"
+      ]
+    },
+    {
+      "name": "t2ui-skills",
+      "description": "TUI / uView 组件与 PRD 描述技能(97个技能):tui 组件、prd-to-descriptions 等。",
+      "source": "./",
+      "strict": false,
+      "skills": [
+        "./skills/t2ui-skills/tui-prd-to-descriptions",
+        "./skills/t2ui-skills/tui-04x",
+        "./skills/t2ui-skills/tui-action-sheet",
+        "./skills/t2ui-skills/tui-alert-tips",
+        "./skills/t2ui-skills/tui-avatar",
+        "./skills/t2ui-skills/tui-avatar-cropper",
+        "./skills/t2ui-skills/tui-back-top",
+        "./skills/t2ui-skills/tui-badge",
+        "./skills/t2ui-skills/tui-button",
+        "./skills/t2ui-skills/tui-calendar",
+        "./skills/t2ui-skills/tui-card",
+        "./skills/t2ui-skills/tui-cell",
+        "./skills/t2ui-skills/tui-changelog",
+        "./skills/t2ui-skills/tui-chat-group",
+        "./skills/t2ui-skills/tui-checkbox",
+        "./skills/t2ui-skills/tui-circle-progress",
+        "./skills/t2ui-skills/tui-collapse",
+        "./skills/t2ui-skills/tui-color",
+        "./skills/t2ui-skills/tui-common",
+        "./skills/t2ui-skills/tui-config-provider",
+        "./skills/t2ui-skills/tui-count-down",
+        "./skills/t2ui-skills/tui-count-to",
+        "./skills/t2ui-skills/tui-divider",
+        "./skills/t2ui-skills/tui-download-setting",
+        "./skills/t2ui-skills/tui-dropdown",
+        "./skills/t2ui-skills/tui-empty",
+        "./skills/t2ui-skills/tui-fab",
+        "./skills/t2ui-skills/tui-feature",
+        "./skills/t2ui-skills/tui-field",
+        "./skills/t2ui-skills/tui-form",
+        "./skills/t2ui-skills/tui-front-ui",
+        "./skills/t2ui-skills/tui-full-screen",
+        "./skills/t2ui-skills/tui-gap",
+        "./skills/t2ui-skills/tui-grid",
+        "./skills/t2ui-skills/tui-icon",
+        "./skills/t2ui-skills/tui-image",
+        "./skills/t2ui-skills/tui-index-list",
+        "./skills/t2ui-skills/tui-input",
+        "./skills/t2ui-skills/tui-install",
+        "./skills/t2ui-skills/tui-intro",
+        "./skills/t2ui-skills/tui-keyboard",
+        "./skills/t2ui-skills/tui-lazy-load",
+        "./skills/t2ui-skills/tui-layout",
+        "./skills/t2ui-skills/tui-line",
+        "./skills/t2ui-skills/tui-line-progress",
+        "./skills/t2ui-skills/tui-link",
+        "./skills/t2ui-skills/tui-load-more",
+        "./skills/t2ui-skills/tui-loading",
+        "./skills/t2ui-skills/tui-loading-popup",
+        "./skills/t2ui-skills/tui-mask",
+        "./skills/t2ui-skills/tui-message-input",
+        "./skills/t2ui-skills/tui-modal",
+        "./skills/t2ui-skills/tui-navbar",
+        "./skills/t2ui-skills/tui-no-network",
+        "./skills/t2ui-skills/tui-notice-bar",
+        "./skills/t2ui-skills/tui-number-box",
+        "./skills/t2ui-skills/tui-npm-setting",
+        "./skills/t2ui-skills/tui-nvue",
+        "./skills/t2ui-skills/tui-page-composer",
+        "./skills/t2ui-skills/tui-pagination",
+        "./skills/t2ui-skills/tui-picker",
+        "./skills/t2ui-skills/tui-popup",
+        "./skills/t2ui-skills/tui-quickstart",
+        "./skills/t2ui-skills/tui-radio",
+        "./skills/t2ui-skills/tui-rate",
+        "./skills/t2ui-skills/tui-read",
+        "./skills/t2ui-skills/tui-read-more",
+        "./skills/t2ui-skills/tui-root-portal",
+        "./skills/t2ui-skills/tui-safe-area-inset",
+        "./skills/t2ui-skills/tui-search",
+        "./skills/t2ui-skills/tui-section",
+        "./skills/t2ui-skills/tui-select",
+        "./skills/t2ui-skills/tui-setting",
+        "./skills/t2ui-skills/tui-skeleton",
+        "./skills/t2ui-skills/tui-slider",
+        "./skills/t2ui-skills/tui-steps",
+        "./skills/t2ui-skills/tui-sticky",
+        "./skills/t2ui-skills/tui-subsection",
+        "./skills/t2ui-skills/tui-swipe-action",
+        "./skills/t2ui-skills/tui-swiper",
+        "./skills/t2ui-skills/tui-switch",
+        "./skills/t2ui-skills/tui-tabbar",
+        "./skills/t2ui-skills/tui-table",
+        "./skills/t2ui-skills/tui-tabs",
+        "./skills/t2ui-skills/tui-tabs-swiper",
+        "./skills/t2ui-skills/tui-tag",
+        "./skills/t2ui-skills/tui-text",
+        "./skills/t2ui-skills/tui-textarea",
+        "./skills/t2ui-skills/tui-time-line",
+        "./skills/t2ui-skills/tui-toast",
+        "./skills/t2ui-skills/tui-top-tips",
+        "./skills/t2ui-skills/tui-transition",
+        "./skills/t2ui-skills/tui-uni-modules-setting",
+        "./skills/t2ui-skills/tui-upload",
+        "./skills/t2ui-skills/tui-verification-code",
+        "./skills/t2ui-skills/tui-vuex-detail",
+        "./skills/t2ui-skills/tui-waterfall"
       ]
     }
   ]

+ 8 - 5
AGENTS.md

@@ -12,13 +12,16 @@
 
 ### 目录结构
 
+本仓库技能路径为 **`skills/<组目录>/<技能名>/`**(例如 `skills/vue-skills/vue3/`、`skills/threejs-skills/threejs-animation/`),与 `marketplace.json` 中 `skills[]` 路径一致。
+
 ```
 skills/
-  {skill-name}/           # kebab-case directory name
-    SKILL.md              # Required: skill definition
-    scripts/              # Required: executable scripts
-      {script-name}.sh    # Bash scripts (preferred)
-  {skill-name}.zip        # Required: packaged for distribution
+  <group>-skills/         # 组目录,如 vue-skills、tauri-skills、document-skills
+    {skill-name}/         # kebab-case,与 SKILL.md frontmatter name 一致
+      SKILL.md            # 必需
+      examples/           # 可选
+      references/         # 可选
+      scripts/            # 可选
 ```
 
 ### 命名规范

+ 0 - 119
adapters/CONVERSION_COMPLETE.md

@@ -1,119 +0,0 @@
-# 转换完成报告
-
-## ✅ 转换状态
-
-所有 **24 个技能** 已成功转换到 **5 个平台**:
-
-| 平台 | 技能数量 | 状态 |
-|------|---------|------|
-| Cursor | 24 | ✅ 完成 |
-| Trae | 24 | ✅ 完成 |
-| Qoder | 24 | ✅ 完成 |
-| CodeBuddy | 24 | ✅ 完成 |
-| Windsurf | 24 | ✅ 完成 |
-
-## 📁 输出位置
-
-所有转换后的文件位于:`adapters-output/`
-
-```
-adapters-output/
-├── cursor/          # 24 个 .md 文件
-├── trae/            # 24 个插件目录
-├── qoder/           # 24 个 agent 目录
-├── codebuddy/       # 24 个插件目录
-└── windsurf/        # 24 个技能目录
-```
-
-## 📋 已转换的技能列表
-
-1. algorithmic-art
-2. brand-guidelines
-3. canvas-design
-4. code-generator
-5. course-designer
-6. doc-coauthoring
-7. documentation-builder
-8. docx
-9. frontend-design
-10. internal-comms
-11. learning-assessor
-12. mcp-builder
-13. mermaid
-14. pdf
-15. pptx
-16. skill-creator
-17. slack-gif-creator
-18. teaching-resource-generator
-19. test-writer
-20. theme-factory
-21. web-artifacts-builder
-22. webapp-testing
-23. xlsx
-24. full-stack-doc
-
-## 🔧 平台适配器
-
-每个平台都有独立的转换脚本:
-
-- `cursor/convert_to_cursor.py` - Cursor 格式转换
-- `trae/convert_to_trae.py` - Trae 插件格式转换
-- `qoder/convert_to_qoder.py` - Qoder Agent 格式转换
-- `codebuddy/convert_to_codebuddy.py` - CodeBuddy Workflow 格式转换
-- `windsurf/convert_to_windsurf.py` - Windsurf Skills 格式转换
-
-## 🚀 使用方法
-
-### 查看转换结果
-
-```bash
-cd agent-skills
-ls adapters-output/
-```
-
-### 重新转换所有技能
-
-```bash
-cd adapters
-python convert_all.py ../skills ../adapters-output
-```
-
-### 转换单个平台
-
-```bash
-# Cursor
-python adapters/cursor/convert_to_cursor.py --all ../skills ../adapters-output/cursor
-
-# Trae
-python adapters/trae/convert_to_trae.py --all ../skills ../adapters-output/trae
-
-# Qoder
-python adapters/qoder/convert_to_qoder.py --all ../skills ../adapters-output/qoder
-
-# CodeBuddy
-python adapters/codebuddy/convert_to_codebuddy.py --all ../skills ../adapters-output/codebuddy
-
-# Windsurf
-python adapters/windsurf/convert_to_windsurf.py --all ../skills ../adapters-output/windsurf
-```
-
-## 📝 注意事项
-
-- ⚠️ 所有转换结果为理论性实现,尚未在实际平台上验证
-- 配置文件格式可能需要根据实际平台 API 调整
-- 建议在实际使用前查阅目标平台的官方文档
-- Windsurf 使用与 Agent Skills 相同的格式,转换主要是复制文件结构
-
-## 🔗 相关文档
-
-- [适配器主文档](README.md)
-- [示例说明](EXAMPLES.md)
-- [转换总结](SUMMARY.md)
-- [跨平台使用指南](../PLATFORM_GUIDE.md)
-
-## ✨ 下一步
-
-1. 在实际平台上测试转换后的文件
-2. 根据平台 API 调整配置格式
-3. 更新转换脚本以支持更多平台特性
-4. 添加更多示例和测试用例

+ 0 - 102
adapters/EXAMPLES.md

@@ -1,102 +0,0 @@
-# 适配器示例
-
-本目录包含转换后的示例文件,展示了不同平台的适配格式。
-
-## 示例文件位置
-
-### Cursor 格式示例
-
-位置:`examples/cursor/`
-
-- `course-designer.md` - 课程设计技能的 Cursor 自定义指令
-- `code-generator.md` - 代码生成技能的 Cursor 自定义指令
-
-**使用方法:**
-```bash
-# 复制到项目 .cursor/rules/ 目录
-cp examples/cursor/course-designer.md .cursor/rules/
-```
-
-### Trae 格式示例
-
-位置:`examples/trae/`
-
-- `course-designer/trae-plugin.json` - Trae 插件配置
-- `code-generator/trae-plugin.json` - Trae 插件配置
-
-**使用方法:**
-```bash
-# 复制插件目录到 Trae 插件目录
-cp -r examples/trae/course-designer /path/to/trae/plugins/
-```
-
-### Qoder 格式示例
-
-位置:`examples/qoder/`
-
-- `course-designer-agent/` - Qoder Agent 配置和模块
-  - `qoder-agent-config.json` - Agent 配置文件
-  - `course_designer_agent.py` - Python Agent 模块
-  - `SKILL.md` - 原始技能定义
-
-**使用方法:**
-```bash
-# 复制 agent 目录到 Qoder agents 目录
-cp -r examples/qoder/course-designer-agent /path/to/qoder/agents/
-```
-
-### CodeBuddy 格式示例
-
-位置:`examples/codebuddy/`
-
-- `course-designer/` - CodeBuddy 插件
-  - `manifest.json` - 插件清单
-  - `workflows/course-designer.json` - 工作流定义
-  - `skills/course-designer/SKILL.md` - 技能定义
-
-**使用方法:**
-```bash
-# 复制插件目录到 CodeBuddy 插件目录
-cp -r examples/codebuddy/course-designer /path/to/codebuddy/plugins/
-```
-
-### Windsurf 格式示例
-
-位置:`examples/windsurf/` 或 `adapters-output/windsurf/`
-
-- `course-designer/` - Windsurf Skill
-  - `SKILL.md` - 技能定义(与 Agent Skills 格式相同)
-  - `scripts/` - 脚本文件(如果原技能有)
-  - `templates/` - 模板文件(如果原技能有)
-
-**使用方法:**
-```bash
-# 项目级:复制到项目 .windsurf/skills/ 目录
-cp -r adapters-output/windsurf/course-designer .windsurf/skills/
-
-# 全局级:复制到 ~/.windsurf/skills/ 目录
-cp -r adapters-output/windsurf/course-designer ~/.windsurf/skills/
-```
-
-## 生成更多示例
-
-使用转换脚本生成更多示例:
-
-```bash
-# 转换所有技能到所有平台
-cd adapters
-python convert_all.py ../skills ../adapters-output
-
-# 或转换单个平台
-python cursor/convert_to_cursor.py --all ../skills examples/cursor
-python trae/convert_to_trae.py --all ../skills examples/trae
-python qoder/convert_to_qoder.py --all ../skills examples/qoder
-python codebuddy/convert_to_codebuddy.py --all ../skills examples/codebuddy
-python windsurf/convert_to_windsurf.py --all ../skills examples/windsurf
-```
-
-## 注意事项
-
-- ⚠️ 这些示例文件为理论性转换结果,尚未在实际平台上验证
-- 配置文件格式可能需要根据实际平台 API 调整
-- 建议在实际使用前查阅目标平台的官方文档

+ 0 - 141
adapters/SUMMARY.md

@@ -1,141 +0,0 @@
-# 适配器工具总结
-
-## 已完成的工作
-
-### 1. 转换脚本
-
-已为以下平台创建了转换脚本:
-
-- ✅ **Cursor** (`cursor/convert_to_cursor.py`)
-  - 将 Agent Skills 转换为 Cursor 自定义指令格式
-  - 输出 `.md` 文件,可直接用于 `.cursor/rules/` 目录
-
-- ✅ **Trae** (`trae/convert_to_trae.py`)
-  - 将 Agent Skills 转换为 Trae 插件格式
-  - 生成 `trae-plugin.json` 配置文件
-
-- ✅ **Qoder** (`qoder/convert_to_qoder.py`)
-  - 将 Agent Skills 转换为 Qoder Agent 格式
-  - 生成 agent 配置文件和 Python agent 模块
-
-- ✅ **CodeBuddy** (`codebuddy/convert_to_codebuddy.py`)
-  - 将 Agent Skills 转换为 CodeBuddy Workflow 格式
-  - 生成 manifest 和工作流定义文件
-
-- ✅ **Windsurf** (`windsurf/convert_to_windsurf.py`)
-  - 将 Agent Skills 转换为 Windsurf Cascade Skills 格式
-  - Windsurf 使用与 Agent Skills 相同的格式,主要是复制文件结构
-
-### 2. 主转换工具
-
-- ✅ `convert_all.py` - 一键转换所有技能到所有平台
-
-### 3. 示例文件
-
-已在 `examples/` 目录下生成了以下示例:
-
-- **Cursor**: `course-designer.md`, `code-generator.md`
-- **Trae**: `course-designer/`, `code-generator/`
-- **Qoder**: `course-designer-agent/`, `code-generator-agent/`
-- **CodeBuddy**: `course-designer/`, `code-generator/`
-
-### 4. 文档
-
-- ✅ 每个平台适配器都有独立的 README
-- ✅ 主 README 说明如何使用所有适配器
-- ✅ EXAMPLES.md 说明示例文件的使用方法
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-# Cursor
-python adapters/cursor/convert_to_cursor.py skills/course-designer output/cursor
-
-# Trae
-python adapters/trae/convert_to_trae.py skills/course-designer output/trae
-
-# Qoder
-python adapters/qoder/convert_to_qoder.py skills/course-designer output/qoder
-
-# CodeBuddy
-python adapters/codebuddy/convert_to_codebuddy.py skills/course-designer output/codebuddy
-```
-
-### 转换所有技能
-
-```bash
-cd adapters
-python convert_all.py ../skills ../adapters-output
-```
-
-## 输出格式
-
-### Cursor
-```
-cursor/
-└── course-designer.md  # Cursor 自定义指令文件
-```
-
-### Trae
-```
-trae/
-└── course-designer/
-    ├── trae-plugin.json
-    └── SKILL.md
-```
-
-### Qoder
-```
-qoder/
-└── course-designer-agent/
-    ├── qoder-agent-config.json
-    ├── course_designer_agent.py
-    └── SKILL.md
-```
-
-### CodeBuddy
-```
-codebuddy/
-└── course-designer/
-    ├── manifest.json
-    ├── workflows/
-    │   └── course-designer.json
-    └── skills/
-        └── course-designer/
-            └── SKILL.md
-```
-
-### Windsurf
-```
-windsurf/
-└── course-designer/
-    ├── SKILL.md
-    ├── scripts/          # 如果原技能有脚本
-    └── templates/        # 如果原技能有模板
-```
-
-## 验证状态
-
-| 平台 | 转换脚本 | 示例生成 | 格式验证 | 平台验证 |
-|------|---------|---------|---------|---------|
-| Cursor | ✅ | ✅ | ⚠️ 需要验证 | ⚠️ 需要验证 |
-| Trae | ✅ | ✅ | ⚠️ 需要验证 | ⚠️ 需要验证 |
-| Qoder | ✅ | ✅ | ⚠️ 需要验证 | ⚠️ 需要验证 |
-| CodeBuddy | ✅ | ✅ | ⚠️ 需要验证 | ⚠️ 需要验证 |
-| Windsurf | ✅ | ✅ | ⚠️ 需要验证 | ⚠️ 需要验证 |
-
-## 注意事项
-
-- ⚠️ 所有转换脚本为理论性实现,尚未在实际平台上验证
-- 生成的配置文件格式可能需要根据实际平台 API 调整
-- 建议在实际使用前查阅目标平台的官方文档
-- 欢迎贡献验证结果和改进建议
-
-## 下一步
-
-1. 在实际平台上测试转换后的文件
-2. 根据平台 API 调整配置格式
-3. 更新转换脚本以支持更多平台特性
-4. 添加更多示例和测试用例

+ 0 - 71
adapters/codebuddy/README.md

@@ -1,71 +0,0 @@
-# CodeBuddy Adapter
-
-将 Agent Skills 转换为 CodeBuddy Workflow 格式的适配器。
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-python convert_to_codebuddy.py ../../skills/course-designer codebuddy-plugins/
-```
-
-### 转换所有技能
-
-```bash
-python convert_to_codebuddy.py --all ../../skills codebuddy-plugins/
-```
-
-## 输出格式
-
-
-转换后会创建 CodeBuddy 插件目录结构:
-
-```
-codebuddy-plugins/
-└── course-designer/
-    ├── manifest.json
-    ├── workflows/
-    │   └── course-designer.json
-    └── skills/
-        └── course-designer/
-            └── SKILL.md
-```
-
-## CodeBuddy 插件结构
-
-每个 CodeBuddy 插件包含:
-
-- `manifest.json` - 插件清单文件
-- `workflows/` - 工作流定义目录
-- `skills/` - 技能定义目录
-
-## Workflow 格式
-
-```json
-{
-  "id": "course-designer",
-  "name": "Course Designer",
-  "description": "Design courses and curricula",
-  "steps": [
-    {
-      "id": 1,
-      "name": "analyze",
-      "description": "Analyze requirements",
-      "type": "instruction"
-    }
-  ]
-}
-```
-
-## 在 CodeBuddy 中使用
-
-1. 将插件目录复制到 CodeBuddy 的插件目录
-2. 在 CodeBuddy 中注册插件
-3. 使用工作流执行技能任务
-
-## 注意事项
-
-- ⚠️ 此适配方案为理论性建议,需要根据 CodeBuddy 平台的实际功能进行验证
-- Workflow 格式可能需要根据 CodeBuddy 的实际规范调整
-- 建议查阅 CodeBuddy 官方文档了解支持的插件格式

+ 0 - 243
adapters/codebuddy/convert_to_codebuddy.py

@@ -1,243 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert Agent Skills to CodeBuddy Workflow format
-
-This script converts Agent Skills to CodeBuddy workflow format.
-CodeBuddy supports workflows and tips plugins.
-
-Usage:
-    python convert_to_codebuddy.py <skill_path> [output_path]
-    
-Example:
-    python convert_to_codebuddy.py ../../skills/course-designer codebuddy-plugins/
-"""
-
-import sys
-import json
-import re
-from pathlib import Path
-
-try:
-    import yaml
-    HAS_YAML = True
-except ImportError:
-    HAS_YAML = False
-
-
-def parse_yaml_simple(text):
-    """Simple YAML parser for frontmatter (handles basic key: value pairs)"""
-    result = {}
-    for line in text.split('\n'):
-        line = line.strip()
-        if ':' in line and not line.startswith('#'):
-            key, value = line.split(':', 1)
-            key = key.strip()
-            value = value.strip().strip('"').strip("'")
-            result[key] = value
-    return result
-
-
-def extract_frontmatter(content):
-    """Extract YAML frontmatter from SKILL.md"""
-    frontmatter_pattern = r'^---\n(.*?)\n---\n'
-    match = re.match(frontmatter_pattern, content, re.DOTALL)
-    
-    if match:
-        frontmatter_text = match.group(1)
-        if HAS_YAML:
-            frontmatter = yaml.safe_load(frontmatter_text)
-        else:
-            frontmatter = parse_yaml_simple(frontmatter_text)
-        body_start = match.end()
-        body = content[body_start:].strip()
-        return frontmatter, body
-    return {}, content.strip()
-
-
-def extract_workflow_from_body(body):
-    """Extract workflow steps from skill body"""
-    workflow = {
-        "name": "",
-        "description": "",
-        "steps": []
-    }
-    
-    lines = body.split('\n')
-    current_section = None
-    
-    for i, line in enumerate(lines):
-        # Extract workflow name from title
-        if line.startswith('# ') and not workflow["name"]:
-            workflow["name"] = line.replace('#', '').strip()
-        
-        # Extract description
-        elif line.startswith('## 概述') or line.startswith('## Overview'):
-            if i + 1 < len(lines):
-                workflow["description"] = lines[i + 1].strip()
-        
-        # Extract steps from numbered lists
-        elif re.match(r'^\d+\.', line.strip()):
-            step_text = re.sub(r'^\d+\.\s*', '', line.strip())
-            workflow["steps"].append({
-                "id": len(workflow["steps"]) + 1,
-                "name": step_text.split(':')[0] if ':' in step_text else step_text,
-                "description": step_text,
-                "type": "instruction"
-            })
-    
-    # If no steps found, create default workflow
-    if not workflow["steps"]:
-        workflow["steps"] = [
-            {
-                "id": 1,
-                "name": "analyze",
-                "description": "Analyze requirements",
-                "type": "instruction"
-            },
-            {
-                "id": 2,
-                "name": "execute",
-                "description": "Execute skill task",
-                "type": "instruction"
-            },
-            {
-                "id": 3,
-                "name": "output",
-                "description": "Generate output",
-                "type": "instruction"
-            }
-        ]
-    
-    return workflow
-
-
-def convert_to_codebuddy_workflow(skill_path, output_dir=None):
-    """
-    Convert Agent Skill to CodeBuddy workflow format
-    
-    Args:
-        skill_path: Path to skill directory containing SKILL.md
-        output_dir: Output directory for plugin (optional)
-    """
-    skill_path = Path(skill_path)
-    skill_file = skill_path / "SKILL.md"
-    
-    if not skill_file.exists():
-        print(f"Error: SKILL.md not found in {skill_path}")
-        return None
-    
-    # Read skill file
-    with open(skill_file, "r", encoding="utf-8") as f:
-        content = f.read()
-    
-    # Extract frontmatter and body
-    frontmatter, body = extract_frontmatter(content)
-    
-    if not frontmatter:
-        print(f"Warning: No frontmatter found in {skill_file}")
-        frontmatter = {"name": skill_path.name, "description": ""}
-    
-    # Extract workflow
-    workflow = extract_workflow_from_body(body)
-    workflow["name"] = workflow["name"] or frontmatter.get("name", skill_path.name)
-    workflow["description"] = workflow["description"] or frontmatter.get("description", "")
-    
-    # Create CodeBuddy plugin manifest
-    plugin_manifest = {
-        "name": frontmatter.get("name", skill_path.name),
-        "version": "1.0.0",
-        "description": frontmatter.get("description", ""),
-        "author": "Teaching AI",
-        "type": "workflow-plugin",
-        "workflows": [
-            {
-                "id": frontmatter.get("name", skill_path.name),
-                "name": workflow["name"],
-                "description": workflow["description"],
-                "steps": workflow["steps"],
-                "inputs": [],
-                "outputs": []
-            }
-        ]
-    }
-    
-    # Write output
-    if output_dir:
-        output_dir = Path(output_dir)
-        output_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Create plugin directory
-        plugin_dir = output_dir / frontmatter.get("name", skill_path.name)
-        plugin_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Create workflows directory
-        workflows_dir = plugin_dir / "workflows"
-        workflows_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Write manifest
-        manifest_file = plugin_dir / "plugin.json"
-        with open(manifest_file, "w", encoding="utf-8") as f:
-            json.dump(plugin_manifest, f, indent=2, ensure_ascii=False)
-        
-        # Write workflow file
-        workflow_file = workflows_dir / f"{frontmatter.get('name', skill_path.name)}.json"
-        with open(workflow_file, "w", encoding="utf-8") as f:
-            json.dump(plugin_manifest["workflows"][0], f, indent=2, ensure_ascii=False)
-        
-        # Copy SKILL.md to skills directory
-        skills_dir = plugin_dir / "skills" / frontmatter.get("name", skill_path.name)
-        skills_dir.mkdir(parents=True, exist_ok=True)
-        import shutil
-        shutil.copy2(skill_file, skills_dir / "SKILL.md")
-        
-        # Copy resource directories
-        resource_dirs = ["scripts", "references", "assets", "api", "templates", "examples"]
-        for res_dir in resource_dirs:
-            src_dir = skill_path / res_dir
-            if src_dir.exists() and src_dir.is_dir():
-                dest_dir = skills_dir / res_dir
-                if dest_dir.exists():
-                    shutil.rmtree(dest_dir)
-                shutil.copytree(src_dir, dest_dir)
-        
-        print(f"✅ Converted to CodeBuddy plugin: {plugin_dir}")
-        return plugin_dir
-    else:
-        return plugin_manifest
-
-
-def convert_all_skills(skills_dir, output_dir):
-    """Convert all skills in a directory"""
-    skills_dir = Path(skills_dir)
-    output_dir = Path(output_dir)
-    output_dir.mkdir(parents=True, exist_ok=True)
-    
-    converted = []
-    for skill_dir in skills_dir.iterdir():
-        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
-            try:
-                result = convert_to_codebuddy_workflow(skill_dir, output_dir)
-                if result:
-                    converted.append(skill_dir.name)
-            except Exception as e:
-                print(f"Error converting {skill_dir.name}: {e}")
-    
-    print(f"\n✅ Converted {len(converted)} skills: {', '.join(converted)}")
-    return converted
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: python convert_to_codebuddy.py <skill_path> [output_path]")
-        print("   or: python convert_to_codebuddy.py --all <skills_dir> <output_dir>")
-        sys.exit(1)
-    
-    if sys.argv[1] == "--all":
-        if len(sys.argv) < 4:
-            print("Usage: python convert_to_codebuddy.py --all <skills_dir> <output_dir>")
-            sys.exit(1)
-        convert_all_skills(sys.argv[2], sys.argv[3])
-    else:
-        skill_path = sys.argv[1]
-        output_path = sys.argv[2] if len(sys.argv) > 2 else None
-        convert_to_codebuddy_workflow(skill_path, output_path)

+ 0 - 99
adapters/convert_all.py

@@ -1,99 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert all Agent Skills to different platform formats
-
-This is a master conversion tool that converts skills to all supported platforms.
-
-Usage:
-    python convert_all.py <skills_dir> <output_base_dir>
-    
-Example:
-    python convert_all.py ../skills ../adapters-output
-"""
-
-import sys
-from pathlib import Path
-
-# Add adapter directories to path
-sys.path.insert(0, str(Path(__file__).parent))
-
-from cursor.convert_to_cursor import convert_all_skills as convert_cursor
-from trae.convert_to_trae import convert_all_skills as convert_trae
-from qoder.convert_to_qoder import convert_all_skills as convert_qoder
-from codebuddy.convert_to_codebuddy import convert_all_skills as convert_codebuddy
-from windsurf.convert_to_windsurf import convert_all_skills as convert_windsurf
-
-
-def convert_to_all_platforms(skills_dir, output_base_dir):
-    """
-    Convert all skills to all supported platforms
-    
-    Args:
-        skills_dir: Directory containing skills
-        output_base_dir: Base output directory
-    """
-    output_base = Path(output_base_dir)
-    output_base.mkdir(parents=True, exist_ok=True)
-    
-    print("🚀 Starting conversion to all platforms...\n")
-    
-    # Convert to Cursor
-    print("📝 Converting to Cursor format...")
-    try:
-        convert_cursor(skills_dir, output_base / "cursor")
-        print("✅ Cursor conversion completed\n")
-    except Exception as e:
-        print(f"❌ Cursor conversion failed: {e}\n")
-    
-    # Convert to Trae
-    print("🔌 Converting to Trae format...")
-    try:
-        convert_trae(skills_dir, output_base / "trae")
-        print("✅ Trae conversion completed\n")
-    except Exception as e:
-        print(f"❌ Trae conversion failed: {e}\n")
-    
-    # Convert to Qoder
-    print("🤖 Converting to Qoder format...")
-    try:
-        convert_qoder(skills_dir, output_base / "qoder")
-        print("✅ Qoder conversion completed\n")
-    except Exception as e:
-        print(f"❌ Qoder conversion failed: {e}\n")
-    
-    # Convert to CodeBuddy
-    print("🔄 Converting to CodeBuddy format...")
-    try:
-        convert_codebuddy(skills_dir, output_base / "codebuddy")
-        print("✅ CodeBuddy conversion completed\n")
-    except Exception as e:
-        print(f"❌ CodeBuddy conversion failed: {e}\n")
-    
-    # Convert to Windsurf
-    print("🌊 Converting to Windsurf format...")
-    try:
-        convert_windsurf(skills_dir, output_base / "windsurf")
-        print("✅ Windsurf conversion completed\n")
-    except Exception as e:
-        print(f"❌ Windsurf conversion failed: {e}\n")
-    
-    print("🎉 All conversions completed!")
-    print(f"\nOutput directories:")
-    print(f"  - Cursor: {output_base / 'cursor'}")
-    print(f"  - Trae: {output_base / 'trae'}")
-    print(f"  - Qoder: {output_base / 'qoder'}")
-    print(f"  - CodeBuddy: {output_base / 'codebuddy'}")
-    print(f"  - Windsurf: {output_base / 'windsurf'}")
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 3:
-        print("Usage: python convert_all.py <skills_dir> <output_base_dir>")
-        print("\nExample:")
-        print("  python convert_all.py ../skills ../adapters-output")
-        sys.exit(1)
-    
-    skills_dir = sys.argv[1]
-    output_base_dir = sys.argv[2]
-    
-    convert_to_all_platforms(skills_dir, output_base_dir)

+ 0 - 68
adapters/cursor/README.md

@@ -1,68 +0,0 @@
-# Cursor Adapter
-
-将 Agent Skills 转换为 Cursor 自定义指令格式的适配器。
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-python convert_to_cursor.py ../../skills/course-designer .cursor/rules/
-```
-
-### 转换所有技能
-
-```bash
-python convert_to_cursor.py --all ../../skills .cursor/rules/
-```
-
-## 输出格式
-
-转换后的文件将保存在 `.cursor/rules/` 目录下,格式为 `{skill-name}.md`。
-
-## 在 Cursor 中使用
-
-### 方法一:项目级规则
-
-将转换后的文件放在项目根目录的 `.cursor/rules/` 目录下:
-
-```
-my-project/
-├── .cursor/
-│   └── rules/
-│       ├── course-designer.md
-│       └── code-generator.md
-└── src/
-```
-
-### 方法二:全局规则
-
-将转换后的文件放在 Cursor 的全局配置目录:
-
-```bash
-# macOS/Linux
-~/.cursor/rules/
-
-# Windows
-%APPDATA%\cursor\rules\
-```
-
-### 方法三:项目上下文
-
-将技能目录复制到项目中,Cursor 会自动读取:
-
-```
-my-project/
-├── skills/
-│   ├── course-designer/
-│   │   └── SKILL.md
-│   └── code-generator/
-│       └── SKILL.md
-└── .cursorignore
-```
-
-## 注意事项
-
-- Cursor 会自动读取 `.cursor/rules/` 目录下的 Markdown 文件
-- 确保文件编码为 UTF-8
-- 文件名使用 kebab-case 格式

+ 0 - 222
adapters/cursor/convert_to_cursor.py

@@ -1,222 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert Agent Skills to Cursor format
-
-This script converts Agent Skills to Cursor custom instruction format.
-Cursor supports custom instructions via .cursorrules files or project context.
-
-Usage:
-    python convert_to_cursor.py <skill_path> [output_path]
-    
-Example:
-    python convert_to_cursor.py ../../skills/course-designer .cursor/rules/
-"""
-
-import sys
-import re
-import shutil
-from pathlib import Path
-
-try:
-    import yaml
-    HAS_YAML = True
-except ImportError:
-    HAS_YAML = False
-
-
-def parse_yaml_simple(text):
-    """Simple YAML parser for frontmatter (handles basic key: value pairs)"""
-    result = {}
-    for line in text.split('\n'):
-        line = line.strip()
-        if ':' in line and not line.startswith('#'):
-            key, value = line.split(':', 1)
-            key = key.strip()
-            value = value.strip().strip('"').strip("'")
-            result[key] = value
-    return result
-
-
-def extract_frontmatter(content):
-    """Extract YAML frontmatter from SKILL.md"""
-    frontmatter_pattern = r'^---\n(.*?)\n---\n'
-    match = re.match(frontmatter_pattern, content, re.DOTALL)
-    
-    if match:
-        frontmatter_text = match.group(1)
-        if HAS_YAML:
-            frontmatter = yaml.safe_load(frontmatter_text)
-        else:
-            frontmatter = parse_yaml_simple(frontmatter_text)
-        body_start = match.end()
-        body = content[body_start:].strip()
-        return frontmatter, body
-    else:
-        return {}, content.strip()
-
-
-def rewrite_markdown_links(content, skill_name, resource_dirs):
-    """
-    Rewrite markdown links to point to assets directory
-    
-    Args:
-        content: Markdown content
-        skill_name: Name of the skill
-        resource_dirs: List of resource directories that were copied
-    
-    Returns:
-        Updated content
-    """
-    def replace_link(match):
-        text = match.group(1)
-        url = match.group(2)
-        
-        # Skip absolute links, anchors, or existing asset links
-        if url.startswith(('http://', 'https://', '#', '/')):
-            return match.group(0)
-            
-        # Check if link points to a resource directory
-        for res_dir in resource_dirs:
-            if url.startswith(res_dir + '/') or url == res_dir:
-                return f"[{text}](assets/{skill_name}/{url})"
-                
-        return match.group(0)
-    
-    # Replace [text](url) links
-    content = re.sub(r'\[([^\]]+)\]\(([^\)]+)\)', replace_link, content)
-    
-    # Replace `path` references (common in our skills)
-    def replace_code_path(match):
-        path = match.group(1)
-        # Check if path points to a resource directory
-        for res_dir in resource_dirs:
-            if path.startswith(res_dir + '/') or path == res_dir:
-                return f"`assets/{skill_name}/{path}`"
-        return match.group(0)
-
-    content = re.sub(r'`([^`\n]+)`', replace_code_path, content)
-    
-    return content
-
-
-def convert_to_cursor_rule(skill_path, output_dir=None):
-    """
-    Convert Agent Skill to Cursor custom instruction format
-    
-    Args:
-        skill_path: Path to skill directory containing SKILL.md
-        output_dir: Output directory for .cursorrules file (optional)
-    """
-    skill_path = Path(skill_path)
-    skill_file = skill_path / "SKILL.md"
-    
-    if not skill_file.exists():
-        print(f"Error: SKILL.md not found in {skill_path}")
-        return None
-    
-    # Read skill file
-    with open(skill_file, "r", encoding="utf-8") as f:
-        content = f.read()
-    
-    # Extract frontmatter and body
-    frontmatter, body = extract_frontmatter(content)
-    
-    if not frontmatter:
-        print(f"Warning: No frontmatter found in {skill_file}")
-        frontmatter = {"name": skill_path.name, "description": ""}
-    
-    skill_name = frontmatter.get('name', skill_path.name)
-    
-    # Handle resources
-    resource_dirs = ["scripts", "references", "assets", "api", "templates", "examples"]
-    copied_resources = []
-    
-    if output_dir:
-        output_dir = Path(output_dir)
-        assets_dir = output_dir / "assets" / skill_name
-        
-        for res_dir in resource_dirs:
-            src_dir = skill_path / res_dir
-            if src_dir.exists() and src_dir.is_dir():
-                dest_dir = assets_dir / res_dir
-                if dest_dir.exists():
-                    shutil.rmtree(dest_dir)
-                shutil.copytree(src_dir, dest_dir)
-                copied_resources.append(res_dir)
-    
-    # Rewrite links in body
-    if copied_resources:
-        body = rewrite_markdown_links(body, skill_name, copied_resources)
-    
-    # Create Cursor rule format (MDC)
-    # See: https://docs.nvidia.com/nemo/agent-toolkit/1.2/extend/cursor-rules-developer-guide.html
-    mdc_content = f"""---
-description: {frontmatter.get('description', 'No description available')}
-globs: {frontmatter.get('globs', ['**/*'])}
----
-
-# {skill_name.replace('-', ' ').title()}
-
-## Description
-{frontmatter.get('description', 'No description available')}
-
-## When to Use
-Use this skill when the user asks about: {frontmatter.get('description', 'related tasks')}
-
-## Instructions
-
-{body}
-"""
-    
-    # Write output
-    if output_dir:
-        output_dir.mkdir(parents=True, exist_ok=True)
-        # Use .mdc extension for Cursor rules
-        output_file = output_dir / f"{skill_name}.mdc"
-        with open(output_file, "w", encoding="utf-8") as f:
-            f.write(mdc_content)
-        
-        log_msg = f"✅ Converted to Cursor format: {output_file}"
-        if copied_resources:
-            log_msg += f" (Resources copied: {', '.join(copied_resources)})"
-        print(log_msg)
-        return output_file
-    else:
-        return mdc_content
-
-
-def convert_all_skills(skills_dir, output_dir):
-    """Convert all skills in a directory"""
-    skills_dir = Path(skills_dir)
-    output_dir = Path(output_dir)
-    output_dir.mkdir(parents=True, exist_ok=True)
-    
-    converted = []
-    for skill_dir in skills_dir.iterdir():
-        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
-            try:
-                result = convert_to_cursor_rule(skill_dir, output_dir)
-                if result:
-                    converted.append(skill_dir.name)
-            except Exception as e:
-                print(f"Error converting {skill_dir.name}: {e}")
-    
-    print(f"\n✅ Converted {len(converted)} skills: {', '.join(converted)}")
-    return converted
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: python convert_to_cursor.py <skill_path> [output_path]")
-        print("   or: python convert_to_cursor.py --all <skills_dir> <output_dir>")
-        sys.exit(1)
-    
-    if sys.argv[1] == "--all":
-        if len(sys.argv) < 4:
-            print("Usage: python convert_to_cursor.py --all <skills_dir> <output_dir>")
-            sys.exit(1)
-        convert_all_skills(sys.argv[2], sys.argv[3])
-    else:
-        skill_path = sys.argv[1]
-        output_path = sys.argv[2] if len(sys.argv) > 2 else None
-        convert_to_cursor_rule(skill_path, output_path)

+ 0 - 70
adapters/qoder/README.md

@@ -1,70 +0,0 @@
-# Qoder Adapter
-
-将 Agent Skills 转换为 Qoder Agent 格式的适配器。
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-python convert_to_qoder.py ../../skills/course-designer qoder-agents/
-```
-
-### 转换所有技能
-
-```bash
-python convert_to_qoder.py --all ../../skills qoder-agents/
-```
-
-## 输出格式
-
-转换后会创建 Qoder Agent 目录结构:
-
-```
-qoder-agents/
-└── course-designer-agent/
-    ├── qoder-agent-config.json
-    ├── SKILL.md
-    └── course_designer_agent.py
-```
-
-## Qoder Agent 结构
-
-每个 Qoder Agent 包含:
-
-- `qoder-agent-config.json` - Agent 配置文件,定义 agent 的能力和工作流
-- `SKILL.md` - 原始技能定义文件
-- `{skill_name}_agent.py` - Python Agent 模块(可选)
-
-## Agent 配置格式
-
-```json
-{
-  "name": "course-designer-agent",
-  "description": "Agent for designing courses",
-  "version": "1.0.0",
-  "type": "skill-agent",
-  "capabilities": ["course-design", "curriculum-planning"],
-  "workflow": [
-    {
-      "step": "analyze-requirements",
-      "description": "Analyze course requirements"
-    }
-  ],
-  "instructions": "SKILL.md"
-}
-```
-
-## 在 Qoder 中使用
-
-1. 将 agent 目录部署到 Qoder 可访问的位置
-2. 在 Qoder 中注册 agent
-3. 配置 agent 的权限和依赖
-4. 激活 agent 并开始使用
-
-## 注意事项
-
-- ⚠️ 此适配方案基于 Qoder 作为 agentic platform 的特性,需要根据实际 API 验证
-- Agent 配置格式可能需要根据 Qoder 的实际规范调整
-- Python agent 模块为示例代码,需要根据 Qoder 的 SDK 进行调整
-- 建议查阅 [Qoder 官方文档](https://qoder.com/) 获取最新信息

+ 0 - 359
adapters/qoder/convert_to_qoder.py

@@ -1,359 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert Agent Skills to Qoder Agent format
-
-This script converts Agent Skills to Qoder agent module format.
-Qoder is an agentic coding platform that supports agent-based automation.
-
-Usage:
-    python convert_to_qoder.py <skill_path> [output_path]
-    
-Example:
-    python convert_to_qoder.py ../../skills/course-designer qoder-agents/
-"""
-
-import sys
-import json
-import re
-import shutil
-from pathlib import Path
-
-try:
-    import yaml
-    HAS_YAML = True
-except ImportError:
-    HAS_YAML = False
-
-
-def parse_yaml_simple(text):
-    """Simple YAML parser for frontmatter (handles basic key: value pairs)"""
-    result = {}
-    for line in text.split('\n'):
-        line = line.strip()
-        if ':' in line and not line.startswith('#'):
-            key, value = line.split(':', 1)
-            key = key.strip()
-            value = value.strip().strip('"').strip("'")
-            result[key] = value
-    return result
-
-
-def extract_frontmatter(content):
-    """Extract YAML frontmatter from SKILL.md"""
-    frontmatter_pattern = r'^---\n(.*?)\n---\n'
-    match = re.match(frontmatter_pattern, content, re.DOTALL)
-    
-    if match:
-        frontmatter_text = match.group(1)
-        if HAS_YAML:
-            frontmatter = yaml.safe_load(frontmatter_text)
-        else:
-            frontmatter = parse_yaml_simple(frontmatter_text)
-        body_start = match.end()
-        body = content[body_start:].strip()
-        return frontmatter, body
-    return {}, content.strip()
-
-
-def rewrite_markdown_links(content, skill_name, resource_dirs):
-    """
-    Rewrite markdown links to point to assets directory
-    
-    Args:
-        content: Markdown content
-        skill_name: Name of the skill
-        resource_dirs: List of resource directories that were copied
-    
-    Returns:
-        Updated content
-    """
-    def replace_link(match):
-        text = match.group(1)
-        url = match.group(2)
-        
-        # Skip absolute links, anchors, or existing asset links
-        if url.startswith(('http://', 'https://', '#', '/')):
-            return match.group(0)
-            
-        # Check if link points to a resource directory
-        for res_dir in resource_dirs:
-            if url.startswith(res_dir + '/') or url == res_dir:
-                return f"[{text}](assets/{skill_name}/{url})"
-                
-        return match.group(0)
-    
-    # Replace [text](url) links
-    content = re.sub(r'\[([^\]]+)\]\(([^\)]+)\)', replace_link, content)
-    
-    # Replace `path` references (common in our skills)
-    def replace_code_path(match):
-        path = match.group(1)
-        # Check if path points to a resource directory
-        for res_dir in resource_dirs:
-            if path.startswith(res_dir + '/') or path == res_dir:
-                return f"`assets/{skill_name}/{path}`"
-        return match.group(0)
-
-    content = re.sub(r'`([^`\n]+)`', replace_code_path, content)
-    
-    return content
-
-
-def extract_workflow_steps(body):
-    """Extract workflow steps from skill body"""
-    steps = []
-    # Look for numbered lists or workflow sections
-    lines = body.split('\n')
-    current_step = None
-    
-    for line in lines:
-        # Match numbered list items
-        match = re.match(r'^(\d+)\.\s+(.+)$', line.strip())
-        if match:
-            step_num = match.group(1)
-            step_desc = match.group(2)
-            steps.append({
-                "step": f"step-{step_num}",
-                "description": step_desc
-            })
-        # Match ## sections as workflow steps
-        elif line.startswith('## ') and '流程' in line or 'workflow' in line.lower():
-            current_step = line.replace('##', '').strip()
-    
-    return steps if steps else [
-        {"step": "analyze", "description": "Analyze requirements"},
-        {"step": "execute", "description": "Execute skill task"},
-        {"step": "output", "description": "Generate output"}
-    ]
-
-
-def convert_to_qoder_agent(skill_path, output_dir=None):
-    """
-    Convert Agent Skill to Qoder agent format
-    
-    Args:
-        skill_path: Path to skill directory containing SKILL.md
-        output_dir: Output directory for agent (optional)
-    """
-    skill_path = Path(skill_path)
-    skill_file = skill_path / "SKILL.md"
-    
-    if not skill_file.exists():
-        print(f"Error: SKILL.md not found in {skill_path}")
-        return None
-    
-    # Read skill file
-    with open(skill_file, "r", encoding="utf-8") as f:
-        content = f.read()
-    
-    # Extract frontmatter and body
-    frontmatter, body = extract_frontmatter(content)
-    
-    if not frontmatter:
-        print(f"Warning: No frontmatter found in {skill_file}")
-        frontmatter = {"name": skill_path.name, "description": ""}
-    
-    # Extract workflow steps
-    workflow_steps = extract_workflow_steps(body)
-    
-    # Extract capabilities from description
-    capabilities = []
-    description = frontmatter.get("description", "")
-    if "课程设计" in description or "course" in description.lower():
-        capabilities.append("course-design")
-    if "代码" in description or "code" in description.lower():
-        capabilities.append("code-generation")
-    if "测试" in description or "test" in description.lower():
-        capabilities.append("testing")
-    if not capabilities:
-        capabilities = [frontmatter.get("name", skill_path.name)]
-    
-    # Create Qoder agent configuration
-    agent_config = {
-        "name": f"{frontmatter.get('name', skill_path.name)}-agent",
-        "description": frontmatter.get("description", ""),
-        "version": "1.0.0",
-        "type": "skill-agent",
-        "capabilities": capabilities,
-        "workflow": workflow_steps,
-        "instructions": "SKILL.md",
-        "metadata": {
-            "source": "partme-ai-skills",
-            "original_skill": frontmatter.get("name", skill_path.name),
-            "repo": "https://github.com/partme-ai/partme-cli"
-        }
-    }
-    
-    # Write output
-    if output_dir:
-        output_dir = Path(output_dir)
-        output_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Create agent directory
-        agent_dir = output_dir / agent_config["name"]
-        agent_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Write agent config
-        config_file = agent_dir / "qoder-agent-config.json"
-        with open(config_file, "w", encoding="utf-8") as f:
-            json.dump(agent_config, f, indent=2, ensure_ascii=False)
-        
-        # Copy SKILL.md
-        shutil.copy2(skill_file, agent_dir / "SKILL.md")
-        
-        # Copy resources to agent dir
-        resource_dirs = ["scripts", "references", "assets", "api", "templates", "examples"]
-        for res_dir in resource_dirs:
-            src_dir = skill_path / res_dir
-            if src_dir.exists() and src_dir.is_dir():
-                dest_dir = agent_dir / res_dir
-                if dest_dir.exists():
-                    shutil.rmtree(dest_dir)
-                shutil.copytree(src_dir, dest_dir)
-        
-        # Create Python agent module
-        python_module = agent_dir / f"{frontmatter.get('name', skill_path.name).replace('-', '_')}_agent.py"
-        create_python_agent_module(frontmatter, body, python_module)
-
-        # Create Qoder rules directory if requested
-        # Qoder supports project-specific rules in .qoder/rules/
-        # We force creation of this directory to ensure rules are generated
-        rules_dir = output_dir.parent / ".qoder" / "rules"
-        rules_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Copy resources to rules assets dir
-        rule_assets_dir = rules_dir / "assets" / frontmatter.get('name', skill_path.name)
-        copied_rule_resources = []
-        for res_dir in resource_dirs:
-            src_dir = skill_path / res_dir
-            if src_dir.exists() and src_dir.is_dir():
-                dest_dir = rule_assets_dir / res_dir
-                if dest_dir.exists():
-                    shutil.rmtree(dest_dir)
-                shutil.copytree(src_dir, dest_dir)
-                copied_rule_resources.append(res_dir)
-        
-        # Prepare rule content with rewritten links
-        rule_body = body
-        if copied_rule_resources:
-            rule_body = rewrite_markdown_links(body, frontmatter.get('name', skill_path.name), copied_rule_resources)
-        
-        # Create rule file in .qoder/rules/
-        rule_content = f"""# {frontmatter.get('name', skill_path.name)}
-
-{frontmatter.get('description', '')}
-
-## Instructions
-{rule_body}
-"""
-        rule_file = rules_dir / f"{frontmatter.get('name', skill_path.name)}.md"
-        with open(rule_file, "w", encoding="utf-8") as f:
-            f.write(rule_content)
-        
-        # Also create a local rule file in the agent directory for reference/usage
-        # For the local agent copy, we use the original body since resources are local
-        local_rule_content = f"""# {frontmatter.get('name', skill_path.name)}
-
-{frontmatter.get('description', '')}
-
-## Instructions
-{body}
-"""
-        local_rule_file = agent_dir / f"{frontmatter.get('name', skill_path.name)}.md"
-        with open(local_rule_file, "w", encoding="utf-8") as f:
-            f.write(local_rule_content)
-        
-        log_msg = f"✅ Converted to Qoder agent: {agent_dir}"
-        if copied_rule_resources:
-            log_msg += f" (Resources copied to rules: {', '.join(copied_rule_resources)})"
-        print(log_msg)
-        return agent_dir
-    else:
-        return agent_config
-
-
-def create_python_agent_module(frontmatter, body, output_file):
-    """Create Python agent module for Qoder"""
-    skill_name = frontmatter.get("name", "skill")
-    class_name = "".join(word.capitalize() for word in skill_name.split("-")) + "Agent"
-    
-    module_content = f'''"""
-{frontmatter.get('description', 'Agent module')} for Qoder
-
-This agent module was automatically generated from Agent Skill.
-"""
-
-
-class {class_name}:
-    """
-    Agent for {frontmatter.get('description', 'executing tasks')}
-    """
-    
-    def __init__(self):
-        self.name = "{skill_name}"
-        self.description = "{frontmatter.get('description', '')}"
-    
-    def execute(self, task, context=None):
-        """
-        Execute the agent task
-        
-        Args:
-            task: Task description or parameters
-            context: Optional context information
-            
-        Returns:
-            Task execution result
-        """
-        # Read instructions from SKILL.md
-        # Execute skill workflow
-        # Return result
-        pass
-    
-    def get_capabilities(self):
-        """Get agent capabilities"""
-        return {{
-            "name": self.name,
-            "description": self.description,
-            "capabilities": ["task-execution"]
-        }}
-'''
-    
-    with open(output_file, "w", encoding="utf-8") as f:
-        f.write(module_content)
-
-
-def convert_all_skills(skills_dir, output_dir):
-    """Convert all skills in a directory"""
-    skills_dir = Path(skills_dir)
-    output_dir = Path(output_dir)
-    output_dir.mkdir(parents=True, exist_ok=True)
-    
-    converted = []
-    for skill_dir in skills_dir.iterdir():
-        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
-            try:
-                result = convert_to_qoder_agent(skill_dir, output_dir)
-                if result:
-                    converted.append(skill_dir.name)
-            except Exception as e:
-                print(f"Error converting {skill_dir.name}: {e}")
-    
-    print(f"\n✅ Converted {len(converted)} skills: {', '.join(converted)}")
-    return converted
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: python convert_to_qoder.py <skill_path> [output_path]")
-        print("   or: python convert_to_qoder.py --all <skills_dir> <output_dir>")
-        sys.exit(1)
-    
-    if sys.argv[1] == "--all":
-        if len(sys.argv) < 4:
-            print("Usage: python convert_to_qoder.py --all <skills_dir> <output_dir>")
-            sys.exit(1)
-        convert_all_skills(sys.argv[2], sys.argv[3])
-    else:
-        skill_path = sys.argv[1]
-        output_path = sys.argv[2] if len(sys.argv) > 2 else None
-        convert_to_qoder_agent(skill_path, output_path)

+ 0 - 7
adapters/requirements.txt

@@ -1,7 +0,0 @@
-# Requirements for platform adapters
-# Note: yaml is optional - scripts will work without it using simple parsing
-
-# Optional: For better YAML parsing (recommended)
-# pyyaml>=6.0
-
-# All scripts work without external dependencies using built-in Python libraries

+ 0 - 47
adapters/trae/README.md

@@ -1,47 +0,0 @@
-# Trae Adapter
-
-将 Agent Skills 转换为 Trae 插件格式的适配器。
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-python convert_to_trae.py ../../skills/course-designer trae-plugins/
-```
-
-### 转换所有技能
-
-```bash
-python convert_to_trae.py --all ../../skills trae-plugins/
-```
-
-## 输出格式
-
-转换后会创建 Trae 插件目录结构:
-
-```
-trae-plugins/
-└── course-designer/
-    ├── trae-plugin.json
-    └── SKILL.md
-```
-
-## Trae 插件结构
-
-每个 Trae 插件包含:
-
-- `trae-plugin.json` - 插件清单文件,定义插件元数据和技能信息
-- `SKILL.md` - 技能定义文件(从原技能复制)
-
-## 在 Trae 中使用
-
-1. 将插件目录复制到 Trae 的插件目录
-2. 在 Trae 中注册插件
-3. 激活所需的技能
-
-## 注意事项
-
-- ⚠️ 此适配方案为理论性建议,需要根据 Trae 平台的实际插件系统进行验证
-- 建议查阅 Trae 官方文档了解插件格式要求
-- 可能需要调整 manifest 格式以符合 Trae 的实际规范

+ 0 - 171
adapters/trae/convert_to_trae.py

@@ -1,171 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert Agent Skills to Trae format
-
-This script converts Agent Skills to Trae plugin format.
-Trae plugins use a manifest.json file to define plugin metadata and skills.
-
-Usage:
-    python convert_to_trae.py <skill_path> [output_path]
-    
-Example:
-    python convert_to_trae.py ../../skills/course-designer trae-plugins/
-"""
-
-import sys
-import json
-import re
-from pathlib import Path
-
-try:
-    import yaml
-    HAS_YAML = True
-except ImportError:
-    HAS_YAML = False
-
-
-def parse_yaml_simple(text):
-    """Simple YAML parser for frontmatter (handles basic key: value pairs)"""
-    result = {}
-    for line in text.split('\n'):
-        line = line.strip()
-        if ':' in line and not line.startswith('#'):
-            key, value = line.split(':', 1)
-            key = key.strip()
-            value = value.strip().strip('"').strip("'")
-            result[key] = value
-    return result
-
-
-def extract_frontmatter(content):
-    """Extract YAML frontmatter from SKILL.md"""
-    frontmatter_pattern = r'^---\n(.*?)\n---\n'
-    match = re.match(frontmatter_pattern, content, re.DOTALL)
-    
-    if match:
-        frontmatter_text = match.group(1)
-        if HAS_YAML:
-            frontmatter = yaml.safe_load(frontmatter_text)
-        else:
-            frontmatter = parse_yaml_simple(frontmatter_text)
-        return frontmatter
-    return {}
-
-
-def convert_to_trae_plugin(skill_path, output_dir=None):
-    """
-    Convert Agent Skill to Trae plugin format
-    
-    Args:
-        skill_path: Path to skill directory containing SKILL.md
-        output_dir: Output directory for plugin (optional)
-    """
-    skill_path = Path(skill_path)
-    skill_file = skill_path / "SKILL.md"
-    
-    if not skill_file.exists():
-        print(f"Error: SKILL.md not found in {skill_path}")
-        return None
-    
-    # Read skill file
-    with open(skill_file, "r", encoding="utf-8") as f:
-        content = f.read()
-    
-    # Extract frontmatter
-    frontmatter = extract_frontmatter(content)
-    
-    if not frontmatter:
-        print(f"Warning: No frontmatter found in {skill_file}")
-        frontmatter = {"name": skill_path.name, "description": ""}
-    
-    # Create Trae plugin manifest
-    plugin_manifest = {
-        "name": frontmatter.get("name", skill_path.name),
-        "version": "1.0.0",
-        "description": frontmatter.get("description", ""),
-        "author": "Teaching AI",
-        "type": "skill",
-        "skills": [
-            {
-                "name": frontmatter.get("name", skill_path.name),
-                "description": frontmatter.get("description", ""),
-                "instructions": "SKILL.md",
-                "resources": []
-            }
-        ]
-    }
-    
-    # Check for additional resources
-    resource_dirs = ["scripts", "references", "assets", "api", "templates", "examples"]
-    for res_dir in resource_dirs:
-        if (skill_path / res_dir).exists():
-            plugin_manifest["skills"][0]["resources"].append(f"{res_dir}/")
-    
-    # Write output
-    if output_dir:
-        output_dir = Path(output_dir)
-        output_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Create plugin directory
-        plugin_dir = output_dir / frontmatter.get("name", skill_path.name)
-        plugin_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Write manifest
-        manifest_file = plugin_dir / "trae-plugin.json"
-        with open(manifest_file, "w", encoding="utf-8") as f:
-            json.dump(plugin_manifest, f, indent=2, ensure_ascii=False)
-        
-        # Copy SKILL.md
-        import shutil
-        shutil.copy2(skill_file, plugin_dir / "SKILL.md")
-        
-        # Copy resource directories
-        for res_dir in resource_dirs:
-            src_dir = skill_path / res_dir
-            if src_dir.exists():
-                dest_dir = plugin_dir / res_dir
-                if dest_dir.exists():
-                    shutil.rmtree(dest_dir)
-                shutil.copytree(src_dir, dest_dir)
-        
-        print(f"✅ Converted to Trae plugin: {plugin_dir}")
-        return plugin_dir
-    else:
-        return plugin_manifest
-
-
-def convert_all_skills(skills_dir, output_dir):
-    """Convert all skills in a directory"""
-    skills_dir = Path(skills_dir)
-    output_dir = Path(output_dir)
-    output_dir.mkdir(parents=True, exist_ok=True)
-    
-    converted = []
-    for skill_dir in skills_dir.iterdir():
-        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
-            try:
-                result = convert_to_trae_plugin(skill_dir, output_dir)
-                if result:
-                    converted.append(skill_dir.name)
-            except Exception as e:
-                print(f"Error converting {skill_dir.name}: {e}")
-    
-    print(f"\n✅ Converted {len(converted)} skills: {', '.join(converted)}")
-    return converted
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: python convert_to_trae.py <skill_path> [output_path]")
-        print("   or: python convert_to_trae.py --all <skills_dir> <output_dir>")
-        sys.exit(1)
-    
-    if sys.argv[1] == "--all":
-        if len(sys.argv) < 4:
-            print("Usage: python convert_to_trae.py --all <skills_dir> <output_dir>")
-            sys.exit(1)
-        convert_all_skills(sys.argv[2], sys.argv[3])
-    else:
-        skill_path = sys.argv[1]
-        output_path = sys.argv[2] if len(sys.argv) > 2 else None
-        convert_to_trae_plugin(skill_path, output_path)

+ 0 - 96
adapters/windsurf/README.md

@@ -1,96 +0,0 @@
-# Windsurf Adapter
-
-将 Agent Skills 转换为 Windsurf Cascade Skills 格式的适配器。
-
-## 使用方法
-
-### 转换单个技能
-
-```bash
-python convert_to_windsurf.py ../../skills/course-designer windsurf-skills/
-```
-
-### 转换所有技能
-
-```bash
-python convert_to_windsurf.py --all ../../skills windsurf-skills/
-```
-
-## 输出格式
-
-转换后会创建 Windsurf Skill 目录结构:
-
-```
-windsurf-skills/
-└── course-designer/
-    ├── SKILL.md
-    ├── scripts/          # 如果原技能有脚本
-    ├── templates/        # 如果原技能有模板
-    └── ...              # 其他资源文件
-```
-
-## Windsurf Skill 结构
-
-每个 Windsurf Skill 包含:
-
-- `SKILL.md` - 技能定义文件(YAML frontmatter + Markdown 内容)
-- `scripts/` - 可执行脚本(可选)
-- `templates/` - 模板文件(可选)
-- `references/` - 参考文档(可选)
-- 其他资源文件
-
-## 在 Windsurf 中使用
-
-### 方法一:项目级技能
-
-将技能目录放在项目根目录的 `.windsurf/skills/` 目录下:
-
-```
-my-project/
-├── .windsurf/
-│   └── skills/
-│       ├── course-designer/
-│       │   └── SKILL.md
-│       └── code-generator/
-│           └── SKILL.md
-└── src/
-```
-
-### 方法二:全局技能
-
-将技能目录放在 Windsurf 的全局配置目录:
-
-```bash
-# macOS/Linux
-~/.windsurf/skills/
-
-# Windows
-%APPDATA%\windsurf\skills\
-```
-
-## SKILL.md 格式
-
-Windsurf 使用与 Agent Skills 相同的格式:
-
-```markdown
----
-name: course-designer
-description: 帮助设计和规划课程内容
----
-
-# Course Designer
-
-技能详细说明...
-```
-
-## 注意事项
-
-- ⚠️ 此适配方案基于 Windsurf Cascade Skills 的一般特性,需要根据实际 API 验证
-- Windsurf 使用与 Agent Skills 相同的 SKILL.md 格式,转换主要是复制文件结构
-- 脚本会自动复制技能的所有资源文件(scripts、templates 等)
-- 建议查阅 [Windsurf 官方文档](https://docs.windsurf.com/) 获取最新信息
-
-## 参考资源
-
-- [Windsurf Cascade Skills 文档](https://docs.windsurf.com/windsurf/cascade/skills)
-- [Windsurf 官网](https://windsurf.com/)

+ 0 - 161
adapters/windsurf/convert_to_windsurf.py

@@ -1,161 +0,0 @@
-#!/usr/bin/env python3
-"""
-Convert Agent Skills to Windsurf format
-
-This script converts Agent Skills to Windsurf Cascade Skills format.
-Windsurf supports skills via .windsurf/skills/ directory.
-
-Usage:
-    python convert_to_windsurf.py <skill_path> [output_path]
-    
-Example:
-    python convert_to_windsurf.py ../../skills/course-designer windsurf-skills/
-"""
-
-import sys
-import re
-import shutil
-from pathlib import Path
-
-try:
-    import yaml
-    HAS_YAML = True
-except ImportError:
-    HAS_YAML = False
-
-
-def parse_yaml_simple(text):
-    """Simple YAML parser for frontmatter (handles basic key: value pairs)"""
-    result = {}
-    for line in text.split('\n'):
-        line = line.strip()
-        if ':' in line and not line.startswith('#'):
-            key, value = line.split(':', 1)
-            key = key.strip()
-            value = value.strip().strip('"').strip("'")
-            result[key] = value
-    return result
-
-
-def extract_frontmatter(content):
-    """Extract YAML frontmatter from SKILL.md"""
-    frontmatter_pattern = r'^---\n(.*?)\n---\n'
-    match = re.match(frontmatter_pattern, content, re.DOTALL)
-    
-    if match:
-        frontmatter_text = match.group(1)
-        if HAS_YAML:
-            frontmatter = yaml.safe_load(frontmatter_text)
-        else:
-            frontmatter = parse_yaml_simple(frontmatter_text)
-        body_start = match.end()
-        body = content[body_start:].strip()
-        return frontmatter, body
-    else:
-        return {}, content.strip()
-
-
-def convert_to_windsurf_skill(skill_path, output_dir=None):
-    """
-    Convert Agent Skill to Windsurf format
-    
-    Args:
-        skill_path: Path to skill directory containing SKILL.md
-        output_dir: Output directory for Windsurf skills (optional)
-    """
-    skill_path = Path(skill_path)
-    skill_file = skill_path / "SKILL.md"
-    
-    if not skill_file.exists():
-        print(f"Error: SKILL.md not found in {skill_path}")
-        return None
-    
-    # Read skill file
-    with open(skill_file, "r", encoding="utf-8") as f:
-        content = f.read()
-    
-    # Extract frontmatter and body
-    frontmatter, body = extract_frontmatter(content)
-    
-    if not frontmatter:
-        print(f"Warning: No frontmatter found in {skill_file}")
-        frontmatter = {"name": skill_path.name, "description": ""}
-    
-    skill_name = frontmatter.get("name", skill_path.name)
-    
-    # Windsurf SKILL.md format (similar to Agent Skills, but may have slight differences)
-    # Windsurf uses the same SKILL.md format with YAML frontmatter
-    windsurf_skill_content = content  # Windsurf uses the same format, so we can use the original
-    
-    # Write output
-    if output_dir:
-        output_dir = Path(output_dir)
-        output_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Create skill directory
-        skill_dir = output_dir / skill_name
-        skill_dir.mkdir(parents=True, exist_ok=True)
-        
-        # Write SKILL.md
-        skill_output_file = skill_dir / "SKILL.md"
-        with open(skill_output_file, "w", encoding="utf-8") as f:
-            f.write(windsurf_skill_content)
-        
-        # Copy additional resources if they exist
-        resources_copied = []
-        for resource_dir in ["scripts", "templates", "references", "assets", "examples"]:
-            src_dir = skill_path / resource_dir
-            if src_dir.exists() and src_dir.is_dir():
-                dst_dir = skill_dir / resource_dir
-                shutil.copytree(src_dir, dst_dir, dirs_exist_ok=True)
-                resources_copied.append(resource_dir)
-        
-        # Copy other files (LICENSE, requirements.txt, etc.)
-        for file in skill_path.iterdir():
-            if file.is_file() and file.name not in ["SKILL.md", ".DS_Store"]:
-                shutil.copy2(file, skill_dir / file.name)
-                resources_copied.append(file.name)
-        
-        print(f"✅ Converted to Windsurf format: {skill_dir}")
-        if resources_copied:
-            print(f"   Copied resources: {', '.join(resources_copied)}")
-        return skill_dir
-    else:
-        return windsurf_skill_content
-
-
-def convert_all_skills(skills_dir, output_dir):
-    """Convert all skills in a directory"""
-    skills_dir = Path(skills_dir)
-    output_dir = Path(output_dir)
-    output_dir.mkdir(parents=True, exist_ok=True)
-    
-    converted = []
-    for skill_dir in skills_dir.iterdir():
-        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
-            try:
-                result = convert_to_windsurf_skill(skill_dir, output_dir)
-                if result:
-                    converted.append(skill_dir.name)
-            except Exception as e:
-                print(f"Error converting {skill_dir.name}: {e}")
-    
-    print(f"\n✅ Converted {len(converted)} skills: {', '.join(converted)}")
-    return converted
-
-
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: python convert_to_windsurf.py <skill_path> [output_path]")
-        print("   or: python convert_to_windsurf.py --all <skills_dir> <output_dir>")
-        sys.exit(1)
-    
-    if sys.argv[1] == "--all":
-        if len(sys.argv) < 4:
-            print("Usage: python convert_to_windsurf.py --all <skills_dir> <output_dir>")
-            sys.exit(1)
-        convert_all_skills(sys.argv[2], sys.argv[3])
-    else:
-        skill_path = sys.argv[1]
-        output_path = sys.argv[2] if len(sys.argv) > 2 else None
-        convert_to_windsurf_skill(skill_path, output_path)

+ 1 - 1
docs/pipeline-stage-to-skills.md

@@ -69,7 +69,7 @@
 | 后端(Java/Node 等) | ddd4j-project-creator, spring-boot, nestjs 等 | full-stack-skills | DDD4j;Spring Boot;NestJS |
 | 实现(代码落地) | speckit-implement | speckit-agent-skills(可选) | Spec Kit:按规格与任务执行实现 |
 
-**说明**:**桌面/跨平台**开发可选用 [tauri-skills](https://github.com/partme-ai/tauri-skills)(Tauri 应用开发)。**Node 版本管理**等基础技能见本仓库 **nvm-install**、**nvm-setup**、**nvm-usage-basics** 等(详见 [docs/skills-ecosystem.md](skills-ecosystem.md))
+**说明**:**桌面/跨平台**开发可选用外部 [tauri-skills](https://github.com/partme-ai/tauri-skills)(Tauri 应用开发;本仓库已含 `skills/tauri-skills/`)。**Node 版本管理(nvm)** 技能已落地:本仓库 `skills/nvm-skills/`(15 个技能),marketplace 插件 **nvm-skills**;详见 [docs/nvm-skills.md](nvm-skills.md) 与 [skill-group-mapping.md](skill-group-mapping.md)
 
 ---
 

+ 29 - 5
docs/skills-ecosystem.md

@@ -6,7 +6,19 @@
 
 ---
 
-## 关联技能仓库
+## 定位:本仓库 vs 外部技能库
+
+| 维度 | **full-stack-skills**(本仓库) | **外部技能库**(第三方 GitHub) |
+|------|--------------------------------|----------------------------------|
+| **目标** | 按 `skills/` 分组的全栈基础技能(语言/框架/云/测试/DevOps/文档等) | 官方示例、单栈深度、ML、设计系统、产品流程、个人精选 |
+| **安装** | `/plugin marketplace add partme-ai/full-stack-skills` 后按组安装插件 | 各仓库独立 marketplace 或 `npx skills add owner/repo` |
+| **组合方式** | 与 PartMe 关联仓(t2ui / stitch / pencil / tauri)+ 外部库**并行注册**,不互斥 | 按需增删;详见 [external-skills.md](external-skills.md) |
+
+**推荐阅读**:[external-skills.md](external-skills.md)(外部库全表与安装命令)、[integration-plan.md](integration-plan.md)(可整合候选评估)。
+
+---
+
+## 关联技能仓库(PartMe 生态)
 
 | 仓库 | 职责 | 阶段/用途 |
 |------|------|-----------|
@@ -14,16 +26,28 @@
 | [stitch-skills](https://github.com/partme-ai/stitch-skills) | 原型设计:Stitch 设计语言 → Stitch MCP → 原型图 | 设计阶段 |
 | [pencil-skills](https://github.com/partme-ai/pencil-skills) | 界面设计:Pencil 设计语言 → Pencil MCP → 产品图(.pen) | 设计阶段 |
 | [tauri-skills](https://github.com/partme-ai/tauri-skills) | Tauri 跨平台桌面/移动应用开发 | 开发阶段(桌面/跨平台) |
-| **full-stack-skills**(本仓库) | 基础技能(文档/架构/测试/部署、nvm 等)、speckit-*、阶段映射 | 全阶段 |
+| **full-stack-skills**(本仓库) | 基础技能(文档/架构/测试/部署、nvm 等)、speckit / openspec / stitch 扩展组等、阶段映射 | 全阶段 |
 
 各仓库的 README/AGENTS 应指向本文档或 [pipeline-stage-to-skills.md](pipeline-stage-to-skills.md)。
 
 ---
 
+## 外部技能库发现(聚合)
+
+持续发现新技能库可使用:[VoltAgent/awesome-agent-skills](https://github.com/VoltAgent/awesome-agent-skills)、[heilcheng/awesome-agent-skills](https://github.com/heilcheng/awesome-agent-skills)、[christophacham/agent-skills-library](https://github.com/christophacham/agent-skills-library)、[agent-skills-hub/agent-skills-hub](https://github.com/agent-skills-hub/agent-skills-hub)、[ZhanlinCui/Agent-Skills-Hunter](https://github.com/ZhanlinCui/Agent-Skills-Hunter)。更多说明见 [external-skills.md](external-skills.md) 第 7 节。
+
+---
+
+## 本仓库内未入 marketplace 的技能组
+
+- **threejs-skills**(18 个):three.js 文档/导航型技能族,见 [skills/threejs-skills/README.md](../skills/threejs-skills/README.md);与 [skill-group-mapping.md](skill-group-mapping.md) 表中说明一致。
+- **vscode-skills**(4 个):VS Code 扩展相关;同上待接入 marketplace。
+- 另 **`skills/tauri-skills/tauri-app-updater`** 目录存在 `SKILL.md` 但未列入 `tauri-skills` 插件 `skills[]` 时,亦属「磁盘有、登记缺」。
+
 ## nvm 相关技能(本仓库内)
 
-**Node 版本管理**等基础开发环境技能当前在 **full-stack-skills** 内,不作为独立仓库:
+**Node 版本管理**等基础开发环境技能在 **full-stack-skills** 的 **`skills/nvm-skills/`** 组内(marketplace 插件 **nvm-skills**),例如
 
-- nvm-install、nvm-setup、nvm-usage-basics、nvm-defaults-and-nvmrc、nvm-shell-integration、nvm-docker-ci、nvm-troubleshooting-macos、nvm-global-packages 等。
+- nvm、nvm-install、nvm-setup、nvm-verify、nvm-usage-basics、nvm-defaults-and-nvmrc、nvm-global-packages、nvm-mirror-and-auth、nvm-shell-integration、nvm-docker-ci、nvm-uninstall、nvm-misc、nvm-project-meta、nvm-troubleshooting-macos、nvm-troubleshooting-linux
 
-若未来拆出独立 nvm-skills 仓库,将在本文档与 pipeline 中补充对应条目。Tauri 技能规划清单见 [tauri-skills.md](tauri-skills.md)。
+独立 [nvm-skills](https://github.com/partme-ai/nvm-skills) 仓库仍可单独使用;本仓库内为同内容的分组副本之一。Tauri 说明见 [tauri-skills.md](tauri-skills.md)。

+ 0 - 266
scripts/update-skill-descriptions.py

@@ -1,266 +0,0 @@
-#!/usr/bin/env python3
-"""
-批量更新 SKILL.md 文件的 description,使其符合 Anthropic Skills 规范
-"""
-
-import os
-import re
-import json
-from pathlib import Path
-
-# 技能描述模板映射
-SKILL_DESCRIPTIONS = {
-    # Vue 生态
-    "vue2": "Provides comprehensive guidance for Vue 2.x development including Options API, components, directives, lifecycle hooks, computed properties, watchers, Vuex state management, and Vue Router. Use when the user asks about Vue 2, needs to create Vue 2 components, implement reactive data binding, handle component communication, or work with Vue 2 ecosystem tools.",
-    "vue3": "Provides comprehensive guidance for Vue 3.x development including Composition API, Setup Script, reactivity system, single-file components, template syntax, component development, routing, and state management. Use when the user asks about Vue 3, needs to create Vue 3 applications, implement Composition API patterns, work with Pinia or Vuex, or build reactive user interfaces.",
-    "vite": "Provides comprehensive guidance for Vite build tool usage including project creation, configuration, dev server, HMR, plugins, static assets, environment variables, build optimization, and deployment. Use when the user asks about Vite, needs to set up a Vite project, configure build options, optimize bundle size, or work with Vite plugins.",
-    "vue-router": "Provides comprehensive guidance for Vue Router including route configuration, navigation, dynamic routes, nested routes, route guards, programmatic navigation, and route meta. Use when the user asks about Vue Router, needs to set up routing, implement navigation guards, handle route parameters, or manage route transitions.",
-    "pinia": "Provides comprehensive guidance for Pinia state management including stores, state, getters, actions, plugins, and TypeScript support. Use when the user asks about Pinia, needs to manage application state, create stores, implement state persistence, or migrate from Vuex.",
-    "vuex": "Provides comprehensive guidance for Vuex state management including state, mutations, actions, getters, modules, and plugins. Use when the user asks about Vuex, needs to manage application state, implement centralized state management, or work with Vuex modules.",
-    "vuex-vue2": "Provides comprehensive guidance for Vuex 2.x state management in Vue 2 applications including state, mutations, actions, getters, modules, and plugins. Use when the user asks about Vuex for Vue 2, needs to manage state in Vue 2 applications, or implement Vuex patterns.",
-    
-    # React 生态
-    "react": "Provides comprehensive guidance for React development including components, JSX, props, state, hooks, context, performance optimization, and best practices. Use when the user asks about React, needs to create React components, implement hooks, manage component state, or build React applications.",
-    "react-hooks": "Provides comprehensive guidance for React Hooks including useState, useEffect, useContext, useReducer, useMemo, useCallback, custom hooks, and hook patterns. Use when the user asks about React Hooks, needs to use hooks in functional components, create custom hooks, or optimize hook performance.",
-    "nextjs": "Provides comprehensive guidance for Next.js framework including App Router, Pages Router, routing, data fetching, server components, API routes, middleware, image optimization, and deployment. Use when the user asks about Next.js, needs to create Next.js applications, implement SSR or SSG, set up API routes, or optimize Next.js performance.",
-    "redux": "Provides comprehensive guidance for Redux state management including stores, actions, reducers, middleware, selectors, and Redux Toolkit. Use when the user asks about Redux, needs to manage global state, implement Redux patterns, or work with Redux middleware.",
-    
-    # 构建工具
-    "webpack": "Provides comprehensive guidance for Webpack bundler including configuration, loaders, plugins, code splitting, optimization, and development setup. Use when the user asks about Webpack, needs to configure Webpack, set up build pipelines, optimize bundles, or work with Webpack plugins.",
-    "rollup": "Provides comprehensive guidance for Rollup bundler including configuration, plugins, code splitting, tree shaking, and library bundling. Use when the user asks about Rollup, needs to bundle libraries, optimize output, or configure Rollup for production builds.",
-    "parcel": "Provides comprehensive guidance for Parcel bundler including zero-configuration setup, asset handling, hot module replacement, and production builds. Use when the user asks about Parcel, needs to set up a build tool quickly, or work with Parcel's automatic configuration.",
-    "rspack": "Provides comprehensive guidance for Rspack bundler including configuration, plugins, loaders, optimization, and Webpack compatibility. Use when the user asks about Rspack, needs to configure Rspack, optimize build performance, or migrate from Webpack.",
-    
-    # UI 框架
-    "element-plus": "Provides comprehensive guidance for Element Plus Vue 3 component library including components, themes, internationalization, and best practices. Use when the user asks about Element Plus, needs to use Element Plus components, customize themes, or implement UI layouts.",
-    "element-plus-vue3": "Provides comprehensive guidance for Element Plus Vue 3 component library including installation, components, themes, internationalization, and API reference. Use when the user asks about Element Plus for Vue 3, needs to build Vue 3 applications with Element Plus, or customize component styles.",
-    "ant-design-vue": "Provides comprehensive guidance for Ant Design Vue component library including components, design principles, themes, and best practices. Use when the user asks about Ant Design Vue, needs to use Ant Design components, implement enterprise UI, or customize design tokens.",
-    "ant-design-react": "Provides comprehensive guidance for Ant Design React component library including components, design system, themes, and TypeScript support. Use when the user asks about Ant Design for React, needs to build React applications with Ant Design, or implement design system patterns.",
-    "ant-design-mobile": "Provides comprehensive guidance for Ant Design Mobile component library including mobile components, themes, and platform adaptations. Use when the user asks about Ant Design Mobile, needs to build mobile applications, or implement mobile UI components.",
-    "ant-design-mini": "Provides comprehensive guidance for Ant Design Mini component library for mini-programs including components, themes, and platform support. Use when the user asks about Ant Design Mini, needs to build mini-program applications, or use mini-program components.",
-    "bootstrap-vue3": "Provides comprehensive guidance for Bootstrap Vue 3 component library including Bootstrap components, grid system, utilities, and Vue 3 integration. Use when the user asks about Bootstrap Vue 3, needs to use Bootstrap components in Vue 3, or implement responsive layouts.",
-    "vant-vue3": "Provides comprehensive guidance for Vant Vue 3 mobile component library including mobile components, themes, and best practices. Use when the user asks about Vant, needs to build mobile applications with Vue 3, or implement mobile UI components.",
-    "uview-vue2": "Provides comprehensive guidance for uView Vue 2 component library including components, tools, and layouts. Use when the user asks about uView for Vue 2, needs to build Vue 2 applications with uView, or use uView components.",
-    "uview-pro-vue3": "Provides comprehensive guidance for uView Pro Vue 3 component library including components, tools, layouts, and templates. Use when the user asks about uView Pro, needs to build Vue 3 applications with uView Pro, or implement mobile-first UI components.",
-    "layui-vue": "Provides comprehensive guidance for Layui Vue component library including components, layer dialogs, and utilities. Use when the user asks about Layui Vue, needs to use Layui components in Vue, or implement UI components.",
-    "avue": "Provides comprehensive guidance for Avue framework including CRUD operations, form components, and data management. Use when the user asks about Avue, needs to build admin interfaces, implement CRUD operations, or work with Avue components.",
-    "avue-crud": "Provides comprehensive guidance for Avue CRUD component including table operations, form handling, and data management. Use when the user asks about Avue CRUD, needs to implement table CRUD operations, or build data management interfaces.",
-    "avue-form": "Provides comprehensive guidance for Avue Form component including form configuration, validation, and dynamic forms. Use when the user asks about Avue Form, needs to create dynamic forms, implement form validation, or work with form configurations.",
-    
-    # 后端框架
-    "spring-boot": "Provides comprehensive guidance for Spring Boot development including project creation, auto-configuration, dependency injection, web development, data access, security, testing, and deployment. Use when the user asks about Spring Boot, needs to create Spring Boot applications, configure Spring Boot, or implement Spring Boot features.",
-    "spring-cloud": "Provides comprehensive guidance for Spring Cloud microservices including service discovery, configuration management, load balancing, circuit breakers, API gateways, and distributed tracing. Use when the user asks about Spring Cloud, needs to build microservices, implement service discovery, or work with Spring Cloud components.",
-    "spring-cloud-alibaba": "Provides comprehensive guidance for Spring Cloud Alibaba including Nacos, Sentinel, RocketMQ, and Alibaba Cloud integration. Use when the user asks about Spring Cloud Alibaba, needs to use Alibaba Cloud services, implement service discovery with Nacos, or work with Spring Cloud Alibaba components.",
-    "spring-ai": "Provides comprehensive guidance for Spring AI including AI model integration, prompt templates, vector stores, and AI applications. Use when the user asks about Spring AI, needs to integrate AI models, implement RAG applications, or work with AI services in Spring.",
-    "spring-ai-alibaba": "Provides comprehensive guidance for Spring AI Alibaba including Alibaba Cloud AI services integration, model APIs, and AI application development. Use when the user asks about Spring AI Alibaba, needs to use Alibaba Cloud AI services, or integrate AI capabilities in Spring applications.",
-    "spring-security": "Provides comprehensive guidance for Spring Security including authentication, authorization, OAuth2, JWT, and security best practices. Use when the user asks about Spring Security, needs to implement security in Spring applications, configure authentication, or work with security features.",
-    "spring-data-jpa": "Provides comprehensive guidance for Spring Data JPA including repositories, entity management, query methods, and database operations. Use when the user asks about Spring Data JPA, needs to work with JPA repositories, implement data access layers, or configure JPA in Spring.",
-    "express": "Provides comprehensive guidance for Express.js framework including routing, middleware, request handling, templating, and API development. Use when the user asks about Express, needs to create Express applications, set up routes, implement middleware, or build REST APIs.",
-    "nestjs": "Provides comprehensive guidance for NestJS framework including modules, controllers, providers, dependency injection, decorators, and microservices. Use when the user asks about NestJS, needs to create NestJS applications, implement modules and controllers, or build scalable Node.js applications.",
-    "koa": "Provides comprehensive guidance for Koa.js framework including middleware, context, async/await patterns, and application structure. Use when the user asks about Koa, needs to create Koa applications, implement middleware, or build Node.js web applications.",
-    "fastify": "Provides comprehensive guidance for Fastify framework including routing, plugins, schemas, hooks, and performance optimization. Use when the user asks about Fastify, needs to create high-performance Node.js applications, implement Fastify plugins, or optimize API performance.",
-    "django": "Provides comprehensive guidance for Django framework including models, views, templates, forms, admin, REST framework, and deployment. Use when the user asks about Django, needs to create Django applications, implement models and views, or build Django REST APIs.",
-    "fastapi": "Provides comprehensive guidance for FastAPI framework including routing, request validation, dependency injection, async operations, OpenAPI documentation, and database integration. Use when the user asks about FastAPI, needs to create FastAPI applications, implement REST APIs, or build high-performance Python web services.",
-    "flask": "Provides comprehensive guidance for Flask framework including routing, templates, forms, database integration, extensions, and deployment. Use when the user asks about Flask, needs to create Flask applications, implement web routes, or build Python web applications.",
-    "gin": "Provides comprehensive guidance for Gin Go framework including routing, middleware, request handling, JSON binding, and API development. Use when the user asks about Gin, needs to create Gin applications, implement REST APIs, or build Go web services.",
-    "gin-gonic": "Provides comprehensive guidance for Gin-Gonic framework including routing, middleware, validation, and best practices. Use when the user asks about Gin-Gonic, needs to create Go web applications, or implement Gin patterns.",
-    
-    # 数据库
-    "mysql": "Provides comprehensive guidance for MySQL database including SQL syntax, data types, indexes, transactions, stored procedures, and optimization. Use when the user asks about MySQL, needs to write SQL queries, design database schemas, optimize MySQL performance, or work with MySQL features.",
-    "postgresql": "Provides comprehensive guidance for PostgreSQL database including SQL syntax, advanced features, JSON support, full-text search, and performance tuning. Use when the user asks about PostgreSQL, needs to work with PostgreSQL features, write complex queries, or optimize PostgreSQL databases.",
-    "oracle": "Provides comprehensive guidance for Oracle database including SQL, PL/SQL, database administration, and Oracle-specific features. Use when the user asks about Oracle, needs to write Oracle SQL, work with PL/SQL, or manage Oracle databases.",
-    "mongodb": "Provides comprehensive guidance for MongoDB database including document operations, queries, aggregation, indexes, and best practices. Use when the user asks about MongoDB, needs to work with MongoDB collections, write queries, or design MongoDB schemas.",
-    "redis": "Provides comprehensive guidance for Redis including data structures, commands, pub/sub, persistence, clustering, and caching patterns. Use when the user asks about Redis, needs to use Redis for caching, implement Redis data structures, or work with Redis features.",
-    "elasticsearch": "Provides comprehensive guidance for Elasticsearch including indexing, searching, aggregations, mappings, and cluster management. Use when the user asks about Elasticsearch, needs to implement search functionality, work with Elasticsearch queries, or manage Elasticsearch clusters.",
-    
-    # 测试
-    "jest": "Provides comprehensive guidance for Jest testing framework including test writing, matchers, async testing, mocking, snapshots, configuration, and CLI. Use when the user asks about Jest, needs to write JavaScript/TypeScript tests, mock dependencies, or configure Jest for projects.",
-    "vitest": "Provides comprehensive guidance for Vitest testing framework including fast test execution, Vite integration, component testing, mocking, and configuration. Use when the user asks about Vitest, needs to write fast unit tests, test Vue/React components, or configure Vitest with Vite projects.",
-    "pytest": "Provides comprehensive guidance for pytest testing framework including test writing, fixtures, parametrization, mocking, and plugins. Use when the user asks about pytest, needs to write Python tests, use pytest fixtures, or configure pytest for Python projects.",
-    "junit": "Provides comprehensive guidance for JUnit testing framework including test annotations, assertions, test lifecycle, and best practices. Use when the user asks about JUnit, needs to write Java unit tests, use JUnit annotations, or configure JUnit for Java projects.",
-    "cypress": "Provides comprehensive guidance for Cypress end-to-end testing including test writing, commands, assertions, component testing, and best practices. Use when the user asks about Cypress, needs to write E2E tests, test web applications, or implement Cypress test suites.",
-    "playwright": "Provides comprehensive guidance for Playwright testing including browser automation, test writing, page objects, and cross-browser testing. Use when the user asks about Playwright, needs to write E2E tests, automate browsers, or test web applications across browsers.",
-    "selenium": "Provides comprehensive guidance for Selenium WebDriver including browser automation, element location, waits, and test frameworks. Use when the user asks about Selenium, needs to automate web browsers, write Selenium tests, or work with Selenium WebDriver.",
-    "appium": "Provides comprehensive guidance for Appium mobile testing including mobile app automation, element location, gestures, and cross-platform testing. Use when the user asks about Appium, needs to test mobile applications, automate mobile apps, or write Appium test scripts.",
-    "detox": "Provides comprehensive guidance for Detox mobile testing framework including React Native testing, E2E testing, and test synchronization. Use when the user asks about Detox, needs to test React Native applications, write E2E tests for mobile apps, or configure Detox.",
-    
-    # DevOps
-    "jenkins": "Provides comprehensive guidance for Jenkins CI/CD including pipeline creation, job configuration, plugins, and automation. Use when the user asks about Jenkins, needs to set up CI/CD pipelines, configure Jenkins jobs, or automate build and deployment processes.",
-    "gitlab-ci": "Provides comprehensive guidance for GitLab CI/CD including pipeline configuration, jobs, stages, and GitLab Runner. Use when the user asks about GitLab CI, needs to create CI/CD pipelines, configure GitLab CI jobs, or automate GitLab workflows.",
-    "github-actions": "Provides comprehensive guidance for GitHub Actions including workflow creation, actions, secrets, and automation. Use when the user asks about GitHub Actions, needs to create GitHub workflows, automate GitHub processes, or configure CI/CD with GitHub Actions.",
-    "docker": "Provides comprehensive guidance for Docker including container creation, images, Dockerfile, docker-compose, and container management. Use when the user asks about Docker, needs to create Docker containers, build Docker images, or manage containerized applications.",
-    "kubernetes": "Provides comprehensive guidance for Kubernetes including pods, services, deployments, ingress, and cluster management. Use when the user asks about Kubernetes, needs to deploy applications to Kubernetes, configure Kubernetes resources, or manage Kubernetes clusters.",
-    "docker-compose": "Provides comprehensive guidance for Docker Compose including multi-container applications, service definition, networking, and volumes. Use when the user asks about Docker Compose, needs to orchestrate multiple containers, define docker-compose services, or manage multi-container applications.",
-    "terraform": "Provides comprehensive guidance for Terraform infrastructure as code including resource definition, state management, modules, and cloud provider integration. Use when the user asks about Terraform, needs to define infrastructure as code, manage cloud resources, or work with Terraform modules.",
-    "ansible": "Provides comprehensive guidance for Ansible automation including playbooks, roles, inventory, and module usage. Use when the user asks about Ansible, needs to automate IT tasks, create Ansible playbooks, or manage infrastructure with Ansible.",
-    "cloudformation": "Provides comprehensive guidance for AWS CloudFormation including template creation, stack management, resources, and best practices. Use when the user asks about CloudFormation, needs to define AWS infrastructure, create CloudFormation templates, or manage AWS resources as code.",
-    
-    # 设计工具
-    "figma": "Provides comprehensive guidance for Figma design tool including design creation, components, prototyping, collaboration, and design systems. Use when the user asks about Figma, needs to create designs, work with Figma components, or collaborate on design projects.",
-    "figma-ai": "Provides comprehensive guidance for Figma AI features including AI-powered design tools, automation, and AI-assisted design workflows. Use when the user asks about Figma AI, needs to use AI features in Figma, or automate design tasks with AI.",
-    "sketch": "Provides comprehensive guidance for Sketch design tool including artboards, symbols, styles, and prototyping. Use when the user asks about Sketch, needs to create designs in Sketch, work with Sketch symbols, or export designs from Sketch.",
-    "adobe-xd": "Provides comprehensive guidance for Adobe XD including design creation, prototyping, components, and collaboration. Use when the user asks about Adobe XD, needs to create UI/UX designs, build prototypes, or work with Adobe XD components.",
-    "axure": "Provides comprehensive guidance for Axure prototyping tool including wireframing, interactions, dynamic panels, and prototyping. Use when the user asks about Axure, needs to create interactive prototypes, design wireframes, or build complex interactions.",
-    "modao": "Provides comprehensive guidance for Modao prototyping tool including rapid prototyping, component libraries, and collaboration. Use when the user asks about Modao, needs to create quick prototypes, or work with Modao components.",
-    "framer": "Provides comprehensive guidance for Framer design tool including interactive design, code components, and prototyping. Use when the user asks about Framer, needs to create interactive designs, build prototypes, or work with Framer code components.",
-    
-    # AI 设计工具
-    "midjourney": "Provides comprehensive guidance for Midjourney AI image generation including prompt engineering, image generation, parameters, and best practices. Use when the user asks about Midjourney, needs to generate AI images, create prompts, or work with Midjourney features.",
-    "dalle": "Provides comprehensive guidance for DALL-E AI image generation including prompt creation, image generation, variations, and editing. Use when the user asks about DALL-E, needs to generate AI images, create image variations, or work with DALL-E API.",
-    "stable-diffusion": "Provides comprehensive guidance for Stable Diffusion AI image generation including model usage, prompt engineering, parameters, and image generation. Use when the user asks about Stable Diffusion, needs to generate AI images, configure models, or work with Stable Diffusion.",
-    "uizard": "Provides comprehensive guidance for Uizard AI design tool including AI-powered design generation, wireframing, and design automation. Use when the user asks about Uizard, needs to generate designs with AI, create wireframes, or automate design tasks.",
-    "galileo-ai": "Provides comprehensive guidance for Galileo AI design tool including AI-assisted design, component generation, and design automation. Use when the user asks about Galileo AI, needs to use AI for design, generate design components, or automate design workflows.",
-    "runway-ml": "Provides comprehensive guidance for Runway ML including AI video generation, image editing, and creative AI tools. Use when the user asks about Runway ML, needs to generate AI videos, edit images with AI, or work with creative AI tools.",
-    
-    # 架构
-    "ddd": "Provides comprehensive guidance for Domain-Driven Design including bounded contexts, entities, value objects, aggregates, domain services, and strategic patterns. Use when the user asks about DDD, needs to design domain models, implement DDD patterns, or structure applications with DDD principles.",
-    "ddd-cola": "Provides comprehensive guidance for COLA architecture including adapter layer, application layer, domain layer, and infrastructure layer. Use when the user asks about COLA, needs to implement COLA architecture, structure applications with COLA, or work with COLA patterns.",
-    "ddd-microservices": "Provides comprehensive guidance for DDD in microservices including bounded contexts, service boundaries, event-driven architecture, and microservice patterns. Use when the user asks about DDD microservices, needs to design microservices with DDD, or implement microservice architectures.",
-    "ddd-event-driven": "Provides comprehensive guidance for event-driven architecture including domain events, event sourcing, CQRS, and event patterns. Use when the user asks about event-driven architecture, needs to implement event-driven systems, or work with domain events.",
-    "ddd-hexagonal-architecture": "Provides comprehensive guidance for hexagonal architecture including ports and adapters, domain isolation, and dependency inversion. Use when the user asks about hexagonal architecture, needs to implement ports and adapters pattern, or structure applications with hexagonal architecture.",
-    "ddd-clean-architecture": "Provides comprehensive guidance for clean architecture including layer separation, dependency rules, and architectural patterns. Use when the user asks about clean architecture, needs to implement clean architecture principles, or structure applications with clean architecture.",
-    "plantuml": "Provides comprehensive guidance for PlantUML including diagram syntax, UML diagrams, sequence diagrams, and code generation. Use when the user asks about PlantUML, needs to create UML diagrams, generate diagrams from code, or document software design.",
-    "drawio-architecture": "Provides comprehensive guidance for draw.io architecture diagrams including diagram creation, shapes, templates, and collaboration. Use when the user asks about draw.io architecture, needs to create architecture diagrams, design system diagrams, or collaborate on diagrams.",
-    "drawio-flowchart": "Provides comprehensive guidance for draw.io flowcharts including flowchart creation, shapes, connectors, and diagramming. Use when the user asks about draw.io flowcharts, needs to create flowcharts, design process diagrams, or visualize workflows.",
-    "processon-mindmap": "Provides comprehensive guidance for ProcessOn mind mapping including mind map creation, node management, and collaboration. Use when the user asks about ProcessOn mind maps, needs to create mind maps, organize ideas, or collaborate on mind maps.",
-    
-    # 移动开发
-    "uniapp-project-creator": "Provides one-command project creation for uni-app including project initialization, configuration, and template generation. Use when the user asks about creating uni-app projects, needs to initialize a new uni-app project, or generate uni-app project structure.",
-    "uniapp-project": "Provides comprehensive guidance for uni-app development including components, APIs, platform compatibility, and best practices. Use when the user asks about uni-app, needs to develop cross-platform applications, use uni-app components, or work with uni-app APIs.",
-    "uniappx-project-creator": "Provides one-command project creation for uni-app-x including Vue 3 + TypeScript + Vite setup, configuration, and template generation. Use when the user asks about creating uni-app-x projects, needs to initialize a new uni-app-x project, or generate uni-app-x project structure.",
-    "uniappx-project": "Provides comprehensive guidance for uni-app-x development including components, APIs, Vue 3 integration, and TypeScript support. Use when the user asks about uni-app-x, needs to develop uni-app-x applications, use uni-app-x components, or work with uni-app-x APIs.",
-    
-    # 游戏引擎
-    "cocos2d-x": "Provides comprehensive guidance for Cocos2d-x v4 game engine including scene graph, nodes, sprites, actions, animations, physics, rendering, shaders, and platform deployment. Use when the user asks about Cocos2d-x, needs to create games, implement game features, set up development environments, or deploy games to multiple platforms.",
-    
-    # 其他前端框架
-    "angular": "Provides comprehensive guidance for Angular framework including components, modules, services, dependency injection, routing, forms, and TypeScript integration. Use when the user asks about Angular, needs to create Angular applications, implement Angular components, or work with Angular features.",
-    "svelte": "Provides comprehensive guidance for Svelte framework including components, reactivity, stores, transitions, and compilation. Use when the user asks about Svelte, needs to create Svelte applications, implement Svelte components, or work with Svelte features.",
-    
-    # Vue Router 版本
-    "vue-router-v3": "Provides comprehensive guidance for Vue Router v3 including route configuration, navigation, nested routes, route guards, dynamic routes, and Vue 2 integration. Use when the user asks about Vue Router v3, needs to set up routing for Vue 2 applications, implement navigation guards, or work with Vue Router v3 features.",
-    "vue-router-v4": "Provides comprehensive guidance for Vue Router v4 including route configuration, navigation, nested routes, route guards, and Vue 3 integration. Use when the user asks about Vue Router v4, needs to set up routing for Vue 3 applications, implement navigation guards, or work with Vue Router v4 features.",
-    
-    # 移动开发
-    "react-native": "Provides comprehensive guidance for React Native development including components, navigation, native modules, platform-specific code, and mobile app development. Use when the user asks about React Native, needs to create mobile applications, implement React Native components, or work with React Native features.",
-    "react-native-project-creater": "Provides one-command project creation for React Native including project initialization, configuration, and template generation. Use when the user asks about creating React Native projects, needs to initialize a new React Native project, or generate React Native project structure.",
-    "flutter": "Provides comprehensive guidance for Flutter development including widgets, state management, navigation, platform channels, and mobile app development. Use when the user asks about Flutter, needs to create Flutter applications, implement Flutter widgets, or work with Flutter features.",
-    "flutter-project-creater": "Provides one-command project creation for Flutter including project initialization, configuration, and template generation. Use when the user asks about creating Flutter projects, needs to initialize a new Flutter project, or generate Flutter project structure.",
-    "android-kotlin": "Provides comprehensive guidance for Android development with Kotlin including activities, fragments, views, lifecycle, navigation, and Android app development. Use when the user asks about Android Kotlin, needs to create Android applications, implement Android components, or work with Kotlin in Android.",
-    "ios-swift": "Provides comprehensive guidance for iOS development with Swift including view controllers, views, navigation, lifecycle, and iOS app development. Use when the user asks about iOS Swift, needs to create iOS applications, implement iOS components, or work with Swift in iOS.",
-    
-    # 云平台
-    "cloud-aws-ec2": "Provides comprehensive guidance for AWS EC2 including instance creation, configuration, security groups, and EC2 management. Use when the user asks about AWS EC2, needs to create EC2 instances, configure EC2, or manage AWS compute resources.",
-    "cloud-aws-s3": "Provides comprehensive guidance for AWS S3 including bucket creation, object storage, access control, and S3 management. Use when the user asks about AWS S3, needs to store files in S3, configure S3 buckets, or work with S3 storage.",
-    "cloud-aws-rds": "Provides comprehensive guidance for AWS RDS including database creation, configuration, backups, and RDS management. Use when the user asks about AWS RDS, needs to create RDS databases, configure RDS, or manage AWS database services.",
-    "cloud-aws-lambda": "Provides comprehensive guidance for AWS Lambda including function creation, triggers, configuration, and serverless development. Use when the user asks about AWS Lambda, needs to create Lambda functions, implement serverless functions, or work with AWS serverless computing.",
-    "cloud-azure-vm": "Provides comprehensive guidance for Azure Virtual Machines including VM creation, configuration, networking, and Azure VM management. Use when the user asks about Azure VMs, needs to create Azure VMs, configure Azure compute, or manage Azure virtual machines.",
-    "cloud-azure-storage": "Provides comprehensive guidance for Azure Storage including blob storage, file shares, queues, and storage account management. Use when the user asks about Azure Storage, needs to store data in Azure, configure Azure Storage, or work with Azure storage services.",
-    "cloud-azure-sql": "Provides comprehensive guidance for Azure SQL Database including database creation, configuration, security, and Azure SQL management. Use when the user asks about Azure SQL, needs to create Azure SQL databases, configure Azure SQL, or manage Azure database services.",
-    "cloud-aliyun-ecs": "Provides comprehensive guidance for Alibaba Cloud ECS including instance creation, configuration, security groups, and ECS management. Use when the user asks about Alibaba Cloud ECS, needs to create ECS instances, configure ECS, or manage Alibaba Cloud compute resources.",
-    "cloud-aliyun-oss": "Provides comprehensive guidance for Alibaba Cloud OSS including bucket creation, object storage, access control, and OSS management. Use when the user asks about Alibaba Cloud OSS, needs to store files in OSS, configure OSS buckets, or work with Alibaba Cloud storage.",
-    "cloud-aliyun-rds": "Provides comprehensive guidance for Alibaba Cloud RDS including database creation, configuration, backups, and RDS management. Use when the user asks about Alibaba Cloud RDS, needs to create RDS databases, configure RDS, or manage Alibaba Cloud database services.",
-    "cloud-tencent-cvm": "Provides comprehensive guidance for Tencent Cloud CVM including instance creation, configuration, security groups, and CVM management. Use when the user asks about Tencent Cloud CVM, needs to create CVM instances, configure CVM, or manage Tencent Cloud compute resources.",
-    "cloud-tencent-cos": "Provides comprehensive guidance for Tencent Cloud COS including bucket creation, object storage, access control, and COS management. Use when the user asks about Tencent Cloud COS, needs to store files in COS, configure COS buckets, or work with Tencent Cloud storage.",
-    "cloud-tencent-cdb": "Provides comprehensive guidance for Tencent Cloud CDB including database creation, configuration, backups, and CDB management. Use when the user asks about Tencent Cloud CDB, needs to create CDB databases, configure CDB, or manage Tencent Cloud database services.",
-    "cloud-huawei-ecs": "Provides comprehensive guidance for Huawei Cloud ECS including instance creation, configuration, security groups, and ECS management. Use when the user asks about Huawei Cloud ECS, needs to create ECS instances, configure ECS, or manage Huawei Cloud compute resources.",
-    "cloud-huawei-obs": "Provides comprehensive guidance for Huawei Cloud OBS including bucket creation, object storage, access control, and OBS management. Use when the user asks about Huawei Cloud OBS, needs to store files in OBS, configure OBS buckets, or work with Huawei Cloud storage.",
-    "cloud-huawei-rds": "Provides comprehensive guidance for Huawei Cloud RDS including database creation, configuration, backups, and RDS management. Use when the user asks about Huawei Cloud RDS, needs to create RDS databases, configure RDS, or manage Huawei Cloud database services.",
-    
-    # 数据库工具
-    "navicat": "Provides comprehensive guidance for Navicat database management tool including database connection, query execution, data management, and database administration. Use when the user asks about Navicat, needs to manage databases with Navicat, execute SQL queries, or work with Navicat features.",
-    "dbeaver": "Provides comprehensive guidance for DBeaver database tool including database connection, SQL editor, data management, and database administration. Use when the user asks about DBeaver, needs to manage databases with DBeaver, execute SQL queries, or work with DBeaver features.",
-    
-    # 工具和生成器
-    "code-generator": "Provides comprehensive guidance for code generation including template-based generation, code scaffolding, and automated code creation. Use when the user asks about code generation, needs to generate code from templates, create code scaffolds, or automate code creation.",
-    "test-writer": "Provides comprehensive guidance for writing tests including test case creation, test structure, and testing best practices. Use when the user asks about writing tests, needs to create test cases, structure tests, or implement testing strategies.",
-    "documentation-builder": "Provides comprehensive guidance for building documentation including documentation generation, formatting, and documentation best practices. Use when the user asks about building documentation, needs to generate documentation, format documentation, or create documentation structures.",
-    "api-doc-generator": "Provides comprehensive guidance for API documentation generation including API documentation creation, formatting, and API documentation best practices. Use when the user asks about API documentation, needs to generate API docs, format API documentation, or create API documentation structures.",
-    "full-stack-doc": "Provides comprehensive guidance for Chinese product documentation generation including product documentation creation, formatting, and documentation best practices. Use when the user asks about product documentation in Chinese, needs to generate product docs, or create Chinese documentation.",
-    
-    # 教学工具
-    "course-designer": "Provides comprehensive guidance for course design including curriculum development, learning objectives, and course structure. Use when the user asks about course design, needs to design courses, create learning objectives, or structure educational content.",
-    "learning-assessor": "Provides comprehensive guidance for learning assessment including assessment creation, evaluation methods, and assessment best practices. Use when the user asks about learning assessment, needs to create assessments, evaluate learning, or implement assessment strategies.",
-    "teaching-resource-generator": "Provides comprehensive guidance for teaching resource generation including resource creation, formatting, and educational content development. Use when the user asks about teaching resources, needs to generate teaching materials, create educational content, or develop teaching resources.",
-    
-    # UniApp
-    "uniapp-project": "Provides comprehensive guidance for uni-app development including components, APIs, platform compatibility, and cross-platform development. Use when the user asks about uni-app, needs to develop cross-platform applications, use uni-app components, or work with uni-app APIs.",
-    "upgradeLink": "Provides comprehensive guidance for upgrade link management including upgrade link creation, configuration, and upgrade link best practices. Use when the user asks about upgrade links, needs to create upgrade links, configure upgrade processes, or manage upgrade links.",
-    
-    # 其他
-    "mermaid": "Provides comprehensive guidance for creating Mermaid diagrams including flowcharts, sequence diagrams, class diagrams, state diagrams, Gantt charts, and all other Mermaid diagram types. Use when the user requests to create, draw, or visualize any diagram, flowchart, or structured chart using Mermaid syntax.",
-    "nvm": "Provides comprehensive guidance for Node Version Manager (nvm) including installation, version management, switching Node.js versions, and environment configuration. Use when the user asks about nvm, needs to manage Node.js versions, switch between Node versions, or configure Node.js environments.",
-    "dart-sass": "Provides comprehensive guidance for Dart Sass including Sass syntax, compilation, mixins, functions, and best practices. Use when the user asks about Dart Sass, needs to compile Sass to CSS, use Sass features, or work with Sass in projects.",
-    "electron": "Provides comprehensive guidance for Electron framework including main process, renderer process, IPC communication, window management, and desktop app development. Use when the user asks about Electron, needs to create desktop applications, implement Electron features, or build cross-platform desktop apps.",
-    "electron-egg": "Provides comprehensive guidance for Electron EGG framework including project structure, main/renderer processes, IPC, window management, and desktop app development. Use when the user asks about Electron EGG, needs to create Electron applications with EGG, or work with Electron EGG patterns.",
-    "tauri": "Provides comprehensive guidance for Tauri framework including Rust backend, frontend integration, window management, and desktop app development. Use when the user asks about Tauri, needs to create Tauri applications, implement Tauri features, or build lightweight desktop apps.",
-    "ucharts": "Provides comprehensive guidance for uCharts chart library including chart types, data formats, chart configuration, and platform support. Use when the user asks about uCharts, needs to create charts, configure chart options, or work with uCharts in applications.",
-    "lime-echart": "Provides comprehensive guidance for Lime ECharts including chart creation, configuration, data visualization, and interactive charts. Use when the user asks about Lime ECharts, needs to create charts, visualize data, or work with ECharts features.",
-}
-
-def update_description(skill_dir):
-    """更新单个 skill 的 description"""
-    skill_md = Path(skill_dir) / "SKILL.md"
-    if not skill_md.exists():
-        return False
-    
-    # 读取文件
-    content = skill_md.read_text(encoding='utf-8')
-    
-    # 提取 skill name
-    name_match = re.search(r'^name:\s*(.+)$', content, re.MULTILINE)
-    if not name_match:
-        return False
-    
-    skill_name = name_match.group(1).strip()
-    
-    # 获取新的 description
-    new_description = SKILL_DESCRIPTIONS.get(skill_name)
-    if not new_description:
-        # 如果没有预定义的描述,尝试从现有内容生成
-        return False
-    
-    # 替换 description(支持中文和英文)
-    pattern = r'^description:\s*.+$'
-    replacement = f'description: {new_description}'
-    
-    new_content = re.sub(pattern, replacement, content, flags=re.MULTILINE)
-    
-    if new_content != content:
-        skill_md.write_text(new_content, encoding='utf-8')
-        return True
-    
-    return False
-
-def main():
-    """主函数"""
-    base_dir = Path(__file__).parent.parent
-    skills_dir = base_dir / "skills"
-    
-    if not skills_dir.exists():
-        print(f"Skills directory not found: {skills_dir}")
-        return
-    
-    updated_count = 0
-    skipped_count = 0
-    
-    for skill_dir in sorted(skills_dir.iterdir()):
-        if not skill_dir.is_dir():
-            continue
-        
-        if update_description(skill_dir):
-            print(f"✅ Updated: {skill_dir.name}")
-            updated_count += 1
-        else:
-            skill_name = skill_dir.name
-            if skill_name in SKILL_DESCRIPTIONS:
-                print(f"⚠️  Skipped (already correct or error): {skill_name}")
-            skipped_count += 1
-    
-    print(f"\n=== Summary ===")
-    print(f"Updated: {updated_count}")
-    print(f"Skipped: {skipped_count}")
-    print(f"Total: {updated_count + skipped_count}")
-
-if __name__ == "__main__":
-    main()

+ 0 - 202
skills/adobe-xd/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 22
skills/adobe-xd/SKILL.md

@@ -1,22 +0,0 @@
----
-name: adobe-xd
-description: Provides comprehensive guidance for Adobe XD including design creation, prototyping, components, and collaboration. Use when the user asks about Adobe XD, needs to create UI/UX designs, build prototypes, or work with Adobe XD components.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- [待完善:根据具体工具添加使用场景]
-
-## How to use this skill
-
-[待完善:根据具体工具添加使用指南]
-
-## Best Practices
-
-[待完善:根据具体工具添加最佳实践]
-
-## Keywords
-
-[待完善:根据具体工具添加关键词]

+ 0 - 17
skills/agent-browser/LICENSE.txt

@@ -1,17 +0,0 @@
-Apache License
-Version 2.0, January 2004
-http://www.apache.org/licenses/
-
-Copyright (c) 2024 Vercel Labs
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.

+ 0 - 138
skills/agent-browser/SKILL.md

@@ -1,138 +0,0 @@
----
-name: agent-browser
-description: A comprehensive skill for using agent-browser, a CLI tool for browser automation designed for AI agents, developed by Vercel Labs. This skill covers installation, core commands, selectors (refs, CSS, XPath, semantic locators), agent mode, sessions, options, and best practices. Use this skill whenever the user needs to automate browser interactions via CLI commands, especially for AI agents that need to interact with web pages.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- Automate browser interactions via CLI commands
-- Use browser automation for AI agents
-- Navigate websites and interact with pages using command-line tools
-- Use refs-based element selection for deterministic automation
-- Integrate browser automation into AI agent workflows
-- Capture snapshots of web pages with accessibility trees
-- Fill forms, click elements, and extract content via CLI
-- Use semantic locators for more reliable element selection
-- Work with browser automation in agent mode with JSON output
-- Manage multiple browser sessions
-- Debug browser automation with headed mode
-- Use authenticated sessions with custom headers
-- Connect to existing browsers via CDP
-- Stream browser viewport for live preview
-
-## How to use this skill
-
-This skill is organized to match the agent-browser official documentation structure (https://github.com/vercel-labs/agent-browser/blob/main/README.md). When working with agent-browser:
-
-1. **Install agent-browser**:
-   - Load `examples/getting-started/installation.md` for installation instructions
-
-2. **Quick Start**:
-   - Load `examples/quick-start/quick-start.md` for basic workflow examples
-
-3. **Learn core commands**:
-   - Load `examples/commands/basic-commands.md` for basic commands (open, click, fill, etc.)
-   - Load `examples/commands/advanced-commands.md` for advanced commands (snapshot, eval, etc.)
-   - Load `examples/commands/get-info/` for information retrieval commands
-   - Load `examples/commands/check-state/` for state checking commands
-   - Load `examples/commands/find-elements/` for semantic locator commands
-   - Load `examples/commands/wait/` for wait commands
-   - Load `examples/commands/mouse-control/` for mouse control commands
-   - Load `examples/commands/browser-settings/` for browser configuration
-   - Load `examples/commands/cookies-storage/` for cookies and storage management
-   - Load `examples/commands/network/` for network interception
-   - Load `examples/commands/tabs-windows/` for tab and window management
-   - Load `examples/commands/frames/` for iframe handling
-   - Load `examples/commands/dialogs/` for dialog handling
-   - Load `examples/commands/debug/` for debugging commands
-   - Load `examples/commands/navigation/` for navigation commands
-   - Load `examples/commands/setup/` for setup commands
-
-4. **Understand selectors**:
-   - Load `examples/selectors/refs.md` for refs-based selection (@e1, @e2, etc.)
-   - Load `examples/selectors/traditional-selectors.md` for CSS, XPath, and semantic locators
-
-5. **Use agent mode**:
-   - Load `examples/agent-mode/introduction.md` for agent mode overview
-   - Load `examples/agent-mode/optimal-workflow.md` for optimal AI workflow
-   - Load `examples/agent-mode/integration.md` for integrating with AI agents
-
-6. **Advanced features**:
-   - Load `examples/advanced/sessions.md` for session management
-   - Load `examples/advanced/headed-mode.md` for debugging with visible browser
-   - Load `examples/advanced/authenticated-sessions.md` for authentication via headers
-   - Load `examples/advanced/custom-executable.md` for custom browser executable
-   - Load `examples/advanced/cdp-mode.md` for Chrome DevTools Protocol integration
-   - Load `examples/advanced/streaming.md` for browser viewport streaming
-   - Load `examples/advanced/architecture.md` for architecture overview
-   - Load `examples/advanced/platforms.md` for platform support
-   - Load `examples/advanced/usage-with-agents.md` for AI agent integration patterns
-
-7. **Configure options**:
-   - Load `examples/options/global-options.md` for global CLI options
-   - Load `examples/options/snapshot-options.md` for snapshot-specific options
-   - Load `examples/options/session-options.md` for session management options
-
-8. **Reference API documentation** when needed:
-   - `api/commands.md` - Complete command reference
-   - `api/selectors.md` - Selector reference
-   - `api/options.md` - Options reference
-
-9. **Use templates** for quick start:
-   - `templates/basic-automation.md` - Basic automation workflow
-   - `templates/ai-agent-workflow.md` - AI agent workflow template
-
-
-### Doc mapping (one-to-one with official documentation)
-
-- See examples and API files → https://github.com/vercel-labs/agent-browser
-
-## Examples and Templates
-
-This skill includes detailed examples organized to match the official documentation structure. All examples are in the `examples/` directory (see mapping above).
-
-**To use examples:**
-- Identify the topic from the user's request
-- Load the appropriate example file from the mapping above
-- Follow the instructions, syntax, and best practices in that file
-- Adapt the code examples to your specific use case
-
-**To use templates:**
-- Reference templates in `templates/` directory for common scaffolding
-- Adapt templates to your specific needs and coding style
-
-## API Reference
-
-- **Commands API**: `api/commands.md` - Complete command reference with syntax and examples
-- **Selectors API**: `api/selectors.md` - Selector types and usage reference
-- **Options API**: `api/options.md` - All options reference
-
-## Best Practices
-
-1. **Use Refs**: Prefer refs (@e1, @e2) over traditional selectors for deterministic automation
-2. **Snapshot First**: Always snapshot before interacting with elements to get refs
-3. **Agent Mode**: Use `--json` flag for machine-readable output in agent mode
-4. **Session Management**: Use `--session` to maintain state across commands
-5. **Interactive Snapshot**: Use `-i` flag for interactive snapshot selection
-6. **Semantic Locators**: Use semantic locators (role/name) when refs are not available
-7. **Error Handling**: Check command exit codes and error messages
-8. **Wait for Navigation**: Commands automatically wait for navigation to complete
-9. **Headed Mode**: Use `--headed` for debugging, headless for production
-10. **CDP Integration**: Use `--cdp` for Chrome DevTools Protocol integration
-11. **Streaming**: Use `AGENT_BROWSER_STREAM_PORT` for live browser preview
-12. **Authenticated Sessions**: Use `--headers` for authentication without login flows
-13. **Custom Executable**: Use `--executable-path` for serverless deployments or custom browsers
-14. **Snapshot Options**: Combine `-i`, `-c`, `-d`, `-s` options to optimize snapshot output
-
-## Resources
-
-- **GitHub Repository**: https://github.com/vercel-labs/agent-browser
-- **Official README**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-- **Agent Mode Documentation**: https://agent-browser.dev/agent-mode
-- **Issues**: https://github.com/vercel-labs/agent-browser/issues
-
-## Keywords
-
-agent-browser, CLI browser automation, AI agents, browser automation CLI, refs, snapshot, agent mode, semantic locators, browser automation tool, command-line browser, AI agent browser, deterministic selectors, accessibility tree, browser commands, web automation CLI, sessions, headed mode, authenticated sessions, CDP mode, streaming, Chrome DevTools Protocol, Playwright, browser automation for AI

+ 0 - 289
skills/agent-browser/api/commands.md

@@ -1,289 +0,0 @@
-# Commands API | 命令 API
-
-## API Reference
-
-Complete command reference for agent-browser CLI.
-
-### Navigation Commands
-
-#### open, goto, navigate
-
-Navigate to a URL.
-
-**Syntax:**
-```bash
-agent-browser open <url> [options]
-```
-
-**Options:**
-- `--session <name>`: Use named session
-- `--headers <json>`: Custom HTTP headers
-- `--headed`: Run in headed mode
-- `--json`: JSON output
-
-**Example:**
-```bash
-agent-browser open https://example.com --session my-session --json
-```
-
-### Interaction Commands
-
-#### click
-
-Click an element.
-
-**Syntax:**
-```bash
-agent-browser click <selector> [options]
-```
-
-**Options:**
-- `--session <name>`: Use named session
-- `--button <button>`: Mouse button (left, right, middle)
-- `--json`: JSON output
-
-**Example:**
-```bash
-agent-browser click @e1 --session my-session --json
-```
-
-#### dblclick
-
-Double-click an element.
-
-**Syntax:**
-```bash
-agent-browser dblclick <selector> [options]
-```
-
-**Example:**
-```bash
-agent-browser dblclick @e1
-```
-
-### Input Commands
-
-#### type
-
-Type text into an element.
-
-**Syntax:**
-```bash
-agent-browser type <selector> <text> [options]
-```
-
-**Example:**
-```bash
-agent-browser type @e1 "Hello World"
-```
-
-#### fill
-
-Fill an input field.
-
-**Syntax:**
-```bash
-agent-browser fill <selector> <text> [options]
-```
-
-**Example:**
-```bash
-agent-browser fill @e1 "user@example.com"
-```
-
-#### press
-
-Press a key.
-
-**Syntax:**
-```bash
-agent-browser press <selector> <key> [options]
-```
-
-**Example:**
-```bash
-agent-browser press @e1 Enter
-```
-
-#### keydown, keyup
-
-Key down/up events.
-
-**Syntax:**
-```bash
-agent-browser keydown <selector> <key> [options]
-agent-browser keyup <selector> <key> [options]
-```
-
-### Form Commands
-
-#### focus
-
-Focus an element.
-
-**Syntax:**
-```bash
-agent-browser focus <selector> [options]
-```
-
-#### select
-
-Select an option.
-
-**Syntax:**
-```bash
-agent-browser select <selector> <value> [options]
-```
-
-#### check, uncheck
-
-Check/uncheck a checkbox.
-
-**Syntax:**
-```bash
-agent-browser check <selector> [options]
-agent-browser uncheck <selector> [options]
-```
-
-### Mouse Commands
-
-#### hover
-
-Hover over an element.
-
-**Syntax:**
-```bash
-agent-browser hover <selector> [options]
-```
-
-#### scroll
-
-Scroll element or page.
-
-**Syntax:**
-```bash
-agent-browser scroll <selector> [options]
-agent-browser scroll --to <selector> [options]
-```
-
-### Information Commands
-
-#### get text
-
-Get text content.
-
-**Syntax:**
-```bash
-agent-browser get text <selector> [options]
-```
-
-#### get attribute
-
-Get attribute value.
-
-**Syntax:**
-```bash
-agent-browser get attribute <selector> <name> [options]
-```
-
-#### get property
-
-Get property value.
-
-**Syntax:**
-```bash
-agent-browser get property <selector> <name> [options]
-```
-
-### Advanced Commands
-
-#### snapshot
-
-Get accessibility tree with refs.
-
-**Syntax:**
-```bash
-agent-browser snapshot [options]
-```
-
-**Options:**
-- `-i, --interactive`: Interactive mode
-- `-c, --compact`: Compact format
-- `-d, --depth <n>`: Depth limit
-- `-s, --selector <sel>`: Filter by selector
-- `--full, -f`: Full snapshot
-- `-n, --name <name>`: Filter by name
-- `--exact, -e`: Exact name match
-- `--json`: JSON output
-
-**Example:**
-```bash
-agent-browser snapshot -i --json --session my-session
-```
-
-#### eval
-
-Evaluate JavaScript.
-
-**Syntax:**
-```bash
-agent-browser eval <expression> [options]
-```
-
-**Example:**
-```bash
-agent-browser eval "document.title"
-```
-
-#### screenshot
-
-Take screenshot.
-
-**Syntax:**
-```bash
-agent-browser screenshot <path> [options]
-```
-
-**Options:**
-- `--full`: Full page screenshot
-
-#### pdf
-
-Generate PDF.
-
-**Syntax:**
-```bash
-agent-browser pdf <path> [options]
-```
-
-**Options:**
-- `--format <format>`: Paper format
-- `--print-background`: Print background
-
-#### close
-
-Close page or browser.
-
-**Syntax:**
-```bash
-agent-browser close [options]
-```
-
-**Options:**
-- `--all`: Close all pages
-
-### Common Options
-
-All commands support:
-- `--session <name>`: Use named session
-- `--json`: JSON output
-- `--headed`: Headed mode
-- `--debug`: Debug output
-
-### Key Points
-
-- All commands support `--session` for state management
-- Use `--json` for machine-readable output
-- Commands automatically wait for navigation
-- Use refs (@e1, @e2) for reliable selection
-- Commands return appropriate exit codes

+ 0 - 203
skills/agent-browser/api/options.md

@@ -1,203 +0,0 @@
-# Options API | 选项 API
-
-## API Reference
-
-Complete options reference for agent-browser.
-
-### Global Options
-
-#### --session, -s
-
-Use named session for state management.
-
-**Example:**
-```bash
-agent-browser open https://example.com --session my-session
-```
-
-**Environment Variable:** `AGENT_BROWSER_SESSION`
-
-#### --headers
-
-Custom HTTP headers (JSON format).
-
-**Example:**
-```bash
-agent-browser open https://example.com --headers '{"User-Agent": "MyBot"}'
-```
-
-**Environment Variable:** `AGENT_BROWSER_HEADERS`
-
-#### --executable-path
-
-Custom browser executable path.
-
-**Example:**
-```bash
-agent-browser open https://example.com --executable-path /path/to/chromium
-```
-
-**Environment Variable:** `AGENT_BROWSER_EXECUTABLE_PATH`
-
-#### --headed
-
-Run in headed mode (visible browser).
-
-**Example:**
-```bash
-agent-browser open https://example.com --headed
-```
-
-#### --cdp
-
-Connect via Chrome DevTools Protocol.
-
-**Example:**
-```bash
-agent-browser open https://example.com --cdp 9222
-```
-
-#### --json
-
-JSON output format.
-
-**Example:**
-```bash
-agent-browser snapshot --json
-```
-
-#### --debug
-
-Enable debug output.
-
-**Example:**
-```bash
-agent-browser open https://example.com --debug
-```
-
-### Snapshot Options
-
-#### -i, --interactive
-
-Interactive snapshot mode.
-
-**Example:**
-```bash
-agent-browser snapshot -i
-```
-
-#### -c, --compact
-
-Compact snapshot format.
-
-**Example:**
-```bash
-agent-browser snapshot -c
-```
-
-#### -d, --depth
-
-Limit snapshot depth.
-
-**Example:**
-```bash
-agent-browser snapshot -d 2
-```
-
-#### -s, --selector
-
-Filter by selector.
-
-**Example:**
-```bash
-agent-browser snapshot -s "main"
-```
-
-#### --full, -f
-
-Full snapshot with all details.
-
-**Example:**
-```bash
-agent-browser snapshot --full
-```
-
-#### -n, --name
-
-Filter by accessible name.
-
-**Example:**
-```bash
-agent-browser snapshot -n "Submit"
-```
-
-#### --exact, -e
-
-Exact name match.
-
-**Example:**
-```bash
-agent-browser snapshot -n "Submit" --exact
-```
-
-### Command-Specific Options
-
-#### --button
-
-Mouse button for click (left, right, middle).
-
-**Example:**
-```bash
-agent-browser click @e1 --button right
-```
-
-#### --to
-
-Scroll to element.
-
-**Example:**
-```bash
-agent-browser scroll --to @e1
-```
-
-#### --all
-
-Close all pages.
-
-**Example:**
-```bash
-agent-browser close --all
-```
-
-#### --format
-
-PDF paper format.
-
-**Example:**
-```bash
-agent-browser pdf output.pdf --format A4
-```
-
-#### --print-background
-
-Print background in PDF.
-
-**Example:**
-```bash
-agent-browser pdf output.pdf --print-background
-```
-
-### Environment Variables
-
-- `AGENT_BROWSER_SESSION`: Default session name
-- `AGENT_BROWSER_HEADERS`: Default headers (JSON)
-- `AGENT_BROWSER_EXECUTABLE_PATH`: Default executable path
-
-### Key Points
-
-- Global options apply to all commands
-- Snapshot options are specific to snapshot command
-- Environment variables can set defaults
-- Options can be combined
-- Use `--json` for agent mode
-- Use `--session` for state management

+ 0 - 98
skills/agent-browser/api/selectors.md

@@ -1,98 +0,0 @@
-# Selectors API | 选择器 API
-
-## API Reference
-
-Complete selector reference for agent-browser.
-
-### Refs
-
-Deterministic element identifiers from snapshot.
-
-**Format:** `@e1`, `@e2`, `@e3`, etc.
-
-**Example:**
-```bash
-agent-browser click @e1
-agent-browser fill @e2 "text"
-```
-
-**Advantages:**
-- Deterministic
-- Fast
-- AI-friendly
-- Stable across page changes
-
-### CSS Selectors
-
-Standard CSS selector syntax.
-
-**Examples:**
-```bash
-agent-browser click button
-agent-browser click .submit-button
-agent-browser click #login-btn
-agent-browser click input[name="email"]
-agent-browser click form .submit
-```
-
-### XPath Selectors
-
-XPath expression syntax (must be quoted).
-
-**Examples:**
-```bash
-agent-browser click "//button"
-agent-browser click "//button[@type='submit']"
-agent-browser click "//button[text()='Submit']"
-agent-browser click "//form[@id='login']//button"
-```
-
-### Semantic Locators
-
-Accessibility-focused selectors.
-
-**Format:** `role=<role>`, `role=<role> name=<name>`
-
-**Examples:**
-```bash
-agent-browser click role=button
-agent-browser click role=button name="Submit"
-agent-browser click role=textbox name="Email"
-agent-browser click role=link name="Login"
-agent-browser get text role=heading name="Welcome" level=1
-```
-
-### ID and Class Selectors
-
-Simple ID and class selectors.
-
-**Examples:**
-```bash
-agent-browser click #my-button
-agent-browser click .my-class
-agent-browser click .btn.primary
-agent-browser click button.primary
-```
-
-### Selector Priority
-
-1. **Refs** (preferred): Most reliable, deterministic
-2. **Semantic Locators**: Accessibility-focused, stable
-3. **CSS Selectors**: Simple, but can break
-4. **XPath**: Powerful, but complex
-
-### When to Use Each
-
-- **Refs**: Always prefer for AI agents and deterministic automation
-- **Semantic Locators**: When structure might change, accessibility-focused
-- **CSS Selectors**: Simple, stable HTML structure
-- **XPath**: Complex relationships, text-based selection
-
-### Key Points
-
-- Refs are the most reliable selector type
-- Get refs from `snapshot` command
-- Semantic locators are more maintainable
-- CSS selectors are simple but fragile
-- XPath is powerful but complex
-- Always prefer refs when available

+ 0 - 70
skills/agent-browser/examples/advanced/architecture.md

@@ -1,70 +0,0 @@
-# Architecture | 架构
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example explains the architecture of agent-browser.
-
-### Key Concepts
-
-- Client-daemon architecture
-- Rust CLI (fast native binary)
-- Node.js daemon
-- Fallback mechanism
-- Browser engine (Chromium, Firefox, WebKit)
-
-### Architecture Overview
-
-agent-browser uses a client-daemon architecture:
-
-1. **Rust CLI** (fast native binary)
-   - Parses commands
-   - Communicates with daemon
-   - Fast startup and execution
-
-2. **Node.js Daemon**
-   - Manages Playwright browser instance
-   - Handles browser automation
-   - Persists between commands for fast subsequent operations
-
-3. **Fallback**
-   - If native binary unavailable, uses Node.js directly
-   - Ensures compatibility across platforms
-
-### Daemon Lifecycle
-
-```bash
-# First command starts daemon automatically
-agent-browser open example.com  # Daemon starts here
-
-# Subsequent commands reuse daemon (fast)
-agent-browser snapshot           # Reuses existing daemon
-agent-browser click @e1         # Reuses existing daemon
-
-# Daemon persists until explicitly closed
-agent-browser close              # Daemon stops
-```
-
-### Browser Engine
-
-- **Default**: Chromium (bundled with Playwright)
-- **Also supports**: Firefox and WebKit via Playwright protocol
-- **Custom**: Can use custom executable via `--executable-path`
-
-### Performance Benefits
-
-- **Fast startup**: Native Rust binary parses commands quickly
-- **Persistent daemon**: Browser instance reused between commands
-- **Efficient communication**: Client-daemon model reduces overhead
-- **Fallback support**: Node.js fallback ensures compatibility
-
-### Key Points
-
-- Client-daemon architecture for performance
-- Rust CLI for fast command parsing
-- Node.js daemon manages browser instance
-- Daemon persists between commands (fast)
-- Fallback to Node.js if native binary unavailable
-- Supports Chromium (default), Firefox, and WebKit

+ 0 - 77
skills/agent-browser/examples/advanced/authenticated-sessions.md

@@ -1,77 +0,0 @@
-# Authenticated Sessions | 认证会话
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use custom HTTP headers for authentication, skipping login flows.
-
-### Key Concepts
-
-- Authentication via HTTP headers
-- Origin-scoped headers (security)
-- Skipping login flows
-- Multiple origins with different auth tokens
-- Global headers vs origin-scoped headers
-
-### Example: Basic Authentication
-
-```bash
-# Set headers for specific origin (scoped to api.example.com only)
-agent-browser open api.example.com --headers '{"Authorization": "Bearer <token>"}'
-
-# All requests to api.example.com include the auth header
-agent-browser snapshot -i --json
-agent-browser click @e2
-
-# Navigate to another domain - headers are NOT sent (safe!)
-agent-browser open other-site.com  # No auth header sent
-```
-
-### Example: Multiple Origins
-
-```bash
-# Set headers for first origin
-agent-browser open api.example.com --headers '{"Authorization": "Bearer token1"}'
-agent-browser snapshot -i
-
-# Set headers for second origin
-agent-browser open api.acme.com --headers '{"Authorization": "Bearer token2"}'
-agent-browser snapshot -i
-```
-
-### Example: Global Headers
-
-```bash
-# Set global headers (all domains)
-agent-browser set headers '{"X-Custom-Header": "value"}'
-
-# All subsequent requests include the header
-agent-browser open example.com
-agent-browser open other-site.com  # Header included here too
-```
-
-### Example: Use Cases
-
-```bash
-# 1. Skip login flows - Authenticate via headers instead of UI
-agent-browser open dashboard.example.com --headers '{"Authorization": "Bearer <token>"}'
-agent-browser snapshot -i
-
-# 2. Switch users - Start new sessions with different auth tokens
-agent-browser --session user1 open api.example.com --headers '{"Authorization": "Bearer token1"}'
-agent-browser --session user2 open api.example.com --headers '{"Authorization": "Bearer token2"}'
-
-# 3. API testing - Access protected endpoints directly
-agent-browser open api.example.com/protected --headers '{"Authorization": "Bearer <token>"}'
-agent-browser get text @e1
-```
-
-### Key Points
-
-- Use `--headers` flag to set HTTP headers for specific origin
-- Headers are scoped to the origin (security feature)
-- Use `set headers` for global headers (all domains)
-- Useful for skipping login flows and API testing
-- Headers are not leaked to other domains (safe)

+ 0 - 89
skills/agent-browser/examples/advanced/cdp-mode.md

@@ -1,89 +0,0 @@
-# CDP Mode | Chrome DevTools Protocol 模式
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to connect to an existing browser via Chrome DevTools Protocol (CDP).
-
-### Key Concepts
-
-- Connecting to existing browsers via CDP
-- Controlling Electron apps
-- Remote debugging
-- WebView2 applications
-- CDP endpoint connection
-
-### Example: Connect Once
-
-```bash
-# Start Chrome with remote debugging
-# google-chrome --remote-debugging-port=9222
-
-# Connect once
-agent-browser connect 9222
-
-# Run commands without --cdp flag
-agent-browser snapshot
-agent-browser tab
-agent-browser click @e1
-agent-browser close
-```
-
-### Example: Pass CDP on Each Command
-
-```bash
-# Start Chrome with remote debugging
-# google-chrome --remote-debugging-port=9222
-
-# Pass --cdp on each command
-agent-browser --cdp 9222 snapshot
-agent-browser --cdp 9222 tab
-agent-browser --cdp 9222 click @e1
-```
-
-### Example: Electron App
-
-```bash
-# Start Electron app with remote debugging
-# electron --remote-debugging-port=9222
-
-# Connect and control
-agent-browser connect 9222
-agent-browser snapshot -i
-agent-browser click @e1
-```
-
-### Example: WebView2 Application
-
-```bash
-# Start WebView2 app with remote debugging enabled
-# (depends on application configuration)
-
-# Connect via CDP
-agent-browser connect 9222
-agent-browser snapshot
-agent-browser click @e1
-```
-
-### Example: Chrome/Chromium Instance
-
-```bash
-# Start Chrome with remote debugging
-# google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug
-
-# Connect and automate
-agent-browser connect 9222
-agent-browser open example.com
-agent-browser snapshot -i
-agent-browser click @e2
-```
-
-### Key Points
-
-- Use `connect <port>` to connect once, or `--cdp <port>` on each command
-- Enables control of Electron apps, Chrome instances, WebView2 apps
-- Any browser exposing a CDP endpoint can be controlled
-- Useful for debugging and testing existing browser instances
-- After `connect`, subsequent commands don't need `--cdp` flag

+ 0 - 80
skills/agent-browser/examples/advanced/custom-executable.md

@@ -1,80 +0,0 @@
-# Custom Browser Executable | 自定义浏览器可执行文件
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use a custom browser executable instead of the bundled Chromium.
-
-### Key Concepts
-
-- Custom browser executable path
-- Serverless deployment (lightweight builds)
-- System browsers
-- Custom builds
-- Environment variable vs CLI flag
-
-### Example: Via CLI Flag
-
-```bash
-# Use custom browser executable
-agent-browser --executable-path /path/to/chromium open example.com
-agent-browser --executable-path /path/to/chromium snapshot
-```
-
-### Example: Via Environment Variable
-
-```bash
-# Set custom executable path
-export AGENT_BROWSER_EXECUTABLE_PATH=/path/to/chromium
-
-# All commands use the custom executable
-agent-browser open example.com
-agent-browser snapshot
-```
-
-### Example: Serverless Deployment (Vercel/AWS Lambda)
-
-```typescript
-import chromium from '@sparticuz/chromium';
-import { BrowserManager } from 'agent-browser';
-
-export async function handler() {
-  const browser = new BrowserManager();
-  await browser.launch({
-    executablePath: await chromium.executablePath(),
-    headless: true,
-  });
-  // ... use browser
-}
-```
-
-### Example: Using System Chrome
-
-```bash
-# macOS
-agent-browser --executable-path "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" open example.com
-
-# Linux
-agent-browser --executable-path /usr/bin/google-chrome open example.com
-
-# Windows
-agent-browser --executable-path "C:\Program Files\Google\Chrome\Application\chrome.exe" open example.com
-```
-
-### Example: Lightweight Builds
-
-```bash
-# Use lightweight Chromium build for serverless
-export AGENT_BROWSER_EXECUTABLE_PATH=/path/to/lightweight-chromium
-agent-browser open example.com
-```
-
-### Key Points
-
-- Use `--executable-path` flag or `AGENT_BROWSER_EXECUTABLE_PATH` environment variable
-- Useful for serverless deployments (lightweight builds like @sparticuz/chromium)
-- Can use system browsers or custom builds
-- Default bundled Chromium is ~684MB, lightweight builds are ~50MB
-- Useful for environments with size constraints

+ 0 - 69
skills/agent-browser/examples/advanced/headed-mode.md

@@ -1,69 +0,0 @@
-# Headed Mode | 有界面模式
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to run agent-browser in headed mode (visible browser window) for debugging.
-
-### Key Concepts
-
-- Running browser in visible mode
-- Debugging browser automation
-- Visual verification of actions
-- Headless vs headed mode
-
-### Example: Basic Headed Mode
-
-```bash
-# Open browser in visible mode
-agent-browser open example.com --headed
-
-# All subsequent commands will use the visible browser
-agent-browser snapshot
-agent-browser click @e1
-agent-browser fill @e2 "test"
-```
-
-### Example: Debugging Workflow
-
-```bash
-# Start with visible browser for debugging
-agent-browser open example.com --headed
-
-# Take snapshot to see what's available
-agent-browser snapshot -i
-
-# Interact and watch the browser
-agent-browser click @e2
-agent-browser fill @e3 "test@example.com"
-
-# Take screenshot to verify
-agent-browser screenshot debug.png
-
-# Close when done
-agent-browser close
-```
-
-### Example: Switching Between Headed and Headless
-
-```bash
-# Debug with visible browser
-agent-browser open example.com --headed
-agent-browser snapshot -i
-agent-browser click @e1
-
-# Switch to headless for production
-agent-browser close
-agent-browser open example.com  # Headless by default
-agent-browser click @e1
-```
-
-### Key Points
-
-- Use `--headed` flag to show browser window
-- Useful for debugging and visual verification
-- Headless mode is default (faster, no UI)
-- Headed mode is slower but allows visual inspection
-- Use headed mode during development, headless for production

+ 0 - 70
skills/agent-browser/examples/advanced/platforms.md

@@ -1,70 +0,0 @@
-# Platforms | 平台支持
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example lists the supported platforms for agent-browser.
-
-### Key Concepts
-
-- Platform support matrix
-- Native Rust binary availability
-- Node.js fallback
-- Platform-specific considerations
-
-### Platform Support
-
-| Platform | Binary | Fallback |
-|----------|--------|----------|
-| macOS ARM64 | Native Rust | Node.js |
-| macOS x64 | Native Rust | Node.js |
-| Linux ARM64 | Native Rust | Node.js |
-| Linux x64 | Native Rust | Node.js |
-| Windows x64 | Native Rust | Node.js |
-
-### Installation by Platform
-
-**macOS:**
-```bash
-npm install -g agent-browser
-agent-browser install
-```
-
-**Linux:**
-```bash
-npm install -g agent-browser
-agent-browser install --with-deps  # Install system dependencies
-```
-
-**Windows:**
-```bash
-npm install -g agent-browser
-agent-browser install
-```
-
-### Platform-Specific Notes
-
-**macOS:**
-- Native Rust binary available for ARM64 and x64
-- Falls back to Node.js if binary unavailable
-- No additional system dependencies required
-
-**Linux:**
-- Native Rust binary available for ARM64 and x64
-- Requires system dependencies (install with `--with-deps`)
-- Falls back to Node.js if binary unavailable
-
-**Windows:**
-- Native Rust binary available for x64
-- Falls back to Node.js if binary unavailable
-- No additional system dependencies required
-
-### Key Points
-
-- Native Rust binary available for all major platforms
-- Node.js fallback ensures compatibility
-- Linux requires system dependencies
-- All platforms support headless and headed modes
-- Cross-platform compatibility maintained

+ 0 - 95
skills/agent-browser/examples/advanced/sessions.md

@@ -1,95 +0,0 @@
-# Sessions | 会话管理
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to manage multiple isolated browser sessions with agent-browser.
-
-### Key Concepts
-
-- Multiple isolated browser instances
-- Session management via `--session` flag or environment variable
-- Listing and managing active sessions
-- Session isolation (cookies, storage, history, auth state)
-
-### Example: Using Named Sessions
-
-```bash
-# Start session 1
-agent-browser --session agent1 open site-a.com
-agent-browser --session agent1 click "#button"
-
-# Start session 2 (isolated from session 1)
-agent-browser --session agent2 open site-b.com
-agent-browser --session agent2 fill "#input" "value"
-
-# Each session has its own:
-# - Browser instance
-# - Cookies and storage
-# - Navigation history
-# - Authentication state
-```
-
-### Example: Using Environment Variable
-
-```bash
-# Set session via environment variable
-export AGENT_BROWSER_SESSION=agent1
-agent-browser open example.com
-agent-browser click "#btn"
-
-# Switch to different session
-export AGENT_BROWSER_SESSION=agent2
-agent-browser open other-site.com
-```
-
-### Example: Listing Active Sessions
-
-```bash
-# List all active sessions
-agent-browser session list
-
-# Output:
-# Active sessions:
-# -> default
-#    agent1
-#    agent2
-```
-
-### Example: Show Current Session
-
-```bash
-# Show current session name
-agent-browser session
-
-# Output:
-# Current session: agent1
-```
-
-### Example: Session Isolation
-
-```bash
-# Session 1: Login to site A
-agent-browser --session user1 open site-a.com
-agent-browser --session user1 fill "#email" "user1@example.com"
-agent-browser --session user1 fill "#password" "pass1"
-agent-browser --session user1 click "#login"
-
-# Session 2: Login to site A with different user (isolated)
-agent-browser --session user2 open site-a.com
-agent-browser --session user2 fill "#email" "user2@example.com"
-agent-browser --session user2 fill "#password" "pass2"
-agent-browser --session user2 click "#login"
-
-# Each session maintains its own authentication state
-```
-
-### Key Points
-
-- Use `--session <name>` to create isolated browser sessions
-- Each session has its own browser instance, cookies, storage, and history
-- Use `AGENT_BROWSER_SESSION` environment variable for convenience
-- List active sessions with `agent-browser session list`
-- Sessions persist until browser is closed

+ 0 - 140
skills/agent-browser/examples/advanced/streaming.md

@@ -1,140 +0,0 @@
-# Streaming | 流式传输
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to stream the browser viewport via WebSocket for live preview or "pair browsing".
-
-### Key Concepts
-
-- Streaming browser viewport via WebSocket
-- Live preview
-- Pair browsing (human + AI agent)
-- WebSocket protocol
-- Programmatic API
-
-### Example: Enable Streaming
-
-```bash
-# Set stream port environment variable
-export AGENT_BROWSER_STREAM_PORT=9223
-
-# Start browser with streaming
-agent-browser open example.com
-
-# WebSocket server starts on port 9223
-# Connect to ws://localhost:9223 to receive frames
-```
-
-### Example: WebSocket Protocol
-
-**Receive frames:**
-```json
-{
-  "type": "frame",
-  "data": "<base64-encoded-jpeg>",
-  "metadata": {
-    "deviceWidth": 1280,
-    "deviceHeight": 720,
-    "pageScaleFactor": 1,
-    "offsetTop": 0,
-    "scrollOffsetX": 0,
-    "scrollOffsetY": 0
-  }
-}
-```
-
-**Send mouse events:**
-```json
-{
-  "type": "input_mouse",
-  "eventType": "mousePressed",
-  "x": 100,
-  "y": 200,
-  "button": "left",
-  "clickCount": 1
-}
-```
-
-**Send keyboard events:**
-```json
-{
-  "type": "input_keyboard",
-  "eventType": "keyDown",
-  "key": "Enter",
-  "code": "Enter"
-}
-```
-
-**Send touch events:**
-```json
-{
-  "type": "input_touch",
-  "eventType": "touchStart",
-  "touchPoints": [{ "x": 100, "y": 200 }]
-}
-```
-
-### Example: Programmatic API
-
-```typescript
-import { BrowserManager } from 'agent-browser';
-
-const browser = new BrowserManager();
-await browser.launch({ headless: true });
-await browser.navigate('https://example.com');
-
-// Start screencast
-await browser.startScreencast((frame) => {
-  // frame.data is base64-encoded image
-  // frame.metadata contains viewport info
-  console.log('Frame received:', frame.metadata.deviceWidth, 'x', frame.metadata.deviceHeight);
-}, {
-  format: 'jpeg',
-  quality: 80,
-  maxWidth: 1280,
-  maxHeight: 720,
-});
-
-// Inject mouse events
-await browser.injectMouseEvent({
-  type: 'mousePressed',
-  x: 100,
-  y: 200,
-  button: 'left',
-});
-
-// Inject keyboard events
-await browser.injectKeyboardEvent({
-  type: 'keyDown',
-  key: 'Enter',
-  code: 'Enter',
-});
-
-// Stop when done
-await browser.stopScreencast();
-```
-
-### Example: Pair Browsing Workflow
-
-```bash
-# 1. Start streaming
-export AGENT_BROWSER_STREAM_PORT=9223
-agent-browser open example.com
-
-# 2. Human connects to ws://localhost:9223
-# 3. Human can watch AI agent actions in real-time
-# 4. Human can also interact (send mouse/keyboard events)
-# 5. AI agent continues automation while human watches
-```
-
-### Key Points
-
-- Set `AGENT_BROWSER_STREAM_PORT` environment variable to enable streaming
-- WebSocket server starts on specified port
-- Receive frames (base64-encoded JPEG) and metadata
-- Send input events (mouse, keyboard, touch)
-- Useful for live preview and pair browsing scenarios
-- Programmatic API available for advanced use cases

+ 0 - 110
skills/agent-browser/examples/advanced/usage-with-agents.md

@@ -1,110 +0,0 @@
-# Usage with AI Agents | 与 AI 智能体一起使用
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to integrate agent-browser with AI agents.
-
-### Key Concepts
-
-- Integration with AI agents
-- Just ask the agent approach
-- AGENTS.md / CLAUDE.md instructions
-- Claude Code skill
-- Optimal workflow patterns
-
-### Example: Just Ask the Agent
-
-The simplest approach - just tell your agent to use it:
-
-```
-Use agent-browser to test the login flow. Run agent-browser --help to see available commands.
-```
-
-The `--help` output is comprehensive and most agents can figure it out from there.
-
-### Example: AGENTS.md / CLAUDE.md
-
-For more consistent results, add to your project or global instructions file:
-
-```markdown
-## Browser Automation
-
-Use `agent-browser` for web automation. Run `agent-browser --help` for all commands.
-
-Core workflow:
-1. `agent-browser open <url>` - Navigate to page
-2. `agent-browser snapshot -i` - Get interactive elements with refs (@e1, @e2)
-3. `agent-browser click @e1` / `fill @e2 "text"` - Interact using refs
-4. Re-snapshot after page changes
-```
-
-### Example: Claude Code Skill
-
-For Claude Code, a skill provides richer context:
-
-**Option 1: Copy from node_modules**
-```bash
-cp -r node_modules/agent-browser/skills/agent-browser .claude/skills/
-```
-
-**Option 2: Download directly**
-```bash
-mkdir -p .claude/skills/agent-browser
-curl -o .claude/skills/agent-browser/SKILL.md \
-  https://raw.githubusercontent.com/vercel-labs/agent-browser/main/skills/agent-browser/SKILL.md
-```
-
-### Example: Optimal AI Workflow
-
-```bash
-# 1. Navigate and get snapshot
-agent-browser open example.com
-agent-browser snapshot -i --json   # AI parses tree and refs
-
-# 2. AI identifies target refs from snapshot
-# 3. Execute actions using refs
-agent-browser click @e2
-agent-browser fill @e3 "input text"
-
-# 4. Get new snapshot if page changed
-agent-browser snapshot -i --json
-```
-
-### Example: Integration Patterns
-
-**Pattern 1: Simple Automation**
-```bash
-# Agent executes commands sequentially
-agent-browser open example.com
-agent-browser snapshot -i
-agent-browser click @e1
-agent-browser fill @e2 "value"
-agent-browser click @e3
-```
-
-**Pattern 2: With Error Handling**
-```bash
-# Agent checks for errors
-agent-browser open example.com || echo "Failed to open"
-agent-browser snapshot -i || echo "Failed to snapshot"
-agent-browser click @e1 || echo "Failed to click"
-```
-
-**Pattern 3: With JSON Output**
-```bash
-# Agent parses JSON responses
-agent-browser snapshot -i --json | jq '.data.refs'
-agent-browser get text @e1 --json | jq '.data'
-```
-
-### Key Points
-
-- Just ask the agent - simplest approach
-- Add instructions to AGENTS.md / CLAUDE.md for consistency
-- Use Claude Code skill for richer context
-- Follow optimal workflow: snapshot → identify refs → interact → re-snapshot
-- Use `--json` flag for machine-readable output
-- Combine with error handling for robust automation

+ 0 - 142
skills/agent-browser/examples/agent-mode/integration.md

@@ -1,142 +0,0 @@
-# Agent Integration | 代理集成
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to integrate agent-browser with AI agents.
-
-### Key Concepts
-
-- Integrating with Claude
-- Integrating with Cursor
-- Integrating with Copilot
-- Integrating with OpenAI
-- Integrating with Gemini
-- Adding to agent skills
-
-### Example: Claude Integration
-
-```bash
-# Add to Claude's skills/AGENTS.md or similar
-# agent-browser: Browser automation CLI for AI agents
-# - Use snapshot --json to get page state
-# - Use refs (@e1, @e2) for element selection
-# - Use --session to maintain state
-```
-
-### Example: Cursor Integration
-
-```bash
-# Configure Cursor to use agent-browser
-# Add agent-browser commands to Cursor's tool set
-# Use JSON output for structured responses
-```
-
-### Example: Basic Integration Pattern
-
-```javascript
-// Example: Node.js integration
-const { exec } = require('child_process');
-const util = require('util');
-const execPromise = util.promisify(exec);
-
-async function agentBrowserCommand(command) {
-  try {
-    const { stdout, stderr } = await execPromise(
-      `agent-browser ${command} --json`
-    );
-    return JSON.parse(stdout);
-  } catch (error) {
-    return { error: error.message };
-  }
-}
-
-// Usage
-const snapshot = await agentBrowserCommand('snapshot --session my-task');
-const refs = snapshot.refs;
-await agentBrowserCommand(`click ${refs['@e1'].ref} --session my-task`);
-```
-
-### Example: Python Integration
-
-```python
-import subprocess
-import json
-
-def agent_browser_command(command):
-    try:
-        result = subprocess.run(
-            f"agent-browser {command} --json",
-            shell=True,
-            capture_output=True,
-            text=True
-        )
-        return json.loads(result.stdout)
-    except Exception as e:
-        return {"error": str(e)}
-
-# Usage
-snapshot = agent_browser_command("snapshot --session my-task")
-refs = snapshot.get("refs", {})
-agent_browser_command(f"click {refs['@e1']['ref']} --session my-task")
-```
-
-### Example: Agent Skill Definition
-
-```markdown
-## agent-browser
-
-Browser automation CLI tool for AI agents.
-
-### Commands:
-- `agent-browser open <url>` - Navigate to URL
-- `agent-browser snapshot --json` - Get page snapshot with refs
-- `agent-browser click <ref>` - Click element by ref
-- `agent-browser fill <ref> <text>` - Fill input by ref
-
-### Workflow:
-1. Open page: `agent-browser open <url> --session <name> --json`
-2. Snapshot: `agent-browser snapshot --json --session <name>`
-3. Interact: Use refs from snapshot
-4. Verify: Snapshot again after changes
-```
-
-### Example: Agent Workflow Integration
-
-```bash
-# Agent receives task: "Login to example.com"
-
-# Step 1: Agent executes
-agent-browser open https://example.com/login --session task1 --json
-
-# Step 2: Agent gets snapshot
-agent-browser snapshot --json --session task1
-
-# Step 3: Agent parses JSON, identifies:
-# - @e1 = email input
-# - @e2 = password input  
-# - @e3 = login button
-
-# Step 4: Agent fills form
-agent-browser fill @e1 "user@example.com" --session task1 --json
-agent-browser fill @e2 "password" --session task1 --json
-
-# Step 5: Agent submits
-agent-browser click @e3 --session task1 --json
-
-# Step 6: Agent verifies
-agent-browser snapshot --json --session task1
-```
-
-### Key Points
-
-- Integrate via command-line interface
-- Use `--json` for structured output
-- Parse JSON responses in your agent code
-- Use sessions for state management
-- Follow standard workflow pattern
-- Handle errors appropriately
-- Document agent-browser in agent skills
-- Use refs for reliable element selection

+ 0 - 129
skills/agent-browser/examples/agent-mode/introduction.md

@@ -1,129 +0,0 @@
-# Agent Mode Introduction | 代理模式介绍
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates agent mode in agent-browser for AI agent integration.
-
-### Key Concepts
-
-- What is agent mode
-- JSON output format
-- Machine-readable commands
-- AI agent integration
-- Agent mode benefits
-
-### Example: Basic Agent Mode
-
-```bash
-# Enable JSON output for machine-readable format
-agent-browser snapshot --json
-
-# Output example:
-# {
-#   "type": "snapshot",
-#   "refs": {
-#     "@e1": {
-#       "role": "button",
-#       "name": "Submit",
-#       "selector": "button.submit"
-#     }
-#   }
-# }
-```
-
-### Example: JSON Output for Commands
-
-```bash
-# Get text with JSON output
-agent-browser get text @e1 --json
-
-# Output:
-# {
-#   "type": "text",
-#   "value": "Submit",
-#   "ref": "@e1"
-# }
-
-# Get attribute with JSON
-agent-browser get attribute @e1 href --json
-
-# Output:
-# {
-#   "type": "attribute",
-#   "name": "href",
-#   "value": "/login",
-#   "ref": "@e1"
-# }
-```
-
-### Example: Snapshot in Agent Mode
-
-```bash
-# Snapshot with JSON for AI parsing
-agent-browser snapshot --json
-
-# Compact JSON output
-agent-browser snapshot -c --json
-
-# Interactive snapshot with JSON
-agent-browser snapshot -i --json
-```
-
-### Example: Complete Agent Mode Workflow
-
-```bash
-# 1. Open page
-agent-browser open https://example.com --json
-
-# 2. Get snapshot
-agent-browser snapshot --json
-
-# 3. Parse refs from JSON output
-# AI agent identifies: @e1 = login button, @e2 = email input
-
-# 4. Interact using refs
-agent-browser fill @e2 "user@example.com" --json
-agent-browser click @e1 --json
-
-# 5. Verify result
-agent-browser snapshot --json
-```
-
-### Example: Agent Mode with Session
-
-```bash
-# Start session
-agent-browser open https://example.com --session agent-session --json
-
-# Continue in same session
-agent-browser snapshot --session agent-session --json
-agent-browser click @e1 --session agent-session --json
-agent-browser fill @e2 "text" --session agent-session --json
-```
-
-### Example: Error Handling in Agent Mode
-
-```bash
-# Commands return JSON errors
-agent-browser click @e999 --json
-
-# Output:
-# {
-#   "error": "Element not found",
-#   "ref": "@e999",
-#   "command": "click"
-# }
-```
-
-### Key Points
-
-- Agent mode uses `--json` flag for machine-readable output
-- JSON output is essential for AI agent integration
-- Snapshot with JSON provides structured refs
-- All commands support `--json` flag
-- Use sessions to maintain state across commands
-- Error messages are also in JSON format
-- Agent mode enables deterministic automation

+ 0 - 135
skills/agent-browser/examples/agent-mode/optimal-workflow.md

@@ -1,135 +0,0 @@
-# Optimal AI Workflow | 最优 AI 工作流
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates the optimal workflow for AI agents using agent-browser.
-
-### Key Concepts
-
-- Standard workflow steps
-- Snapshot-first approach
-- Ref-based interaction
-- State management
-- Error recovery
-
-### Example: Standard Workflow
-
-```bash
-# Step 1: Open the page
-agent-browser open https://example.com --session my-task --json
-
-# Step 2: Get snapshot with refs
-agent-browser snapshot -i --json --session my-task
-
-# Step 3: AI agent parses snapshot JSON
-# Identifies available elements and their refs:
-# @e1 = login button
-# @e2 = email input
-# @e3 = password input
-
-# Step 4: Interact using refs
-agent-browser fill @e2 "user@example.com" --session my-task --json
-agent-browser fill @e3 "password123" --session my-task --json
-agent-browser click @e1 --session my-task --json
-
-# Step 5: Verify page changed (snapshot again)
-agent-browser snapshot --json --session my-task
-
-# Step 6: Continue with new refs from updated snapshot
-agent-browser click @e4 --session my-task --json
-```
-
-### Example: Snapshot-First Pattern
-
-```bash
-# Always snapshot before interaction
-agent-browser snapshot --json > current-state.json
-
-# AI agent analyzes snapshot
-# Decides next action based on available refs
-
-# Execute action
-agent-browser click @e1 --json
-
-# Snapshot again to verify
-agent-browser snapshot --json > new-state.json
-```
-
-### Example: Ref-Based Interaction
-
-```bash
-# Get refs
-agent-browser snapshot --json
-
-# Use refs (deterministic)
-agent-browser click @e1 --json
-agent-browser fill @e2 "text" --json
-agent-browser click @e3 --json
-
-# Refs are stable and reliable
-```
-
-### Example: State Management with Sessions
-
-```bash
-# Create session
-agent-browser open https://example.com --session task1 --json
-
-# All subsequent commands use same session
-agent-browser snapshot --session task1 --json
-agent-browser click @e1 --session task1 --json
-agent-browser fill @e2 "text" --session task1 --json
-
-# Session maintains browser state
-```
-
-### Example: Error Recovery
-
-```bash
-# Try action
-agent-browser click @e1 --json
-
-# If error, snapshot again
-agent-browser snapshot --json
-
-# Get updated refs
-# Retry with new refs
-agent-browser click @e2 --json
-```
-
-### Example: Complete Task Workflow
-
-```bash
-# 1. Initialize
-agent-browser open https://example.com/login --session login-task --json
-
-# 2. Analyze page
-agent-browser snapshot --json --session login-task > page1.json
-
-# 3. Fill form
-agent-browser fill @e2 "user@example.com" --session login-task --json
-agent-browser fill @e3 "password" --session login-task --json
-
-# 4. Submit
-agent-browser click @e1 --session login-task --json
-
-# 5. Verify success
-agent-browser snapshot --json --session login-task > page2.json
-
-# 6. Continue if needed
-agent-browser click @e4 --session login-task --json
-```
-
-### Key Points
-
-- Always start with `open` command
-- Always `snapshot` before interacting
-- Use refs from snapshot for interaction
-- Use `--session` to maintain state
-- Snapshot again after page changes
-- Use `--json` for machine-readable output
-- Handle errors by re-snapshotting
-- Follow: open → snapshot → interact → snapshot pattern

+ 0 - 123
skills/agent-browser/examples/commands/advanced-commands.md

@@ -1,123 +0,0 @@
-# Advanced Commands | 高级命令
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use advanced agent-browser commands.
-
-### Key Concepts
-
-- Snapshot command
-- Eval command
-- Screenshot and PDF
-- Close command
-- Command options
-
-### Example: Snapshot
-
-```bash
-# Basic snapshot (accessibility tree with refs)
-agent-browser snapshot
-
-# Interactive snapshot
-agent-browser snapshot -i
-
-# Compact snapshot
-agent-browser snapshot -c
-
-# Snapshot with depth limit
-agent-browser snapshot -d 2
-
-# Snapshot specific element
-agent-browser snapshot -s "main"
-
-# Full snapshot
-agent-browser snapshot --full
-
-# Snapshot with JSON output
-agent-browser snapshot --json
-```
-
-### Example: Eval
-
-```bash
-# Evaluate JavaScript
-agent-browser eval "document.title"
-
-# Evaluate with return value
-agent-browser eval "document.querySelector('h1').textContent"
-
-# Evaluate complex expression
-agent-browser eval "Array.from(document.querySelectorAll('a')).map(a => a.href)"
-```
-
-### Example: Screenshot and PDF
-
-```bash
-# Take screenshot
-agent-browser screenshot output.png
-
-# Screenshot full page
-agent-browser screenshot output.png --full
-
-# Generate PDF
-agent-browser pdf output.pdf
-
-# PDF with options
-agent-browser pdf output.pdf --format A4 --print-background
-```
-
-### Example: Close
-
-```bash
-# Close current page
-agent-browser close
-
-# Close all pages
-agent-browser close --all
-```
-
-### Example: Snapshot Workflow
-
-```bash
-# 1. Open page
-agent-browser open https://example.com
-
-# 2. Get snapshot with refs
-agent-browser snapshot -i --json
-
-# 3. Use refs from snapshot
-agent-browser click @e1
-agent-browser fill @e2 "text"
-
-# 4. Snapshot again after interaction
-agent-browser snapshot --json
-```
-
-### Example: Eval Workflow
-
-```bash
-# Open page
-agent-browser open https://example.com
-
-# Extract data using eval
-agent-browser eval "document.querySelectorAll('article').length"
-
-# Get all links
-agent-browser eval "Array.from(document.querySelectorAll('a')).map(a => ({text: a.textContent, href: a.href}))"
-
-# Check if element exists
-agent-browser eval "!!document.querySelector('.modal')"
-```
-
-### Key Points
-
-- Use `snapshot` to get accessibility tree with refs
-- Use `-i` for interactive snapshot selection
-- Use `--json` for machine-readable output
-- Use `eval` for custom JavaScript execution
-- Use `screenshot` and `pdf` for capturing pages
-- Always snapshot before interacting with elements
-- Use refs from snapshot for reliable element selection

+ 0 - 127
skills/agent-browser/examples/commands/basic-commands.md

@@ -1,127 +0,0 @@
-# Basic Commands | 基础命令
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use basic agent-browser commands.
-
-### Key Concepts
-
-- Navigation commands
-- Interaction commands
-- Input commands
-- Form commands
-- Mouse commands
-
-### Example: Navigation
-
-```bash
-# Open a URL (aliases: goto, navigate)
-agent-browser open https://example.com
-
-# Open with session
-agent-browser open https://example.com --session my-session
-```
-
-### Example: Clicking Elements
-
-```bash
-# Click an element using ref
-agent-browser click @e1
-
-# Click using CSS selector
-agent-browser click button.submit
-
-# Click using XPath
-agent-browser click "//button[@type='submit']"
-
-# Double-click
-agent-browser dblclick @e2
-
-# Right-click
-agent-browser click @e3 --button right
-```
-
-### Example: Typing and Filling
-
-```bash
-# Type text into an element
-agent-browser type @e1 "Hello World"
-
-# Fill an input field
-agent-browser fill @e2 "username@example.com"
-
-# Press a key
-agent-browser press @e1 Enter
-
-# Key down
-agent-browser keydown @e1 Control
-
-# Key up
-agent-browser keyup @e1 Control
-```
-
-### Example: Form Interactions
-
-```bash
-# Focus an element
-agent-browser focus @e1
-
-# Select an option
-agent-browser select @e1 "Option 1"
-
-# Check a checkbox
-agent-browser check @e1
-
-# Uncheck a checkbox
-agent-browser uncheck @e1
-```
-
-### Example: Mouse Actions
-
-```bash
-# Hover over an element
-agent-browser hover @e1
-
-# Scroll
-agent-browser scroll @e1
-
-# Scroll to element
-agent-browser scroll @e1 --to
-```
-
-### Example: Getting Element Information
-
-```bash
-# Get text content
-agent-browser get text @e1
-
-# Get attribute
-agent-browser get attribute @e1 href
-
-# Get property
-agent-browser get property @e1 value
-```
-
-### Example: Command Chaining
-
-```bash
-# Open page, then click
-agent-browser open https://example.com && agent-browser click @e1
-
-# Using session for state
-agent-browser open https://example.com --session test
-agent-browser click @e1 --session test
-agent-browser fill @e2 "text" --session test
-```
-
-### Key Points
-
-- Use `open` to navigate to URLs
-- Use refs (@e1, @e2) for deterministic selection
-- Commands automatically wait for navigation
-- Use `--session` to maintain state
-- Commands support CSS selectors, XPath, and semantic locators
-- All commands return appropriate exit codes

+ 0 - 116
skills/agent-browser/examples/getting-started/installation.md

@@ -1,116 +0,0 @@
-# Installation | 安装
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to install agent-browser CLI tool.
-
-### Key Concepts
-
-- npm global installation
-- Installing browser binaries
-- Building from source
-- System dependencies
-- Custom executable path
-
-### Example: npm Installation (Recommended)
-
-```bash
-# Install agent-browser globally
-npm install -g agent-browser
-
-# Install browser binaries
-agent-browser install
-```
-
-### Example: Building from Source
-
-```bash
-# Clone the repository
-git clone https://github.com/vercel-labs/agent-browser.git
-cd agent-browser
-
-# Install dependencies
-pnpm install
-
-# Build the project
-pnpm build
-
-# For native builds
-pnpm build:native
-
-# Link globally (optional)
-pnpm link --global
-```
-
-### Example: Linux System Dependencies
-
-```bash
-# Install with system dependencies (recommended)
-agent-browser install --with-deps
-
-# Or manually install Playwright dependencies
-# Ubuntu/Debian
-sudo apt-get install -y \
-  libnss3 \
-  libnspr4 \
-  libatk1.0-0 \
-  libatk-bridge2.0-0 \
-  libcups2 \
-  libdrm2 \
-  libdbus-1-3 \
-  libxkbcommon0 \
-  libxcomposite1 \
-  libxdamage1 \
-  libxfixes3 \
-  libxrandr2 \
-  libgbm1 \
-  libasound2
-
-# Fedora
-sudo dnf install -y \
-  nss \
-  nspr \
-  atk \
-  at-spi2-atk \
-  cups-libs \
-  libdrm \
-  dbus \
-  libxkbcommon \
-  libXcomposite \
-  libXdamage \
-  libXfixes \
-  libXrandr \
-  mesa-libgbm \
-  alsa-lib
-```
-
-### Example: Custom Executable Path
-
-```bash
-# Set custom browser executable path
-export AGENT_BROWSER_EXECUTABLE_PATH=/path/to/chromium
-
-# Or use --executable-path flag
-agent-browser open example.com --executable-path /path/to/chromium
-```
-
-### Example: Verify Installation
-
-```bash
-# Check version
-agent-browser --version
-
-# Test basic command
-agent-browser open example.com
-```
-
-### Key Points
-
-- Install globally with `npm install -g agent-browser`
-- Run `agent-browser install` to download browser binaries
-- Install system dependencies on Linux
-- Use custom executable path if needed
-- Verify installation with `--version` flag

+ 0 - 135
skills/agent-browser/examples/options/global-options.md

@@ -1,135 +0,0 @@
-# Global Options | 全局选项
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates global options available in agent-browser.
-
-### Key Concepts
-
-- Session management
-- Headers configuration
-- Headed/headless mode
-- Executable path
-- CDP integration
-- Debug mode
-- JSON output
-
-### Example: Session Management
-
-```bash
-# Create named session
-agent-browser open https://example.com --session my-session
-
-# Use session in subsequent commands
-agent-browser click @e1 --session my-session
-agent-browser fill @e2 "text" --session my-session
-
-# Session maintains browser state
-```
-
-### Example: Headers Configuration
-
-```bash
-# Set custom headers
-agent-browser open https://example.com --headers '{"User-Agent": "MyBot/1.0"}'
-
-# Or use environment variable
-export AGENT_BROWSER_HEADERS='{"User-Agent": "MyBot/1.0"}'
-agent-browser open https://example.com
-```
-
-### Example: Headed Mode
-
-```bash
-# Run in headed mode (visible browser)
-agent-browser open https://example.com --headed
-
-# Useful for debugging
-agent-browser snapshot --headed
-agent-browser click @e1 --headed
-```
-
-### Example: Executable Path
-
-```bash
-# Use custom browser executable
-agent-browser open https://example.com --executable-path /path/to/chromium
-
-# Or use environment variable
-export AGENT_BROWSER_EXECUTABLE_PATH=/path/to/chromium
-agent-browser open https://example.com
-```
-
-### Example: CDP Integration
-
-```bash
-# Connect to existing Chrome via CDP
-agent-browser open https://example.com --cdp 9222
-
-# Use with Chrome running with remote debugging
-# chrome --remote-debugging-port=9222
-```
-
-### Example: Debug Mode
-
-```bash
-# Enable debug output
-agent-browser open https://example.com --debug
-
-# Debug shows detailed information
-agent-browser snapshot --debug
-```
-
-### Example: JSON Output
-
-```bash
-# Get JSON output for all commands
-agent-browser open https://example.com --json
-agent-browser snapshot --json
-agent-browser click @e1 --json
-agent-browser get text @e1 --json
-```
-
-### Example: Combining Options
-
-```bash
-# Use multiple options together
-agent-browser open https://example.com \
-  --session my-task \
-  --headed \
-  --headers '{"User-Agent": "MyBot"}' \
-  --json
-
-# All subsequent commands can use session
-agent-browser snapshot --session my-task --json
-agent-browser click @e1 --session my-task --json
-```
-
-### Example: Environment Variables
-
-```bash
-# Set session via environment
-export AGENT_BROWSER_SESSION=my-session
-agent-browser open https://example.com
-agent-browser click @e1  # Uses my-session automatically
-
-# Set executable path
-export AGENT_BROWSER_EXECUTABLE_PATH=/path/to/chromium
-
-# Set headers
-export AGENT_BROWSER_HEADERS='{"User-Agent": "MyBot"}'
-```
-
-### Key Points
-
-- Use `--session` to maintain state across commands
-- Use `--headers` for custom HTTP headers
-- Use `--headed` for visible browser (debugging)
-- Use `--executable-path` for custom browser
-- Use `--cdp` for Chrome DevTools Protocol
-- Use `--debug` for detailed output
-- Use `--json` for machine-readable output
-- Options can be set via environment variables

+ 0 - 117
skills/agent-browser/examples/options/session-options.md

@@ -1,117 +0,0 @@
-# Session Options | 会话选项
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates session management options in agent-browser.
-
-### Key Concepts
-
-- Creating sessions
-- Using sessions
-- Session state
-- Session persistence
-- Environment variables
-
-### Example: Creating Sessions
-
-```bash
-# Create session on open
-agent-browser open https://example.com --session my-session
-
-# Session is created and maintained
-```
-
-### Example: Using Sessions
-
-```bash
-# All commands can use the session
-agent-browser open https://example.com --session task1
-agent-browser snapshot --session task1
-agent-browser click @e1 --session task1
-agent-browser fill @e2 "text" --session task1
-agent-browser click @e3 --session task1
-```
-
-### Example: Session State
-
-```bash
-# Session maintains browser state
-agent-browser open https://example.com --session login
-agent-browser fill @e1 "user@example.com" --session login
-agent-browser fill @e2 "password" --session login
-agent-browser click @e3 --session login
-
-# Now logged in, continue in same session
-agent-browser snapshot --session login
-agent-browser click @e4 --session login
-```
-
-### Example: Multiple Sessions
-
-```bash
-# Create multiple independent sessions
-agent-browser open https://site1.com --session session1
-agent-browser open https://site2.com --session session2
-
-# Work with each independently
-agent-browser snapshot --session session1
-agent-browser snapshot --session session2
-```
-
-### Example: Environment Variable
-
-```bash
-# Set session via environment variable
-export AGENT_BROWSER_SESSION=my-session
-
-# Commands automatically use session
-agent-browser open https://example.com
-agent-browser snapshot
-agent-browser click @e1
-```
-
-### Example: Session with JSON
-
-```bash
-# Session with JSON output
-agent-browser open https://example.com --session task1 --json
-agent-browser snapshot --session task1 --json
-agent-browser click @e1 --session task1 --json
-```
-
-### Example: Session Workflow
-
-```bash
-# Complete workflow with session
-agent-browser open https://example.com/login --session login-task --json
-
-# Step 1: Analyze page
-agent-browser snapshot --session login-task --json
-
-# Step 2: Fill form
-agent-browser fill @e1 "user@example.com" --session login-task --json
-agent-browser fill @e2 "password" --session login-task --json
-
-# Step 3: Submit
-agent-browser click @e3 --session login-task --json
-
-# Step 4: Verify
-agent-browser snapshot --session login-task --json
-
-# Step 5: Continue
-agent-browser click @e4 --session login-task --json
-```
-
-### Key Points
-
-- Use `--session <name>` to create/maintain sessions
-- Sessions preserve browser state
-- All commands can use `--session`
-- Multiple sessions can run independently
-- Set session via environment variable
-- Sessions work with JSON output
-- Sessions maintain cookies and state
-- Use sessions for multi-step workflows

+ 0 - 146
skills/agent-browser/examples/options/snapshot-options.md

@@ -1,146 +0,0 @@
-# Snapshot Options | 快照选项
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates snapshot-specific options in agent-browser.
-
-### Key Concepts
-
-- Interactive snapshot
-- Compact format
-- Depth limit
-- Selector filter
-- Full snapshot
-- Name option
-- Exact match
-
-### Example: Interactive Snapshot
-
-```bash
-# Interactive mode for selecting elements
-agent-browser snapshot -i
-
-# Or long form
-agent-browser snapshot --interactive
-
-# Allows interactive element selection
-```
-
-### Example: Compact Format
-
-```bash
-# Compact snapshot output
-agent-browser snapshot -c
-
-# Or long form
-agent-browser snapshot --compact
-
-# More concise output format
-```
-
-### Example: Depth Limit
-
-```bash
-# Limit snapshot depth
-agent-browser snapshot -d 2
-
-# Or long form
-agent-browser snapshot --depth 2
-
-# Limits how deep the tree goes
-```
-
-### Example: Selector Filter
-
-```bash
-# Snapshot specific element and its children
-agent-browser snapshot -s "main"
-
-# Or long form
-agent-browser snapshot --selector "main"
-
-# Only snapshots matching selector
-```
-
-### Example: Full Snapshot
-
-```bash
-# Full snapshot (all details)
-agent-browser snapshot --full
-
-# Or short form
-agent-browser snapshot -f
-
-# Includes all element details
-```
-
-### Example: Name Option
-
-```bash
-# Snapshot with name filter
-agent-browser snapshot -n "Submit"
-
-# Or long form
-agent-browser snapshot --name "Submit"
-
-# Filters by accessible name
-```
-
-### Example: Exact Match
-
-```bash
-# Exact name match
-agent-browser snapshot --name "Submit" --exact
-
-# Or short form
-agent-browser snapshot -n "Submit" -e
-
-# Requires exact name match
-```
-
-### Example: Combining Snapshot Options
-
-```bash
-# Interactive, compact, with depth limit
-agent-browser snapshot -i -c -d 2
-
-# Full snapshot of specific selector
-agent-browser snapshot --full -s "form"
-
-# JSON output with compact format
-agent-browser snapshot -c --json
-
-# Interactive snapshot with JSON
-agent-browser snapshot -i --json
-```
-
-### Example: Snapshot Workflow
-
-```bash
-# 1. Get full snapshot
-agent-browser snapshot --full --json
-
-# 2. Get compact snapshot for overview
-agent-browser snapshot -c --json
-
-# 3. Get snapshot of specific area
-agent-browser snapshot -s "main" --json
-
-# 4. Interactive snapshot to find element
-agent-browser snapshot -i --json
-```
-
-### Key Points
-
-- Use `-i` for interactive element selection
-- Use `-c` for compact, concise output
-- Use `-d` to limit tree depth
-- Use `-s` to snapshot specific element
-- Use `--full` for complete details
-- Use `-n` to filter by name
-- Use `--exact` for exact name matching
-- Combine options as needed
-- Always use `--json` in agent mode

+ 0 - 85
skills/agent-browser/examples/quick-start/quick-start.md

@@ -1,85 +0,0 @@
-# Quick Start | 快速开始
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates the quick start workflow with agent-browser.
-
-### Key Concepts
-
-- Basic workflow
-- Using refs
-- Traditional selectors
-- Common commands
-
-### Example: Basic Workflow
-
-```bash
-# 1. Open a page
-agent-browser open example.com
-
-# 2. Get snapshot with refs
-agent-browser snapshot
-# Output:
-# - heading "Example Domain" [ref=e1] [level=1]
-# - button "Submit" [ref=e2]
-# - textbox "Email" [ref=e3]
-# - link "Learn more" [ref=e4]
-
-# 3. Click by ref from snapshot
-agent-browser click @e2
-
-# 4. Fill by ref
-agent-browser fill @e3 "test@example.com"
-
-# 5. Get text by ref
-agent-browser get text @e1
-
-# 6. Take screenshot
-agent-browser screenshot page.png
-
-# 7. Close browser
-agent-browser close
-```
-
-### Example: Traditional Selectors
-
-```bash
-# Using CSS selectors
-agent-browser click "#submit"
-agent-browser fill "#email" "test@example.com"
-
-# Using semantic locators
-agent-browser find role button click --name "Submit"
-```
-
-### Example: Complete Workflow
-
-```bash
-# Navigate
-agent-browser open example.com
-
-# Get snapshot
-agent-browser snapshot
-
-# Interact using refs
-agent-browser click @e2
-agent-browser fill @e3 "test@example.com"
-agent-browser get text @e1
-
-# Capture
-agent-browser screenshot page.png
-
-# Close
-agent-browser close
-```
-
-### Key Points
-
-- Start with `open` to navigate
-- Use `snapshot` to get refs
-- Use refs (@e1, @e2) for interaction
-- Use traditional selectors as fallback
-- Always close when done

+ 0 - 122
skills/agent-browser/examples/selectors/refs.md

@@ -1,122 +0,0 @@
-# Refs | 引用
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use refs for element selection in agent-browser.
-
-### Key Concepts
-
-- What are refs
-- Getting refs from snapshot
-- Using refs in commands
-- Refs advantages
-- Refs workflow
-
-### Example: Getting Refs from Snapshot
-
-```bash
-# Get snapshot with refs
-agent-browser snapshot
-
-# Output example:
-# @e1 button "Submit"
-# @e2 input[name="email"]
-# @e3 a[href="/login"]
-```
-
-### Example: Using Refs in Commands
-
-```bash
-# Click using ref
-agent-browser click @e1
-
-# Fill using ref
-agent-browser fill @e2 "user@example.com"
-
-# Get text using ref
-agent-browser get text @e3
-
-# Multiple refs
-agent-browser click @e1
-agent-browser fill @e2 "text"
-agent-browser click @e3
-```
-
-### Example: Interactive Snapshot for Refs
-
-```bash
-# Interactive snapshot to select element and get ref
-agent-browser snapshot -i
-
-# This allows you to interactively select elements and see their refs
-```
-
-### Example: Refs with JSON Output
-
-```bash
-# Get snapshot as JSON with refs
-agent-browser snapshot --json
-
-# Output example:
-# {
-#   "refs": {
-#     "@e1": {
-#       "role": "button",
-#       "name": "Submit",
-#       "selector": "button.submit"
-#     },
-#     "@e2": {
-#       "role": "textbox",
-#       "name": "Email",
-#       "selector": "input[name='email']"
-#     }
-#   }
-# }
-```
-
-### Example: Complete Refs Workflow
-
-```bash
-# 1. Open page
-agent-browser open https://example.com
-
-# 2. Get snapshot with refs
-agent-browser snapshot --json > snapshot.json
-
-# 3. Parse refs from JSON (in your script)
-# @e1 = submit button
-# @e2 = email input
-# @e3 = password input
-
-# 4. Use refs for interaction
-agent-browser fill @e2 "user@example.com" --session login
-agent-browser fill @e3 "password123" --session login
-agent-browser click @e1 --session login
-```
-
-### Example: Refs Advantages
-
-```bash
-# Refs are deterministic - same element always gets same ref
-agent-browser snapshot
-# @e1 button "Login"
-
-# Even if page structure changes, ref points to same element
-agent-browser click @e1  # Always clicks the Login button
-
-# Traditional selector might break:
-agent-browser click "button.login"  # Might not work if class changes
-```
-
-### Key Points
-
-- Refs are deterministic identifiers (@e1, @e2, etc.)
-- Get refs from `snapshot` command
-- Refs are AI-friendly and stable
-- Use `--json` flag for machine-readable refs
-- Refs work better than CSS selectors for dynamic pages
-- Always snapshot before using refs
-- Refs persist within a session

+ 0 - 139
skills/agent-browser/examples/selectors/traditional-selectors.md

@@ -1,139 +0,0 @@
-# Traditional Selectors | 传统选择器
-
-**官方文档**: https://github.com/vercel-labs/agent-browser/blob/main/README.md
-
-
-## Instructions
-
-This example demonstrates how to use traditional selectors (CSS, XPath, semantic locators) in agent-browser.
-
-### Key Concepts
-
-- CSS selectors
-- XPath selectors
-- Semantic locators
-- ID and class selectors
-- When to use each type
-
-### Example: CSS Selectors
-
-```bash
-# Element selector
-agent-browser click button
-
-# Class selector
-agent-browser click .submit-button
-
-# ID selector
-agent-browser click #login-btn
-
-# Attribute selector
-agent-browser click input[name="email"]
-
-# Descendant selector
-agent-browser click form .submit
-
-# Pseudo-selector
-agent-browser click button:first-child
-```
-
-### Example: XPath Selectors
-
-```bash
-# Basic XPath
-agent-browser click "//button"
-
-# XPath with attribute
-agent-browser click "//button[@type='submit']"
-
-# XPath with text
-agent-browser click "//button[text()='Submit']"
-
-# XPath with contains
-agent-browser click "//button[contains(@class, 'submit')]"
-
-# Complex XPath
-agent-browser click "//form[@id='login']//button[@type='submit']"
-```
-
-### Example: Semantic Locators
-
-```bash
-# Role-based selector
-agent-browser click role=button
-
-# Role with name
-agent-browser click role=button name="Submit"
-
-# Role with accessible name
-agent-browser click role=textbox name="Email"
-
-# Link by accessible name
-agent-browser click role=link name="Login"
-
-# Heading by level and name
-agent-browser get text role=heading name="Welcome" level=1
-```
-
-### Example: ID and Class Selectors
-
-```bash
-# ID selector
-agent-browser click #my-button
-
-# Class selector
-agent-browser click .my-class
-
-# Multiple classes
-agent-browser click .btn.primary
-
-# Element with class
-agent-browser click button.primary
-```
-
-### Example: Combining Selectors
-
-```bash
-# CSS selector in command
-agent-browser fill input[name="email"] "user@example.com"
-
-# XPath in command
-agent-browser click "//form//button[@type='submit']"
-
-# Semantic locator in command
-agent-browser click role=button name="Submit"
-```
-
-### Example: When to Use Each Selector
-
-```bash
-# Use CSS selectors for:
-# - Simple, stable selectors
-# - Well-structured HTML
-agent-browser click button.submit
-
-# Use XPath for:
-# - Complex element relationships
-# - Text-based selection
-agent-browser click "//button[text()='Submit']"
-
-# Use semantic locators for:
-# - Accessibility-focused selection
-# - When structure might change
-agent-browser click role=button name="Submit"
-
-# Use refs for:
-# - Deterministic selection (preferred)
-# - AI agent workflows
-agent-browser click @e1
-```
-
-### Key Points
-
-- CSS selectors: Simple and fast, but can break with structure changes
-- XPath: Powerful but complex, good for text-based selection
-- Semantic locators: Accessibility-focused, more stable
-- Refs: Most reliable, preferred for AI agents
-- Choose selector type based on stability needs
-- Semantic locators are more maintainable than CSS
-- Always prefer refs when available

+ 0 - 88
skills/agent-browser/templates/ai-agent-workflow.md

@@ -1,88 +0,0 @@
-# AI Agent Workflow Template | AI 代理工作流模板
-
-## Template
-
-Complete AI agent workflow using agent-browser with JSON output.
-
-```bash
-#!/bin/bash
-
-SESSION="agent-task"
-
-# Step 1: Open page
-agent-browser open https://example.com/login --session $SESSION --json
-
-# Step 2: Get snapshot with refs (JSON)
-agent-browser snapshot --json --session $SESSION > snapshot1.json
-
-# Step 3: AI agent parses snapshot1.json
-# Identifies: @e1 = email input, @e2 = password input, @e3 = login button
-
-# Step 4: Fill form
-agent-browser fill @e1 "user@example.com" --session $SESSION --json
-agent-browser fill @e2 "password123" --session $SESSION --json
-
-# Step 5: Submit
-agent-browser click @e3 --session $SESSION --json
-
-# Step 6: Verify page changed
-agent-browser snapshot --json --session $SESSION > snapshot2.json
-
-# Step 7: AI agent analyzes snapshot2.json
-# Identifies new refs: @e4 = dashboard link, @e5 = settings button
-
-# Step 8: Continue interaction
-agent-browser click @e4 --session $SESSION --json
-agent-browser snapshot --json --session $SESSION > snapshot3.json
-```
-
-## Python Integration Example
-
-```python
-import subprocess
-import json
-
-def agent_browser(command):
-    result = subprocess.run(
-        f"agent-browser {command} --json",
-        shell=True,
-        capture_output=True,
-        text=True
-    )
-    return json.loads(result.stdout)
-
-# Workflow
-session = "my-task"
-
-# Open page
-agent_browser(f"open https://example.com --session {session}")
-
-# Get snapshot
-snapshot = agent_browser(f"snapshot --json --session {session}")
-refs = snapshot.get("refs", {})
-
-# Interact
-agent_browser(f"fill {refs['@e1']['ref']} user@example.com --session {session}")
-agent_browser(f"fill {refs['@e2']['ref']} password --session {session}")
-agent_browser(f"click {refs['@e3']['ref']} --session {session}")
-
-# Verify
-new_snapshot = agent_browser(f"snapshot --json --session {session}")
-```
-
-## Usage
-
-1. Install agent-browser: `npm install -g agent-browser && agent-browser install`
-2. Use the template workflow
-3. Parse JSON output in your agent code
-4. Use refs for element interaction
-5. Snapshot after each page change
-
-## Key Points
-
-- Always use `--json` for machine-readable output
-- Use `--session` to maintain state
-- Snapshot before and after interactions
-- Parse JSON to extract refs
-- Use refs for reliable element selection
-- Follow: open → snapshot → interact → snapshot pattern

+ 0 - 41
skills/agent-browser/templates/basic-automation.md

@@ -1,41 +0,0 @@
-# Basic Automation Template | 基础自动化模板
-
-## Template
-
-Basic browser automation workflow using agent-browser.
-
-```bash
-#!/bin/bash
-
-# Step 1: Open the page
-agent-browser open https://example.com --session my-task
-
-# Step 2: Get snapshot with refs
-agent-browser snapshot --session my-task
-
-# Step 3: Interact with elements using refs
-agent-browser click @e1 --session my-task
-agent-browser fill @e2 "text" --session my-task
-agent-browser click @e3 --session my-task
-
-# Step 4: Verify changes
-agent-browser snapshot --session my-task
-
-# Step 5: Take screenshot
-agent-browser screenshot output.png --session my-task
-```
-
-## Usage
-
-1. Install agent-browser: `npm install -g agent-browser && agent-browser install`
-2. Copy the template script
-3. Customize URLs and selectors
-4. Run the script: `bash script.sh`
-
-## Customization
-
-- Change the URL in `open` command
-- Modify refs based on snapshot output
-- Add more interaction commands
-- Adjust session name
-- Add error handling

+ 0 - 202
skills/algorithmic-art/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 403
skills/algorithmic-art/SKILL.md

@@ -1,403 +0,0 @@
----
-name: algorithmic-art
-description: Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
-license: Complete terms in LICENSE.txt
----
-
-
-1. Algorithmic Philosophy Creation (.md file)
-2. Express by creating p5.js generative art (.html + .js files)
-
-First, undertake this task:
-
-## ALGORITHMIC PHILOSOPHY CREATION
-
-To begin, create an ALGORITHMIC PHILOSOPHY (not static images or templates) that will be interpreted through:
-- Computational processes, emergent behavior, mathematical beauty
-- Seeded randomness, noise fields, organic systems
-- Particles, flows, fields, forces
-- Parametric variation and controlled chaos
-
-### THE CRITICAL UNDERSTANDING
-- What is received: Some subtle input or instructions by the user to take into account, but use as a foundation; it should not constrain creative freedom.
-- What is created: An algorithmic philosophy/generative aesthetic movement.
-- What happens next: The same version receives the philosophy and EXPRESSES IT IN CODE - creating p5.js sketches that are 90% algorithmic generation, 10% essential parameters.
-
-Consider this approach:
-- Write a manifesto for a generative art movement
-- The next phase involves writing the algorithm that brings it to life
-
-The philosophy must emphasize: Algorithmic expression. Emergent behavior. Computational beauty. Seeded variation.
-
-### HOW TO GENERATE AN ALGORITHMIC PHILOSOPHY
-
-**Name the movement** (1-2 words): "Organic Turbulence" / "Quantum Harmonics" / "Emergent Stillness"
-
-**Articulate the philosophy** (4-6 paragraphs - concise but complete):
-
-To capture the ALGORITHMIC essence, express how this philosophy manifests through:
-- Computational processes and mathematical relationships?
-- Noise functions and randomness patterns?
-- Particle behaviors and field dynamics?
-- Temporal evolution and system states?
-- Parametric variation and emergent complexity?
-
-**CRITICAL GUIDELINES:**
-- **Avoid redundancy**: Each algorithmic aspect should be mentioned once. Avoid repeating concepts about noise theory, particle dynamics, or mathematical principles unless adding new depth.
-- **Emphasize craftsmanship REPEATEDLY**: The philosophy MUST stress multiple times that the final algorithm should appear as though it took countless hours to develop, was refined with care, and comes from someone at the absolute top of their field. This framing is essential - repeat phrases like "meticulously crafted algorithm," "the product of deep computational expertise," "painstaking optimization," "master-level implementation."
-- **Leave creative space**: Be specific about the algorithmic direction, but concise enough that the next Claude has room to make interpretive implementation choices at an extremely high level of craftsmanship.
-
-The philosophy must guide the next version to express ideas ALGORITHMICALLY, not through static images. Beauty lives in the process, not the final frame.
-
-### PHILOSOPHY EXAMPLES
-
-**"Organic Turbulence"**
-Philosophy: Chaos constrained by natural law, order emerging from disorder.
-Algorithmic expression: Flow fields driven by layered Perlin noise. Thousands of particles following vector forces, their trails accumulating into organic density maps. Multiple noise octaves create turbulent regions and calm zones. Color emerges from velocity and density - fast particles burn bright, slow ones fade to shadow. The algorithm runs until equilibrium - a meticulously tuned balance where every parameter was refined through countless iterations by a master of computational aesthetics.
-
-**"Quantum Harmonics"**
-Philosophy: Discrete entities exhibiting wave-like interference patterns.
-Algorithmic expression: Particles initialized on a grid, each carrying a phase value that evolves through sine waves. When particles are near, their phases interfere - constructive interference creates bright nodes, destructive creates voids. Simple harmonic motion generates complex emergent mandalas. The result of painstaking frequency calibration where every ratio was carefully chosen to produce resonant beauty.
-
-**"Recursive Whispers"**
-Philosophy: Self-similarity across scales, infinite depth in finite space.
-Algorithmic expression: Branching structures that subdivide recursively. Each branch slightly randomized but constrained by golden ratios. L-systems or recursive subdivision generate tree-like forms that feel both mathematical and organic. Subtle noise perturbations break perfect symmetry. Line weights diminish with each recursion level. Every branching angle the product of deep mathematical exploration.
-
-**"Field Dynamics"**
-Philosophy: Invisible forces made visible through their effects on matter.
-Algorithmic expression: Vector fields constructed from mathematical functions or noise. Particles born at edges, flowing along field lines, dying when they reach equilibrium or boundaries. Multiple fields can attract, repel, or rotate particles. The visualization shows only the traces - ghost-like evidence of invisible forces. A computational dance meticulously choreographed through force balance.
-
-**"Stochastic Crystallization"**
-Philosophy: Random processes crystallizing into ordered structures.
-Algorithmic expression: Randomized circle packing or Voronoi tessellation. Start with random points, let them evolve through relaxation algorithms. Cells push apart until equilibrium. Color based on cell size, neighbor count, or distance from center. The organic tiling that emerges feels both random and inevitable. Every seed produces unique crystalline beauty - the mark of a master-level generative algorithm.
-
-*These are condensed examples. The actual algorithmic philosophy should be 4-6 substantial paragraphs.*
-
-### ESSENTIAL PRINCIPLES
-- **ALGORITHMIC PHILOSOPHY**: Creating a computational worldview to be expressed through code
-- **PROCESS OVER PRODUCT**: Always emphasize that beauty emerges from the algorithm's execution - each run is unique
-- **PARAMETRIC EXPRESSION**: Ideas communicate through mathematical relationships, forces, behaviors - not static composition
-- **ARTISTIC FREEDOM**: The next Claude interprets the philosophy algorithmically - provide creative implementation room
-- **PURE GENERATIVE ART**: This is about making LIVING ALGORITHMS, not static images with randomness
-- **EXPERT CRAFTSMANSHIP**: Repeatedly emphasize the final algorithm must feel meticulously crafted, refined through countless iterations, the product of deep expertise by someone at the absolute top of their field in computational aesthetics
-
-**The algorithmic philosophy should be 4-6 paragraphs long.** Fill it with poetic computational philosophy that brings together the intended vision. Avoid repeating the same points. Output this algorithmic philosophy as a .md file.
-
----
-
-## DEDUCING THE CONCEPTUAL SEED
-
-**CRITICAL STEP**: Before implementing the algorithm, identify the subtle conceptual thread from the original request.
-
-**THE ESSENTIAL PRINCIPLE**:
-The concept is a **subtle, niche reference embedded within the algorithm itself** - not always literal, always sophisticated. Someone familiar with the subject should feel it intuitively, while others simply experience a masterful generative composition. The algorithmic philosophy provides the computational language. The deduced concept provides the soul - the quiet conceptual DNA woven invisibly into parameters, behaviors, and emergence patterns.
-
-This is **VERY IMPORTANT**: The reference must be so refined that it enhances the work's depth without announcing itself. Think like a jazz musician quoting another song through algorithmic harmony - only those who know will catch it, but everyone appreciates the generative beauty.
-
----
-
-## P5.JS IMPLEMENTATION
-
-With the philosophy AND conceptual framework established, express it through code. Pause to gather thoughts before proceeding. Use only the algorithmic philosophy created and the instructions below.
-
-### ⚠️ STEP 0: READ THE TEMPLATE FIRST ⚠️
-
-**CRITICAL: BEFORE writing any HTML:**
-
-1. **Read** `templates/viewer.html` using the Read tool
-2. **Study** the exact structure, styling, and Anthropic branding
-3. **Use that file as the LITERAL STARTING POINT** - not just inspiration
-4. **Keep all FIXED sections exactly as shown** (header, sidebar structure, Anthropic colors/fonts, seed controls, action buttons)
-5. **Replace only the VARIABLE sections** marked in the file's comments (algorithm, parameters, UI controls for parameters)
-
-**Avoid:**
-- ❌ Creating HTML from scratch
-- ❌ Inventing custom styling or color schemes
-- ❌ Using system fonts or dark themes
-- ❌ Changing the sidebar structure
-
-**Follow these practices:**
-- ✅ Copy the template's exact HTML structure
-- ✅ Keep Anthropic branding (Poppins/Lora fonts, light colors, gradient backdrop)
-- ✅ Maintain the sidebar layout (Seed → Parameters → Colors? → Actions)
-- ✅ Replace only the p5.js algorithm and parameter controls
-
-The template is the foundation. Build on it, don't rebuild it.
-
----
-
-To create gallery-quality computational art that lives and breathes, use the algorithmic philosophy as the foundation.
-
-### TECHNICAL REQUIREMENTS
-
-**Seeded Randomness (Art Blocks Pattern)**:
-```javascript
-// ALWAYS use a seed for reproducibility
-let seed = 12345; // or hash from user input
-randomSeed(seed);
-noiseSeed(seed);
-```
-
-**Parameter Structure - FOLLOW THE PHILOSOPHY**:
-
-To establish parameters that emerge naturally from the algorithmic philosophy, consider: "What qualities of this system can be adjusted?"
-
-```javascript
-let params = {
-  seed: 12345,  // Always include seed for reproducibility
-  // colors
-  // Add parameters that control YOUR algorithm:
-  // - Quantities (how many?)
-  // - Scales (how big? how fast?)
-  // - Probabilities (how likely?)
-  // - Ratios (what proportions?)
-  // - Angles (what direction?)
-  // - Thresholds (when does behavior change?)
-};
-```
-
-**To design effective parameters, focus on the properties the system needs to be tunable rather than thinking in terms of "pattern types".**
-
-**Core Algorithm - EXPRESS THE PHILOSOPHY**:
-
-**CRITICAL**: The algorithmic philosophy should dictate what to build.
-
-To express the philosophy through code, avoid thinking "which pattern should I use?" and instead think "how to express this philosophy through code?"
-
-If the philosophy is about **organic emergence**, consider using:
-- Elements that accumulate or grow over time
-- Random processes constrained by natural rules
-- Feedback loops and interactions
-
-If the philosophy is about **mathematical beauty**, consider using:
-- Geometric relationships and ratios
-- Trigonometric functions and harmonics
-- Precise calculations creating unexpected patterns
-
-If the philosophy is about **controlled chaos**, consider using:
-- Random variation within strict boundaries
-- Bifurcation and phase transitions
-- Order emerging from disorder
-
-**The algorithm flows from the philosophy, not from a menu of options.**
-
-To guide the implementation, let the conceptual essence inform creative and original choices. Build something that expresses the vision for this particular request.
-
-**Canvas Setup**: Standard p5.js structure:
-```javascript
-function setup() {
-  createCanvas(1200, 1200);
-  // Initialize your system
-}
-
-function draw() {
-  // Your generative algorithm
-  // Can be static (noLoop) or animated
-}
-```
-
-### CRAFTSMANSHIP REQUIREMENTS
-
-**CRITICAL**: To achieve mastery, create algorithms that feel like they emerged through countless iterations by a master generative artist. Tune every parameter carefully. Ensure every pattern emerges with purpose. This is NOT random noise - this is CONTROLLED CHAOS refined through deep expertise.
-
-- **Balance**: Complexity without visual noise, order without rigidity
-- **Color Harmony**: Thoughtful palettes, not random RGB values
-- **Composition**: Even in randomness, maintain visual hierarchy and flow
-- **Performance**: Smooth execution, optimized for real-time if animated
-- **Reproducibility**: Same seed ALWAYS produces identical output
-
-### OUTPUT FORMAT
-
-Output:
-1. **Algorithmic Philosophy** - As markdown or text explaining the generative aesthetic
-2. **Single HTML Artifact** - Self-contained interactive generative art built from `templates/viewer.html` (see STEP 0 and next section)
-
-The HTML artifact contains everything: p5.js (from CDN), the algorithm, parameter controls, and UI - all in one file that works immediately in claude.ai artifacts or any browser. Start from the template file, not from scratch.
-
----
-
-## INTERACTIVE ARTIFACT CREATION
-
-**REMINDER: `templates/viewer.html` should have already been read (see STEP 0). Use that file as the starting point.**
-
-To allow exploration of the generative art, create a single, self-contained HTML artifact. Ensure this artifact works immediately in claude.ai or any browser - no setup required. Embed everything inline.
-
-### CRITICAL: WHAT'S FIXED VS VARIABLE
-
-The `templates/viewer.html` file is the foundation. It contains the exact structure and styling needed.
-
-**FIXED (always include exactly as shown):**
-- Layout structure (header, sidebar, main canvas area)
-- Anthropic branding (UI colors, fonts, gradients)
-- Seed section in sidebar:
-  - Seed display
-  - Previous/Next buttons
-  - Random button
-  - Jump to seed input + Go button
-- Actions section in sidebar:
-  - Regenerate button
-  - Reset button
-
-**VARIABLE (customize for each artwork):**
-- The entire p5.js algorithm (setup/draw/classes)
-- The parameters object (define what the art needs)
-- The Parameters section in sidebar:
-  - Number of parameter controls
-  - Parameter names
-  - Min/max/step values for sliders
-  - Control types (sliders, inputs, etc.)
-- Colors section (optional):
-  - Some art needs color pickers
-  - Some art might use fixed colors
-  - Some art might be monochrome (no color controls needed)
-  - Decide based on the art's needs
-
-**Every artwork should have unique parameters and algorithm!** The fixed parts provide consistent UX - everything else expresses the unique vision.
-
-### REQUIRED FEATURES
-
-**1. Parameter Controls**
-- Sliders for numeric parameters (particle count, noise scale, speed, etc.)
-- Color pickers for palette colors
-- Real-time updates when parameters change
-- Reset button to restore defaults
-
-**2. Seed Navigation**
-- Display current seed number
-- "Previous" and "Next" buttons to cycle through seeds
-- "Random" button for random seed
-- Input field to jump to specific seed
-- Generate 100 variations when requested (seeds 1-100)
-
-**3. Single Artifact Structure**
-```html
-<!DOCTYPE html>
-<html>
-<head>
-  <!-- p5.js from CDN - always available -->
-  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
-  <style>
-    /* All styling inline - clean, minimal */
-    /* Canvas on top, controls below */
-  </style>
-</head>
-<body>
-  <div id="canvas-container"></div>
-  <div id="controls">
-    <!-- All parameter controls -->
-  </div>
-  <script>
-    // ALL p5.js code inline here
-    // Parameter objects, classes, functions
-    // setup() and draw()
-    // UI handlers
-    // Everything self-contained
-  </script>
-</body>
-</html>
-```
-
-**CRITICAL**: This is a single artifact. No external files, no imports (except p5.js CDN). Everything inline.
-
-**4. Implementation Details - BUILD THE SIDEBAR**
-
-The sidebar structure:
-
-**1. Seed (FIXED)** - Always include exactly as shown:
-- Seed display
-- Prev/Next/Random/Jump buttons
-
-**2. Parameters (VARIABLE)** - Create controls for the art:
-```html
-<div class="control-group">
-    <label>Parameter Name</label>
-    <input type="range" id="param" min="..." max="..." step="..." value="..." oninput="updateParam('param', this.value)">
-    <span class="value-display" id="param-value">...</span>
-</div>
-```
-Add as many control-group divs as there are parameters.
-
-**3. Colors (OPTIONAL/VARIABLE)** - Include if the art needs adjustable colors:
-- Add color pickers if users should control palette
-- Skip this section if the art uses fixed colors
-- Skip if the art is monochrome
-
-**4. Actions (FIXED)** - Always include exactly as shown:
-- Regenerate button
-- Reset button
-- Download PNG button
-
-**Requirements**:
-- Seed controls must work (prev/next/random/jump/display)
-- All parameters must have UI controls
-- Regenerate, Reset, Download buttons must work
-- Keep Anthropic branding (UI styling, not art colors)
-
-### USING THE ARTIFACT
-
-The HTML artifact works immediately:
-1. **In claude.ai**: Displayed as an interactive artifact - runs instantly
-2. **As a file**: Save and open in any browser - no server needed
-3. **Sharing**: Send the HTML file - it's completely self-contained
-
----
-
-## VARIATIONS & EXPLORATION
-
-The artifact includes seed navigation by default (prev/next/random buttons), allowing users to explore variations without creating multiple files. If the user wants specific variations highlighted:
-
-- Include seed presets (buttons for "Variation 1: Seed 42", "Variation 2: Seed 127", etc.)
-- Add a "Gallery Mode" that shows thumbnails of multiple seeds side-by-side
-- All within the same single artifact
-
-This is like creating a series of prints from the same plate - the algorithm is consistent, but each seed reveals different facets of its potential. The interactive nature means users discover their own favorites by exploring the seed space.
-
----
-
-## THE CREATIVE PROCESS
-
-**User request** → **Algorithmic philosophy** → **Implementation**
-
-Each request is unique. The process involves:
-
-1. **Interpret the user's intent** - What aesthetic is being sought?
-2. **Create an algorithmic philosophy** (4-6 paragraphs) describing the computational approach
-3. **Implement it in code** - Build the algorithm that expresses this philosophy
-4. **Design appropriate parameters** - What should be tunable?
-5. **Build matching UI controls** - Sliders/inputs for those parameters
-
-**The constants**:
-- Anthropic branding (colors, fonts, layout)
-- Seed navigation (always present)
-- Self-contained HTML artifact
-
-**Everything else is variable**:
-- The algorithm itself
-- The parameters
-- The UI controls
-- The visual outcome
-
-To achieve the best results, trust creativity and let the philosophy guide the implementation.
-
----
-
-## RESOURCES
-
-This skill includes helpful templates and documentation:
-
-- **templates/viewer.html**: REQUIRED STARTING POINT for all HTML artifacts.
-  - This is the foundation - contains the exact structure and Anthropic branding
-  - **Keep unchanged**: Layout structure, sidebar organization, Anthropic colors/fonts, seed controls, action buttons
-  - **Replace**: The p5.js algorithm, parameter definitions, and UI controls in Parameters section
-  - The extensive comments in the file mark exactly what to keep vs replace
-
-- **templates/generator_template.js**: Reference for p5.js best practices and code structure principles.
-  - Shows how to organize parameters, use seeded randomness, structure classes
-  - NOT a pattern menu - use these principles to build unique algorithms
-  - Embed algorithms inline in the HTML artifact (don't create separate .js files)
-
-**Critical reminder**:
-- The **template is the STARTING POINT**, not inspiration
-- The **algorithm is where to create** something unique
-- Don't copy the flow field example - build what the philosophy demands
-- But DO keep the exact UI structure and Anthropic branding from the template

+ 0 - 223
skills/algorithmic-art/templates/generator_template.js

@@ -1,223 +0,0 @@
-/**
- * ═══════════════════════════════════════════════════════════════════════════
- *                  P5.JS GENERATIVE ART - BEST PRACTICES
- * ═══════════════════════════════════════════════════════════════════════════
- *
- * This file shows STRUCTURE and PRINCIPLES for p5.js generative art.
- * It does NOT prescribe what art you should create.
- *
- * Your algorithmic philosophy should guide what you build.
- * These are just best practices for how to structure your code.
- *
- * ═══════════════════════════════════════════════════════════════════════════
- */
-
-// ============================================================================
-// 1. PARAMETER ORGANIZATION
-// ============================================================================
-// Keep all tunable parameters in one object
-// This makes it easy to:
-// - Connect to UI controls
-// - Reset to defaults
-// - Serialize/save configurations
-
-let params = {
-    // Define parameters that match YOUR algorithm
-    // Examples (customize for your art):
-    // - Counts: how many elements (particles, circles, branches, etc.)
-    // - Scales: size, speed, spacing
-    // - Probabilities: likelihood of events
-    // - Angles: rotation, direction
-    // - Colors: palette arrays
-
-    seed: 12345,
-    // define colorPalette as an array -- choose whatever colors you'd like ['#d97757', '#6a9bcc', '#788c5d', '#b0aea5']
-    // Add YOUR parameters here based on your algorithm
-};
-
-// ============================================================================
-// 2. SEEDED RANDOMNESS (Critical for reproducibility)
-// ============================================================================
-// ALWAYS use seeded random for Art Blocks-style reproducible output
-
-function initializeSeed(seed) {
-    randomSeed(seed);
-    noiseSeed(seed);
-    // Now all random() and noise() calls will be deterministic
-}
-
-// ============================================================================
-// 3. P5.JS LIFECYCLE
-// ============================================================================
-
-function setup() {
-    createCanvas(800, 800);
-
-    // Initialize seed first
-    initializeSeed(params.seed);
-
-    // Set up your generative system
-    // This is where you initialize:
-    // - Arrays of objects
-    // - Grid structures
-    // - Initial positions
-    // - Starting states
-
-    // For static art: call noLoop() at the end of setup
-    // For animated art: let draw() keep running
-}
-
-function draw() {
-    // Option 1: Static generation (runs once, then stops)
-    // - Generate everything in setup()
-    // - Call noLoop() in setup()
-    // - draw() doesn't do much or can be empty
-
-    // Option 2: Animated generation (continuous)
-    // - Update your system each frame
-    // - Common patterns: particle movement, growth, evolution
-    // - Can optionally call noLoop() after N frames
-
-    // Option 3: User-triggered regeneration
-    // - Use noLoop() by default
-    // - Call redraw() when parameters change
-}
-
-// ============================================================================
-// 4. CLASS STRUCTURE (When you need objects)
-// ============================================================================
-// Use classes when your algorithm involves multiple entities
-// Examples: particles, agents, cells, nodes, etc.
-
-class Entity {
-    constructor() {
-        // Initialize entity properties
-        // Use random() here - it will be seeded
-    }
-
-    update() {
-        // Update entity state
-        // This might involve:
-        // - Physics calculations
-        // - Behavioral rules
-        // - Interactions with neighbors
-    }
-
-    display() {
-        // Render the entity
-        // Keep rendering logic separate from update logic
-    }
-}
-
-// ============================================================================
-// 5. PERFORMANCE CONSIDERATIONS
-// ============================================================================
-
-// For large numbers of elements:
-// - Pre-calculate what you can
-// - Use simple collision detection (spatial hashing if needed)
-// - Limit expensive operations (sqrt, trig) when possible
-// - Consider using p5 vectors efficiently
-
-// For smooth animation:
-// - Aim for 60fps
-// - Profile if things are slow
-// - Consider reducing particle counts or simplifying calculations
-
-// ============================================================================
-// 6. UTILITY FUNCTIONS
-// ============================================================================
-
-// Color utilities
-function hexToRgb(hex) {
-    const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
-    return result ? {
-        r: parseInt(result[1], 16),
-        g: parseInt(result[2], 16),
-        b: parseInt(result[3], 16)
-    } : null;
-}
-
-function colorFromPalette(index) {
-    return params.colorPalette[index % params.colorPalette.length];
-}
-
-// Mapping and easing
-function mapRange(value, inMin, inMax, outMin, outMax) {
-    return outMin + (outMax - outMin) * ((value - inMin) / (inMax - inMin));
-}
-
-function easeInOutCubic(t) {
-    return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
-}
-
-// Constrain to bounds
-function wrapAround(value, max) {
-    if (value < 0) return max;
-    if (value > max) return 0;
-    return value;
-}
-
-// ============================================================================
-// 7. PARAMETER UPDATES (Connect to UI)
-// ============================================================================
-
-function updateParameter(paramName, value) {
-    params[paramName] = value;
-    // Decide if you need to regenerate or just update
-    // Some params can update in real-time, others need full regeneration
-}
-
-function regenerate() {
-    // Reinitialize your generative system
-    // Useful when parameters change significantly
-    initializeSeed(params.seed);
-    // Then regenerate your system
-}
-
-// ============================================================================
-// 8. COMMON P5.JS PATTERNS
-// ============================================================================
-
-// Drawing with transparency for trails/fading
-function fadeBackground(opacity) {
-    fill(250, 249, 245, opacity); // Anthropic light with alpha
-    noStroke();
-    rect(0, 0, width, height);
-}
-
-// Using noise for organic variation
-function getNoiseValue(x, y, scale = 0.01) {
-    return noise(x * scale, y * scale);
-}
-
-// Creating vectors from angles
-function vectorFromAngle(angle, magnitude = 1) {
-    return createVector(cos(angle), sin(angle)).mult(magnitude);
-}
-
-// ============================================================================
-// 9. EXPORT FUNCTIONS
-// ============================================================================
-
-function exportImage() {
-    saveCanvas('generative-art-' + params.seed, 'png');
-}
-
-// ============================================================================
-// REMEMBER
-// ============================================================================
-//
-// These are TOOLS and PRINCIPLES, not a recipe.
-// Your algorithmic philosophy should guide WHAT you create.
-// This structure helps you create it WELL.
-//
-// Focus on:
-// - Clean, readable code
-// - Parameterized for exploration
-// - Seeded for reproducibility
-// - Performant execution
-//
-// The art itself is entirely up to you!
-//
-// ============================================================================

+ 0 - 599
skills/algorithmic-art/templates/viewer.html

@@ -1,599 +0,0 @@
-<!DOCTYPE html>
-<!--
-    THIS IS A TEMPLATE THAT SHOULD BE USED EVERY TIME AND MODIFIED.
-    WHAT TO KEEP:
-    ✓ Overall structure (header, sidebar, main content)
-    ✓ Anthropic branding (colors, fonts, layout)
-    ✓ Seed navigation section (always include this)
-    ✓ Self-contained artifact (everything inline)
-
-    WHAT TO CREATIVELY EDIT:
-    ✗ The p5.js algorithm (implement YOUR vision)
-    ✗ The parameters (define what YOUR art needs)
-    ✗ The UI controls (match YOUR parameters)
-
-    Let your philosophy guide the implementation.
-    The world is your oyster - be creative!
--->
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Generative Art Viewer</title>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
-    <link rel="preconnect" href="https://fonts.googleapis.com">
-    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
-    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&family=Lora:wght@400;500&display=swap" rel="stylesheet">
-    <style>
-        /* Anthropic Brand Colors */
-        :root {
-            --anthropic-dark: #141413;
-            --anthropic-light: #faf9f5;
-            --anthropic-mid-gray: #b0aea5;
-            --anthropic-light-gray: #e8e6dc;
-            --anthropic-orange: #d97757;
-            --anthropic-blue: #6a9bcc;
-            --anthropic-green: #788c5d;
-        }
-
-        * {
-            margin: 0;
-            padding: 0;
-            box-sizing: border-box;
-        }
-
-        body {
-            font-family: 'Poppins', sans-serif;
-            background: linear-gradient(135deg, var(--anthropic-light) 0%, #f5f3ee 100%);
-            min-height: 100vh;
-            color: var(--anthropic-dark);
-        }
-
-        .container {
-            display: flex;
-            min-height: 100vh;
-            padding: 20px;
-            gap: 20px;
-        }
-
-        /* Sidebar */
-        .sidebar {
-            width: 320px;
-            flex-shrink: 0;
-            background: rgba(255, 255, 255, 0.95);
-            backdrop-filter: blur(10px);
-            padding: 24px;
-            border-radius: 12px;
-            box-shadow: 0 10px 30px rgba(20, 20, 19, 0.1);
-            overflow-y: auto;
-            overflow-x: hidden;
-        }
-
-        .sidebar h1 {
-            font-family: 'Lora', serif;
-            font-size: 24px;
-            font-weight: 500;
-            color: var(--anthropic-dark);
-            margin-bottom: 8px;
-        }
-
-        .sidebar .subtitle {
-            color: var(--anthropic-mid-gray);
-            font-size: 14px;
-            margin-bottom: 32px;
-            line-height: 1.4;
-        }
-
-        /* Control Sections */
-        .control-section {
-            margin-bottom: 32px;
-        }
-
-        .control-section h3 {
-            font-size: 16px;
-            font-weight: 600;
-            color: var(--anthropic-dark);
-            margin-bottom: 16px;
-            display: flex;
-            align-items: center;
-            gap: 8px;
-        }
-
-        .control-section h3::before {
-            content: '•';
-            color: var(--anthropic-orange);
-            font-weight: bold;
-        }
-
-        /* Seed Controls */
-        .seed-input {
-            width: 100%;
-            background: var(--anthropic-light);
-            padding: 12px;
-            border-radius: 8px;
-            font-family: 'Courier New', monospace;
-            font-size: 14px;
-            margin-bottom: 12px;
-            border: 1px solid var(--anthropic-light-gray);
-            text-align: center;
-        }
-
-        .seed-input:focus {
-            outline: none;
-            border-color: var(--anthropic-orange);
-            box-shadow: 0 0 0 2px rgba(217, 119, 87, 0.1);
-            background: white;
-        }
-
-        .seed-controls {
-            display: grid;
-            grid-template-columns: 1fr 1fr;
-            gap: 8px;
-            margin-bottom: 8px;
-        }
-
-        .regen-button {
-            margin-bottom: 0;
-        }
-
-        /* Parameter Controls */
-        .control-group {
-            margin-bottom: 20px;
-        }
-
-        .control-group label {
-            display: block;
-            font-size: 14px;
-            font-weight: 500;
-            color: var(--anthropic-dark);
-            margin-bottom: 8px;
-        }
-
-        .slider-container {
-            display: flex;
-            align-items: center;
-            gap: 12px;
-        }
-
-        .slider-container input[type="range"] {
-            flex: 1;
-            height: 4px;
-            background: var(--anthropic-light-gray);
-            border-radius: 2px;
-            outline: none;
-            -webkit-appearance: none;
-        }
-
-        .slider-container input[type="range"]::-webkit-slider-thumb {
-            -webkit-appearance: none;
-            width: 16px;
-            height: 16px;
-            background: var(--anthropic-orange);
-            border-radius: 50%;
-            cursor: pointer;
-            transition: all 0.2s ease;
-        }
-
-        .slider-container input[type="range"]::-webkit-slider-thumb:hover {
-            transform: scale(1.1);
-            background: #c86641;
-        }
-
-        .slider-container input[type="range"]::-moz-range-thumb {
-            width: 16px;
-            height: 16px;
-            background: var(--anthropic-orange);
-            border-radius: 50%;
-            border: none;
-            cursor: pointer;
-            transition: all 0.2s ease;
-        }
-
-        .value-display {
-            font-family: 'Courier New', monospace;
-            font-size: 12px;
-            color: var(--anthropic-mid-gray);
-            min-width: 60px;
-            text-align: right;
-        }
-
-        /* Color Pickers */
-        .color-group {
-            margin-bottom: 16px;
-        }
-
-        .color-group label {
-            display: block;
-            font-size: 12px;
-            color: var(--anthropic-mid-gray);
-            margin-bottom: 4px;
-        }
-
-        .color-picker-container {
-            display: flex;
-            align-items: center;
-            gap: 8px;
-        }
-
-        .color-picker-container input[type="color"] {
-            width: 32px;
-            height: 32px;
-            border: none;
-            border-radius: 6px;
-            cursor: pointer;
-            background: none;
-            padding: 0;
-        }
-
-        .color-value {
-            font-family: 'Courier New', monospace;
-            font-size: 12px;
-            color: var(--anthropic-mid-gray);
-        }
-
-        /* Buttons */
-        .button {
-            background: var(--anthropic-orange);
-            color: white;
-            border: none;
-            padding: 10px 16px;
-            border-radius: 6px;
-            font-size: 14px;
-            font-weight: 500;
-            cursor: pointer;
-            transition: all 0.2s ease;
-            width: 100%;
-        }
-
-        .button:hover {
-            background: #c86641;
-            transform: translateY(-1px);
-        }
-
-        .button:active {
-            transform: translateY(0);
-        }
-
-        .button.secondary {
-            background: var(--anthropic-blue);
-        }
-
-        .button.secondary:hover {
-            background: #5a8bb8;
-        }
-
-        .button.tertiary {
-            background: var(--anthropic-green);
-        }
-
-        .button.tertiary:hover {
-            background: #6b7b52;
-        }
-
-        .button-row {
-            display: flex;
-            gap: 8px;
-        }
-
-        .button-row .button {
-            flex: 1;
-        }
-
-        /* Canvas Area */
-        .canvas-area {
-            flex: 1;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            min-width: 0;
-        }
-
-        #canvas-container {
-            width: 100%;
-            max-width: 1000px;
-            border-radius: 12px;
-            overflow: hidden;
-            box-shadow: 0 20px 40px rgba(20, 20, 19, 0.1);
-            background: white;
-        }
-
-        #canvas-container canvas {
-            display: block;
-            width: 100% !important;
-            height: auto !important;
-        }
-
-        /* Loading State */
-        .loading {
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            font-size: 18px;
-            color: var(--anthropic-mid-gray);
-        }
-
-        /* Responsive - Stack on mobile */
-        @media (max-width: 600px) {
-            .container {
-                flex-direction: column;
-            }
-
-            .sidebar {
-                width: 100%;
-            }
-
-            .canvas-area {
-                padding: 20px;
-            }
-        }
-    </style>
-</head>
-<body>
-    <div class="container">
-        <!-- Control Sidebar -->
-        <div class="sidebar">
-            <!-- Headers (CUSTOMIZE THIS FOR YOUR ART) -->
-            <h1>TITLE - EDIT</h1>
-            <div class="subtitle">SUBHEADER - EDIT</div>
-
-            <!-- Seed Section (ALWAYS KEEP THIS) -->
-            <div class="control-section">
-                <h3>Seed</h3>
-                <input type="number" id="seed-input" class="seed-input" value="12345" onchange="updateSeed()">
-                <div class="seed-controls">
-                    <button class="button secondary" onclick="previousSeed()">← Prev</button>
-                    <button class="button secondary" onclick="nextSeed()">Next →</button>
-                </div>
-                <button class="button tertiary regen-button" onclick="randomSeedAndUpdate()">↻ Random</button>
-            </div>
-
-            <!-- Parameters Section (CUSTOMIZE THIS FOR YOUR ART) -->
-            <div class="control-section">
-                <h3>Parameters</h3>
-                
-                <!-- Particle Count -->
-                <div class="control-group">
-                    <label>Particle Count</label>
-                    <div class="slider-container">
-                        <input type="range" id="particleCount" min="1000" max="10000" step="500" value="5000" oninput="updateParam('particleCount', this.value)">
-                        <span class="value-display" id="particleCount-value">5000</span>
-                    </div>
-                </div>
-
-                <!-- Flow Speed -->
-                <div class="control-group">
-                    <label>Flow Speed</label>
-                    <div class="slider-container">
-                        <input type="range" id="flowSpeed" min="0.1" max="2.0" step="0.1" value="0.5" oninput="updateParam('flowSpeed', this.value)">
-                        <span class="value-display" id="flowSpeed-value">0.5</span>
-                    </div>
-                </div>
-
-                <!-- Noise Scale -->
-                <div class="control-group">
-                    <label>Noise Scale</label>
-                    <div class="slider-container">
-                        <input type="range" id="noiseScale" min="0.001" max="0.02" step="0.001" value="0.005" oninput="updateParam('noiseScale', this.value)">
-                        <span class="value-display" id="noiseScale-value">0.005</span>
-                    </div>
-                </div>
-
-                <!-- Trail Length -->
-                <div class="control-group">
-                    <label>Trail Length</label>
-                    <div class="slider-container">
-                        <input type="range" id="trailLength" min="2" max="20" step="1" value="8" oninput="updateParam('trailLength', this.value)">
-                        <span class="value-display" id="trailLength-value">8</span>
-                    </div>
-                </div>
-            </div>
-
-            <!-- Colors Section (OPTIONAL - CUSTOMIZE OR REMOVE) -->
-            <div class="control-section">
-                <h3>Colors</h3>
-                
-                <!-- Color 1 -->
-                <div class="color-group">
-                    <label>Primary Color</label>
-                    <div class="color-picker-container">
-                        <input type="color" id="color1" value="#d97757" onchange="updateColor('color1', this.value)">
-                        <span class="color-value" id="color1-value">#d97757</span>
-                    </div>
-                </div>
-
-                <!-- Color 2 -->
-                <div class="color-group">
-                    <label>Secondary Color</label>
-                    <div class="color-picker-container">
-                        <input type="color" id="color2" value="#6a9bcc" onchange="updateColor('color2', this.value)">
-                        <span class="color-value" id="color2-value">#6a9bcc</span>
-                    </div>
-                </div>
-
-                <!-- Color 3 -->
-                <div class="color-group">
-                    <label>Accent Color</label>
-                    <div class="color-picker-container">
-                        <input type="color" id="color3" value="#788c5d" onchange="updateColor('color3', this.value)">
-                        <span class="color-value" id="color3-value">#788c5d</span>
-                    </div>
-                </div>
-            </div>
-
-            <!-- Actions Section (ALWAYS KEEP THIS) -->
-            <div class="control-section">
-                <h3>Actions</h3>
-                <div class="button-row">
-                    <button class="button" onclick="resetParameters()">Reset</button>
-                </div>
-            </div>
-        </div>
-
-        <!-- Main Canvas Area -->
-        <div class="canvas-area">
-            <div id="canvas-container">
-                <div class="loading">Initializing generative art...</div>
-            </div>
-        </div>
-    </div>
-
-    <script>
-        // ═══════════════════════════════════════════════════════════════════════
-        // GENERATIVE ART PARAMETERS - CUSTOMIZE FOR YOUR ALGORITHM
-        // ═══════════════════════════════════════════════════════════════════════
-
-        let params = {
-            seed: 12345,
-            particleCount: 5000,
-            flowSpeed: 0.5,
-            noiseScale: 0.005,
-            trailLength: 8,
-            colorPalette: ['#d97757', '#6a9bcc', '#788c5d']
-        };
-
-        let defaultParams = {...params}; // Store defaults for reset
-
-        // ═══════════════════════════════════════════════════════════════════════
-        // P5.JS GENERATIVE ART ALGORITHM - REPLACE WITH YOUR VISION
-        // ═══════════════════════════════════════════════════════════════════════
-
-        let particles = [];
-        let flowField = [];
-        let cols, rows;
-        let scl = 10; // Flow field resolution
-
-        function setup() {
-            let canvas = createCanvas(1200, 1200);
-            canvas.parent('canvas-container');
-            
-            initializeSystem();
-            
-            // Remove loading message
-            document.querySelector('.loading').style.display = 'none';
-        }
-
-        function initializeSystem() {
-            // Seed the randomness for reproducibility
-            randomSeed(params.seed);
-            noiseSeed(params.seed);
-
-            // Clear particles and recreate
-            particles = [];
-            
-            // Initialize particles
-            for (let i = 0; i < params.particleCount; i++) {
-                particles.push(new Particle());
-            }
-
-            // Calculate flow field dimensions
-            cols = floor(width / scl);
-            rows = floor(height / scl);
-            
-            // Generate flow field
-            generateFlowField();
-
-            // Clear background
-            background(250, 249, 245); // Anthropic light background
-        }
-
-        function generateFlowField() {
-          // fill this in
-        }
-
-        function draw() {
-            // fill this in
-        }
-
-        // ═══════════════════════════════════════════════════════════════════════
-        // PARTICLE SYSTEM - CUSTOMIZE FOR YOUR ALGORITHM
-        // ═══════════════════════════════════════════════════════════════════════
-
-        class Particle {
-            constructor() {
-                // fill this in
-            }
-            // fill this in
-        }
-
-        // ═══════════════════════════════════════════════════════════════════════
-        // UI CONTROL HANDLERS - CUSTOMIZE FOR YOUR PARAMETERS
-        // ═══════════════════════════════════════════════════════════════════════
-
-        function updateParam(paramName, value) {
-            // fill this in
-        }
-
-        function updateColor(colorId, value) {
-            // fill this in
-        }
-
-        // ═══════════════════════════════════════════════════════════════════════
-        // SEED CONTROL FUNCTIONS - ALWAYS KEEP THESE
-        // ═══════════════════════════════════════════════════════════════════════
-
-        function updateSeedDisplay() {
-            document.getElementById('seed-input').value = params.seed;
-        }
-
-        function updateSeed() {
-            let input = document.getElementById('seed-input');
-            let newSeed = parseInt(input.value);
-            if (newSeed && newSeed > 0) {
-                params.seed = newSeed;
-                initializeSystem();
-            } else {
-                // Reset to current seed if invalid
-                updateSeedDisplay();
-            }
-        }
-
-        function previousSeed() {
-            params.seed = Math.max(1, params.seed - 1);
-            updateSeedDisplay();
-            initializeSystem();
-        }
-
-        function nextSeed() {
-            params.seed = params.seed + 1;
-            updateSeedDisplay();
-            initializeSystem();
-        }
-
-        function randomSeedAndUpdate() {
-            params.seed = Math.floor(Math.random() * 999999) + 1;
-            updateSeedDisplay();
-            initializeSystem();
-        }
-
-        function resetParameters() {
-            params = {...defaultParams};
-            
-            // Update UI elements
-            document.getElementById('particleCount').value = params.particleCount;
-            document.getElementById('particleCount-value').textContent = params.particleCount;
-            document.getElementById('flowSpeed').value = params.flowSpeed;
-            document.getElementById('flowSpeed-value').textContent = params.flowSpeed;
-            document.getElementById('noiseScale').value = params.noiseScale;
-            document.getElementById('noiseScale-value').textContent = params.noiseScale;
-            document.getElementById('trailLength').value = params.trailLength;
-            document.getElementById('trailLength-value').textContent = params.trailLength;
-            
-            // Reset colors
-            document.getElementById('color1').value = params.colorPalette[0];
-            document.getElementById('color1-value').textContent = params.colorPalette[0];
-            document.getElementById('color2').value = params.colorPalette[1];
-            document.getElementById('color2-value').textContent = params.colorPalette[1];
-            document.getElementById('color3').value = params.colorPalette[2];
-            document.getElementById('color3-value').textContent = params.colorPalette[2];
-            
-            updateSeedDisplay();
-            initializeSystem();
-        }
-
-        // Initialize UI on load
-        window.addEventListener('load', function() {
-            updateSeedDisplay();
-        });
-    </script>
-</body>
-</html>

+ 0 - 202
skills/android-kotlin/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 22
skills/android-kotlin/SKILL.md

@@ -1,22 +0,0 @@
----
-name: android-kotlin
-description: Provides comprehensive guidance for Android development with Kotlin including activities, fragments, views, lifecycle, navigation, and Android app development. Use when the user asks about Android Kotlin, needs to create Android applications, implement Android components, or work with Kotlin in Android.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- [待完善:根据具体工具添加使用场景]
-
-## How to use this skill
-
-[待完善:根据具体工具添加使用指南]
-
-## Best Practices
-
-[待完善:根据具体工具添加最佳实践]
-
-## Keywords
-
-[待完善:根据具体工具添加关键词]

+ 0 - 202
skills/angular/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 22
skills/angular/SKILL.md

@@ -1,22 +0,0 @@
----
-name: angular
-description: Provides comprehensive guidance for Angular framework including components, modules, services, dependency injection, routing, forms, and TypeScript integration. Use when the user asks about Angular, needs to create Angular applications, implement Angular components, or work with Angular features.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- [待完善:根据具体工具添加使用场景]
-
-## How to use this skill
-
-[待完善:根据具体工具添加使用指南]
-
-## Best Practices
-
-[待完善:根据具体工具添加最佳实践]
-
-## Keywords
-
-[待完善:根据具体工具添加关键词]

+ 0 - 202
skills/ansible/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 22
skills/ansible/SKILL.md

@@ -1,22 +0,0 @@
----
-name: ansible
-description: Provides comprehensive guidance for Ansible automation including playbooks, roles, inventory, and module usage. Use when the user asks about Ansible, needs to automate IT tasks, create Ansible playbooks, or manage infrastructure with Ansible.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- [待完善:根据具体工具添加使用场景]
-
-## How to use this skill
-
-[待完善:根据具体工具添加使用指南]
-
-## Best Practices
-
-[待完善:根据具体工具添加最佳实践]
-
-## Keywords
-
-[待完善:根据具体工具添加关键词]

+ 0 - 202
skills/ant-design-mini/LICENSE.txt

@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

+ 0 - 187
skills/ant-design-mini/SKILL.md

@@ -1,187 +0,0 @@
----
-name: ant-design-mini
-description: Provides comprehensive guidance for Ant Design Mini component library for mini-programs including components, themes, and platform support. Use when the user asks about Ant Design Mini, needs to build mini-program applications, or use mini-program components.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- Install and set up Ant Design Mini in a mini-program project
-- Use Ant Design Mini components in Alipay Mini Program
-- Use Ant Design Mini components in WeChat Mini Program
-- Configure Ant Design Mini (theme, i18n, etc.)
-- Use form components (Button, Input, Form, etc.)
-- Use data display components (List, Card, etc.)
-- Use feedback components (Toast, Modal, etc.)
-- Use navigation components (Tabs, NavBar, etc.)
-- Customize component styles
-- Handle component events
-- Understand Ant Design Mini API and methods
-- Troubleshoot Ant Design Mini issues
-
-## How to use this skill
-
-This skill is organized to match the Ant Design Mini official documentation structure (https://ant-design-mini.antgroup.com/guide/quick-start, https://ant-design-mini.antgroup.com/components/overview). When working with Ant Design Mini:
-
-1. **Identify the topic** from the user's request:
-   - Getting started/快速开始 → `examples/getting-started.md`
-   - Components/组件 → `examples/components/`
-   - API/API 文档 → `api/`
-
-2. **Load the appropriate example file** from the `examples/` directory:
-
-   **Getting Started (快速开始)**:
-   - `examples/getting-started.md` - Installation and setup
-   - `examples/quick-start.md` - Quick start guide
-
-   **Components (组件)**:
-   - `examples/components/overview.md` - Components overview
-   - `examples/components/button.md` - Button component
-   - `examples/components/input.md` - Input component
-   - `examples/components/form.md` - Form component
-   - `examples/components/list.md` - List component
-   - `examples/components/card.md` - Card component
-   - `examples/components/toast.md` - Toast component
-   - `examples/components/modal.md` - Modal component
-   - `examples/components/tabs.md` - Tabs component
-   - `examples/components/nav-bar.md` - NavBar component
-   - `examples/components/picker.md` - Picker component
-   - `examples/components/date-picker.md` - DatePicker component
-   - `examples/components/switch.md` - Switch component
-   - `examples/components/checkbox.md` - Checkbox component
-   - `examples/components/radio.md` - Radio component
-   - `examples/components/stepper.md` - Stepper component
-   - `examples/components/avatar.md` - Avatar component
-   - `examples/components/badge.md` - Badge component
-   - `examples/components/tag.md` - Tag component
-   - `examples/components/empty.md` - Empty component
-   - `examples/components/loading.md` - Loading component
-   - `examples/components/popup.md` - Popup component
-   - `examples/components/action-sheet.md` - ActionSheet component
-
-3. **Follow the specific instructions** in that example file for syntax, structure, and best practices
-
-   **Important Notes**:
-   - Ant Design Mini is for Alipay Mini Program and WeChat Mini Program
-   - Components use mini-program syntax (axml/json)
-   - Examples include both Alipay and WeChat syntax
-   - Each example file includes key concepts, code examples, and key points
-
-4. **Reference API documentation** in the `api/` directory when needed:
-   - `api/component-api.md` - Component API reference
-   - `api/props-and-events.md` - Props and events reference
-
-5. **Use templates** from the `templates/` directory:
-   - `templates/installation.md` - Installation templates
-   - `templates/component-usage.md` - Component usage templates
-
-### 1. Understanding Ant Design Mini
-
-Ant Design Mini is a UI component library for Alipay Mini Program and WeChat Mini Program, following Ant Design design specifications.
-
-**Key Concepts**:
-- **Mini Program Support**: Alipay and WeChat Mini Programs
-- **Design System**: Follows Ant Design design language
-- **Rich Components**: Button, Form, List, Modal, etc.
-- **Theme Customization**: Support for theme customization
-- **i18n**: Internationalization support
-
-### 2. Installation
-
-**Using npm**:
-
-```bash
-npm install antd-mini
-```
-
-**Using yarn**:
-
-```bash
-yarn add antd-mini
-```
-
-**Using pnpm**:
-
-```bash
-pnpm add antd-mini
-```
-
-### 3. Basic Setup
-
-```json
-// app.json (Alipay Mini Program)
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index"
-  }
-}
-```
-
-```xml
-<!-- page.axml -->
-<ant-button type="primary" onTap="handleTap">Button</ant-button>
-```
-
-
-### Doc mapping (one-to-one with official documentation)
-
-**Guide (指南)**:
-- See guide files in `examples/guide/` or `examples/getting-started/` → https://ant-design-mini.antgroup.com/guide/quick-start
-
-**Components (组件)**:
-- See component files in `examples/components/` → https://ant-design-mini.antgroup.com/components/overview
-
-## Examples and Templates
-
-This skill includes detailed examples organized to match the official documentation structure. All examples are in the `examples/` directory (see mapping above).
-
-**To use examples:**
-- Identify the topic from the user's request
-- Load the appropriate example file from the mapping above
-- Follow the instructions, syntax, and best practices in that file
-- Adapt the code examples to your specific use case
-
-**To use templates:**
-- Reference templates in `templates/` directory for common scaffolding
-- Adapt templates to your specific needs and coding style
-
-## API Reference
-
-Detailed API documentation is available in the `api/` directory, organized to match the official Ant Design Mini API documentation structure:
-
-### Component API (`api/component-api.md`)
-- Component props and events
-- Component methods
-- Component slots
-
-### Props and Events (`api/props-and-events.md`)
-- Common props
-- Common events
-- Event handling
-
-**To use API reference:**
-1. Identify the API you need help with
-2. Load the corresponding API file from the `api/` directory
-3. Find the API signature, parameters, return type, and examples
-4. Reference the linked example files for detailed usage patterns
-5. All API files include links to relevant example files in the `examples/` directory
-
-## Best Practices
-
-1. **Register components**: Register components in app.json or page.json
-2. **Use correct syntax**: Use axml for Alipay, wxml for WeChat
-3. **Handle events**: Use onTap for Alipay, bindtap for WeChat
-4. **Customize theme**: Use theme variables for customization
-5. **Follow design specs**: Follow Ant Design design specifications
-
-## Resources
-
-- **Official Documentation**: https://ant-design-mini.antgroup.com/
-- **Quick Start**: https://ant-design-mini.antgroup.com/guide/quick-start
-- **Components**: https://ant-design-mini.antgroup.com/components/overview
-- **GitHub Repository**: https://github.com/ant-design/ant-design-mini
-
-## Keywords
-
-Ant Design Mini, ant-design-mini, antd-mini, mini program, Alipay Mini Program, WeChat Mini Program, 小程序, 支付宝小程序, 微信小程序, 组件库, UI components, Button, Form, List, Modal, Toast, Tabs, NavBar, 按钮, 表单, 列表, 弹窗, 提示, 标签页, 导航栏

+ 0 - 72
skills/ant-design-mini/api/component-api.md

@@ -1,72 +0,0 @@
-# Component API
-
-## API Reference
-
-Ant Design Mini component props, events, and methods.
-
-### Common Props
-
-Most components support:
-- `className` - Custom class name
-- `style` - Custom style
-- `disabled` - Disabled state
-
-### Common Events
-
-Most components emit:
-- `onTap` / `bindtap` - Tap event (Alipay/WeChat)
-- `onChange` / `bindchange` - Change event
-
-### Button Component
-
-**Props:**
-- `type` - Button type (primary, default, text)
-- `size` - Button size (large, medium, small)
-- `disabled` - Disabled state
-- `loading` - Loading state
-- `icon` - Icon name
-
-**Events:**
-- `onTap` / `bindtap` - Click event
-
-### Input Component
-
-**Props:**
-- `value` - Input value
-- `placeholder` - Placeholder text
-- `type` - Input type (text, number, password)
-- `disabled` - Disabled state
-- `readonly` - Readonly state
-- `maxlength` - Max length
-- `allowClear` - Show clear button
-
-**Events:**
-- `onInput` / `bindinput` - Input event
-- `onFocus` / `bindfocus` - Focus event
-- `onBlur` / `bindblur` - Blur event
-
-### Form Component
-
-**Props:**
-- `onFinish` - Submit handler
-- `onFinishFailed` - Validation failed handler
-
-**Events:**
-- `onFinish` - Form submit event
-- `onFinishFailed` - Validation failed event
-
-### Modal Component
-
-**Props:**
-- `visible` - Modal visibility
-- `title` - Modal title
-- `onClose` - Close handler
-- `onOk` - OK handler
-- `onCancel` - Cancel handler
-
-**Events:**
-- `onClose` - Close event
-- `onOk` - OK event
-- `onCancel` - Cancel event
-
-**See also:** `examples/components/` for detailed component examples

+ 0 - 87
skills/ant-design-mini/api/props-and-events.md

@@ -1,87 +0,0 @@
-# Props and Events
-
-## API Reference
-
-Common props and events in Ant Design Mini components.
-
-### Common Props
-
-#### className
-
-**Type:** `string`
-
-Custom CSS class name.
-
-#### style
-
-**Type:** `string | object`
-
-Custom inline style.
-
-#### disabled
-
-**Type:** `boolean`
-
-**Default:** `false`
-
-Whether component is disabled.
-
-### Common Events
-
-#### onTap / bindtap
-
-**Type:** `Function`
-
-Tap/click event handler.
-
-**Platform Differences:**
-- Alipay: `onTap`
-- WeChat: `bindtap`
-
-**Example:**
-```xml
-<!-- Alipay -->
-<ant-button onTap="handleTap">Button</ant-button>
-
-<!-- WeChat -->
-<ant-button bindtap="handleTap">Button</ant-button>
-```
-
-#### onChange / bindchange
-
-**Type:** `Function`
-
-Change event handler.
-
-**Platform Differences:**
-- Alipay: `onChange`
-- WeChat: `bindchange`
-
-**Example:**
-```xml
-<!-- Alipay -->
-<ant-input onChange="handleChange" />
-
-<!-- WeChat -->
-<ant-input bindchange="handleChange" />
-```
-
-### Event Object
-
-Event handlers receive an event object:
-
-```javascript
-handleEvent(e) {
-  // e.detail.value - Value from component
-  // e.currentTarget - Current target element
-  // e.currentTarget.dataset - Data attributes
-}
-```
-
-### Platform Compatibility
-
-**Event Naming:**
-- Alipay uses `on*` prefix (onTap, onChange, onInput)
-- WeChat uses `bind*` prefix (bindtap, bindchange, bindinput)
-
-**See also:** `examples/components/` for component-specific examples

+ 0 - 75
skills/ant-design-mini/examples/components/action-sheet.md

@@ -1,75 +0,0 @@
-# ActionSheet Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the ActionSheet component in Ant Design Mini.
-
-### Key Concepts
-
-- Action sheet display
-- Action items
-- Action sheet events
-- Action sheet styling
-
-### Example: Basic ActionSheet
-
-```xml
-<ant-action-sheet 
-  visible="{{visible}}"
-  actions="{{actions}}"
-  onClose="handleClose"
-  onAction="handleAction"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    visible: false,
-    actions: [
-      { text: 'Option 1', value: '1' },
-      { text: 'Option 2', value: '2' },
-      { text: 'Cancel', value: 'cancel', type: 'cancel' }
-    ]
-  },
-  showActionSheet() {
-    this.setData({ visible: true })
-  },
-  handleClose() {
-    this.setData({ visible: false })
-  },
-  handleAction(e) {
-    console.log('Action:', e.detail.value)
-    this.setData({ visible: false })
-  }
-})
-```
-
-### Example: ActionSheet API
-
-```javascript
-// Using ActionSheet API
-import { ActionSheet } from 'antd-mini'
-
-ActionSheet.show({
-  actions: [
-    { text: 'Option 1', value: '1' },
-    { text: 'Option 2', value: '2' }
-  ],
-  onAction: (value) => {
-    console.log('Selected:', value)
-  }
-})
-```
-
-### Key Points
-
-- Configure actions array
-- Handle onAction event
-- Support cancel action
-- Use ActionSheet API for programmatic control
-- Control visibility with visible prop

+ 0 - 55
skills/ant-design-mini/examples/components/avatar.md

@@ -1,55 +0,0 @@
-# Avatar Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Avatar component in Ant Design Mini.
-
-### Key Concepts
-
-- Avatar image
-- Avatar size
-- Avatar shape
-- Avatar fallback
-
-### Example: Basic Avatar
-
-```xml
-<ant-avatar src="{{avatarUrl}}" />
-```
-
-### Example: Avatar Sizes
-
-```xml
-<ant-avatar src="{{avatarUrl}}" size="large" />
-<ant-avatar src="{{avatarUrl}}" size="medium" />
-<ant-avatar src="{{avatarUrl}}" size="small" />
-```
-
-### Example: Avatar Shape
-
-```xml
-<ant-avatar src="{{avatarUrl}}" shape="circle" />
-<ant-avatar src="{{avatarUrl}}" shape="square" />
-```
-
-### Example: Avatar with Fallback
-
-```xml
-<ant-avatar 
-  src="{{avatarUrl}}"
-  onError="handleError"
->
-  <text>User</text>
-</ant-avatar>
-```
-
-### Key Points
-
-- Use src for image URL
-- Configure size (large, medium, small)
-- Set shape (circle, square)
-- Handle image error
-- Support text fallback

+ 0 - 61
skills/ant-design-mini/examples/components/badge.md

@@ -1,61 +0,0 @@
-# Badge Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Badge component in Ant Design Mini.
-
-### Key Concepts
-
-- Badge count
-- Badge dot
-- Badge position
-- Badge styling
-
-### Example: Basic Badge
-
-```xml
-<ant-badge count="{{count}}">
-  <ant-button>Button</ant-button>
-</ant-badge>
-```
-
-### Example: Badge Dot
-
-```xml
-<ant-badge dot>
-  <ant-button>Button</ant-button>
-</ant-badge>
-```
-
-### Example: Badge Position
-
-```xml
-<ant-badge 
-  count="{{count}}"
-  position="topRight"
->
-  <ant-button>Button</ant-button>
-</ant-badge>
-```
-
-### Example: Badge with Max
-
-```xml
-<ant-badge 
-  count="{{count}}"
-  max="99"
->
-  <ant-button>Button</ant-button>
-</ant-badge>
-```
-
-### Key Points
-
-- Wrap content with badge
-- Set count for number badge
-- Use dot for dot badge
-- Configure position
-- Set max for overflow

+ 0 - 81
skills/ant-design-mini/examples/components/button.md

@@ -1,81 +0,0 @@
-# Button Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Button component in Ant Design Mini.
-
-### Key Concepts
-
-- Button types
-- Button sizes
-- Button states
-- Button events
-
-### Example: Basic Button
-
-```xml
-<!-- Alipay -->
-<ant-button type="primary">Primary</ant-button>
-<ant-button type="default">Default</ant-button>
-<ant-button type="text">Text</ant-button>
-```
-
-```xml
-<!-- WeChat -->
-<ant-button type="primary">Primary</ant-button>
-<ant-button type="default">Default</ant-button>
-<ant-button type="text">Text</ant-button>
-```
-
-### Example: Button Sizes
-
-```xml
-<ant-button size="large">Large</ant-button>
-<ant-button size="medium">Medium</ant-button>
-<ant-button size="small">Small</ant-button>
-```
-
-### Example: Button States
-
-```xml
-<ant-button disabled>Disabled</ant-button>
-<ant-button loading>Loading</ant-button>
-```
-
-### Example: Button Events
-
-```xml
-<!-- Alipay -->
-<ant-button type="primary" onTap="handleTap">Click Me</ant-button>
-```
-
-```xml
-<!-- WeChat -->
-<ant-button type="primary" bindtap="handleTap">Click Me</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  handleTap() {
-    console.log('Button clicked')
-  }
-})
-```
-
-### Example: Button with Icon
-
-```xml
-<ant-button icon="user">With Icon</ant-button>
-```
-
-### Key Points
-
-- Multiple types: primary, default, text
-- Multiple sizes: large, medium, small
-- Support disabled and loading states
-- Icon support
-- Use onTap (Alipay) or bindtap (WeChat)

+ 0 - 58
skills/ant-design-mini/examples/components/card.md

@@ -1,58 +0,0 @@
-# Card Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Card component in Ant Design Mini.
-
-### Key Concepts
-
-- Card content
-- Card header
-- Card actions
-- Card styling
-
-### Example: Basic Card
-
-```xml
-<ant-card title="Card Title">
-  <view>Card Content</view>
-</ant-card>
-```
-
-### Example: Card with Actions
-
-```xml
-<ant-card 
-  title="Card Title"
-  extra="Extra"
->
-  <view>Card Content</view>
-  <view slot="actions">
-    <ant-button size="small">Action</ant-button>
-  </view>
-</ant-card>
-```
-
-### Example: Card with Image
-
-```xml
-<ant-card>
-  <image 
-    slot="cover"
-    src="{{imageUrl}}"
-    mode="aspectFit"
-  />
-  <view>Card Content</view>
-</ant-card>
-```
-
-### Key Points
-
-- Use title for card title
-- Use extra for header extra
-- Support cover slot for image
-- Support actions slot
-- Customize card content

+ 0 - 94
skills/ant-design-mini/examples/components/checkbox.md

@@ -1,94 +0,0 @@
-# Checkbox Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Checkbox component in Ant Design Mini.
-
-### Key Concepts
-
-- Single checkbox
-- Checkbox group
-- Checkbox states
-- Checkbox events
-
-### Example: Basic Checkbox
-
-```xml
-<!-- Alipay -->
-<ant-checkbox 
-  checked="{{checked}}"
-  onChange="handleChange"
->
-  Checkbox
-</ant-checkbox>
-```
-
-```xml
-<!-- WeChat -->
-<ant-checkbox 
-  checked="{{checked}}"
-  bindchange="handleChange"
->
-  Checkbox
-</ant-checkbox>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    checked: false
-  },
-  handleChange(e) {
-    this.setData({
-      checked: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Checkbox Group
-
-```xml
-<ant-checkbox-group 
-  value="{{checkedList}}"
-  onChange="handleGroupChange"
->
-  <ant-checkbox value="1">Option 1</ant-checkbox>
-  <ant-checkbox value="2">Option 2</ant-checkbox>
-  <ant-checkbox value="3">Option 3</ant-checkbox>
-</ant-checkbox-group>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    checkedList: []
-  },
-  handleGroupChange(e) {
-    this.setData({
-      checkedList: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Checkbox States
-
-```xml
-<ant-checkbox checked="{{checked}}" disabled>
-  Disabled
-</ant-checkbox>
-```
-
-### Key Points
-
-- Use checked prop for state
-- Handle onChange/bindchange event
-- Use checkbox-group for multiple checkboxes
-- Support disabled state
-- Value array for group

+ 0 - 78
skills/ant-design-mini/examples/components/date-picker.md

@@ -1,78 +0,0 @@
-# DatePicker Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the DatePicker component in Ant Design Mini.
-
-### Key Concepts
-
-- Date selection
-- Date range
-- Date format
-- Date picker types
-
-### Example: Basic DatePicker
-
-```xml
-<ant-date-picker 
-  value="{{date}}"
-  onOk="handleDateOk"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    date: ''
-  },
-  handleDateOk(e) {
-    this.setData({
-      date: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Date Range
-
-```xml
-<ant-date-picker 
-  value="{{dateRange}}"
-  mode="range"
-  onOk="handleRangeOk"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    dateRange: []
-  },
-  handleRangeOk(e) {
-    this.setData({
-      dateRange: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Date Picker Types
-
-```xml
-<ant-date-picker mode="date" />
-<ant-date-picker mode="time" />
-<ant-date-picker mode="datetime" />
-```
-
-### Key Points
-
-- Use value for selected date
-- Handle onOk event
-- Support date range mode
-- Multiple picker types
-- Format date display

+ 0 - 56
skills/ant-design-mini/examples/components/empty.md

@@ -1,56 +0,0 @@
-# Empty Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Empty component in Ant Design Mini.
-
-### Key Concepts
-
-- Empty state
-- Empty description
-- Empty image
-- Empty actions
-
-### Example: Basic Empty
-
-```xml
-<ant-empty description="No Data" />
-```
-
-### Example: Empty with Image
-
-```xml
-<ant-empty 
-  image="{{imageUrl}}"
-  description="No Data"
-/>
-```
-
-### Example: Empty with Actions
-
-```xml
-<ant-empty description="No Data">
-  <ant-button type="primary" onTap="handleAction">
-    Refresh
-  </ant-button>
-</ant-empty>
-```
-
-### Example: Empty Types
-
-```xml
-<ant-empty type="empty" description="Empty" />
-<ant-empty type="error" description="Error" />
-<ant-empty type="network" description="Network Error" />
-```
-
-### Key Points
-
-- Use description for text
-- Customize image
-- Add action buttons
-- Multiple empty types
-- Simple empty state display

+ 0 - 81
skills/ant-design-mini/examples/components/form.md

@@ -1,81 +0,0 @@
-# Form Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Form component in Ant Design Mini.
-
-### Key Concepts
-
-- Form structure
-- Form validation
-- Form submission
-- Form fields
-
-### Example: Basic Form
-
-```xml
-<ant-form onFinish="handleSubmit">
-  <ant-form-item label="Name" name="name">
-    <ant-input value="{{form.name}}" onInput="handleNameInput" />
-  </ant-form-item>
-  <ant-form-item label="Email" name="email">
-    <ant-input value="{{form.email}}" onInput="handleEmailInput" />
-  </ant-form-item>
-  <ant-form-item>
-    <ant-button type="primary" formType="submit">Submit</ant-button>
-  </ant-form-item>
-</ant-form>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    form: {
-      name: '',
-      email: ''
-    }
-  },
-  handleNameInput(e) {
-    this.setData({
-      'form.name': e.detail.value
-    })
-  },
-  handleEmailInput(e) {
-    this.setData({
-      'form.email': e.detail.value
-    })
-  },
-  handleSubmit(e) {
-    console.log('Form data:', this.data.form)
-  }
-})
-```
-
-### Example: Form Validation
-
-```xml
-<ant-form 
-  onFinish="handleSubmit"
-  onFinishFailed="handleFailed"
->
-  <ant-form-item 
-    label="Name" 
-    name="name"
-    rules="{{[{required: true, message: 'Name is required'}]}}"
-  >
-    <ant-input value="{{form.name}}" onInput="handleNameInput" />
-  </ant-form-item>
-</ant-form>
-```
-
-### Key Points
-
-- Use ant-form for form container
-- Use ant-form-item for form fields
-- Configure validation rules
-- Handle form submission
-- Use formType="submit" on button

+ 0 - 92
skills/ant-design-mini/examples/components/input.md

@@ -1,92 +0,0 @@
-# Input Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Input component in Ant Design Mini.
-
-### Key Concepts
-
-- Input types
-- Input states
-- Input events
-- Input validation
-
-### Example: Basic Input
-
-```xml
-<!-- Alipay -->
-<ant-input 
-  value="{{value}}" 
-  placeholder="Enter text"
-  onInput="handleInput"
-/>
-```
-
-```xml
-<!-- WeChat -->
-<ant-input 
-  value="{{value}}" 
-  placeholder="Enter text"
-  bindinput="handleInput"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    value: ''
-  },
-  handleInput(e) {
-    this.setData({
-      value: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Input Types
-
-```xml
-<ant-input type="text" placeholder="Text" />
-<ant-input type="number" placeholder="Number" />
-<ant-input type="password" placeholder="Password" />
-```
-
-### Example: Input States
-
-```xml
-<ant-input disabled placeholder="Disabled" />
-<ant-input readonly value="Readonly" />
-```
-
-### Example: Input with Clear
-
-```xml
-<ant-input 
-  value="{{value}}"
-  allowClear
-  onInput="handleInput"
-/>
-```
-
-### Example: Input Validation
-
-```xml
-<ant-input 
-  value="{{value}}"
-  maxlength="10"
-  onInput="handleInput"
-/>
-```
-
-### Key Points
-
-- Use value and onInput/bindinput for two-way binding
-- Support multiple input types
-- Support disabled and readonly states
-- Allow clear button
-- Support maxlength validation

+ 0 - 80
skills/ant-design-mini/examples/components/list.md

@@ -1,80 +0,0 @@
-# List Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the List component in Ant Design Mini.
-
-### Key Concepts
-
-- List items
-- List rendering
-- List events
-- List styling
-
-### Example: Basic List
-
-```xml
-<ant-list>
-  <ant-list-item>Item 1</ant-list-item>
-  <ant-list-item>Item 2</ant-list-item>
-  <ant-list-item>Item 3</ant-list-item>
-</ant-list>
-```
-
-### Example: List with Data
-
-```xml
-<ant-list>
-  <ant-list-item 
-    wx:for="{{items}}" 
-    wx:key="index"
-    onTap="handleItemTap"
-    data-index="{{index}}"
-  >
-    {{item.title}}
-  </ant-list-item>
-</ant-list>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    items: [
-      { title: 'Item 1' },
-      { title: 'Item 2' },
-      { title: 'Item 3' }
-    ]
-  },
-  handleItemTap(e) {
-    const index = e.currentTarget.dataset.index
-    console.log('Item tapped:', this.data.items[index])
-  }
-})
-```
-
-### Example: List with Actions
-
-```xml
-<ant-list-item 
-  title="Title"
-  brief="Description"
-  arrow
-  onTap="handleTap"
->
-  <view slot="extra">
-    <ant-button size="small">Action</ant-button>
-  </view>
-</ant-list-item>
-```
-
-### Key Points
-
-- Use ant-list for list container
-- Use ant-list-item for list items
-- Support title, brief, arrow props
-- Handle item tap events
-- Support custom slots

+ 0 - 65
skills/ant-design-mini/examples/components/loading.md

@@ -1,65 +0,0 @@
-# Loading Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Loading component in Ant Design Mini.
-
-### Key Concepts
-
-- Loading display
-- Loading types
-- Loading text
-- Loading API
-
-### Example: Loading Component
-
-```xml
-<ant-loading 
-  visible="{{loading}}"
-  type="spinner"
-  tip="Loading..."
-/>
-```
-
-### Example: Loading API
-
-```javascript
-// Using Loading API
-import { Loading } from 'antd-mini'
-
-// Show loading
-Loading.show({
-  type: 'spinner',
-  tip: 'Loading...'
-})
-
-// Hide loading
-Loading.hide()
-```
-
-### Example: Loading Types
-
-```xml
-<ant-loading type="spinner" />
-<ant-loading type="circular" />
-```
-
-### Example: Loading with Text
-
-```xml
-<ant-loading 
-  visible="{{loading}}"
-  tip="Please wait..."
-/>
-```
-
-### Key Points
-
-- Control visibility with visible prop
-- Use Loading API for programmatic control
-- Multiple loading types
-- Customize loading text
-- Simple loading indicator

+ 0 - 79
skills/ant-design-mini/examples/components/modal.md

@@ -1,79 +0,0 @@
-# Modal Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Modal component in Ant Design Mini.
-
-### Key Concepts
-
-- Modal display
-- Modal content
-- Modal actions
-- Modal events
-
-### Example: Basic Modal
-
-```xml
-<ant-modal 
-  visible="{{visible}}"
-  title="Title"
-  onClose="handleClose"
->
-  <view>Modal Content</view>
-</ant-modal>
-<ant-button onTap="showModal">Show Modal</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    visible: false
-  },
-  showModal() {
-    this.setData({ visible: true })
-  },
-  handleClose() {
-    this.setData({ visible: false })
-  }
-})
-```
-
-### Example: Modal with Actions
-
-```xml
-<ant-modal 
-  visible="{{visible}}"
-  title="Confirm"
-  onOk="handleOk"
-  onCancel="handleCancel"
->
-  <view>Are you sure?</view>
-</ant-modal>
-```
-
-### Example: Modal API
-
-```javascript
-// Using Modal API
-import { Modal } from 'antd-mini'
-
-Modal.confirm({
-  title: 'Confirm',
-  content: 'Are you sure?',
-  onOk: () => {
-    console.log('Confirmed')
-  }
-})
-```
-
-### Key Points
-
-- Control visibility with visible prop
-- Handle onClose event
-- Support onOk and onCancel
-- Use Modal API for programmatic control
-- Customize modal content

+ 0 - 64
skills/ant-design-mini/examples/components/nav-bar.md

@@ -1,64 +0,0 @@
-# NavBar Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the NavBar component in Ant Design Mini.
-
-### Key Concepts
-
-- NavBar title
-- NavBar back button
-- NavBar actions
-- NavBar events
-
-### Example: Basic NavBar
-
-```xml
-<ant-nav-bar 
-  title="Title"
-  onBack="handleBack"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  handleBack() {
-    // Navigate back
-    my.navigateBack()
-  }
-})
-```
-
-### Example: NavBar with Actions
-
-```xml
-<ant-nav-bar 
-  title="Title"
-  onBack="handleBack"
->
-  <view slot="right">
-    <ant-button size="small">Action</ant-button>
-  </view>
-</ant-nav-bar>
-```
-
-### Example: NavBar without Back
-
-```xml
-<ant-nav-bar 
-  title="Title"
-  showBack="{{false}}"
-/>
-```
-
-### Key Points
-
-- Set title for navbar
-- Handle onBack event
-- Show/hide back button
-- Support right slot for actions
-- Customize navbar appearance

+ 0 - 60
skills/ant-design-mini/examples/components/overview.md

@@ -1,60 +0,0 @@
-# Components Overview
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example provides an overview of Ant Design Mini components.
-
-### Key Concepts
-
-- Component categories
-- Component list
-- Component usage
-- Platform compatibility
-
-### Example: Component Categories
-
-**Form Components (表单组件)**:
-- Button, Input, Form, FormItem
-- Switch, Checkbox, Radio
-- Picker, DatePicker, Stepper
-
-**Data Display (数据展示)**:
-- List, ListItem
-- Card
-- Avatar, Badge, Tag
-- Empty
-
-**Feedback (反馈)**:
-- Toast, Modal
-- Loading
-- Popup, ActionSheet
-
-**Navigation (导航)**:
-- Tabs, TabItem
-- NavBar
-
-### Example: Component Registration
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index",
-    "ant-input": "antd-mini/es/Input/index",
-    "ant-form": "antd-mini/es/Form/index",
-    "ant-list": "antd-mini/es/List/index",
-    "ant-modal": "antd-mini/es/Modal/index"
-  }
-}
-```
-
-### Key Points
-
-- Components organized by category
-- Register components before use
-- Compatible with Alipay and WeChat
-- Follow Ant Design design specs
-- Rich component ecosystem

+ 0 - 84
skills/ant-design-mini/examples/components/picker.md

@@ -1,84 +0,0 @@
-# Picker Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Picker component in Ant Design Mini.
-
-### Key Concepts
-
-- Picker options
-- Picker selection
-- Picker events
-- Multi-column picker
-
-### Example: Basic Picker
-
-```xml
-<ant-picker 
-  value="{{selectedValue}}"
-  options="{{options}}"
-  onOk="handlePickerOk"
-  onCancel="handlePickerCancel"
->
-  <view>Select: {{selectedValue}}</view>
-</ant-picker>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    selectedValue: '',
-    options: [
-      { label: 'Option 1', value: '1' },
-      { label: 'Option 2', value: '2' },
-      { label: 'Option 3', value: '3' }
-    ]
-  },
-  handlePickerOk(e) {
-    this.setData({
-      selectedValue: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Multi-column Picker
-
-```xml
-<ant-picker 
-  value="{{selectedValues}}"
-  columns="{{columns}}"
-  onOk="handlePickerOk"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    selectedValues: [],
-    columns: [
-      [
-        { label: 'A', value: 'a' },
-        { label: 'B', value: 'b' }
-      ],
-      [
-        { label: '1', value: '1' },
-        { label: '2', value: '2' }
-      ]
-    ]
-  }
-})
-```
-
-### Key Points
-
-- Configure options array
-- Handle onOk event for selection
-- Support single and multi-column
-- Use value for controlled component
-- Customize picker display

+ 0 - 74
skills/ant-design-mini/examples/components/popup.md

@@ -1,74 +0,0 @@
-# Popup Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Popup component in Ant Design Mini.
-
-### Key Concepts
-
-- Popup display
-- Popup position
-- Popup mask
-- Popup events
-
-### Example: Basic Popup
-
-```xml
-<ant-popup 
-  visible="{{popupVisible}}"
-  onClose="handleClose"
->
-  <view>Popup Content</view>
-</ant-popup>
-<ant-button onTap="showPopup">Show Popup</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    popupVisible: false
-  },
-  showPopup() {
-    this.setData({ popupVisible: true })
-  },
-  handleClose() {
-    this.setData({ popupVisible: false })
-  }
-})
-```
-
-### Example: Popup Position
-
-```xml
-<ant-popup 
-  visible="{{visible}}"
-  position="bottom"
-  onClose="handleClose"
->
-  <view>Bottom Popup</view>
-</ant-popup>
-```
-
-### Example: Popup without Mask
-
-```xml
-<ant-popup 
-  visible="{{visible}}"
-  mask="{{false}}"
-  onClose="handleClose"
->
-  <view>Popup</view>
-</ant-popup>
-```
-
-### Key Points
-
-- Control visibility with visible prop
-- Configure position (top, bottom, left, right, center)
-- Show/hide mask
-- Handle onClose event
-- Customize popup content

+ 0 - 56
skills/ant-design-mini/examples/components/radio.md

@@ -1,56 +0,0 @@
-# Radio Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Radio component in Ant Design Mini.
-
-### Key Concepts
-
-- Single radio
-- Radio group
-- Radio states
-- Radio events
-
-### Example: Basic Radio
-
-```xml
-<ant-radio-group 
-  value="{{value}}"
-  onChange="handleChange"
->
-  <ant-radio value="1">Option 1</ant-radio>
-  <ant-radio value="2">Option 2</ant-radio>
-  <ant-radio value="3">Option 3</ant-radio>
-</ant-radio-group>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    value: '1'
-  },
-  handleChange(e) {
-    this.setData({
-      value: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Radio States
-
-```xml
-<ant-radio value="1" disabled>Disabled</ant-radio>
-```
-
-### Key Points
-
-- Use radio-group for radio groups
-- Set value for each radio
-- Handle onChange/bindchange event
-- Support disabled state
-- Single selection only

+ 0 - 76
skills/ant-design-mini/examples/components/stepper.md

@@ -1,76 +0,0 @@
-# Stepper Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Stepper component in Ant Design Mini.
-
-### Key Concepts
-
-- Stepper value
-- Stepper min/max
-- Stepper step
-- Stepper events
-
-### Example: Basic Stepper
-
-```xml
-<!-- Alipay -->
-<ant-stepper 
-  value="{{value}}"
-  onChange="handleChange"
-/>
-```
-
-```xml
-<!-- WeChat -->
-<ant-stepper 
-  value="{{value}}"
-  bindchange="handleChange"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    value: 1
-  },
-  handleChange(e) {
-    this.setData({
-      value: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Stepper with Limits
-
-```xml
-<ant-stepper 
-  value="{{value}}"
-  min="0"
-  max="10"
-  step="1"
-  onChange="handleChange"
-/>
-```
-
-### Example: Stepper Disabled
-
-```xml
-<ant-stepper 
-  value="{{value}}"
-  disabled
-/>
-```
-
-### Key Points
-
-- Use value for current value
-- Set min and max limits
-- Configure step increment
-- Handle onChange/bindchange event
-- Support disabled state

+ 0 - 72
skills/ant-design-mini/examples/components/switch.md

@@ -1,72 +0,0 @@
-# Switch Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Switch component in Ant Design Mini.
-
-### Key Concepts
-
-- Switch state
-- Switch events
-- Switch styling
-- Switch sizes
-
-### Example: Basic Switch
-
-```xml
-<!-- Alipay -->
-<ant-switch 
-  checked="{{checked}}"
-  onChange="handleSwitchChange"
-/>
-```
-
-```xml
-<!-- WeChat -->
-<ant-switch 
-  checked="{{checked}}"
-  bindchange="handleSwitchChange"
-/>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    checked: false
-  },
-  handleSwitchChange(e) {
-    this.setData({
-      checked: e.detail.value
-    })
-  }
-})
-```
-
-### Example: Switch with Label
-
-```xml
-<ant-switch 
-  checked="{{checked}}"
-  onChange="handleSwitchChange"
->
-  Enable Feature
-</ant-switch>
-```
-
-### Example: Switch States
-
-```xml
-<ant-switch checked="{{checked}}" disabled />
-```
-
-### Key Points
-
-- Use checked prop for state
-- Handle onChange/bindchange event
-- Support disabled state
-- Can include label text
-- Simple toggle control

+ 0 - 86
skills/ant-design-mini/examples/components/tabs.md

@@ -1,86 +0,0 @@
-# Tabs Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Tabs component in Ant Design Mini.
-
-### Key Concepts
-
-- Tab items
-- Tab switching
-- Tab events
-- Tab styling
-
-### Example: Basic Tabs
-
-```xml
-<ant-tabs 
-  current="{{currentTab}}"
-  onChange="handleTabChange"
->
-  <ant-tab-item title="Tab 1" key="1">
-    Content 1
-  </ant-tab-item>
-  <ant-tab-item title="Tab 2" key="2">
-    Content 2
-  </ant-tab-item>
-  <ant-tab-item title="Tab 3" key="3">
-    Content 3
-  </ant-tab-item>
-</ant-tabs>
-```
-
-```javascript
-// page.js
-Page({
-  data: {
-    currentTab: '1'
-  },
-  handleTabChange(e) {
-    this.setData({
-      currentTab: e.detail.key
-    })
-  }
-})
-```
-
-### Example: Tabs with Data
-
-```xml
-<ant-tabs 
-  current="{{currentTab}}"
-  onChange="handleTabChange"
->
-  <ant-tab-item 
-    wx:for="{{tabs}}" 
-    wx:key="key"
-    title="{{item.title}}" 
-    key="{{item.key}}"
-  >
-    {{item.content}}
-  </ant-tab-item>
-</ant-tabs>
-```
-
-### Example: Scrollable Tabs
-
-```xml
-<ant-tabs 
-  current="{{currentTab}}"
-  scrollable
-  onChange="handleTabChange"
->
-  <!-- Tab items -->
-</ant-tabs>
-```
-
-### Key Points
-
-- Use ant-tabs for container
-- Use ant-tab-item for each tab
-- Control current tab with current prop
-- Handle onChange event
-- Support scrollable tabs

+ 0 - 61
skills/ant-design-mini/examples/components/tag.md

@@ -1,61 +0,0 @@
-# Tag Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Tag component in Ant Design Mini.
-
-### Key Concepts
-
-- Tag types
-- Tag sizes
-- Tag closable
-- Tag events
-
-### Example: Basic Tag
-
-```xml
-<ant-tag>Tag</ant-tag>
-<ant-tag type="primary">Primary</ant-tag>
-<ant-tag type="success">Success</ant-tag>
-<ant-tag type="warning">Warning</ant-tag>
-<ant-tag type="error">Error</ant-tag>
-```
-
-### Example: Tag Sizes
-
-```xml
-<ant-tag size="large">Large</ant-tag>
-<ant-tag size="medium">Medium</ant-tag>
-<ant-tag size="small">Small</ant-tag>
-```
-
-### Example: Closable Tag
-
-```xml
-<ant-tag 
-  closable
-  onClose="handleClose"
->
-  Closable Tag
-</ant-tag>
-```
-
-```javascript
-// page.js
-Page({
-  handleClose() {
-    // Remove tag
-  }
-})
-```
-
-### Key Points
-
-- Multiple types: primary, success, warning, error
-- Multiple sizes: large, medium, small
-- Support closable
-- Handle onClose event
-- Customize tag appearance

+ 0 - 72
skills/ant-design-mini/examples/components/toast.md

@@ -1,72 +0,0 @@
-# Toast Component
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates the Toast component in Ant Design Mini.
-
-### Key Concepts
-
-- Toast display
-- Toast types
-- Toast duration
-- Toast API
-
-### Example: Toast Component
-
-```xml
-<ant-toast 
-  visible="{{toastVisible}}"
-  content="{{toastContent}}"
-  type="{{toastType}}"
-/>
-```
-
-### Example: Toast API
-
-```javascript
-// Using Toast API
-import { Toast } from 'antd-mini'
-
-// Success toast
-Toast.show({
-  type: 'success',
-  content: 'Success!',
-  duration: 2000
-})
-
-// Error toast
-Toast.show({
-  type: 'fail',
-  content: 'Error!',
-  duration: 2000
-})
-
-// Loading toast
-Toast.show({
-  type: 'loading',
-  content: 'Loading...'
-})
-
-// Hide toast
-Toast.hide()
-```
-
-### Example: Toast Types
-
-```javascript
-Toast.show({ type: 'success', content: 'Success' })
-Toast.show({ type: 'fail', content: 'Error' })
-Toast.show({ type: 'loading', content: 'Loading' })
-Toast.show({ type: 'none', content: 'Message' })
-```
-
-### Key Points
-
-- Use Toast API for programmatic control
-- Multiple types: success, fail, loading, none
-- Configure duration
-- Auto-hide or manual hide
-- Simple and easy to use

+ 0 - 90
skills/ant-design-mini/examples/getting-started.md

@@ -1,90 +0,0 @@
-# Getting Started
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example demonstrates how to get started with Ant Design Mini.
-
-### Key Concepts
-
-- Installation
-- Component registration
-- Basic usage
-- Platform differences
-
-### Example: Installation
-
-```bash
-# Using npm
-npm install antd-mini
-
-# Using yarn
-yarn add antd-mini
-
-# Using pnpm
-pnpm add antd-mini
-```
-
-### Example: Component Registration (Alipay)
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index"
-  }
-}
-```
-
-### Example: Component Usage (Alipay)
-
-```xml
-<!-- page.axml -->
-<ant-button type="primary" onTap="handleTap">Button</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  handleTap() {
-    console.log('Button tapped')
-  }
-})
-```
-
-### Example: Component Registration (WeChat)
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index"
-  }
-}
-```
-
-### Example: Component Usage (WeChat)
-
-```xml
-<!-- page.wxml -->
-<ant-button type="primary" bindtap="handleTap">Button</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  handleTap() {
-    console.log('Button tapped')
-  }
-})
-```
-
-### Key Points
-
-- Install antd-mini package
-- Register components in app.json
-- Use axml for Alipay, wxml for WeChat
-- Use onTap for Alipay, bindtap for WeChat
-- Import component styles if needed

+ 0 - 80
skills/ant-design-mini/examples/quick-start.md

@@ -1,80 +0,0 @@
-# Quick Start
-
-**官方文档**: https://ant-design-mini.antgroup.com
-
-
-## Instructions
-
-This example provides a quick start guide for Ant Design Mini.
-
-### Key Concepts
-
-- Project setup
-- First component
-- Component registration
-- Basic usage
-
-### Example: Complete Setup
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index",
-    "ant-input": "antd-mini/es/Input/index"
-  }
-}
-```
-
-```xml
-<!-- index.axml -->
-<view class="container">
-  <ant-input 
-    value="{{value}}" 
-    placeholder="Enter text"
-    onInput="handleInput"
-  />
-  <ant-button type="primary" onTap="handleTap">
-    Submit
-  </ant-button>
-</view>
-```
-
-```javascript
-// index.js
-Page({
-  data: {
-    value: ''
-  },
-  handleInput(e) {
-    this.setData({
-      value: e.detail.value
-    })
-  },
-  handleTap() {
-    console.log('Value:', this.data.value)
-  }
-})
-```
-
-### Example: Using Multiple Components
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index",
-    "ant-form": "antd-mini/es/Form/index",
-    "ant-form-item": "antd-mini/es/FormItem/index",
-    "ant-input": "antd-mini/es/Input/index"
-  }
-}
-```
-
-### Key Points
-
-- Register all used components
-- Use correct event names (onTap/bindtap)
-- Handle events in page methods
-- Use data binding for two-way binding
-- Follow mini-program syntax

+ 0 - 116
skills/ant-design-mini/templates/component-usage.md

@@ -1,116 +0,0 @@
-# Component Usage Templates
-
-## Button Usage
-
-```xml
-<!-- Alipay -->
-<ant-button type="primary" onTap="handleTap">
-  Click Me
-</ant-button>
-
-<!-- WeChat -->
-<ant-button type="primary" bindtap="handleTap">
-  Click Me
-</ant-button>
-```
-
-```javascript
-Page({
-  handleTap() {
-    console.log('Clicked')
-  }
-})
-```
-
-## Form Usage
-
-```xml
-<ant-form onFinish="handleSubmit">
-  <ant-form-item label="Name" name="name">
-    <ant-input 
-      value="{{form.name}}" 
-      onInput="handleNameInput" 
-    />
-  </ant-form-item>
-  <ant-form-item>
-    <ant-button type="primary" formType="submit">
-      Submit
-    </ant-button>
-  </ant-form-item>
-</ant-form>
-```
-
-```javascript
-Page({
-  data: {
-    form: {
-      name: ''
-    }
-  },
-  handleNameInput(e) {
-    this.setData({
-      'form.name': e.detail.value
-    })
-  },
-  handleSubmit() {
-    console.log('Form:', this.data.form)
-  }
-})
-```
-
-## List Usage
-
-```xml
-<ant-list>
-  <ant-list-item 
-    wx:for="{{items}}" 
-    wx:key="index"
-    onTap="handleItemTap"
-    data-index="{{index}}"
-  >
-    {{item.title}}
-  </ant-list-item>
-</ant-list>
-```
-
-```javascript
-Page({
-  data: {
-    items: [
-      { title: 'Item 1' },
-      { title: 'Item 2' }
-    ]
-  },
-  handleItemTap(e) {
-    const index = e.currentTarget.dataset.index
-    console.log('Item:', this.data.items[index])
-  }
-})
-```
-
-## Modal Usage
-
-```xml
-<ant-modal 
-  visible="{{visible}}"
-  title="Title"
-  onClose="handleClose"
->
-  <view>Content</view>
-</ant-modal>
-<ant-button onTap="showModal">Show</ant-button>
-```
-
-```javascript
-Page({
-  data: {
-    visible: false
-  },
-  showModal() {
-    this.setData({ visible: true })
-  },
-  handleClose() {
-    this.setData({ visible: false })
-  }
-})
-```

+ 0 - 65
skills/ant-design-mini/templates/installation.md

@@ -1,65 +0,0 @@
-# Installation Templates
-
-## Alipay Mini Program
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index",
-    "ant-input": "antd-mini/es/Input/index",
-    "ant-form": "antd-mini/es/Form/index"
-  }
-}
-```
-
-```xml
-<!-- page.axml -->
-<ant-button type="primary" onTap="handleTap">Button</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  handleTap() {
-    console.log('Tapped')
-  }
-})
-```
-
-## WeChat Mini Program
-
-```json
-// app.json
-{
-  "usingComponents": {
-    "ant-button": "antd-mini/es/Button/index",
-    "ant-input": "antd-mini/es/Input/index",
-    "ant-form": "antd-mini/es/Form/index"
-  }
-}
-```
-
-```xml
-<!-- page.wxml -->
-<ant-button type="primary" bindtap="handleTap">Button</ant-button>
-```
-
-```javascript
-// page.js
-Page({
-  handleTap() {
-    console.log('Tapped')
-  }
-})
-```
-
-## Complete Setup
-
-```bash
-# Install
-npm install antd-mini
-
-# Register components in app.json
-# Use components in pages
-```

+ 0 - 203
skills/ant-design-mobile/LICENSE.txt

@@ -1,203 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-

+ 0 - 155
skills/ant-design-mobile/SKILL.md

@@ -1,155 +0,0 @@
----
-name: ant-design-mobile
-description: Provides comprehensive guidance for Ant Design Mobile component library including mobile components, themes, and platform adaptations. Use when the user asks about Ant Design Mobile, needs to build mobile applications, or implement mobile UI components.
-license: Complete terms in LICENSE.txt
----
-
-## When to use this skill
-
-Use this skill whenever the user wants to:
-- Build React mobile applications with Ant Design Mobile components
-- Use mobile UI components (Button, Input, Form, List, Card, Modal, etc.)
-- Create mobile-friendly interfaces
-- Customize Ant Design Mobile theme
-- Implement mobile-specific features (pull-to-refresh, infinite scroll, etc.)
-- Use Ant Design Mobile with React Native or web
-- Handle mobile gestures and interactions
-- Implement mobile navigation patterns
-- Use mobile form components
-- Create mobile data display components
-
-## How to use this skill
-
-This skill is organized to match the Ant Design Mobile official documentation structure (https://ant-design-mobile.antgroup.com/zh/guide/quick-start, https://ant-design-mobile.antgroup.com/zh/components/button). When working with Ant Design Mobile:
-
-1. **Install and setup** Ant Design Mobile:
-   - Load `examples/getting-started/installation.md` for installation instructions
-   - Load `examples/getting-started/basic-usage.md` for basic usage examples
-
-2. **Choose the component** based on the user's requirements:
-   - Button/按钮 → `examples/components/button.md`
-   - Input/输入框 → `examples/components/input.md`
-   - Form/表单 → `examples/components/form.md`
-   - List/列表 → `examples/components/list.md`
-   - Card/卡片 → `examples/components/card.md`
-   - Modal/对话框 → `examples/components/modal.md`
-   - Picker/选择器 → `examples/components/picker.md`
-   - DatePicker/日期选择器 → `examples/components/date-picker.md`
-   - Tabs/标签页 → `examples/components/tabs.md`
-   - PullToRefresh/下拉刷新 → `examples/components/pull-to-refresh.md`
-   - InfiniteScroll/无限滚动 → `examples/components/infinite-scroll.md`
-   - And many more components...
-
-3. **Load the appropriate example file** from the `examples/` directory:
-   - `examples/getting-started/installation.md` - Installation and setup
-   - `examples/getting-started/basic-usage.md` - Basic usage examples
-   - `examples/components/button.md` - Button component
-   - `examples/components/input.md` - Input component
-   - `examples/components/form.md` - Form component
-   - `examples/components/list.md` - List component
-   - `examples/components/card.md` - Card component
-   - `examples/components/modal.md` - Modal component
-   - `examples/components/picker.md` - Picker component
-   - `examples/components/date-picker.md` - DatePicker component
-   - `examples/components/tabs.md` - Tabs component
-   - `examples/components/pull-to-refresh.md` - PullToRefresh component
-   - `examples/components/infinite-scroll.md` - InfiniteScroll component
-   - `examples/components/icon.md` - Icon component
-   - `examples/components/badge.md` - Badge component
-   - `examples/components/tag.md` - Tag component
-   - `examples/components/avatar.md` - Avatar component
-   - `examples/components/image.md` - Image component
-   - `examples/components/image-viewer.md` - ImageViewer component
-   - `examples/components/nav-bar.md` - NavBar component
-   - `examples/components/tab-bar.md` - TabBar component
-   - `examples/components/index-bar.md` - IndexBar component
-   - `examples/components/side-bar.md` - SideBar component
-   - `examples/components/dialog.md` - Dialog component
-   - `examples/components/toast.md` - Toast component
-   - `examples/components/action-sheet.md` - ActionSheet component
-   - `examples/components/popup.md` - Popup component
-   - `examples/components/loading.md` - Loading component
-   - `examples/components/error-block.md` - ErrorBlock component
-   - `examples/components/empty.md` - Empty component
-   - `examples/components/notice-bar.md` - NoticeBar component
-   - `examples/components/mask.md` - Mask component
-   - `examples/components/textarea.md` - Textarea component
-   - `examples/components/switch.md` - Switch component
-   - `examples/components/checkbox.md` - Checkbox component
-   - `examples/components/radio.md` - Radio component
-   - `examples/components/stepper.md` - Stepper component
-   - `examples/components/rate.md` - Rate component
-   - `examples/components/slider.md` - Slider component
-   - `examples/components/uploader.md` - Uploader component
-   - `examples/components/grid.md` - Grid component
-   - `examples/components/swiper.md` - Swiper component
-   - `examples/components/cascader.md` - Cascader component
-   - `examples/components/search-bar.md` - SearchBar component
-   - `examples/components/virtual-input.md` - VirtualInput component
-   - `examples/components/divider.md` - Divider component
-   - `examples/components/space.md` - Space component
-   - `examples/components/safe-area.md` - SafeArea component
-   - `examples/advanced/theme-customization.md` - Theme customization
-   - `examples/advanced/internationalization.md` - Internationalization
-
-4. **Follow the specific instructions** in that example file for syntax, structure, and best practices
-
-5. **Reference the API documentation** when needed:
-   - `api/components.md` - Component API reference
-   - `api/config-provider.md` - ConfigProvider API
-
-6. **Use templates** for quick start:
-   - `templates/project-setup.md` - Project setup templates
-   - `templates/component-template.md` - Component usage templates
-
-
-### Doc mapping (one-to-one with official documentation)
-
-**Guide (指南)**:
-- See guide files in `examples/guide/` or `examples/getting-started/` → https://ant-design-mobile.antgroup.com/zh/guide/quick-start
-
-**Components (组件)**:
-- See component files in `examples/components/` → https://ant-design-mobile.antgroup.com/zh/components/button
-
-## Examples and Templates
-
-This skill includes detailed examples organized to match the official documentation structure. All examples are in the `examples/` directory (see mapping above).
-
-**To use examples:**
-- Identify the topic from the user's request
-- Load the appropriate example file from the mapping above
-- Follow the instructions, syntax, and best practices in that file
-- Adapt the code examples to your specific use case
-
-**To use templates:**
-- Reference templates in `templates/` directory for common scaffolding
-- Adapt templates to your specific needs and coding style
-
-## API Reference
-
-- **Components API**: `api/components.md` - All component props and APIs
-- **ConfigProvider API**: `api/config-provider.md` - ConfigProvider component API and global configuration
-
-## Best Practices
-
-1. **Import styles**: Import Ant Design Mobile CSS in your entry file
-2. **Use ConfigProvider**: Wrap your app with ConfigProvider for global configuration
-3. **Mobile-first**: Design for mobile devices first
-4. **Touch interactions**: Consider touch gestures and interactions
-5. **Performance**: Optimize for mobile performance
-6. **Responsive design**: Test on different screen sizes
-7. **Accessibility**: Follow mobile accessibility guidelines
-8. **Theme customization**: Use design tokens for consistent theming
-9. **Internationalization**: Use ConfigProvider with locale for i18n
-10. **Component composition**: Compose components for complex UIs
-
-## Resources
-
-- **Official Website**: https://ant-design-mobile.antgroup.com/
-- **Getting Started**: https://ant-design-mobile.antgroup.com/zh/guide/quick-start
-- **Components**: https://ant-design-mobile.antgroup.com/zh/components/button
-- **GitHub Repository**: https://github.com/ant-design/ant-design-mobile
-
-## Keywords
-
-Ant Design Mobile, antd-mobile, mobile UI, React mobile, mobile components, Button, Input, Form, List, Card, Modal, Picker, DatePicker, Tabs, PullToRefresh, InfiniteScroll, Swiper, Toast, Dialog, ActionSheet, Popup, Loading, NavBar, TabBar, Icon, Badge, Tag, Avatar, Image, ImageViewer, Switch, Checkbox, Radio, Stepper, Rate, Slider, Uploader, Grid, Cascader, SearchBar, VirtualInput, Divider, Space, SafeArea, ErrorBlock, Empty, NoticeBar, Mask, mobile app, 移动端, 组件库, 按钮, 输入框, 表单, 列表, 卡片, 对话框, 选择器, 日期选择器, 标签页, 下拉刷新, 无限滚动

+ 0 - 515
skills/ant-design-mobile/api/components.md

@@ -1,515 +0,0 @@
-# Components API | 组件 API
-
-## API Reference
-
-Complete Ant Design Mobile component APIs and props reference.
-
-### Common Props
-
-Most components share common props:
-
-- `className`: Additional CSS class
-- `style`: Inline style object
-- `disabled`: Disabled state
-- `loading`: Loading state
-
-### General Components
-
-#### Button API
-
-**Props:**
-- `color`: Button color (primary, success, warning, danger, default)
-- `size`: Button size (large, middle, small, mini)
-- `fill`: Button fill style (solid, outline, none)
-- `block`: Full-width button
-- `loading`: Loading state
-- `disabled`: Disabled state
-- `onClick`: Click handler
-
-#### Icon API
-
-**Props:**
-- `fontSize`: Icon size
-- `color`: Icon color
-- Children: Icon component from `antd-mobile-icons`
-
-#### Badge API
-
-**Props:**
-- `content`: Badge content (number or string)
-- `dot`: Show as dot
-- `color`: Badge color
-- `position`: Badge position (top-right, bottom-right, etc.)
-- `max`: Maximum number to display
-
-#### Tag API
-
-**Props:**
-- `color`: Tag color (default, primary, success, warning, danger)
-- `size`: Tag size (small, middle, large)
-- `round`: Rounded corners
-- `closable`: Show close button
-- `onClose`: Close handler
-- `icon`: Tag icon
-
-#### Avatar API
-
-**Props:**
-- `src`: Image URL
-- `size`: Avatar size (small, middle, large)
-- `shape`: Avatar shape (circle, square, rounded)
-- `style`: Custom styles
-
-#### Divider API
-
-**Props:**
-- `direction`: Divider direction (horizontal, vertical)
-- `contentPosition`: Text position (left, center, right)
-- Children: Divider text
-
-#### Space API
-
-**Props:**
-- `direction`: Space direction (horizontal, vertical)
-- `size`: Space size (small, middle, large)
-- `wrap`: Wrap items
-
-#### SafeArea API
-
-**Props:**
-- `position`: Safe area position (top, bottom, left, right)
-
-### Data Entry Components
-
-#### Input API
-
-**Props:**
-- `value`: Input value
-- `defaultValue`: Default value
-- `placeholder`: Placeholder text
-- `type`: Input type (text, number, password, tel, etc.)
-- `clearable`: Show clear button
-- `prefix`: Prefix element
-- `suffix`: Suffix element
-- `error`: Error message
-- `onChange`: Change handler (receives value)
-
-#### Form API
-
-**Props:**
-- `form`: Form instance from Form.useForm()
-- `onFinish`: Submit handler
-- `onFinishFailed`: Failed submit handler
-- `initialValues`: Initial form values
-
-**Form.Item Props:**
-- `name`: Field name
-- `label`: Field label
-- `rules`: Validation rules
-- `required`: Required field
-- `help`: Help text
-- `error`: Error message
-
-#### Textarea API
-
-**Props:**
-- `value`: Textarea value
-- `defaultValue`: Default value
-- `placeholder`: Placeholder text
-- `maxLength`: Maximum length
-- `showCount`: Show character count
-- `autoSize`: Auto resize (object with minRows, maxRows)
-- `onChange`: Change handler
-
-#### Switch API
-
-**Props:**
-- `checked`: Switch state
-- `defaultChecked`: Default state
-- `disabled`: Disabled state
-- `color`: Switch color
-- `loading`: Loading state
-- `onChange`: Change handler
-
-#### Checkbox API
-
-**Props:**
-- `checked`: Checkbox state
-- `defaultChecked`: Default state
-- `disabled`: Disabled state
-- `shape`: Checkbox shape (square, round)
-- `onChange`: Change handler
-
-**Checkbox.Group Props:**
-- `value`: Selected values array
-- `defaultValue`: Default selected values
-- `onChange`: Change handler
-
-#### Radio API
-
-**Props:**
-- `checked`: Radio state
-- `defaultChecked`: Default state
-- `disabled`: Disabled state
-- `shape`: Radio shape (square, round)
-- `onChange`: Change handler
-
-**Radio.Group Props:**
-- `value`: Selected value
-- `defaultValue`: Default selected value
-- `onChange`: Change handler
-
-#### Stepper API
-
-**Props:**
-- `value`: Stepper value
-- `defaultValue`: Default value
-- `min`: Minimum value
-- `max`: Maximum value
-- `step`: Step increment
-- `disabled`: Disabled state
-- `formatter`: Value formatter function
-- `onChange`: Change handler
-
-#### Rate API
-
-**Props:**
-- `value`: Rate value
-- `defaultValue`: Default value
-- `count`: Star count
-- `allowHalf`: Allow half star
-- `readonly`: Readonly mode
-- `character`: Custom character
-- `onChange`: Change handler
-
-#### Slider API
-
-**Props:**
-- `value`: Slider value
-- `defaultValue`: Default value
-- `min`: Minimum value
-- `max`: Maximum value
-- `step`: Step increment
-- `marks`: Marks object
-- `range`: Range mode
-- `onChange`: Change handler
-
-#### Uploader API
-
-**Props:**
-- `value`: File list
-- `defaultValue`: Default file list
-- `multiple`: Multiple files
-- `maxCount`: Maximum file count
-- `preview`: Show preview
-- `upload`: Custom upload function
-- `onChange`: Change handler
-
-### Data Display Components
-
-#### List API
-
-**Props:**
-- `mode`: List mode (default, card)
-- `header`: List header
-- `footer`: List footer
-
-**List.Item Props:**
-- `title`: Item title
-- `description`: Item description
-- `prefix`: Prefix element
-- `extra`: Extra element
-- `arrow`: Show arrow
-- `onClick`: Click handler
-
-#### Card API
-
-**Props:**
-- `title`: Card title
-- `extra`: Extra content in header
-- `bodyStyle`: Body styles
-- `cover`: Card cover image
-- `bordered`: Show border
-
-#### Grid API
-
-**Props:**
-- `columns`: Column count
-- `gap`: Gap between items
-
-**Grid.Item Props:**
-- `onClick`: Click handler
-
-#### Image API
-
-**Props:**
-- `src`: Image URL
-- `alt`: Alt text
-- `width`: Image width
-- `height`: Image height
-- `lazy`: Lazy load
-- `placeholder`: Loading placeholder
-- `fallback`: Error fallback
-- `preview`: Enable preview
-- `fit`: Image fit mode (contain, cover, fill)
-
-#### ImageViewer API
-
-**Props:**
-- `image`: Image URL or array of URLs
-- `visible`: Visibility
-- `defaultIndex`: Initial index
-- `onIndexChange`: Index change handler
-- `onClose`: Close handler
-- `renderFooter`: Custom footer renderer
-
-### Navigation Components
-
-#### Tabs API
-
-**Props:**
-- `activeKey`: Active tab key
-- `defaultActiveKey`: Default active key
-- `onChange`: Tab change handler
-
-**Tabs.Tab Props:**
-- `key`: Tab key
-- `title`: Tab title
-- `disabled`: Disabled state
-
-#### NavBar API
-
-**Props:**
-- `onBack`: Back button handler
-- `left`: Left content
-- `right`: Right content
-- `style`: Custom styles
-- Children: NavBar title
-
-#### TabBar API
-
-**Props:**
-- `activeKey`: Active tab key
-- `onChange`: Tab change handler
-
-**TabBar.Item Props:**
-- `key`: Tab key
-- `icon`: Tab icon
-- `title`: Tab title
-- `badge`: Tab badge
-
-#### IndexBar API
-
-**Props:**
-- `sticky`: Sticky header
-
-**IndexBar.Panel Props:**
-- `index`: Index value
-- `title`: Section title
-
-#### SideBar API
-
-**Props:**
-- `activeKey`: Active item key
-- `onChange`: Item change handler
-
-**SideBar.Item Props:**
-- `key`: Item key
-- `title`: Item title
-- `badge`: Item badge
-
-### Feedback Components
-
-#### Modal API
-
-**Props:**
-- `visible`: Visibility
-- `title`: Modal title
-- `content`: Modal content
-- `closeOnAction`: Close on action
-- `actions`: Action buttons
-- `onClose`: Close handler
-- `onAction`: Action handler
-
-**Static Methods:**
-- `Modal.alert(options)`: Show alert
-- `Modal.confirm(options)`: Show confirm
-- `Modal.show(options)`: Show custom modal
-
-#### Dialog API
-
-Same as Modal API.
-
-#### Toast API
-
-**Static Methods:**
-- `Toast.show(content | options)`: Show toast
-- `Toast.clear()`: Clear toast
-
-**Options:**
-- `icon`: Toast icon (success, fail, loading)
-- `content`: Toast content
-- `duration`: Display duration (0 for infinite)
-
-#### ActionSheet API
-
-**Static Methods:**
-- `ActionSheet.show(options)`: Show action sheet
-
-**Options:**
-- `actions`: Action options array
-- `cancelText`: Cancel text
-- `onAction`: Action handler
-
-#### Popup API
-
-**Props:**
-- `visible`: Visibility
-- `position`: Popup position (top, bottom, left, right, center)
-- `mask`: Show mask
-- `maskStyle`: Mask styles
-- `showCloseButton`: Show close button
-- `title`: Popup title
-- `onMaskClick`: Mask click handler
-- `onClose`: Close handler
-
-#### Loading API
-
-**Props:**
-- `visible`: Visibility
-- `mask`: Show mask
-- `fullScreen`: Full screen loading
-- Children: Loading text
-
-#### ErrorBlock API
-
-**Props:**
-- `status`: Error status (default, network, busy, empty)
-- `title`: Error title
-- `description`: Error description
-- `actions`: Action buttons
-
-#### Empty API
-
-**Props:**
-- `title`: Empty title
-- `description`: Empty description
-- `image`: Custom image
-- `actions`: Action buttons
-
-#### NoticeBar API
-
-**Props:**
-- `content`: Notice content
-- `icon`: Notice icon
-- `closeable`: Show close button
-- `onClose`: Close handler
-- `extra`: Extra content
-- `onExtraClick`: Extra click handler
-- `wrap`: Text wrapping
-- `color`: Notice color (default, alert)
-
-#### Mask API
-
-**Props:**
-- `visible`: Visibility
-- `opacity`: Mask opacity
-- `disableBodyScroll`: Disable body scroll
-- `onMaskClick`: Mask click handler
-
-### Selector Components
-
-#### Picker API
-
-**Props:**
-- `visible`: Visibility
-- `value`: Selected value
-- `defaultValue`: Default value
-- `columns`: Picker columns
-- `onConfirm`: Confirm handler
-- `onCancel`: Cancel handler
-- `onClose`: Close handler
-
-#### DatePicker API
-
-**Props:**
-- `visible`: Visibility
-- `value`: Selected date
-- `defaultValue`: Default date
-- `precision`: Date precision (year, month, day, hour, minute, second)
-- `min`: Minimum date
-- `max`: Maximum date
-- `onConfirm`: Confirm handler
-- `onCancel`: Cancel handler
-- `onClose`: Close handler
-
-#### Cascader API
-
-**Props:**
-- `visible`: Visibility
-- `value`: Selected value array
-- `defaultValue`: Default value array
-- `options`: Cascader options
-- `onConfirm`: Confirm handler
-- `onCancel`: Cancel handler
-- `onClose`: Close handler
-
-#### SearchBar API
-
-**Props:**
-- `value`: Search value
-- `defaultValue`: Default value
-- `placeholder`: Placeholder text
-- `showCancelButton`: Show cancel button
-- `clearable`: Show clear button
-- `onChange`: Change handler
-- `onSearch`: Search handler
-- `onCancel`: Cancel handler
-
-### Other Components
-
-#### Swiper API
-
-**Props:**
-- `autoplay`: Autoplay
-- `loop`: Loop mode
-- `indicator`: Custom indicator function
-- `onIndexChange`: Index change handler
-
-**Swiper.Item Props:**
-- Children: Swiper item content
-
-#### PullToRefresh API
-
-**Props:**
-- `onRefresh`: Refresh handler
-- `canReleaseText`: Can release text
-- `releaseText`: Release text
-- `refreshingText`: Refreshing text
-- `completeText`: Complete text
-
-#### InfiniteScroll API
-
-**Props:**
-- `hasMore`: Has more data
-- `loadMore`: Load more handler
-- `threshold`: Load threshold
-
-#### VirtualInput API
-
-**Props:**
-- `value`: Input value
-- `defaultValue`: Default value
-- `type`: Keyboard type (number, password, etc.)
-- `placeholder`: Placeholder text
-- `confirmText`: Confirm button text
-- `onChange`: Change handler
-- `onConfirm`: Confirm handler
-
-### Key Points
-
-- All components support `className` and `style` props
-- Most form components support `value`, `defaultValue`, and `onChange`
-- Modal-like components use `visible` prop for visibility control
-- All components are optimized for mobile display
-- Refer to individual component examples for detailed usage

+ 0 - 45
skills/ant-design-mobile/api/config-provider.md

@@ -1,45 +0,0 @@
-# ConfigProvider API | ConfigProvider API
-
-## API Reference
-
-ConfigProvider component API for global configuration.
-
-### ConfigProvider
-
-Provides global configuration for Ant Design Mobile components.
-
-**Props:**
-- `locale`: Locale object for internationalization
-- `theme`: Theme configuration object
-- `componentSize`: Global component size
-
-### Example: Basic Usage
-
-```javascript
-import { ConfigProvider } from 'antd-mobile';
-import zhCN from 'antd-mobile/es/locales/zh-CN';
-
-<ConfigProvider locale={zhCN}>
-  <App />
-</ConfigProvider>
-```
-
-### Example: With Theme
-
-```javascript
-<ConfigProvider
-  theme={{
-    primaryColor: '#00b96b',
-  }}
->
-  <App />
-</ConfigProvider>
-```
-
-### Key Points
-
-- Wrap app with ConfigProvider for global config
-- Use locale prop for internationalization
-- Use theme prop for theme customization
-- ConfigProvider affects all child components
-- Can nest ConfigProviders for different scopes

+ 0 - 107
skills/ant-design-mobile/examples/advanced/internationalization.md

@@ -1,107 +0,0 @@
-# Internationalization | 国际化
-
-**官方文档**: https://ant-design-mobile.antgroup.com/zh
-
-
-## Instructions
-
-This example demonstrates how to set up internationalization in Ant Design Mobile.
-
-### Key Concepts
-
-- Locale configuration
-- ConfigProvider with locale
-- Language switching
-- Custom locale
-- Date and number formatting
-
-### Example: Basic Internationalization
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-import zhCN from 'antd-mobile/es/locales/zh-CN';
-import enUS from 'antd-mobile/es/locales/en-US';
-
-function App() {
-  return (
-    <ConfigProvider locale={zhCN}>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Example: Language Switching
-
-```javascript
-import React, { useState } from 'react';
-import { ConfigProvider, Button } from 'antd-mobile';
-import zhCN from 'antd-mobile/es/locales/zh-CN';
-import enUS from 'antd-mobile/es/locales/en-US';
-
-function App() {
-  const [locale, setLocale] = useState(zhCN);
-
-  return (
-    <ConfigProvider locale={locale}>
-      <Button onClick={() => setLocale(locale === zhCN ? enUS : zhCN)}>
-        切换语言
-      </Button>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Example: Custom Locale
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-import zhCN from 'antd-mobile/es/locales/zh-CN';
-
-const customLocale = {
-  ...zhCN,
-  Dialog: {
-    ...zhCN.Dialog,
-    confirm: '确定',
-    cancel: '取消',
-  },
-};
-
-function App() {
-  return (
-    <ConfigProvider locale={customLocale}>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Example: Date and Number Formatting
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-import zhCN from 'antd-mobile/es/locales/zh-CN';
-import enUS from 'antd-mobile/es/locales/en-US';
-
-function App() {
-  return (
-    <ConfigProvider locale={zhCN}>
-      {/* Date and number formatting will use locale settings */}
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Key Points
-
-- Use `ConfigProvider` with `locale` prop for internationalization
-- Import locale from `antd-mobile/es/locales/`
-- Support for zh-CN, en-US, and other locales
-- Custom locale by extending existing locale
-- Date and number formatting use locale settings
-- Internationalization is optimized for mobile display

+ 0 - 115
skills/ant-design-mobile/examples/advanced/theme-customization.md

@@ -1,115 +0,0 @@
-# Theme Customization | 主题定制
-
-**官方文档**: https://ant-design-mobile.antgroup.com/zh
-
-
-## Instructions
-
-This example demonstrates how to customize the theme in Ant Design Mobile.
-
-### Key Concepts
-
-- CSS Variables
-- Design tokens
-- Theme configuration
-- Custom colors
-- Custom styles
-
-### Example: Using CSS Variables
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-import 'antd-mobile/es/global.css';
-
-// Custom CSS variables
-const customTheme = {
-  '--adm-color-primary': '#409EFF',
-  '--adm-color-success': '#67C23A',
-  '--adm-color-warning': '#E6A23C',
-  '--adm-color-danger': '#F56C6C',
-};
-
-function App() {
-  return (
-    <ConfigProvider theme={customTheme}>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Example: Custom Theme with ConfigProvider
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-
-const theme = {
-  '--adm-color-primary': '#409EFF',
-  '--adm-color-text': '#303133',
-  '--adm-color-text-secondary': '#606266',
-  '--adm-border-color': '#DCDFE6',
-  '--adm-font-size-main': '16px',
-};
-
-function App() {
-  return (
-    <ConfigProvider theme={theme}>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Example: Custom Component Styles
-
-```css
-/* Custom styles */
-.custom-button {
-  --adm-button-border-radius: 20px;
-  --adm-button-font-size: 18px;
-}
-```
-
-### Example: Using Design Tokens
-
-```javascript
-import React from 'react';
-import { ConfigProvider } from 'antd-mobile';
-
-const theme = {
-  // Colors
-  '--adm-color-primary': '#409EFF',
-  '--adm-color-success': '#67C23A',
-  '--adm-color-warning': '#E6A23C',
-  '--adm-color-danger': '#F56C6C',
-  
-  // Spacing
-  '--adm-spacing-xs': '4px',
-  '--adm-spacing-s': '8px',
-  '--adm-spacing-m': '16px',
-  '--adm-spacing-l': '24px',
-  
-  // Border radius
-  '--adm-border-radius-s': '4px',
-  '--adm-border-radius-m': '8px',
-  '--adm-border-radius-l': '12px',
-};
-
-function App() {
-  return (
-    <ConfigProvider theme={theme}>
-      {/* Your app content */}
-    </ConfigProvider>
-  );
-}
-```
-
-### Key Points
-
-- Use CSS variables for theme customization
-- Use `ConfigProvider` with `theme` prop for global theme
-- Design tokens provide consistent theming
-- Customize colors, spacing, border radius, etc.
-- Theme customization is optimized for mobile display

+ 0 - 137
skills/ant-design-mobile/examples/components/action-sheet.md

@@ -1,137 +0,0 @@
-# ActionSheet | 动作面板
-
-**官方文档**: https://ant-design-mobile.antgroup.com/zh
-
-
-## Instructions
-
-This example demonstrates how to use the ActionSheet component in Ant Design Mobile.
-
-### Key Concepts
-
-- Basic action sheet
-- Action sheet with options
-- Action sheet with cancel
-- Action sheet with danger
-- Action sheet with icons
-
-### Example: Basic ActionSheet
-
-```javascript
-import React from 'react';
-import { ActionSheet, Button } from 'antd-mobile';
-
-function App() {
-  return (
-    <Button
-      onClick={() => {
-        ActionSheet.show({
-          actions: [
-            { text: '选项1', key: '1' },
-            { text: '选项2', key: '2' },
-            { text: '选项3', key: '3' },
-          ],
-          onAction: (action) => {
-            console.log(action);
-          },
-        });
-      }}
-    >
-      显示动作面板
-    </Button>
-  );
-}
-```
-
-### Example: ActionSheet with Cancel
-
-```javascript
-import React from 'react';
-import { ActionSheet, Button } from 'antd-mobile';
-
-function App() {
-  return (
-    <Button
-      onClick={() => {
-        ActionSheet.show({
-          actions: [
-            { text: '选项1', key: '1' },
-            { text: '选项2', key: '2' },
-          ],
-          cancelText: '取消',
-          onAction: (action) => {
-            console.log(action);
-          },
-        });
-      }}
-    >
-      显示动作面板
-    </Button>
-  );
-}
-```
-
-### Example: ActionSheet with Danger
-
-```javascript
-import React from 'react';
-import { ActionSheet, Button } from 'antd-mobile';
-
-function App() {
-  return (
-    <Button
-      onClick={() => {
-        ActionSheet.show({
-          actions: [
-            { text: '选项1', key: '1' },
-            { text: '删除', key: 'delete', danger: true },
-          ],
-          onAction: (action) => {
-            console.log(action);
-          },
-        });
-      }}
-    >
-      显示动作面板
-    </Button>
-  );
-}
-```
-
-### Example: ActionSheet with Icons
-
-```javascript
-import React from 'react';
-import { ActionSheet, Button } from 'antd-mobile';
-import { AppOutline, UserOutline } from 'antd-mobile-icons';
-
-function App() {
-  return (
-    <Button
-      onClick={() => {
-        ActionSheet.show({
-          actions: [
-            { text: '选项1', key: '1', icon: <AppOutline /> },
-            { text: '选项2', key: '2', icon: <UserOutline /> },
-          ],
-          onAction: (action) => {
-            console.log(action);
-          },
-        });
-      }}
-    >
-      显示动作面板
-    </Button>
-  );
-}
-```
-
-### Key Points
-
-- Use `ActionSheet.show` to show action sheet
-- Use `actions` prop for action options
-- Use `cancelText` prop for cancel text
-- Use `danger` prop for danger actions
-- Use `icon` prop for action icons
-- Use `onAction` callback for action selection
-- ActionSheet is optimized for mobile display

+ 0 - 111
skills/ant-design-mobile/examples/components/avatar.md

@@ -1,111 +0,0 @@
-# Avatar | 头像
-
-**官方文档**: https://ant-design-mobile.antgroup.com/zh
-
-
-## Instructions
-
-This example demonstrates how to use the Avatar component in Ant Design Mobile.
-
-### Key Concepts
-
-- Avatar with image
-- Avatar with text
-- Avatar with icon
-- Avatar sizes
-- Avatar shapes
-
-### Example: Basic Avatar
-
-```javascript
-import React from 'react';
-import { Avatar } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Avatar src="https://via.placeholder.com/100" />
-      <Avatar>U</Avatar>
-      <Avatar style={{ background: '#87d068' }}>U</Avatar>
-    </>
-  );
-}
-```
-
-### Example: Avatar Sizes
-
-```javascript
-import React from 'react';
-import { Avatar } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Avatar size="small" src="https://via.placeholder.com/100" />
-      <Avatar size="middle" src="https://via.placeholder.com/100" />
-      <Avatar size="large" src="https://via.placeholder.com/100" />
-    </>
-  );
-}
-```
-
-### Example: Avatar Shapes
-
-```javascript
-import React from 'react';
-import { Avatar } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Avatar src="https://via.placeholder.com/100" />
-      <Avatar shape="square" src="https://via.placeholder.com/100" />
-      <Avatar shape="rounded" src="https://via.placeholder.com/100" />
-    </>
-  );
-}
-```
-
-### Example: Avatar with Badge
-
-```javascript
-import React from 'react';
-import { Avatar, Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <Badge content="5">
-      <Avatar src="https://via.placeholder.com/100" />
-    </Badge>
-  );
-}
-```
-
-### Example: Avatar Group
-
-```javascript
-import React from 'react';
-import { Avatar } from 'antd-mobile';
-
-function App() {
-  return (
-    <Avatar.Group>
-      <Avatar src="https://via.placeholder.com/100" />
-      <Avatar src="https://via.placeholder.com/100" />
-      <Avatar src="https://via.placeholder.com/100" />
-      <Avatar>+5</Avatar>
-    </Avatar.Group>
-  );
-}
-```
-
-### Key Points
-
-- Use `src` prop for image URL
-- Use `size` prop for avatar size (small, middle, large)
-- Use `shape` prop for avatar shape (circle, square, rounded)
-- Use children for text avatar
-- Use `style` prop for custom styles
-- Avatar can be used with Badge
-- Avatar.Group for multiple avatars
-- Avatar is optimized for mobile display

+ 0 - 137
skills/ant-design-mobile/examples/components/badge.md

@@ -1,137 +0,0 @@
-# Badge | 徽标
-
-**官方文档**: https://ant-design-mobile.antgroup.com/zh
-
-
-## Instructions
-
-This example demonstrates how to use the Badge component in Ant Design Mobile.
-
-### Key Concepts
-
-- Badge with number
-- Badge with text
-- Badge with dot
-- Badge colors
-- Badge positions
-
-### Example: Basic Badge
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <Badge content="5">
-      <div style={{ width: 40, height: 40, background: '#ddd' }} />
-    </Badge>
-  );
-}
-```
-
-### Example: Badge with Number
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Badge content={5}>
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-      <Badge content={99}>
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-      <Badge content={100}>
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-    </>
-  );
-}
-```
-
-### Example: Badge with Dot
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <Badge dot>
-      <div style={{ width: 40, height: 40, background: '#ddd' }} />
-    </Badge>
-  );
-}
-```
-
-### Example: Badge Colors
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Badge content="5" color="red">
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-      <Badge content="5" color="blue">
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-      <Badge content="5" color="green">
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-    </>
-  );
-}
-```
-
-### Example: Badge Positions
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <>
-      <Badge content="5" position="top-right">
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-      <Badge content="5" position="bottom-right">
-        <div style={{ width: 40, height: 40, background: '#ddd' }} />
-      </Badge>
-    </>
-  );
-}
-```
-
-### Example: Badge with Max Count
-
-```javascript
-import React from 'react';
-import { Badge } from 'antd-mobile';
-
-function App() {
-  return (
-    <Badge content={100} max={99}>
-      <div style={{ width: 40, height: 40, background: '#ddd' }} />
-    </Badge>
-  );
-}
-```
-
-### Key Points
-
-- Use `content` prop for badge content (number or string)
-- Use `dot` prop for dot badge
-- Use `color` prop for badge color
-- Use `position` prop for badge position
-- Use `max` prop to limit displayed number
-- Badge wraps children element
-- Badge is optimized for mobile display

Some files were not shown because too many files changed in this diff