用途:该技能用于创建 AiderDesk 扩展,通过事件、命令、工具、智能体和模式扩展功能。适用于构建新扩展、创建扩展命令/工具/事件处理器、实现 Extension 接口、设置扩展元数据与文档;不适用于仅激活已有扩展、与扩展无关的通用代码修改或运行测试与构建。
主要能力与流程:先让用户选择安装目标。在 AiderDesk 项目内提供当前项目(.aider-desk/extensions/)、全局(~/.aider-desk/extensions/)、仓库内(packages/extensions/extensions/)三种;项目外仅前两种。选定后按对应流程创建单文件或文件夹扩展,实现 Extension 接口方法,导出静态 metadata(name、version、description、author、capabilities)与默认类,禁止使用 @/ 导入。仓库内目标还需在 packages/extensions/extensions.json 注册、在 docs-site/docs/extensions/extensions-gallery.md 记录、安装依赖并做类型检查。
可选能力:需要 UI 时实现 getUIComponents(),返回含 id、placement、jsx 的 UIComponentDefinition;需要数据或交互时实现 getUIExtensionData()、executeUIExtensionAction();需要第三方库时实现 getUIComponentsLibraries(),通过 props.libraries.<key> 访问并处理异步加载状态,不要打包或导入 React。需要设置界面时实现 getConfigComponent()、getConfigData()、saveConfigData(),配置存于扩展目录,使用 ui.* 组件,避免使用已移除的 extension-settings placement。创建或修改 .jsx 后须运行 node <skill-dir>/assets/scripts/validate-extension-ui.mjs <file-or-dir> 并确保全部 PASS。
限制:参考文件可能滞后于最新代码,权威 API 以 packages/common/src/extensions.ts 等源码为准;配置不得存于扩展目录之外;仓库内目标才修改 extensions.json 与 gallery。