@michengai/dsh-skills-manager 1.2.14 → 1.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.16 - 2026-10-24
4
+
5
+ - Dynamically migrate non-baseline external sources in `migrateManagerStateDocument()`, resolving state lockup and accidental fail-closed disablement when upgrading from older releases (Issue #63).
6
+
7
+ ## 1.2.15 - 2026-10-24
8
+
9
+ - Recognize Google Antigravity global skills under `~/.gemini/config/skills` with `DSH_ANTIGRAVITY_HOME` override support (#61).
10
+
3
11
  ## 1.2.14 - 2026-10-24
4
12
 
5
13
  - Support DeepSeek Harness `0.2.1-rc.3` while retaining all existing supported versions.
@@ -2,6 +2,14 @@
2
2
 
3
3
  [English](CHANGELOG.md)
4
4
 
5
+ ## 1.2.16 - 2026-10-24
6
+
7
+ - 修复状态文档迁移逻辑:动态识别并补齐所有新增外部来源的缺省字段(含 `antigravity`),解决从旧版本升级后状态文件校验失败、导致所有技能被安全停用且写入锁定的问题(Issue #63)。
8
+
9
+ ## 1.2.15 - 2026-10-24
10
+
11
+ - 支持识别 Google Antigravity 全局技能目录(`~/.gemini/config/skills`),并支持通过 `DSH_ANTIGRAVITY_HOME` 环境变量自定义覆盖(#61)。
12
+
5
13
  ## 1.2.14 - 2026-10-24
6
14
 
7
15
  - 支持 DeepSeek Harness `0.2.1-rc.3`,继续兼容此前已支持的宿主版本。
package/README.md CHANGED
@@ -19,14 +19,14 @@
19
19
 
20
20
  > DSH Skills Manager is a community-maintained DeepSeek Harness (DSH) plugin, not an official DeepSeek AI product.
21
21
 
22
- This README describes **1.2.14**. Released changes are in the [changelog](CHANGELOG.md).
22
+ This README describes **1.2.16**. Released changes are in the [changelog](CHANGELOG.md).
23
23
 
24
24
  ## Features
25
25
 
26
26
  Bring skills from your computer and projects into DSH without switching between Agent folders.
27
27
 
28
28
  - **Unified multi-view management**: Browse Global Skills, Project Skills, Discover, and Trash in unified tabs with instant search, status filtering, and collapsible source groups.
29
- - **Broad ecosystem support**: Full coverage for 19+ tools and CLI environments including DSH, Shared Agent, Codex, Claude Code, Copilot, Cursor, Windsurf, Qoder, and Trae without touching third-party files.
29
+ - **Broad ecosystem support**: Full coverage for 20+ tools and CLI environments including DSH, Shared Agent, Codex, Claude Code, Copilot, Cursor, Google Antigravity, Windsurf, Qoder, and Trae without touching third-party files.
30
30
  - **Categorization and drag & drop**: Create category folders inside sources, drag skill rows (`⋮⋮`) to organize and order them, batch assign skills, and toggle entire categories with a single switch. Category metadata is saved without moving files.
31
31
  - **Public markets & repositories**: Integrated Discover hub to explore trending skills from ClawHub and skills.sh, or subscribe to public GitHub repositories with incremental diff inspection and backups.
32
32
  - **Create and flexible import**: Create skills or import ZIP archives, folders, and `SKILL.md` files directly into your global user root or a registered workspace.
@@ -73,7 +73,7 @@ dsh plugin --profile web add @michengai/dsh-skills-manager@latest --registry=htt
73
73
 
74
74
  Restart DSH, refresh the page, and open **Settings → Skills**. To update, select **Check for updates** or run the installation command again.
75
75
 
76
- - Plugin `1.2.14` is tested with DeepSeek Harness `0.2.0-rc.1`, `0.2.0-rc.2`, `0.2.1-rc.1`, `0.2.1-rc.2`, `0.2.1-rc.3`.
76
+ - Plugin `1.2.16` is tested with DeepSeek Harness `0.2.0-rc.1`, `0.2.0-rc.2`, `0.2.1-rc.1`, `0.2.1-rc.2`, `0.2.1-rc.3`.
77
77
  - Hosts before `0.2.0` are no longer supported. If you still use a `0.1.x` host, install plugin `1.1.23` instead of `@latest`.
78
78
  - **Reverse proxy deployment**: Supports hosting DSH behind prefix-stripping reverse proxies (e.g. `/app/dsh/`). API and update endpoints resolve against the page base URI (`document.baseURI`).
79
79
 
@@ -180,6 +180,7 @@ The DeepSeek Harness loader enforces strict identifier policies:
180
180
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder" valign="middle"> Qoder | `~/.qoder/skills` | `DSH_QODER_HOME` | `<project>/.qoder/skills` |
181
181
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder CN CLI" valign="middle"> Qoder CN CLI | `~/.qoder-cn/skills` | `DSH_QODER_CN_HOME` | — |
182
182
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder CN" valign="middle"> Qoder CN | `~/.lingma/skills` | `DSH_LINGMA_HOME` | `<project>/.lingma/skills` |
183
+ | <img src="assets/brands/gemini.svg" width="16" height="16" alt="Google Antigravity" valign="middle"> Google Antigravity | `~/.gemini/config/skills` | `DSH_ANTIGRAVITY_HOME` | `<project>/.agents/skills` |
183
184
 
184
185
  Ordinary project-root `<project>/skills` directories are not scanned, so repository release resources are not exposed as Agent skills. OpenClaw / Clawdbot support is limited to the user-level sources above. Qoder CN CLI project skills use `<project>/.qoder/skills` and appear as Qoder. Qoder CN IDE uses the Lingma directories. Missing external source directories are not shown.
185
186
 
package/README.zh-CN.md CHANGED
@@ -19,14 +19,14 @@
19
19
 
20
20
  > DSH Skills Manager 是社区维护的 DeepSeek Harness(DSH)插件,并非 DeepSeek AI 官方产品。
21
21
 
22
- 本文描述 **1.2.14**。已发布变更见[更新日志](CHANGELOG.zh-CN.md)。
22
+ 本文描述 **1.2.16**。已发布变更见[更新日志](CHANGELOG.zh-CN.md)。
23
23
 
24
24
  ## 功能概览
25
25
 
26
26
  把散落在本机和项目中的技能集中到 DSH,无需在多个 Agent 目录间来回查找。
27
27
 
28
28
  - **多视图集中管理**:提供「全局技能」、「项目技能」、「发现」与「回收站」四大工作区视图,支持搜索、状态筛选与来源折叠。
29
- - **生态目录全覆盖**:支持 DSH、公共 Agent(Shared Agent)、Codex、Claude Code、Copilot、Cursor、Windsurf、Qoder、Trae 等 19+ 种常见开发工具与 CLI 生态,启停不修改第三方源文件。
29
+ - **广泛的生态兼容**:覆盖 DSH、公共 Agent、Codex、Claude Code、Copilot、Cursor、Google Antigravity、Windsurf、Qoder、Trae 等 20+ 工具与 CLI 环境,统一管理且不侵入第三方文件。
30
30
  - **分类整理与拖拽归类**:支持在各来源内创建分类文件夹、拖拽技能卡片归类排序、批量添加技能,并支持分类级一键启停。分类元数据独立保存,不改动物理文件。
31
31
  - **公共市场与仓库订阅**:内置「发现」中心,一站式浏览 ClawHub 热门榜单与 skills.sh 技能市场,支持公开 GitHub 仓库订阅、增量更新检测与版本备份回退。
32
32
  - **创建与自由导入**:新建技能,或导入 ZIP、文件夹与 `SKILL.md`,可精准写入用户全局目录或指定工作区项目目录。
@@ -73,7 +73,7 @@ dsh plugin --profile web add @michengai/dsh-skills-manager@latest --registry=htt
73
73
 
74
74
  安装后重启 DSH 并刷新页面,打开「设置 → 技能」即可使用。更新时可点击「检查更新」,或重新执行安装命令。
75
75
 
76
- - `1.2.14` 已验证兼容 DeepSeek Harness `0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-rc.1`、`0.2.1-rc.2`、`0.2.1-rc.3`。
76
+ - `1.2.16` 已验证兼容 DeepSeek Harness `0.2.0-rc.1`、`0.2.0-rc.2`、`0.2.1-rc.1`、`0.2.1-rc.2`、`0.2.1-rc.3`。
77
77
  - 不再支持 `0.2.0` 之前的宿主。仍在使用 `0.1.x` 的,请安装插件 `1.1.23`,不要装 `@latest`。
78
78
  - **反向代理部署**:支持将 DSH 部署在带路径前缀的反向代理后面(如 `/app/dsh/`),插件 API 统一自动按页面基址(`document.baseURI`)相对解析。
79
79
 
@@ -180,6 +180,7 @@ DeepSeek Harness 宿主加载机制对技能标识符遵循规范命名约束:
180
180
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder" valign="middle"> Qoder | `~/.qoder/skills` | `DSH_QODER_HOME` | `<project>/.qoder/skills` |
181
181
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder CN CLI" valign="middle"> Qoder CN CLI | `~/.qoder-cn/skills` | `DSH_QODER_CN_HOME` | — |
182
182
  | <img src="assets/brands/qoder.svg" width="16" height="16" alt="Qoder CN" valign="middle"> Qoder CN | `~/.lingma/skills` | `DSH_LINGMA_HOME` | `<project>/.lingma/skills` |
183
+ | <img src="assets/brands/gemini.svg" width="16" height="16" alt="Google Antigravity" valign="middle"> Google Antigravity | `~/.gemini/config/skills` | `DSH_ANTIGRAVITY_HOME` | `<project>/.agents/skills` |
183
184
 
184
185
  不扫描普通项目根目录的 `<project>/skills`,避免把仓库的发布资源当作 Agent 技能。OpenClaw / Clawdbot 仅保留上表中的用户级来源。Qoder CN CLI 的项目技能在 `<project>/.qoder/skills`,显示为 Qoder。Qoder CN IDE 使用 Lingma 目录。不存在的外部来源目录不会显示。
185
186
 
package/lib/client.js CHANGED
@@ -30,7 +30,7 @@ var exports = module.exports;
30
30
  .dssm-bundle-label-box{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;text-align:left}
31
31
  .dssm-bundle-title{font-size:13px;font-weight:500;line-height:20px;color:var(--dsw-alias-label-primary)}
32
32
  .dssm-bundle-desc{font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary)}
33
- `;function Hr(){if(typeof document>"u"||document.getElementById(Ir)!==null)return;let t=document.createElement("style");t.id=Ir,t.textContent=Ga,(document.head??document.documentElement).appendChild(t)}function On(t){let e=t&&typeof t.size=="number"?t.size:16;return fe("svg",{viewBox:"0 0 16 16",width:e,height:e,fill:"currentColor","aria-hidden":"true",focusable:"false",dangerouslySetInnerHTML:{__html:Qa}})}function Bn(t){Hr();let{t:e,enabled:l,onToggle:d,disabled:m,onlineUpdateEnabled:f=!0,onToggleOnlineUpdate:g,onlineUpdateDisabled:b,onlineUpdateLocked:v}=t,k=[fe("div",{key:"sidebar-entry",className:"dssm-bundle-row"},fe("div",{className:"dssm-bundle-label-box"},fe("span",{className:"dssm-bundle-title"},e("sidebar.entry.title")),fe("span",{className:"dssm-bundle-desc"},e("sidebar.entry.desc"))),fe(Ya.Switch,{checked:l,onChange:d,label:e("sidebar.entry.toggle"),disabled:m}))];return typeof g=="function"&&k.push(fe("div",{key:"online-update",className:"dssm-bundle-row"},fe("div",{className:"dssm-bundle-label-box"},fe("span",{className:"dssm-bundle-title"},e("update.entry.title")),fe("span",{className:"dssm-bundle-desc"},e(v?"update.entry.locked":"update.entry.desc"))),fe(Ya.Switch,{checked:f,onChange:g,label:e("update.entry.toggle"),disabled:b,title:v?e("update.entry.locked"):void 0}))),fe(ze.Fragment,null,k)}function Fn(t){let[e,l]=ze.useState(t.getEnabled),[d,m]=ze.useState(t.getOnlineUpdateEnabled?t.getOnlineUpdateEnabled:()=>!0),[f,g]=ze.useState(t.getOnlineUpdateLocked?t.getOnlineUpdateLocked:()=>!1),[b,v]=ze.useState(!1),[k,n]=ze.useState(!1);ze.useEffect(()=>{let W=()=>{l(t.getEnabled()),t.getOnlineUpdateEnabled&&m(t.getOnlineUpdateEnabled()),t.getOnlineUpdateLocked&&g(t.getOnlineUpdateLocked())};return W(),t.subscribe(W)},[t]);let H=W=>{v(!0),l(W),t.setSidebar(W).catch(()=>{l(t.getEnabled())}).finally(()=>{v(!1)})},U=t.setOnlineUpdate?W=>{t.getOnlineUpdateLocked?.()||(n(!0),m(W),t.setOnlineUpdate(W).catch(()=>{t.getOnlineUpdateEnabled&&m(t.getOnlineUpdateEnabled())}).finally(()=>{n(!1)}))}:void 0;return fe(Bn,{t:t.t,enabled:e,disabled:b,onToggle:H,onlineUpdateEnabled:d,onlineUpdateDisabled:k||f,onlineUpdateLocked:f,onToggleOnlineUpdate:U})}function Xa(t,e){if(Hr(),!t.locale)return{isEnabled:()=>!1,isSupported:()=>!1,setEnabled:async()=>!1,isOnlineUpdateEnabled:()=>!0,setOnlineUpdate:async()=>!1,destroy:()=>{}};let{callApi:l,headers:d,renderPanel:m,ns:f}=e,g=!1,b=!1,v=null,k=null,n=0,H=!1,U,W=new Set,ne=()=>{if(!H)for(let S of W)try{S()}catch{}},_=()=>{if(!H)if(b&&g){if(!v){let S=t.slots.register({name:"main",key:Za,locale:f,inject:()=>({t:t.locale?.bind?t.locale.bind(f):void 0})},j=>fe("div",{className:"dssm-main-panel"},m(j)));v=typeof S=="function"?S:()=>{}}if(!k){let S=t.slots.register({name:"sidebar.panellist",id:Za,order:Pn,label:()=>t.locale.bind(f)("title"),locale:f},j=>fe(On,j));k=typeof S=="function"?S:()=>{}}}else{if(U?.panelInfo&&typeof U.selectPanel=="function")try{U.panelInfo.getSnapshot().activePanelId===Za&&U.selectPanel(null)}catch{}if(k){try{k()}catch{}k=null}if(v){try{v()}catch{}v=null}}},C=async S=>{if(H)return g;let j=++n;g=S,_(),ne();try{return await l("/sidebar-entry",{method:"POST",headers:d,body:JSON.stringify({enabled:S})}),S}catch(h){throw j===n&&(g=!S,_(),ne()),h}},A=!0,J=!1,c=0,K=async S=>{if(H||J)return A;let j=++c;if(A=S,ne(),!S&&typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(S)}catch{}try{if(await l("/online-update",{method:"POST",headers:d,body:JSON.stringify({enabled:S})}),S&&!H&&j===c&&typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(S)}catch{}return S}catch(h){if(j===c){let q=h!==null&&typeof h=="object"&&"code"in h&&h.code==="error.update.disabled";if(q&&(J=!0),A=q?!1:!S,ne(),typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(A)}catch{}}throw h}},ae=n;l("/sidebar-entry").then(S=>{!H&&n===ae&&S&&typeof S.enabled=="boolean"&&(g=S.enabled,_(),ne())}).catch(()=>{});let de=c;return l("/online-update").then(S=>{if(!H&&c===de&&S&&typeof S.enabled=="boolean"&&(A=S.enabled,S.locked===!0&&(J=!0),ne(),typeof e.onOnlineUpdateChange=="function"))try{e.onOnlineUpdateChange(S.enabled)}catch{}}).catch(()=>{}),typeof t.inject=="function"&&t.inject(["layout"],S=>{H||(U=S.layout)}),t.slots.inject("sidebar.panellist",()=>{H||(b=!0,_())}),t.slots.inject("plugins.bundle.config",()=>{if(!H)return t.slots.register({name:"plugins.bundle.config",key:jn,locale:f},S=>S&&S.view==="summary"?null:fe(Fn,{t:t.locale.bind(f),getEnabled:()=>g,setSidebar:C,getOnlineUpdateEnabled:()=>A,setOnlineUpdate:K,getOnlineUpdateLocked:()=>J,subscribe:j=>(W.add(j),()=>{W.delete(j)})}))}),{isEnabled:()=>g,isSupported:()=>b,setEnabled:C,isOnlineUpdateEnabled:()=>A,setOnlineUpdate:K,destroy:()=>{if(!H){if(H=!0,n++,c++,U=void 0,W.clear(),k){try{k()}catch{}k=null}if(v){try{v()}catch{}v=null}}}}}var I=pa,s=I.createElement,Vn=Br.IconEditOutlineRegular;function Wn(){return s(Vn,{size:16})}var Kn={refresh:["M13.5 5.5V2.5m0 0h-3m3 0-2.1 2.1A5.5 5.5 0 1 0 13.2 12"],download:["M8 2v8m0 0 3-3m-3 3-3-3M3 13v2h10v-2"],copy:["M5 5h8v8H5z","M3 3h8"],close:["m4 4 8 8M12 4 4 12"]};function qn(t){var e=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");return l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("width","16"),l.setAttribute("height","16"),l.setAttribute("fill","none"),l.setAttribute("stroke","currentColor"),l.setAttribute("stroke-width","1.5"),l.setAttribute("stroke-linecap","round"),l.setAttribute("stroke-linejoin","round"),l.setAttribute("aria-hidden","true"),Kn[t].forEach(function(d){var m=document.createElementNS("http://www.w3.org/2000/svg","path");m.setAttribute("d",d),l.append(m)}),e.append(l),e}var Qt={"content-type":"application/json","x-dsh-skills-manager":"1"},Tt="skills-manager",fa={zh:{"summary.group.one":"{count} \u4E2A\u6280\u80FD","summary.group.other":"{count} \u4E2A\u6280\u80FD","format.locale":"zh-CN","format.warningSeparator":"\uFF1B",title:"\u6280\u80FD",desc:"\u7EDF\u4E00\u52A0\u8F7D\u548C\u7BA1\u7406\u672C\u673A Agent Skills\u3002","link.project":"GitHub","link.feedback":"\u95EE\u9898\u53CD\u9988","btn.create":"\u521B\u5EFA\u6280\u80FD","btn.import":"\u5BFC\u5165","btn.refresh":"\u5237\u65B0","btn.cancel":"\u53D6\u6D88","btn.close":"\u5173\u95ED","btn.detail":"\u67E5\u770B\u8BE6\u60C5","btn.more":"\u66F4\u591A","btn.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","btn.restore":"\u6062\u590D","btn.delete.forever":"\u6C38\u4E45\u5220\u9664","btn.file.pick":"\u9009\u62E9\u6587\u4EF6","btn.folder.pick":"\u9009\u62E9\u6587\u4EF6\u5939","btn.import.now":"\u5B89\u88C5","btn.create.now":"\u521B\u5EFA\u6280\u80FD","btn.disable":"\u505C\u7528","btn.enable":"\u542F\u7528","btn.confirm":"\u786E\u5B9A","status.enabled":"\u5DF2\u542F\u7528","status.disabled":"\u5DF2\u505C\u7528","status.invalid":"\u8BCA\u65AD\u5F02\u5E38","status.shadowed":"\u88AB\u8986\u76D6","summary.total.one":"{count} \u4E2A\u6280\u80FD","summary.total.other":"{count} \u4E2A\u6280\u80FD","summary.enabled.one":"{count} \u4E2A\u5DF2\u542F\u7528","summary.enabled.other":"{count} \u4E2A\u5DF2\u542F\u7528","summary.disabled.one":"{count} \u4E2A\u5DF2\u505C\u7528","summary.disabled.other":"{count} \u4E2A\u5DF2\u505C\u7528","summary.shadowed.one":"{count} \u4E2A\u88AB\u8986\u76D6","summary.shadowed.other":"{count} \u4E2A\u88AB\u8986\u76D6","summary.invalid.one":"{count} \u4E2A\u8BCA\u65AD\u5F02\u5E38","summary.invalid.other":"{count} \u4E2A\u8BCA\u65AD\u5F02\u5E38","table.skill":"\u6280\u80FD\u540D\u79F0\u4E0E\u63CF\u8FF0","table.status":"\u8C03\u7528\u72B6\u6001","filter.workspace":"\u5DE5\u4F5C\u533A","filter.source":"\u6765\u6E90","filter.all":"\u5168\u90E8\u6765\u6E90","filter.option":"{name}\uFF08{count}\uFF09",search:"\u641C\u7D22","search.placeholder":"\u641C\u7D22\u6280\u80FD\u540D\u79F0\u6216\u63CF\u8FF0","search.clear":"\u6E05\u9664\u641C\u7D22","empty.search":"\u6CA1\u6709\u5339\u914D\u7684\u6280\u80FD\u3002","empty.source":"\u8BE5\u6765\u6E90\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u6682\u65F6\u6CA1\u6709\u6280\u80FD\u3002",loading:"\u6B63\u5728\u52A0\u8F7D\u6280\u80FD\u2026","note.missing":"\u672A\u63D0\u4F9B\u7B80\u4ECB","skill.linked":"\u5916\u90E8\u76EE\u5F55\u94FE\u63A5\uFF0C\u53EA\u8BFB","source.toggle":"\u542F\u505C\u6765\u6E90","skill.toggle":"\u542F\u505C\u6280\u80FD","category.toggle":"\u542F\u505C\u5206\u7C7B","category.create":"\u65B0\u5EFA\u5206\u7C7B","category.uncategorized":"\u672A\u5206\u7C7B","category.assign":"\u5F52\u5165{name}","category.rename":"\u91CD\u547D\u540D","category.delete":"\u5220\u9664\u5206\u7C7B","category.note":"\u5206\u7C7B\u53EA\u8BB0\u5728\u8FD9\u4E2A\u6765\u6E90\u91CC\uFF0C\u4E0D\u79FB\u52A8\u6587\u4EF6\u3002","category.name":"\u5206\u7C7B\u540D\u79F0","category.empty":"\u8FD8\u6CA1\u6709\u6280\u80FD\u3002\u4ECE\u6761\u76EE\u7684\u300C\u66F4\u591A\u300D\u5F52\u5165\u3002","category.progress":"{count} \u9879 \xB7 {enabled}/{usable} \u542F\u7528","category.actions":"\u5206\u7C7B\u64CD\u4F5C","category.created":"\u5DF2\u6DFB\u52A0\u5206\u7C7B\u300C{name}\u300D\u3002\u6587\u4EF6\u6CA1\u6709\u65B0\u5EFA\u76EE\u5F55\u3002","category.renamed":"\u5DF2\u91CD\u547D\u540D\u3002\u6280\u80FD\u6587\u4EF6\u540D\u6CA1\u6709\u53D8\u5316\u3002","category.deleted":"\u5DF2\u5220\u9664\u5206\u7C7B\u300C{name}\u300D\u3002\u6280\u80FD\u56DE\u5230\u672A\u5206\u7C7B\uFF0C\u6CA1\u6709\u8FDB\u56DE\u6536\u7AD9\u3002","category.assigned":"\u5DF2\u5C06 {name} \u5F52\u5165\u300C{category}\u300D\u3002\u6587\u4EF6\u6CA1\u6709\u79FB\u52A8\u3002","category.dragTip":"\u62D6\u62FD\u8C03\u6574\u987A\u5E8F\u6216\u79FB\u52A8\u5230\u5176\u4ED6\u5206\u7C7B","category.moved":"\u5DF2\u8C03\u6574\u6280\u80FD {name} \u7684\u5206\u7C7B\u6216\u987A\u5E8F\u3002","confirm.category.title":"\u5220\u9664\u5206\u7C7B\uFF1F","confirm.category.desc":"\u300C{name}\u300D\u4F1A\u6D88\u5931\uFF0C\u91CC\u9762\u7684\u6280\u80FD\u56DE\u5230\u672A\u5206\u7C7B\u3002\u6587\u4EF6\u4E0D\u4F1A\u79FB\u52A8\u3002","error.category.duplicate":"\u5DF2\u6709\u540C\u540D\u5206\u7C7B: {name}","error.category.name":"\u5206\u7C7B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u4E14\u4E0D\u80FD\u8D85\u8FC7 24 \u4E2A\u5B57\u7B26","error.category.notFound":"\u5206\u7C7B\u4E0D\u5B58\u5728","error.category.root":"\u6280\u80FD\u6765\u6E90\u4E0D\u5B58\u5728: {root}","error.category.position":"\u6280\u80FD\u6392\u5E8F\u4F4D\u7F6E\u65E0\u6548","error.category.target":"\u6392\u5E8F\u76EE\u6807\u4E0D\u5C5E\u4E8E\u76EE\u6807\u5206\u7C7B","detail.title":"\u6280\u80FD\u8BE6\u60C5","detail.description":"\u7B80\u4ECB","detail.document":"SKILL.md","detail.body":"\u6B63\u6587","detail.frontmatter":"Frontmatter","detail.diagnostics":"\u8BCA\u65AD","detail.path":"\u6E90\u6587\u4EF6","detail.noIssues":"\u672A\u53D1\u73B0\u8BCA\u65AD\u95EE\u9898\u3002","detail.copyBody":"\u590D\u5236\u6B63\u6587","detail.copied":"\u5DF2\u590D\u5236","detail.copyFailed":"\u590D\u5236\u5931\u8D25","create.title":"\u521B\u5EFA\u6280\u80FD","create.name":"\u540D\u79F0","create.name.placeholder":"\u4F8B\u5982 code-review-helper","create.description":"\u7B80\u4ECB","create.description.placeholder":"\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EC0\u4E48\u65F6\u5019\u4F7F\u7528","create.body":"\u6B63\u6587\uFF08Markdown\uFF09","create.body.placeholder":"\u5199\u4E0B\u6280\u80FD\u8981\u9075\u5FAA\u7684\u6307\u4EE4\u3001\u6B65\u9AA4\u548C\u8FB9\u754C\u2026","create.chat.note":"\u521B\u5EFA\u7684\u6280\u80FD\u4E0D\u4F1A\u6302\u4ED3\u5E93\u66F4\u65B0\uFF0C\u4E5F\u4E0D\u4F1A\u4FEE\u6539\u539F\u6587\u4EF6\u3002","import.title":"\u5BFC\u5165\u6280\u80FD","upload.drop.title":"\u62D6\u62FD\u6280\u80FD\u5230\u6B64\u5904","upload.drop.copy":"\u652F\u6301 .zip\u3001\u6280\u80FD\u6587\u4EF6\u5939\u6216\u5355\u4E2A SKILL.md","upload.selected.one":"{count} \u4E2A\u6587\u4EF6 \xB7 {size}","upload.selected.other":"{count} \u4E2A\u6587\u4EF6 \xB7 {size}","upload.remove":"\u79FB\u9664\u6240\u9009\u5185\u5BB9","upload.requirements":"\u6587\u4EF6\u8981\u6C42","upload.requirement.skill":"\u538B\u7F29\u5305\u6216\u6587\u4EF6\u5939\u9700\u5305\u542B SKILL.md","upload.requirement.frontmatter":"SKILL.md \u9700\u5305\u542B YAML \u683C\u5F0F\u7684\u6280\u80FD\u540D\u79F0\u548C\u63CF\u8FF0","upload.requirement.copy":"\u5BFC\u5165\u65F6\u590D\u5236\u5B8C\u6574\u5185\u5BB9\uFF0C\u4E0D\u4FEE\u6539\u539F\u59CB\u6765\u6E90","upload.importing":"\u6B63\u5728\u5B89\u88C5\u2026","status.selected":"\u5DF2\u9009\u62E9","select.file.invalid":"\u8BF7\u9009\u62E9 .zip \u6216\u5355\u4E2A SKILL.md\u3002","select.folder.invalid":"\u6240\u9009\u6587\u4EF6\u5939\u4E2D\u6CA1\u6709\u627E\u5230 SKILL.md\u3002","error.browse.absolute":"\u76EE\u5F55\u8DEF\u5F84\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\uFF1A{path}","error.browse.unreadable":"\u65E0\u6CD5\u8BFB\u53D6\u76EE\u5F55\uFF1A{path}","error.browse.notDirectory":"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}","trash.title":"\u56DE\u6536\u7AD9","trash.empty":"\u56DE\u6536\u7AD9\u4E3A\u7A7A\u3002","trash.deletedAt":"\u5220\u9664\u4E8E {time}","trash.source":"\u6765\u6E90\uFF1A{source}","confirm.trash.title":"\u79FB\u5230\u56DE\u6536\u7AD9\uFF1F","confirm.trash.desc":"\u201C{name}\u201D\u5C06\u4ECE\u5F53\u524D\u6280\u80FD\u6765\u6E90\u79FB\u5165\u56DE\u6536\u7AD9\uFF0C\u4E4B\u540E\u53EF\u4EE5\u6062\u590D\u5230\u539F\u4F4D\u7F6E\u3002","confirm.delete.title":"\u6C38\u4E45\u5220\u9664\uFF1F","confirm.delete.desc":"\u201C{name}\u201D\u5C06\u4ECE\u56DE\u6536\u7AD9\u6C38\u4E45\u5220\u9664\uFF0C\u65E0\u6CD5\u6062\u590D\u3002","result.created":"\u5DF2\u521B\u5EFA\u6280\u80FD\uFF1A{name}","result.imported":"\u5BFC\u5165\u5B8C\u6210\uFF1A{names}","result.importPartial":"\u5DF2\u5BFC\u5165\uFF1A{imported}\uFF1B\u5DF2\u8DF3\u8FC7\u540C\u540D\u6280\u80FD\uFF1A{skipped}","result.importSkipped":"\u672A\u5BFC\u5165\u4EFB\u4F55\u6280\u80FD\uFF1B\u5DF2\u8DF3\u8FC7\u540C\u540D\u6280\u80FD\uFF1A{names}","result.importEmpty":"\u672A\u5BFC\u5165\u4EFB\u4F55\u6280\u80FD\u3002","result.importWarnings":"{result}\uFF1B\u8B66\u544A\uFF1A{warnings}","result.restored":"\u5DF2\u6062\u590D\u6280\u80FD\uFF1A{name}","result.trashed":"\u5DF2\u79FB\u5230\u56DE\u6536\u7AD9\uFF1A{name}","result.deleted":"\u5DF2\u6C38\u4E45\u5220\u9664\uFF1A{name}","result.updated":"\u72B6\u6001\u5DF2\u66F4\u65B0\u3002","error.action":"\u64CD\u4F5C\u5931\u8D25\uFF1A{error}","warning.scan.truncated":"\u6280\u80FD\u76EE\u5F55\u8F83\u5927\u6216\u5D4C\u5957\u8FC7\u6DF1\uFF0C\u90E8\u5206\u6280\u80FD\u672A\u663E\u793A\uFF1A{path}","warning.state.invalid":"\u6280\u80FD\u7BA1\u7406\u5668\u72B6\u6001\u6587\u4EF6\u4E0D\u53EF\u8BFB\uFF1B\u6240\u6709\u6280\u80FD\u5DF2\u5B89\u5168\u505C\u7528\uFF0C\u4FEE\u590D\u6587\u4EF6\u524D\u4E0D\u4F1A\u8986\u76D6\u72B6\u6001\uFF1A{path}","warning.backupUncleaned":"\u65E7\u7248\u672C\u5907\u4EFD\u672A\u6E05\u7406\uFF1A{path}\uFF08{error}\uFF09","warning.project.unavailable":"\u65E0\u6CD5\u4ECE\u5BBF\u4E3B\u8BFB\u53D6\u6D3B\u52A8\u5DE5\u4F5C\u533A\uFF0C\u9879\u76EE\u6280\u80FD\u672A\u663E\u793A\uFF1A{path}","error.root.readonly":"\u8BE5\u6765\u6E90\u4E0D\u5141\u8BB8{action}","error.root.unknown":"\u672A\u77E5\u6280\u80FD\u6765\u6E90\uFF1A{root}","error.workspace.unregistered":"\u8BF7\u9009\u62E9\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u3002","error.workspace.unavailable":"\u5DE5\u4F5C\u533A\u76EE\u5F55\u4E0D\u53EF\u7528\uFF1A{path}","error.root.unsafe":"\u9879\u76EE\u6280\u80FD\u76EE\u5F55\u4E0D\u5B89\u5168\uFF0C\u62D2\u7EDD\u5199\u5165\uFF1A{path}","error.skill.notFound":"\u6280\u80FD\u4E0D\u5B58\u5728: {name}","error.skill.linked":"\u76EE\u5F55\u94FE\u63A5\u4E0D\u80FD\u5220\u9664\u6216\u8986\u76D6\uFF1A{path}","error.skill.noFrontmatter":"\u6280\u80FD\u7F3A\u5C11\u5B8C\u6574 frontmatter\uFF0C\u65E0\u6CD5{action}: {name}","error.skill.notLoadable":"\u6280\u80FD\u7ED3\u6784\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5{action}: {name}","error.source.notFound":"\u8DEF\u5F84\u4E0D\u5B58\u5728: {path}","error.source.symlink":"\u4E0D\u652F\u6301\u5305\u542B\u7B26\u53F7\u94FE\u63A5\u7684 skill \u6765\u6E90: {path}","error.source.unrecognized":"\u65E0\u6CD5\u8BC6\u522B\u7684 skill \u6765\u6E90: {path}","error.source.tooDeep":"skill \u6765\u6E90\u76EE\u5F55\u5C42\u7EA7\u8D85\u8FC7 {depth} \u5C42: {path}","error.import.overlap":"\u5BFC\u5165\u6765\u6E90\u4E0D\u80FD\u4E0E DSH \u6280\u80FD\u76EE\u5F55\u76F8\u540C\u3001\u5305\u542B\u6216\u4F4D\u4E8E\u5176\u4E2D","error.import.emptySource":"\u76EE\u5F55\u4E0B\u672A\u627E\u5230\u4EFB\u4F55 skill \u6761\u76EE: {path}","error.import.invalidName":"\u65E0\u6CD5\u751F\u6210\u5408\u6CD5 kebab-case \u540D\u79F0\uFF08\u539F\u59CB\u540D: {name}\uFF09","error.import.duplicateName":"\u6279\u91CF\u6765\u6E90\u4E2D\u5B58\u5728\u591A\u4E2A\u540C\u540D\u6280\u80FD: {name}","error.import.failed":"\u5BFC\u5165\u5931\u8D25","error.import.rollbackFailed":"\u8986\u76D6\u5BFC\u5165\u56DE\u6EDA\u5931\u8D25\uFF0C\u5907\u4EFD\u4FDD\u7559\u5728: {path}\uFF08{error}\uFF09","error.upload.path":"\u4E0A\u4F20\u5185\u5BB9\u5305\u542B\u975E\u6CD5\u8DEF\u5F84\uFF1A{path}","error.upload.encoding":"\u4E0A\u4F20\u5185\u5BB9\u7F16\u7801\u65E0\u6548","error.upload.empty":"\u4E0A\u4F20\u5185\u5BB9\u4E3A\u7A7A","error.upload.tooMany":"\u4E0A\u4F20\u6587\u4EF6\u8FC7\u591A\uFF0C\u6700\u591A {limit} \u4E2A","error.upload.tooLarge":"\u4E0A\u4F20\u5185\u5BB9\u8FC7\u5927\uFF0C\u9650\u5236\u4E3A {limit} \u5B57\u8282","error.upload.archiveTooLarge":"ZIP \u538B\u7F29\u5305\u8FC7\u5927\uFF0C\u9650\u5236\u4E3A {limit} \u5B57\u8282","error.upload.duplicate":"\u4E0A\u4F20\u5185\u5BB9\u5305\u542B\u91CD\u590D\u8DEF\u5F84\uFF1A{path}","error.upload.zipInvalid":"ZIP \u538B\u7F29\u5305\u65E0\u6CD5\u89E3\u538B","error.trash.notFound":"\u56DE\u6536\u7AD9\u6761\u76EE\u4E0D\u5B58\u5728: {id}","error.trash.conflict":"\u65E0\u6CD5\u6062\u590D\uFF0C\u540C\u540D\u6280\u80FD\u5DF2\u5B58\u5728: {name}","error.trash.invalid":"\u56DE\u6536\u7AD9\u6761\u76EE\u8DEF\u5F84\u975E\u6CD5: {id}","error.trash.projectUnavailable":"\u539F\u9879\u76EE\u5F53\u524D\u4E0D\u5728\u6D3B\u52A8\u5DE5\u4F5C\u533A\u4E2D\uFF0C\u65E0\u6CD5\u6062\u590D\uFF1A{path}","error.trash.rollbackFailed":"\u79FB\u5165\u56DE\u6536\u7AD9\u56DE\u6EDA\u5931\u8D25\uFF0C\u672A\u6062\u590D\u5185\u5BB9\u4FDD\u7559\u5728: {path}\uFF08{error}\uFF09","error.state.invalid":"\u6280\u80FD\u7BA1\u7406\u5668\u72B6\u6001\u6587\u4EF6\u4E0D\u53EF\u8BFB\uFF0C\u5DF2\u62D2\u7EDD\u8986\u76D6\uFF1A{path}","error.create.descriptionRequired":"\u6280\u80FD\u7B80\u4ECB\u4E0D\u80FD\u4E3A\u7A7A","error.create.bodyRequired":"\u6280\u80FD\u6B63\u6587\u4E0D\u80FD\u4E3A\u7A7A","error.create.tooLarge":"\u6280\u80FD\u5185\u5BB9\u8FC7\u957F","error.create.conflict":"\u540C\u540D\u6280\u80FD\u5DF2\u5B58\u5728: {name}","error.proto.forbidden":"\u7981\u6B62\u7684\u4FEE\u6539\u8BF7\u6C42\uFF08\u7F3A\u5C11\u5BA2\u6237\u7AEF\u6807\u8BB0\uFF09","error.proto.forbiddenHost":"\u7981\u6B62\u7684\u8BF7\u6C42\u6765\u6E90\uFF08\u975E\u6CD5 Host\uFF09","error.proto.contentType":"\u8BF7\u6C42\u4F53\u5FC5\u987B\u662F application/json","error.proto.method":"\u4E0D\u652F\u6301\u7684\u8BF7\u6C42\u65B9\u6CD5","error.proto.unknownAction":"\u672A\u77E5\u64CD\u4F5C","error.proto.invalidParams":"\u8BF7\u6C42\u53C2\u6570\u65E0\u6548","error.proto.bodyTooLarge":"\u8BF7\u6C42\u4F53\u8FC7\u5927","error.proto.invalidJson":"\u8BF7\u6C42\u4F53\u4E0D\u662F\u5408\u6CD5 JSON","error.proto.nonJson":"\u670D\u52A1\u7AEF\u8FD4\u56DE\u975E JSON \u54CD\u5E94\uFF08HTTP {status}\uFF09","error.update.disabled":"\u5728\u7EBF\u66F4\u65B0\u5DF2\u88AB\u7981\u7528","error.catalog.query":"\u641C\u7D22\u5173\u952E\u8BCD\u65E0\u6548\u3002","error.catalog.upstream":"\u76EE\u5F55\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002","error.catalog.response":"\u76EE\u5F55\u8FD4\u56DE\u7684\u6570\u636E\u65E0\u6548\u6216\u8FC7\u5927\u3002","error.catalog.identity":"\u76EE\u5F55\u6280\u80FD\u6807\u8BC6\u65E0\u6548\u3002","diagnostic.frontmatter.missing":"\u7F3A\u5C11\u5B8C\u6574 YAML frontmatter","diagnostic.name.missing":"frontmatter \u7F3A\u5C11 name","diagnostic.name.invalid":"\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u6280\u80FD\u540D\u79F0\u683C\u5F0F\uFF08\u4EC5\u652F\u6301\u82F1\u6587\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u4E0E\u8FDE\u5B57\u7B26\uFF09\uFF0C\u65E0\u6CD5\u542F\u7528\u3002\u5982\u9700\u8C03\u7528\uFF0C\u8BF7\u5728 SKILL.md frontmatter \u4E2D\u6307\u5B9A\u82F1\u6587 name\uFF08\u76EE\u5F55\u540D\u53EF\u4FDD\u7559\u4E2D\u6587\uFF09\uFF1A{name}","diagnostic.description.missing":"frontmatter \u7F3A\u5C11 description","diagnostic.invocation.invalid":"\u8C03\u7528\u7B56\u7565\u5B57\u6BB5\u503C\u65E0\u6548","diagnostic.shadowed":"\u88AB\u66F4\u9AD8\u4F18\u5148\u7EA7\u6765\u6E90 {root} \u8986\u76D6","action.enable":"\u542F\u7528","action.disable":"\u505C\u7528","action.create":"\u521B\u5EFA","action.delete":"\u5220\u9664","action.restore":"\u6062\u590D","action.toggle":"\u542F\u7528\u6216\u505C\u7528","scope.user":"\u5168\u5C40\u6280\u80FD","scope.project":"\u9879\u76EE\u6280\u80FD","scope.trash":"\u56DE\u6536\u7AD9","scope.label":"\u6280\u80FD\u7BA1\u7406\u89C6\u56FE","scope.userHint":"\u8DE8\u9879\u76EE\u53EF\u7528\u3002\u542F\u505C\u4EC5\u5F71\u54CD DSH \u4E2D\u7684\u8C03\u7528\u3002","scope.projectHint":"\u6309\u5DE5\u4F5C\u533A\u67E5\u770B\u9879\u76EE\u6280\u80FD\u3002\u542F\u505C\u4E0D\u4FEE\u6539\u5176\u4ED6 Agent \u7684\u6E90\u6587\u4EF6\u3002","project.empty":"\u8FD8\u6CA1\u6709\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u3002\u8BF7\u5148\u5728\u4FA7\u680F\u6DFB\u52A0\u5DE5\u4F5C\u533A\u3002","project.noSkills":"\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u91CC\u8FD8\u6CA1\u6709\u6280\u80FD\u3002","workspace.unavailable":"\u76EE\u5F55\u4E0D\u53EF\u7528","workspace.noSkills":"\u8FD9\u4E2A\u5DE5\u4F5C\u533A\u8FD8\u6CA1\u6709\u6280\u80FD\u3002","workspace.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","workspace.loadFailed":"\u8BFB\u53D6\u5931\u8D25\uFF1A{error}","workspace.listFailed":"\u65E0\u6CD5\u8BFB\u53D6\u5DE5\u4F5C\u533A\u5217\u8868\uFF1A{error}","filter.status":"\u8C03\u7528\u72B6\u6001","filter.statusAll":"\u5168\u90E8\u72B6\u6001","status.shadowedBy":"\u88AB {source} \u4E2D\u7684\u540C\u540D\u6280\u80FD\u8986\u76D6","status.fallback.user":"\u5F53\u524D\u4F7F\u7528\u5168\u5C40 {source} \u526F\u672C\u3002","status.fallback.project":"\u5F53\u524D\u4F7F\u7528\u9879\u76EE {source} \u526F\u672C\u3002","root.copilot":"GitHub Copilot","source.selectHint":"\u5148\u9009\u62E9\u4E00\u4E2A\u6765\u6E90\uFF0C\u624D\u80FD\u67E5\u770B\u76EE\u5F55\u6216\u5173\u95ED\u6574\u4E2A\u6765\u6E90\u3002\u5173\u95ED\u6765\u6E90\u53EA\u5F71\u54CD DSH \u8C03\u7528\uFF0C\u4E0D\u6539\u6587\u4EF6\u3002","import.global":"\u5BFC\u5165\u6280\u80FD","category.batchAssigned":"\u5DF2\u5C06 {count} \u4E2A\u6280\u80FD\u6DFB\u52A0\u5230\u201C{category}\u201D\u3002\u6587\u4EF6\u672A\u79FB\u52A8\u3002","category.selectSkills":"\u6DFB\u52A0\u6280\u80FD\u5230\u201C{name}\u201D","category.noAvailableSkills":"\u6CA1\u6709\u53EF\u6DFB\u52A0\u7684\u6280\u80FD","category.addSkills":"\u6DFB\u52A0\u6280\u80FD","root.dsh":"DSH","root.agents":"\u516C\u5171 Agent","root.ccswitch":"CC Switch","root.projectDsh":"DSH","root.projectAgents":"\u9879\u76EE Agent","root.codex":"Codex","root.claude":"Claude Code","root.gemini":"Gemini","root.opencode":"OpenCode","root.cursor":"Cursor","root.windsurf":"Windsurf","root.windsurfUser":"Windsurf (\u7528\u6237\u76EE\u5F55)","root.trae":"Trae","root.traeCn":"Trae (\u56FD\u5185\u7248)","root.openclaw":"OpenClaw","root.clawdbot":"OpenClaw (\u65E7\u76EE\u5F55)","root.roo":"Roo","root.codebuddy":"CodeBuddy","root.workbuddy":"WorkBuddy","root.qoder":"Qoder","root.qoderCn":"Qoder CN CLI","root.lingma":"Qoder CN"},en:{"summary.group.one":"{count} skill","summary.group.other":"{count} skills","format.locale":"en-US","format.warningSeparator":"; ",title:"Skills",desc:"Load and manage Agent Skills on this computer in one place.","link.project":"GitHub","link.feedback":"Issues","btn.create":"Create skill","btn.import":"Import","btn.refresh":"Refresh","btn.cancel":"Cancel","btn.close":"Close","btn.detail":"View details","btn.more":"More","btn.trash":"Move to trash","btn.restore":"Restore","btn.delete.forever":"Delete forever","btn.file.pick":"Choose file","btn.folder.pick":"Choose folder","btn.import.now":"Install","btn.create.now":"Create skill","btn.disable":"Disable","btn.enable":"Enable","btn.confirm":"Confirm","status.enabled":"Enabled","status.disabled":"Disabled","status.invalid":"Needs attention","status.shadowed":"Shadowed","summary.total.one":"{count} skill","summary.total.other":"{count} skills","summary.enabled.one":"{count} enabled","summary.enabled.other":"{count} enabled","summary.disabled.one":"{count} disabled","summary.disabled.other":"{count} disabled","summary.shadowed.one":"{count} shadowed","summary.shadowed.other":"{count} shadowed","summary.invalid.one":"{count} diagnostic","summary.invalid.other":"{count} diagnostics","table.skill":"Skill name and description","table.status":"Invocation status","filter.workspace":"Workspace","filter.source":"Source","filter.all":"All sources","filter.option":"{name} ({count})",search:"Search","search.placeholder":"Search skill names or descriptions","search.clear":"Clear search","empty.search":"No matching skills.","empty.source":"This source does not exist or has no skills yet.",loading:"Loading skills\u2026","note.missing":"No description provided","skill.linked":"External directory link, read-only","source.toggle":"Toggle source","skill.toggle":"Toggle skill","category.toggle":"Toggle category","category.create":"New category","category.uncategorized":"Uncategorized","category.assign":"Move to {name}","category.rename":"Rename","category.delete":"Delete category","category.note":"Categories stay in this source and do not move files.","category.name":"Category name","category.empty":"No skills yet. Use More on a skill to place it here.","category.progress":"{count} \xB7 {enabled}/{usable} enabled","category.actions":"Category actions","category.created":"Added category \u201C{name}\u201D. No directory was created.","category.renamed":"Renamed. Skill file names are unchanged.","category.deleted":"Deleted category \u201C{name}\u201D. Skills returned to Uncategorized and were not trashed.","category.assigned":"Moved {name} to \u201C{category}\u201D. The file was not moved.","category.dragTip":"Drag to reorder or move to another category","category.moved":"Updated the category or order for {name}.","confirm.category.title":"Delete category?","confirm.category.desc":"\u201C{name}\u201D will be removed. Its skills return to Uncategorized. Files are not moved.","error.category.duplicate":"A category with this name already exists: {name}","error.category.name":"Category name is required and must be at most 24 characters","error.category.notFound":"Category not found","error.category.root":"Skill source not found: {root}","error.category.position":"Invalid skill ordering position","error.category.target":"The target skill is not in the destination category","detail.title":"Skill details","detail.description":"Description","detail.document":"SKILL.md","detail.body":"Body","detail.frontmatter":"Frontmatter","detail.diagnostics":"Diagnostics","detail.path":"Source file","detail.noIssues":"No diagnostic issues found.","detail.copyBody":"Copy body","detail.copied":"Copied","detail.copyFailed":"Copy failed","create.title":"Create skill","create.name":"Name","create.name.placeholder":"e.g. code-review-helper","create.description":"Description","create.description.placeholder":"One sentence describing when to use it","create.body":"Body (Markdown)","create.body.placeholder":"Write the instructions, steps, and boundaries\u2026","create.chat.note":"Created skills are not linked to repository updates, and no source file is modified.","import.title":"Import skill","upload.drop.title":"Drop a skill here","upload.drop.copy":"Supports .zip, a skill folder, or one SKILL.md","upload.selected.one":"{count} file \xB7 {size}","upload.selected.other":"{count} files \xB7 {size}","upload.remove":"Remove selection","upload.requirements":"File requirements","upload.requirement.skill":"Archives and folders must contain SKILL.md","upload.requirement.frontmatter":"SKILL.md must include a YAML name and description","upload.requirement.copy":"Import copies all content and never modifies the source","upload.importing":"Installing\u2026","status.selected":"Selected","select.file.invalid":"Choose a .zip archive or one SKILL.md.","select.folder.invalid":"No SKILL.md was found in the selected folder.","error.browse.absolute":"Folder path must be absolute: {path}","error.browse.unreadable":"Could not read folder: {path}","error.browse.notDirectory":"Not a folder: {path}","trash.title":"Trash","trash.empty":"Trash is empty.","trash.deletedAt":"Deleted {time}","trash.source":"Source: {source}","confirm.trash.title":"Move to trash?","confirm.trash.desc":"\u201C{name}\u201D will move out of its current skill source and can be restored to the same location later.","confirm.delete.title":"Delete forever?","confirm.delete.desc":"\u201C{name}\u201D will be permanently deleted from trash and cannot be recovered.","result.created":"Created skill: {name}","result.imported":"Import complete: {names}","result.importPartial":"Imported: {imported}; skipped existing skills: {skipped}","result.importSkipped":"No skills were imported; existing skills were skipped: {names}","result.importEmpty":"No skills were imported.","result.importWarnings":"{result}; warnings: {warnings}","result.restored":"Restored skill: {name}","result.trashed":"Moved to trash: {name}","result.deleted":"Permanently deleted: {name}","result.updated":"Status updated.","error.action":"Action failed: {error}","warning.scan.truncated":"Some skills were not shown because the directory is too large or deeply nested: {path}","warning.state.invalid":"The manager state file could not be read; all skills are disabled and state writes are blocked until it is repaired: {path}","warning.backupUncleaned":"Old version backup was not cleaned up: {path} ({error})","warning.project.unavailable":"The active workspace could not be read from the host, so its project skills are hidden: {path}","error.root.readonly":"This source does not allow {action}","error.root.unknown":"Unknown skill source: {root}","error.workspace.unregistered":"Select a registered workspace.","error.workspace.unavailable":"Workspace directory is unavailable: {path}","error.root.unsafe":"The project skill directory is unsafe, so the write was refused: {path}","error.skill.notFound":"Skill not found: {name}","error.skill.linked":"This directory link cannot be deleted or overwritten: {path}","error.skill.noFrontmatter":"Skill lacks complete frontmatter, cannot {action}: {name}","error.skill.notLoadable":"Skill structure is incomplete, cannot {action}: {name}","error.source.notFound":"Path does not exist: {path}","error.source.symlink":"Skill sources containing symbolic links are not supported: {path}","error.source.unrecognized":"Unrecognized skill source: {path}","error.source.tooDeep":"Skill source directory depth exceeds {depth} levels: {path}","error.import.overlap":"Import source cannot be the same as, contain, or be inside the DSH skills directory","error.import.emptySource":"No skill entries found in the directory: {path}","error.import.invalidName":"Cannot generate a valid kebab-case name (original: {name})","error.import.duplicateName":"Batch source contains duplicate skill names: {name}","error.import.failed":"Import failed","error.import.rollbackFailed":"Overwrite import rollback failed; backups kept at: {path} ({error})","error.upload.path":"Upload contains an invalid path: {path}","error.upload.encoding":"Upload encoding is invalid","error.upload.empty":"Upload is empty","error.upload.tooMany":"Too many uploaded files; maximum {limit}","error.upload.tooLarge":"Upload is too large; limit {limit} bytes","error.upload.archiveTooLarge":"ZIP archive is too large; limit {limit} bytes","error.upload.duplicate":"Upload contains a duplicate path: {path}","error.upload.zipInvalid":"ZIP archive could not be extracted","error.trash.notFound":"Trash item not found: {id}","error.trash.conflict":"Cannot restore because a skill with the same name exists: {name}","error.trash.invalid":"Invalid trash item path: {id}","error.trash.projectUnavailable":"The original project is not an active workspace, so this skill cannot be restored: {path}","error.trash.rollbackFailed":"Move-to-trash rollback failed; unrecovered content was kept at: {path} ({error})","error.state.invalid":"The manager state file could not be read, so overwriting it was refused: {path}","error.create.descriptionRequired":"Skill description is required","error.create.bodyRequired":"Skill body is required","error.create.tooLarge":"Skill content is too large","error.create.conflict":"A skill with the same name already exists: {name}","error.proto.forbidden":"Forbidden mutation request (missing client marker)","error.proto.forbiddenHost":"Forbidden request origin (invalid host)","error.proto.contentType":"Content type must be application/json","error.proto.method":"Method not allowed","error.proto.unknownAction":"Unknown action","error.proto.invalidParams":"Invalid request parameters","error.proto.bodyTooLarge":"Request body too large","error.proto.invalidJson":"Invalid JSON request body","error.proto.nonJson":"Server returned a non-JSON response (HTTP {status})","error.update.disabled":"Online updates are disabled","error.catalog.query":"The search query is invalid.","error.catalog.upstream":"The catalog service is temporarily unavailable.","error.catalog.response":"The catalog response is invalid or too large.","error.catalog.identity":"The catalog skill identifier is invalid.","diagnostic.frontmatter.missing":"Missing complete YAML frontmatter","diagnostic.name.missing":"Frontmatter is missing name","diagnostic.name.invalid":"Skill name format is not supported by host (lowercase letters, numbers and hyphens only), cannot be enabled. To invoke it, specify an English name in the SKILL.md frontmatter (directory name can remain unchanged): {name}","diagnostic.description.missing":"Frontmatter is missing description","diagnostic.invocation.invalid":"Invocation policy value is invalid","diagnostic.shadowed":"Shadowed by higher-priority source {root}","action.enable":"enable","action.disable":"disable","action.create":"create","action.delete":"delete","action.restore":"restore","action.toggle":"enabling or disabling","scope.user":"Global skills","scope.project":"Project skills","scope.trash":"Trash","scope.label":"Skill manager views","scope.userHint":"Available across projects. Toggles only affect invocation in DSH.","scope.projectHint":"View project skills by workspace. Toggles do not modify other agents\u2019 source files.","project.empty":"No registered workspaces yet. Add one in the sidebar first.","project.noSkills":"Registered workspaces do not have skills yet.","workspace.unavailable":"Directory unavailable","workspace.noSkills":"No skills in this workspace yet.","workspace.loading":"Loading\u2026","workspace.loadFailed":"Failed to load: {error}","workspace.listFailed":"Cannot read the workspace list: {error}","filter.status":"Invocation status","filter.statusAll":"All statuses","status.shadowedBy":"Overridden by the same skill in {source}","status.fallback.user":"Currently using the global {source} copy.","status.fallback.project":"Currently using the project {source} copy.","source.selectHint":"Select a source to view its directory or turn the whole source off. Turning a source off only affects invocation in DSH and does not change files.","import.global":"Import skill","category.batchAssigned":"Added {count} skills to \u201C{category}\u201D. Files were not moved.","category.selectSkills":"Add skills to \u201C{name}\u201D","category.noAvailableSkills":"No skills available to add","category.addSkills":"Add skills","root.dsh":"DSH skills","root.agents":"Shared Agent","root.ccswitch":"CC Switch","root.projectDsh":"DSH skills","root.projectAgents":"Project Agent","root.codex":"Codex","root.claude":"Claude Code","root.gemini":"Gemini","root.opencode":"OpenCode","root.cursor":"Cursor","root.copilot":"GitHub Copilot","root.windsurf":"Windsurf","root.windsurfUser":"Windsurf (User Home)","root.trae":"Trae","root.traeCn":"Trae CN","root.openclaw":"OpenClaw","root.clawdbot":"OpenClaw (Legacy)","root.roo":"Roo","root.codebuddy":"CodeBuddy","root.workbuddy":"WorkBuddy","root.qoder":"Qoder","root.qoderCn":"Qoder CN CLI","root.lingma":"Qoder CN"}};Object.assign(fa.zh,Wa.zh,Ka.zh,Ja.zh);Object.assign(fa.en,Wa.en,Ka.en,Ja.en);var Zt=Rr(I),Fr=yr({react:I,SourceSelect:Zt,translateError:ye}),Ur=Fr.DestinationPicker,Qn=hr({react:I,Modal:rt,Input:ut,Button:Me.Button,SourceSelect:Zt,destination:Fr,api:ma,headers:Qt,translateError:ye,getLocale:Wr}),Zn=br+Ga+`.dssm-sources{display:flex;flex-direction:column;gap:9px}.dssm-scope-tabs{display:grid!important;box-sizing:border-box!important;width:100%;height:32px!important;min-height:32px!important;max-height:32px!important;padding:2px!important;border-radius:var(--dsw-radius-sm,8px)!important;border:0.5px solid var(--dsw-alias-border-l2)!important;background:var(--dsw-alias-bg-layer-1)!important}.dssm-scope-tabs>span[aria-hidden="true"],.dssm-scope-tabs>[class*="indicator"]{width:calc((100% - 4px)/4)!important;inset:2px auto 2px 2px!important;border-radius:6px!important;border:0.5px solid var(--dsw-alias-border-l3,rgba(255,255,255,.12))!important;background:var(--dsw-alias-bg-layer-3,rgba(255,255,255,.08))!important;box-shadow:none!important}.dssm-scope-tabs [role=tab]{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;height:28px!important;padding:0 12px!important;border-radius:6px!important;font-size:13px!important;line-height:20px!important;color:var(--dsw-alias-label-secondary)!important;text-align:center!important;box-sizing:border-box!important;transition:color 150ms ease!important}.dssm-scope-tabs [role=tab]:hover{color:var(--dsw-alias-label-primary)!important}.dssm-scope-tabs [role=tab][aria-selected="true"]{color:var(--dsw-alias-label-primary)!important;font-weight:600!important}.dssm-scope-tabs [role=tab] svg{flex:none;display:block}.dssm-source-head{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 12px}.dssm-source-toggle{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.dssm-source-toggle:focus-visible{outline:var(--dsw-focus-ring-width,1px) solid var(--dsw-focus-ring-color,var(--dsw-alias-brand-primary));outline-offset:2px}.dssm-fold-chevron{flex:none;color:var(--dsw-alias-label-tertiary);transform:rotate(-90deg);transition:transform 160ms ease}.dssm-fold-chevron.is-open{transform:rotate(0deg)}@media (prefers-reduced-motion:reduce){.dssm-fold-chevron{transition:none}}.dssm-source-label{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.dssm-drag-handle{cursor:grab;color:var(--dsw-alias-label-tertiary,#888);font-size:13px;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:16px;height:22px;border-radius:var(--dsw-radius-sm,8px);flex-shrink:0;user-select:none;transition:color 0.15s}.dssm-skill-row:hover .dssm-drag-handle{color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-drag-handle:active{cursor:grabbing}.dssm-cat.drag-over{border-color:var(--dsw-alias-brand-primary,#3b82f6);box-shadow:0 0 0 1px var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row.dragging{opacity:0.4;background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover,transparent))}.dssm-skill-row.drop-before{box-shadow:inset 0 2px 0 var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row.drop-after{box-shadow:inset 0 -2px 0 var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row{display:flex;align-items:center;gap:8px;margin:0;padding:11px 13px;border:0;border-top:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:0;background:transparent}.dssm-skill-copy{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.dssm-skill-actions{display:flex;align-items:center;gap:8px;flex:none;flex-wrap:nowrap}.dssm-skill-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;line-height:18px}.dssm-icon-danger{color:var(--dsw-alias-state-error-primary,#ef7272)}.dssm-skill-row .dssm-name{font-size:14px;font-weight:650;color:var(--dsw-alias-label-primary,#eeeeee)}.dssm-skill-actions{display:flex;align-items:center;gap:8px;flex:none}.dssm-source{overflow:hidden;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-xl,20px);background:transparent}.dssm-textarea{box-sizing:border-box;display:block;width:100%;min-height:160px;margin:0;padding:8px 12px;border:0.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md,12px);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:14px;line-height:22px;resize:vertical}.dssm-textarea:focus,.dssm-textarea:focus-visible{outline:none;border-color:var(--dsw-alias-state-business-primary)}.dssm-textarea[readonly]{resize:none}.dssm-source-title{font-size:14px;font-weight:650;white-space:nowrap;flex:none}.dssm-source-path{min-width:0;max-width:50%;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px}.dssm-source-actions{display:flex;flex:none;align-items:center;gap:8px;margin-left:12px}.dssm-cat{margin:0 10px 8px;border:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:var(--dsw-radius-lg,16px)}.dssm-cat-head{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 8px 0 6px}.dssm-cat-main{display:flex;align-items:center;gap:8px;flex:1;min-width:0;min-height:36px;padding:4px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.dssm-cat-title{font-size:14px;font-weight:700;display:inline-flex;align-items:center}.dssm-cat-note{margin:2px 16px 8px}.dssm-fallback{margin-top:4px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-section{box-sizing:border-box;display:flex;width:100%;min-width:0;padding:2px 0 36px;container-type:inline-size;flex-direction:column;gap:14px;color:var(--dsw-alias-label-primary,#eeeeee);font-family:inherit}.dssm-head{display:flex;flex-direction:column;align-items:stretch;gap:16px}.dssm-title-block{min-width:0}.dssm-title-row{display:flex;align-items:center;gap:8px 12px;min-width:0;flex-wrap:wrap}.dssm-feedback-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dssm-feedback-links>span[data-mpi-check]{display:inline-flex;align-items:center}.dssm-title{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.4px;white-space:nowrap}.dssm-desc{margin:12px 0 0;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:14px;line-height:22px}.dssm-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:0;flex:none}.dssm-upload-link:focus-visible,.dssm-file-remove:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary,#f2f2f2));outline-offset:2px}.dssm-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1)}.dssm-stat{padding:4px 10px;border-right:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-stat:last-child{border-right:0}.dssm-stat strong{margin-right:4px;color:var(--dsw-alias-label-primary,#eeeeee);font-size:14px;font-weight:650}.dssm-filters{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;width:100%!important;min-width:0;box-sizing:border-box}.dssm-filter-actions{display:flex;align-items:center;gap:8px;flex:none;margin-left:auto}.dssm-filters .dssm-search{flex:1 1 0;min-width:160px;max-width:none}.dssm-filters .dssm-source-filter,.dssm-filters .dssm-status-filter,.dssm-filters .dssm-project-filter,.dssm-filters .dssm-menu-select-wrap,.dssm-filters span[class*="_root_"],.dssm-filters .dssm-source-select-menu,.dssm-filters .dssm-menu-select-trigger{width:auto!important;min-width:0!important;display:inline-flex!important;flex:none}.dssm-field .dssm-menu-select-wrap,.dssm-destination-pair .dssm-menu-select-wrap,.dssm-destination-pair span[class*="_root_"]{display:flex!important;width:100%!important;min-width:0!important;height:auto!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important}.dssm-destination-pair .dssm-menu-select-trigger,.dssm-form .dssm-menu-select-trigger{display:flex!important;width:100%!important;height:36px!important;border-radius:var(--dsw-radius-md,10px)!important;padding:0 12px!important;box-sizing:border-box!important}.dssm-source-select-menu{min-width:130px;max-width:280px}.dssm-menu-select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;height:32px;padding:0 10px;border:0.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-sm,8px);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:13px;line-height:20px;cursor:pointer;user-select:none;width:max-content;min-width:8em;transition:border-color 120ms ease,background 120ms ease}.dssm-menu-select-trigger:hover:not(:disabled){border-color:var(--dsw-alias-border-l3,#555)}.dssm-menu-select-trigger.is-open,.dssm-menu-select-trigger:focus-visible{border-color:var(--dsw-alias-brand-primary)!important;outline:var(--dsw-focus-ring-width,1px) solid var(--dsw-focus-ring-color,var(--dsw-alias-brand-primary))!important;outline-offset:0!important}.dssm-menu-select-trigger:disabled{opacity:.5;cursor:default}.dssm-menu-select-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:left}.dssm-menu-select-arrow{color:var(--dsw-alias-label-secondary);flex-shrink:0}.dssm-count{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;white-space:nowrap;flex:none}.dssm-name{overflow-wrap:anywhere;font-size:13px;font-weight:570}.dssm-note{overflow-wrap:anywhere;margin-top:2px;color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:11px;line-height:17px}.dssm-enabled{color:var(--dsw-alias-state-success-primary,#51b976);font-size:12px;white-space:nowrap}.dssm-disabled{color:var(--dsw-alias-state-warn-primary,#d49245);font-size:12px;white-space:nowrap}.dssm-shadowed{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;white-space:nowrap}.dssm-trash-count{padding:2px 7px;border-radius:999px;corner-shape:round;background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12));color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:11px}.dssm-empty{padding:25px 14px;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;text-align:center}.dssm-feedback{padding:9px 11px;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:12px}.dssm-warning{border-color:var(--dsw-alias-state-warn-primary,#d49245);color:var(--dsw-alias-state-warn-primary,#d49245)}.dssm-error{border-color:var(--dsw-alias-state-error-primary,#ef7272);color:var(--dsw-alias-state-error-primary,#ef7272)}.dssm-form,.dssm-field,.dssm-detail-section{display:flex;flex-direction:column}.dssm-form{gap:12px}.dssm-detail{display:flex;flex-direction:column;gap:12px;min-width:0}.dssm-detail .dssm-desc{margin:0}.dssm-field{gap:6px}.dssm-label{font-size:12px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-detail-title{font-size:14px;line-height:22px;font-weight:650}.dssm-help{margin:0;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;line-height:18px}.dssm-batch-list{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto;margin:12px 0;padding:2px}.dssm-batch-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));cursor:pointer;user-select:none;transition:background 0.15s,border-color 0.15s}.dssm-batch-item:hover{background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover,transparent));border-color:var(--dsw-alias-border-l2,#494949)}.dssm-batch-item.selected{border-color:var(--dsw-alias-brand-primary,#3b82f6);background:var(--dsw-alias-state-business-tertiary)}.dssm-batch-item input[type="checkbox"]{cursor:pointer;margin:0;flex-shrink:0;width:15px;height:15px}.dssm-batch-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.dssm-batch-name-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.dssm-batch-name{font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary,#eee);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dssm-batch-cat-tag{font-size:10px;padding:1px 6px;border-radius:var(--dsw-radius-xs,4px);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary,#b9b9b9);white-space:nowrap;flex-shrink:0}.dssm-batch-desc{font-size:12px;line-height:16px;color:var(--dsw-alias-label-tertiary,#a0a0a0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.dssm-modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.dssm-hidden-input{display:none}.dssm-dropzone{box-sizing:border-box;display:flex;width:100%;min-height:170px;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:22px;border:1px dashed var(--dsw-alias-border-l3,#555555);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9);transition:border-color 180ms ease,background 180ms ease}.dssm-dropzone:hover,.dssm-dropzone-active{border-color:var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary,#f2f2f2));background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12))}.dssm-dropzone-title{color:var(--dsw-alias-label-primary,#eeeeee);font-size:14px;font-weight:620}.dssm-dropzone-copy{font-size:12px;line-height:18px;text-align:center}.dssm-upload-choices{display:flex;align-items:center;gap:7px}.dssm-upload-link,.dssm-file-remove{padding:0;border:0;background:transparent;font:inherit;font-size:12px;cursor:pointer}.dssm-upload-link{color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-upload-link:hover{color:var(--dsw-alias-label-primary,#eeeeee);text-decoration:underline}.dssm-upload-link:disabled{opacity:.45;cursor:default}.dssm-upload-divider{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px}.dssm-file{display:flex;align-items:center;gap:9px;padding:10px 11px;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-primary,#eeeeee);font-size:12px}.dssm-file-kind{display:inline-flex;min-width:30px;height:24px;align-items:center;justify-content:center;border-radius:var(--dsw-radius-sm,8px);background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12));color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:9px;font-weight:700}.dssm-file-name{min-width:0;overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.dssm-file-meta{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;white-space:nowrap}.dssm-file-remove{width:24px;height:24px;color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:18px}.dssm-upload-requirements{padding:1px 1px 0}.dssm-upload-requirements ul{display:flex;margin:7px 0 0;padding-left:18px;flex-direction:column;gap:5px;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;line-height:17px}.dssm-detail-section{gap:7px}.dssm-detail-path{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:22px}.dssm-detail-section .dssm-note,.dssm-diag{font-size:14px;line-height:22px}.dssm-detail-path{padding:8px 10px;border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9);word-break:break-all}.dssm-diag{padding:8px 10px;border-left:2px solid var(--dsw-alias-state-warn-primary,#d49245);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-trash-panel{display:flex;flex-direction:column;gap:10px}.dssm-trash-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:11px 13px;border:0.5px solid var(--dsw-alias-border-l2,rgba(128,128,128,.2));border-radius:var(--dsw-radius-xl,20px);background:transparent}.dssm-trash-main{min-width:0;display:flex;flex-direction:column;gap:6px}.dssm-trash-item .dssm-name{font-size:14px;line-height:20px;color:var(--dsw-alias-label-primary,inherit)}.dssm-trash-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;font-size:11px;line-height:17px;color:var(--dsw-alias-label-tertiary,#909090);overflow-wrap:anywhere}.dssm-trash-source{min-width:0;background:transparent;color:var(--dsw-alias-label-tertiary,#a0a0a0)}.dssm-trash-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
33
+ `;function Hr(){if(typeof document>"u"||document.getElementById(Ir)!==null)return;let t=document.createElement("style");t.id=Ir,t.textContent=Ga,(document.head??document.documentElement).appendChild(t)}function On(t){let e=t&&typeof t.size=="number"?t.size:16;return fe("svg",{viewBox:"0 0 16 16",width:e,height:e,fill:"currentColor","aria-hidden":"true",focusable:"false",dangerouslySetInnerHTML:{__html:Qa}})}function Bn(t){Hr();let{t:e,enabled:l,onToggle:d,disabled:m,onlineUpdateEnabled:f=!0,onToggleOnlineUpdate:g,onlineUpdateDisabled:b,onlineUpdateLocked:v}=t,k=[fe("div",{key:"sidebar-entry",className:"dssm-bundle-row"},fe("div",{className:"dssm-bundle-label-box"},fe("span",{className:"dssm-bundle-title"},e("sidebar.entry.title")),fe("span",{className:"dssm-bundle-desc"},e("sidebar.entry.desc"))),fe(Ya.Switch,{checked:l,onChange:d,label:e("sidebar.entry.toggle"),disabled:m}))];return typeof g=="function"&&k.push(fe("div",{key:"online-update",className:"dssm-bundle-row"},fe("div",{className:"dssm-bundle-label-box"},fe("span",{className:"dssm-bundle-title"},e("update.entry.title")),fe("span",{className:"dssm-bundle-desc"},e(v?"update.entry.locked":"update.entry.desc"))),fe(Ya.Switch,{checked:f,onChange:g,label:e("update.entry.toggle"),disabled:b,title:v?e("update.entry.locked"):void 0}))),fe(ze.Fragment,null,k)}function Fn(t){let[e,l]=ze.useState(t.getEnabled),[d,m]=ze.useState(t.getOnlineUpdateEnabled?t.getOnlineUpdateEnabled:()=>!0),[f,g]=ze.useState(t.getOnlineUpdateLocked?t.getOnlineUpdateLocked:()=>!1),[b,v]=ze.useState(!1),[k,n]=ze.useState(!1);ze.useEffect(()=>{let W=()=>{l(t.getEnabled()),t.getOnlineUpdateEnabled&&m(t.getOnlineUpdateEnabled()),t.getOnlineUpdateLocked&&g(t.getOnlineUpdateLocked())};return W(),t.subscribe(W)},[t]);let H=W=>{v(!0),l(W),t.setSidebar(W).catch(()=>{l(t.getEnabled())}).finally(()=>{v(!1)})},U=t.setOnlineUpdate?W=>{t.getOnlineUpdateLocked?.()||(n(!0),m(W),t.setOnlineUpdate(W).catch(()=>{t.getOnlineUpdateEnabled&&m(t.getOnlineUpdateEnabled())}).finally(()=>{n(!1)}))}:void 0;return fe(Bn,{t:t.t,enabled:e,disabled:b,onToggle:H,onlineUpdateEnabled:d,onlineUpdateDisabled:k||f,onlineUpdateLocked:f,onToggleOnlineUpdate:U})}function Xa(t,e){if(Hr(),!t.locale)return{isEnabled:()=>!1,isSupported:()=>!1,setEnabled:async()=>!1,isOnlineUpdateEnabled:()=>!0,setOnlineUpdate:async()=>!1,destroy:()=>{}};let{callApi:l,headers:d,renderPanel:m,ns:f}=e,g=!1,b=!1,v=null,k=null,n=0,H=!1,U,W=new Set,ne=()=>{if(!H)for(let S of W)try{S()}catch{}},_=()=>{if(!H)if(b&&g){if(!v){let S=t.slots.register({name:"main",key:Za,locale:f,inject:()=>({t:t.locale?.bind?t.locale.bind(f):void 0})},j=>fe("div",{className:"dssm-main-panel"},m(j)));v=typeof S=="function"?S:()=>{}}if(!k){let S=t.slots.register({name:"sidebar.panellist",id:Za,order:Pn,label:()=>t.locale.bind(f)("title"),locale:f},j=>fe(On,j));k=typeof S=="function"?S:()=>{}}}else{if(U?.panelInfo&&typeof U.selectPanel=="function")try{U.panelInfo.getSnapshot().activePanelId===Za&&U.selectPanel(null)}catch{}if(k){try{k()}catch{}k=null}if(v){try{v()}catch{}v=null}}},C=async S=>{if(H)return g;let j=++n;g=S,_(),ne();try{return await l("/sidebar-entry",{method:"POST",headers:d,body:JSON.stringify({enabled:S})}),S}catch(h){throw j===n&&(g=!S,_(),ne()),h}},A=!0,J=!1,c=0,K=async S=>{if(H||J)return A;let j=++c;if(A=S,ne(),!S&&typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(S)}catch{}try{if(await l("/online-update",{method:"POST",headers:d,body:JSON.stringify({enabled:S})}),S&&!H&&j===c&&typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(S)}catch{}return S}catch(h){if(j===c){let q=h!==null&&typeof h=="object"&&"code"in h&&h.code==="error.update.disabled";if(q&&(J=!0),A=q?!1:!S,ne(),typeof e.onOnlineUpdateChange=="function")try{e.onOnlineUpdateChange(A)}catch{}}throw h}},ae=n;l("/sidebar-entry").then(S=>{!H&&n===ae&&S&&typeof S.enabled=="boolean"&&(g=S.enabled,_(),ne())}).catch(()=>{});let de=c;return l("/online-update").then(S=>{if(!H&&c===de&&S&&typeof S.enabled=="boolean"&&(A=S.enabled,S.locked===!0&&(J=!0),ne(),typeof e.onOnlineUpdateChange=="function"))try{e.onOnlineUpdateChange(S.enabled)}catch{}}).catch(()=>{}),typeof t.inject=="function"&&t.inject(["layout"],S=>{H||(U=S.layout)}),t.slots.inject("sidebar.panellist",()=>{H||(b=!0,_())}),t.slots.inject("plugins.bundle.config",()=>{if(!H)return t.slots.register({name:"plugins.bundle.config",key:jn,locale:f},S=>S&&S.view==="summary"?null:fe(Fn,{t:t.locale.bind(f),getEnabled:()=>g,setSidebar:C,getOnlineUpdateEnabled:()=>A,setOnlineUpdate:K,getOnlineUpdateLocked:()=>J,subscribe:j=>(W.add(j),()=>{W.delete(j)})}))}),{isEnabled:()=>g,isSupported:()=>b,setEnabled:C,isOnlineUpdateEnabled:()=>A,setOnlineUpdate:K,destroy:()=>{if(!H){if(H=!0,n++,c++,U=void 0,W.clear(),k){try{k()}catch{}k=null}if(v){try{v()}catch{}v=null}}}}}var I=pa,s=I.createElement,Vn=Br.IconEditOutlineRegular;function Wn(){return s(Vn,{size:16})}var Kn={refresh:["M13.5 5.5V2.5m0 0h-3m3 0-2.1 2.1A5.5 5.5 0 1 0 13.2 12"],download:["M8 2v8m0 0 3-3m-3 3-3-3M3 13v2h10v-2"],copy:["M5 5h8v8H5z","M3 3h8"],close:["m4 4 8 8M12 4 4 12"]};function qn(t){var e=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");return l.setAttribute("viewBox","0 0 16 16"),l.setAttribute("width","16"),l.setAttribute("height","16"),l.setAttribute("fill","none"),l.setAttribute("stroke","currentColor"),l.setAttribute("stroke-width","1.5"),l.setAttribute("stroke-linecap","round"),l.setAttribute("stroke-linejoin","round"),l.setAttribute("aria-hidden","true"),Kn[t].forEach(function(d){var m=document.createElementNS("http://www.w3.org/2000/svg","path");m.setAttribute("d",d),l.append(m)}),e.append(l),e}var Qt={"content-type":"application/json","x-dsh-skills-manager":"1"},Tt="skills-manager",fa={zh:{"summary.group.one":"{count} \u4E2A\u6280\u80FD","summary.group.other":"{count} \u4E2A\u6280\u80FD","format.locale":"zh-CN","format.warningSeparator":"\uFF1B",title:"\u6280\u80FD",desc:"\u7EDF\u4E00\u52A0\u8F7D\u548C\u7BA1\u7406\u672C\u673A Agent Skills\u3002","link.project":"GitHub","link.feedback":"\u95EE\u9898\u53CD\u9988","btn.create":"\u521B\u5EFA\u6280\u80FD","btn.import":"\u5BFC\u5165","btn.refresh":"\u5237\u65B0","btn.cancel":"\u53D6\u6D88","btn.close":"\u5173\u95ED","btn.detail":"\u67E5\u770B\u8BE6\u60C5","btn.more":"\u66F4\u591A","btn.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","btn.restore":"\u6062\u590D","btn.delete.forever":"\u6C38\u4E45\u5220\u9664","btn.file.pick":"\u9009\u62E9\u6587\u4EF6","btn.folder.pick":"\u9009\u62E9\u6587\u4EF6\u5939","btn.import.now":"\u5B89\u88C5","btn.create.now":"\u521B\u5EFA\u6280\u80FD","btn.disable":"\u505C\u7528","btn.enable":"\u542F\u7528","btn.confirm":"\u786E\u5B9A","status.enabled":"\u5DF2\u542F\u7528","status.disabled":"\u5DF2\u505C\u7528","status.invalid":"\u8BCA\u65AD\u5F02\u5E38","status.shadowed":"\u88AB\u8986\u76D6","summary.total.one":"{count} \u4E2A\u6280\u80FD","summary.total.other":"{count} \u4E2A\u6280\u80FD","summary.enabled.one":"{count} \u4E2A\u5DF2\u542F\u7528","summary.enabled.other":"{count} \u4E2A\u5DF2\u542F\u7528","summary.disabled.one":"{count} \u4E2A\u5DF2\u505C\u7528","summary.disabled.other":"{count} \u4E2A\u5DF2\u505C\u7528","summary.shadowed.one":"{count} \u4E2A\u88AB\u8986\u76D6","summary.shadowed.other":"{count} \u4E2A\u88AB\u8986\u76D6","summary.invalid.one":"{count} \u4E2A\u8BCA\u65AD\u5F02\u5E38","summary.invalid.other":"{count} \u4E2A\u8BCA\u65AD\u5F02\u5E38","table.skill":"\u6280\u80FD\u540D\u79F0\u4E0E\u63CF\u8FF0","table.status":"\u8C03\u7528\u72B6\u6001","filter.workspace":"\u5DE5\u4F5C\u533A","filter.source":"\u6765\u6E90","filter.all":"\u5168\u90E8\u6765\u6E90","filter.option":"{name}\uFF08{count}\uFF09",search:"\u641C\u7D22","search.placeholder":"\u641C\u7D22\u6280\u80FD\u540D\u79F0\u6216\u63CF\u8FF0","search.clear":"\u6E05\u9664\u641C\u7D22","empty.search":"\u6CA1\u6709\u5339\u914D\u7684\u6280\u80FD\u3002","empty.source":"\u8BE5\u6765\u6E90\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u6682\u65F6\u6CA1\u6709\u6280\u80FD\u3002",loading:"\u6B63\u5728\u52A0\u8F7D\u6280\u80FD\u2026","note.missing":"\u672A\u63D0\u4F9B\u7B80\u4ECB","skill.linked":"\u5916\u90E8\u76EE\u5F55\u94FE\u63A5\uFF0C\u53EA\u8BFB","source.toggle":"\u542F\u505C\u6765\u6E90","skill.toggle":"\u542F\u505C\u6280\u80FD","category.toggle":"\u542F\u505C\u5206\u7C7B","category.create":"\u65B0\u5EFA\u5206\u7C7B","category.uncategorized":"\u672A\u5206\u7C7B","category.assign":"\u5F52\u5165{name}","category.rename":"\u91CD\u547D\u540D","category.delete":"\u5220\u9664\u5206\u7C7B","category.note":"\u5206\u7C7B\u53EA\u8BB0\u5728\u8FD9\u4E2A\u6765\u6E90\u91CC\uFF0C\u4E0D\u79FB\u52A8\u6587\u4EF6\u3002","category.name":"\u5206\u7C7B\u540D\u79F0","category.empty":"\u8FD8\u6CA1\u6709\u6280\u80FD\u3002\u4ECE\u6761\u76EE\u7684\u300C\u66F4\u591A\u300D\u5F52\u5165\u3002","category.progress":"{count} \u9879 \xB7 {enabled}/{usable} \u542F\u7528","category.actions":"\u5206\u7C7B\u64CD\u4F5C","category.created":"\u5DF2\u6DFB\u52A0\u5206\u7C7B\u300C{name}\u300D\u3002\u6587\u4EF6\u6CA1\u6709\u65B0\u5EFA\u76EE\u5F55\u3002","category.renamed":"\u5DF2\u91CD\u547D\u540D\u3002\u6280\u80FD\u6587\u4EF6\u540D\u6CA1\u6709\u53D8\u5316\u3002","category.deleted":"\u5DF2\u5220\u9664\u5206\u7C7B\u300C{name}\u300D\u3002\u6280\u80FD\u56DE\u5230\u672A\u5206\u7C7B\uFF0C\u6CA1\u6709\u8FDB\u56DE\u6536\u7AD9\u3002","category.assigned":"\u5DF2\u5C06 {name} \u5F52\u5165\u300C{category}\u300D\u3002\u6587\u4EF6\u6CA1\u6709\u79FB\u52A8\u3002","category.dragTip":"\u62D6\u62FD\u8C03\u6574\u987A\u5E8F\u6216\u79FB\u52A8\u5230\u5176\u4ED6\u5206\u7C7B","category.moved":"\u5DF2\u8C03\u6574\u6280\u80FD {name} \u7684\u5206\u7C7B\u6216\u987A\u5E8F\u3002","confirm.category.title":"\u5220\u9664\u5206\u7C7B\uFF1F","confirm.category.desc":"\u300C{name}\u300D\u4F1A\u6D88\u5931\uFF0C\u91CC\u9762\u7684\u6280\u80FD\u56DE\u5230\u672A\u5206\u7C7B\u3002\u6587\u4EF6\u4E0D\u4F1A\u79FB\u52A8\u3002","error.category.duplicate":"\u5DF2\u6709\u540C\u540D\u5206\u7C7B: {name}","error.category.name":"\u5206\u7C7B\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u4E14\u4E0D\u80FD\u8D85\u8FC7 24 \u4E2A\u5B57\u7B26","error.category.notFound":"\u5206\u7C7B\u4E0D\u5B58\u5728","error.category.root":"\u6280\u80FD\u6765\u6E90\u4E0D\u5B58\u5728: {root}","error.category.position":"\u6280\u80FD\u6392\u5E8F\u4F4D\u7F6E\u65E0\u6548","error.category.target":"\u6392\u5E8F\u76EE\u6807\u4E0D\u5C5E\u4E8E\u76EE\u6807\u5206\u7C7B","detail.title":"\u6280\u80FD\u8BE6\u60C5","detail.description":"\u7B80\u4ECB","detail.document":"SKILL.md","detail.body":"\u6B63\u6587","detail.frontmatter":"Frontmatter","detail.diagnostics":"\u8BCA\u65AD","detail.path":"\u6E90\u6587\u4EF6","detail.noIssues":"\u672A\u53D1\u73B0\u8BCA\u65AD\u95EE\u9898\u3002","detail.copyBody":"\u590D\u5236\u6B63\u6587","detail.copied":"\u5DF2\u590D\u5236","detail.copyFailed":"\u590D\u5236\u5931\u8D25","create.title":"\u521B\u5EFA\u6280\u80FD","create.name":"\u540D\u79F0","create.name.placeholder":"\u4F8B\u5982 code-review-helper","create.description":"\u7B80\u4ECB","create.description.placeholder":"\u4E00\u53E5\u8BDD\u8BF4\u660E\u4EC0\u4E48\u65F6\u5019\u4F7F\u7528","create.body":"\u6B63\u6587\uFF08Markdown\uFF09","create.body.placeholder":"\u5199\u4E0B\u6280\u80FD\u8981\u9075\u5FAA\u7684\u6307\u4EE4\u3001\u6B65\u9AA4\u548C\u8FB9\u754C\u2026","create.chat.note":"\u521B\u5EFA\u7684\u6280\u80FD\u4E0D\u4F1A\u6302\u4ED3\u5E93\u66F4\u65B0\uFF0C\u4E5F\u4E0D\u4F1A\u4FEE\u6539\u539F\u6587\u4EF6\u3002","import.title":"\u5BFC\u5165\u6280\u80FD","upload.drop.title":"\u62D6\u62FD\u6280\u80FD\u5230\u6B64\u5904","upload.drop.copy":"\u652F\u6301 .zip\u3001\u6280\u80FD\u6587\u4EF6\u5939\u6216\u5355\u4E2A SKILL.md","upload.selected.one":"{count} \u4E2A\u6587\u4EF6 \xB7 {size}","upload.selected.other":"{count} \u4E2A\u6587\u4EF6 \xB7 {size}","upload.remove":"\u79FB\u9664\u6240\u9009\u5185\u5BB9","upload.requirements":"\u6587\u4EF6\u8981\u6C42","upload.requirement.skill":"\u538B\u7F29\u5305\u6216\u6587\u4EF6\u5939\u9700\u5305\u542B SKILL.md","upload.requirement.frontmatter":"SKILL.md \u9700\u5305\u542B YAML \u683C\u5F0F\u7684\u6280\u80FD\u540D\u79F0\u548C\u63CF\u8FF0","upload.requirement.copy":"\u5BFC\u5165\u65F6\u590D\u5236\u5B8C\u6574\u5185\u5BB9\uFF0C\u4E0D\u4FEE\u6539\u539F\u59CB\u6765\u6E90","upload.importing":"\u6B63\u5728\u5B89\u88C5\u2026","status.selected":"\u5DF2\u9009\u62E9","select.file.invalid":"\u8BF7\u9009\u62E9 .zip \u6216\u5355\u4E2A SKILL.md\u3002","select.folder.invalid":"\u6240\u9009\u6587\u4EF6\u5939\u4E2D\u6CA1\u6709\u627E\u5230 SKILL.md\u3002","error.browse.absolute":"\u76EE\u5F55\u8DEF\u5F84\u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\uFF1A{path}","error.browse.unreadable":"\u65E0\u6CD5\u8BFB\u53D6\u76EE\u5F55\uFF1A{path}","error.browse.notDirectory":"\u4E0D\u662F\u76EE\u5F55\uFF1A{path}","trash.title":"\u56DE\u6536\u7AD9","trash.empty":"\u56DE\u6536\u7AD9\u4E3A\u7A7A\u3002","trash.deletedAt":"\u5220\u9664\u4E8E {time}","trash.source":"\u6765\u6E90\uFF1A{source}","confirm.trash.title":"\u79FB\u5230\u56DE\u6536\u7AD9\uFF1F","confirm.trash.desc":"\u201C{name}\u201D\u5C06\u4ECE\u5F53\u524D\u6280\u80FD\u6765\u6E90\u79FB\u5165\u56DE\u6536\u7AD9\uFF0C\u4E4B\u540E\u53EF\u4EE5\u6062\u590D\u5230\u539F\u4F4D\u7F6E\u3002","confirm.delete.title":"\u6C38\u4E45\u5220\u9664\uFF1F","confirm.delete.desc":"\u201C{name}\u201D\u5C06\u4ECE\u56DE\u6536\u7AD9\u6C38\u4E45\u5220\u9664\uFF0C\u65E0\u6CD5\u6062\u590D\u3002","result.created":"\u5DF2\u521B\u5EFA\u6280\u80FD\uFF1A{name}","result.imported":"\u5BFC\u5165\u5B8C\u6210\uFF1A{names}","result.importPartial":"\u5DF2\u5BFC\u5165\uFF1A{imported}\uFF1B\u5DF2\u8DF3\u8FC7\u540C\u540D\u6280\u80FD\uFF1A{skipped}","result.importSkipped":"\u672A\u5BFC\u5165\u4EFB\u4F55\u6280\u80FD\uFF1B\u5DF2\u8DF3\u8FC7\u540C\u540D\u6280\u80FD\uFF1A{names}","result.importEmpty":"\u672A\u5BFC\u5165\u4EFB\u4F55\u6280\u80FD\u3002","result.importWarnings":"{result}\uFF1B\u8B66\u544A\uFF1A{warnings}","result.restored":"\u5DF2\u6062\u590D\u6280\u80FD\uFF1A{name}","result.trashed":"\u5DF2\u79FB\u5230\u56DE\u6536\u7AD9\uFF1A{name}","result.deleted":"\u5DF2\u6C38\u4E45\u5220\u9664\uFF1A{name}","result.updated":"\u72B6\u6001\u5DF2\u66F4\u65B0\u3002","error.action":"\u64CD\u4F5C\u5931\u8D25\uFF1A{error}","warning.scan.truncated":"\u6280\u80FD\u76EE\u5F55\u8F83\u5927\u6216\u5D4C\u5957\u8FC7\u6DF1\uFF0C\u90E8\u5206\u6280\u80FD\u672A\u663E\u793A\uFF1A{path}","warning.state.invalid":"\u6280\u80FD\u7BA1\u7406\u5668\u72B6\u6001\u6587\u4EF6\u4E0D\u53EF\u8BFB\uFF1B\u6240\u6709\u6280\u80FD\u5DF2\u5B89\u5168\u505C\u7528\uFF0C\u4FEE\u590D\u6587\u4EF6\u524D\u4E0D\u4F1A\u8986\u76D6\u72B6\u6001\uFF1A{path}","warning.backupUncleaned":"\u65E7\u7248\u672C\u5907\u4EFD\u672A\u6E05\u7406\uFF1A{path}\uFF08{error}\uFF09","warning.project.unavailable":"\u65E0\u6CD5\u4ECE\u5BBF\u4E3B\u8BFB\u53D6\u6D3B\u52A8\u5DE5\u4F5C\u533A\uFF0C\u9879\u76EE\u6280\u80FD\u672A\u663E\u793A\uFF1A{path}","error.root.readonly":"\u8BE5\u6765\u6E90\u4E0D\u5141\u8BB8{action}","error.root.unknown":"\u672A\u77E5\u6280\u80FD\u6765\u6E90\uFF1A{root}","error.workspace.unregistered":"\u8BF7\u9009\u62E9\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u3002","error.workspace.unavailable":"\u5DE5\u4F5C\u533A\u76EE\u5F55\u4E0D\u53EF\u7528\uFF1A{path}","error.root.unsafe":"\u9879\u76EE\u6280\u80FD\u76EE\u5F55\u4E0D\u5B89\u5168\uFF0C\u62D2\u7EDD\u5199\u5165\uFF1A{path}","error.skill.notFound":"\u6280\u80FD\u4E0D\u5B58\u5728: {name}","error.skill.linked":"\u76EE\u5F55\u94FE\u63A5\u4E0D\u80FD\u5220\u9664\u6216\u8986\u76D6\uFF1A{path}","error.skill.noFrontmatter":"\u6280\u80FD\u7F3A\u5C11\u5B8C\u6574 frontmatter\uFF0C\u65E0\u6CD5{action}: {name}","error.skill.notLoadable":"\u6280\u80FD\u7ED3\u6784\u4E0D\u5B8C\u6574\uFF0C\u65E0\u6CD5{action}: {name}","error.source.notFound":"\u8DEF\u5F84\u4E0D\u5B58\u5728: {path}","error.source.symlink":"\u4E0D\u652F\u6301\u5305\u542B\u7B26\u53F7\u94FE\u63A5\u7684 skill \u6765\u6E90: {path}","error.source.unrecognized":"\u65E0\u6CD5\u8BC6\u522B\u7684 skill \u6765\u6E90: {path}","error.source.tooDeep":"skill \u6765\u6E90\u76EE\u5F55\u5C42\u7EA7\u8D85\u8FC7 {depth} \u5C42: {path}","error.import.overlap":"\u5BFC\u5165\u6765\u6E90\u4E0D\u80FD\u4E0E DSH \u6280\u80FD\u76EE\u5F55\u76F8\u540C\u3001\u5305\u542B\u6216\u4F4D\u4E8E\u5176\u4E2D","error.import.emptySource":"\u76EE\u5F55\u4E0B\u672A\u627E\u5230\u4EFB\u4F55 skill \u6761\u76EE: {path}","error.import.invalidName":"\u65E0\u6CD5\u751F\u6210\u5408\u6CD5 kebab-case \u540D\u79F0\uFF08\u539F\u59CB\u540D: {name}\uFF09","error.import.duplicateName":"\u6279\u91CF\u6765\u6E90\u4E2D\u5B58\u5728\u591A\u4E2A\u540C\u540D\u6280\u80FD: {name}","error.import.failed":"\u5BFC\u5165\u5931\u8D25","error.import.rollbackFailed":"\u8986\u76D6\u5BFC\u5165\u56DE\u6EDA\u5931\u8D25\uFF0C\u5907\u4EFD\u4FDD\u7559\u5728: {path}\uFF08{error}\uFF09","error.upload.path":"\u4E0A\u4F20\u5185\u5BB9\u5305\u542B\u975E\u6CD5\u8DEF\u5F84\uFF1A{path}","error.upload.encoding":"\u4E0A\u4F20\u5185\u5BB9\u7F16\u7801\u65E0\u6548","error.upload.empty":"\u4E0A\u4F20\u5185\u5BB9\u4E3A\u7A7A","error.upload.tooMany":"\u4E0A\u4F20\u6587\u4EF6\u8FC7\u591A\uFF0C\u6700\u591A {limit} \u4E2A","error.upload.tooLarge":"\u4E0A\u4F20\u5185\u5BB9\u8FC7\u5927\uFF0C\u9650\u5236\u4E3A {limit} \u5B57\u8282","error.upload.archiveTooLarge":"ZIP \u538B\u7F29\u5305\u8FC7\u5927\uFF0C\u9650\u5236\u4E3A {limit} \u5B57\u8282","error.upload.duplicate":"\u4E0A\u4F20\u5185\u5BB9\u5305\u542B\u91CD\u590D\u8DEF\u5F84\uFF1A{path}","error.upload.zipInvalid":"ZIP \u538B\u7F29\u5305\u65E0\u6CD5\u89E3\u538B","error.trash.notFound":"\u56DE\u6536\u7AD9\u6761\u76EE\u4E0D\u5B58\u5728: {id}","error.trash.conflict":"\u65E0\u6CD5\u6062\u590D\uFF0C\u540C\u540D\u6280\u80FD\u5DF2\u5B58\u5728: {name}","error.trash.invalid":"\u56DE\u6536\u7AD9\u6761\u76EE\u8DEF\u5F84\u975E\u6CD5: {id}","error.trash.projectUnavailable":"\u539F\u9879\u76EE\u5F53\u524D\u4E0D\u5728\u6D3B\u52A8\u5DE5\u4F5C\u533A\u4E2D\uFF0C\u65E0\u6CD5\u6062\u590D\uFF1A{path}","error.trash.rollbackFailed":"\u79FB\u5165\u56DE\u6536\u7AD9\u56DE\u6EDA\u5931\u8D25\uFF0C\u672A\u6062\u590D\u5185\u5BB9\u4FDD\u7559\u5728: {path}\uFF08{error}\uFF09","error.state.invalid":"\u6280\u80FD\u7BA1\u7406\u5668\u72B6\u6001\u6587\u4EF6\u4E0D\u53EF\u8BFB\uFF0C\u5DF2\u62D2\u7EDD\u8986\u76D6\uFF1A{path}","error.create.descriptionRequired":"\u6280\u80FD\u7B80\u4ECB\u4E0D\u80FD\u4E3A\u7A7A","error.create.bodyRequired":"\u6280\u80FD\u6B63\u6587\u4E0D\u80FD\u4E3A\u7A7A","error.create.tooLarge":"\u6280\u80FD\u5185\u5BB9\u8FC7\u957F","error.create.conflict":"\u540C\u540D\u6280\u80FD\u5DF2\u5B58\u5728: {name}","error.proto.forbidden":"\u7981\u6B62\u7684\u4FEE\u6539\u8BF7\u6C42\uFF08\u7F3A\u5C11\u5BA2\u6237\u7AEF\u6807\u8BB0\uFF09","error.proto.forbiddenHost":"\u7981\u6B62\u7684\u8BF7\u6C42\u6765\u6E90\uFF08\u975E\u6CD5 Host\uFF09","error.proto.contentType":"\u8BF7\u6C42\u4F53\u5FC5\u987B\u662F application/json","error.proto.method":"\u4E0D\u652F\u6301\u7684\u8BF7\u6C42\u65B9\u6CD5","error.proto.unknownAction":"\u672A\u77E5\u64CD\u4F5C","error.proto.invalidParams":"\u8BF7\u6C42\u53C2\u6570\u65E0\u6548","error.proto.bodyTooLarge":"\u8BF7\u6C42\u4F53\u8FC7\u5927","error.proto.invalidJson":"\u8BF7\u6C42\u4F53\u4E0D\u662F\u5408\u6CD5 JSON","error.proto.nonJson":"\u670D\u52A1\u7AEF\u8FD4\u56DE\u975E JSON \u54CD\u5E94\uFF08HTTP {status}\uFF09","error.update.disabled":"\u5728\u7EBF\u66F4\u65B0\u5DF2\u88AB\u7981\u7528","error.catalog.query":"\u641C\u7D22\u5173\u952E\u8BCD\u65E0\u6548\u3002","error.catalog.upstream":"\u76EE\u5F55\u670D\u52A1\u6682\u65F6\u4E0D\u53EF\u7528\u3002","error.catalog.response":"\u76EE\u5F55\u8FD4\u56DE\u7684\u6570\u636E\u65E0\u6548\u6216\u8FC7\u5927\u3002","error.catalog.identity":"\u76EE\u5F55\u6280\u80FD\u6807\u8BC6\u65E0\u6548\u3002","diagnostic.frontmatter.missing":"\u7F3A\u5C11\u5B8C\u6574 YAML frontmatter","diagnostic.name.missing":"frontmatter \u7F3A\u5C11 name","diagnostic.name.invalid":"\u5BBF\u4E3B\u4E0D\u652F\u6301\u6B64\u6280\u80FD\u540D\u79F0\u683C\u5F0F\uFF08\u4EC5\u652F\u6301\u82F1\u6587\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u4E0E\u8FDE\u5B57\u7B26\uFF09\uFF0C\u65E0\u6CD5\u542F\u7528\u3002\u5982\u9700\u8C03\u7528\uFF0C\u8BF7\u5728 SKILL.md frontmatter \u4E2D\u6307\u5B9A\u82F1\u6587 name\uFF08\u76EE\u5F55\u540D\u53EF\u4FDD\u7559\u4E2D\u6587\uFF09\uFF1A{name}","diagnostic.description.missing":"frontmatter \u7F3A\u5C11 description","diagnostic.invocation.invalid":"\u8C03\u7528\u7B56\u7565\u5B57\u6BB5\u503C\u65E0\u6548","diagnostic.shadowed":"\u88AB\u66F4\u9AD8\u4F18\u5148\u7EA7\u6765\u6E90 {root} \u8986\u76D6","action.enable":"\u542F\u7528","action.disable":"\u505C\u7528","action.create":"\u521B\u5EFA","action.delete":"\u5220\u9664","action.restore":"\u6062\u590D","action.toggle":"\u542F\u7528\u6216\u505C\u7528","scope.user":"\u5168\u5C40\u6280\u80FD","scope.project":"\u9879\u76EE\u6280\u80FD","scope.trash":"\u56DE\u6536\u7AD9","scope.label":"\u6280\u80FD\u7BA1\u7406\u89C6\u56FE","scope.userHint":"\u8DE8\u9879\u76EE\u53EF\u7528\u3002\u542F\u505C\u4EC5\u5F71\u54CD DSH \u4E2D\u7684\u8C03\u7528\u3002","scope.projectHint":"\u6309\u5DE5\u4F5C\u533A\u67E5\u770B\u9879\u76EE\u6280\u80FD\u3002\u542F\u505C\u4E0D\u4FEE\u6539\u5176\u4ED6 Agent \u7684\u6E90\u6587\u4EF6\u3002","project.empty":"\u8FD8\u6CA1\u6709\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u3002\u8BF7\u5148\u5728\u4FA7\u680F\u6DFB\u52A0\u5DE5\u4F5C\u533A\u3002","project.noSkills":"\u5DF2\u767B\u8BB0\u7684\u5DE5\u4F5C\u533A\u91CC\u8FD8\u6CA1\u6709\u6280\u80FD\u3002","workspace.unavailable":"\u76EE\u5F55\u4E0D\u53EF\u7528","workspace.noSkills":"\u8FD9\u4E2A\u5DE5\u4F5C\u533A\u8FD8\u6CA1\u6709\u6280\u80FD\u3002","workspace.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","workspace.loadFailed":"\u8BFB\u53D6\u5931\u8D25\uFF1A{error}","workspace.listFailed":"\u65E0\u6CD5\u8BFB\u53D6\u5DE5\u4F5C\u533A\u5217\u8868\uFF1A{error}","filter.status":"\u8C03\u7528\u72B6\u6001","filter.statusAll":"\u5168\u90E8\u72B6\u6001","status.shadowedBy":"\u88AB {source} \u4E2D\u7684\u540C\u540D\u6280\u80FD\u8986\u76D6","status.fallback.user":"\u5F53\u524D\u4F7F\u7528\u5168\u5C40 {source} \u526F\u672C\u3002","status.fallback.project":"\u5F53\u524D\u4F7F\u7528\u9879\u76EE {source} \u526F\u672C\u3002","root.copilot":"GitHub Copilot","source.selectHint":"\u5148\u9009\u62E9\u4E00\u4E2A\u6765\u6E90\uFF0C\u624D\u80FD\u67E5\u770B\u76EE\u5F55\u6216\u5173\u95ED\u6574\u4E2A\u6765\u6E90\u3002\u5173\u95ED\u6765\u6E90\u53EA\u5F71\u54CD DSH \u8C03\u7528\uFF0C\u4E0D\u6539\u6587\u4EF6\u3002","import.global":"\u5BFC\u5165\u6280\u80FD","category.batchAssigned":"\u5DF2\u5C06 {count} \u4E2A\u6280\u80FD\u6DFB\u52A0\u5230\u201C{category}\u201D\u3002\u6587\u4EF6\u672A\u79FB\u52A8\u3002","category.selectSkills":"\u6DFB\u52A0\u6280\u80FD\u5230\u201C{name}\u201D","category.noAvailableSkills":"\u6CA1\u6709\u53EF\u6DFB\u52A0\u7684\u6280\u80FD","category.addSkills":"\u6DFB\u52A0\u6280\u80FD","root.dsh":"DSH","root.agents":"\u516C\u5171 Agent","root.ccswitch":"CC Switch","root.projectDsh":"DSH","root.projectAgents":"\u9879\u76EE Agent","root.codex":"Codex","root.claude":"Claude Code","root.gemini":"Gemini","root.opencode":"OpenCode","root.cursor":"Cursor","root.windsurf":"Windsurf","root.windsurfUser":"Windsurf (\u7528\u6237\u76EE\u5F55)","root.trae":"Trae","root.traeCn":"Trae (\u56FD\u5185\u7248)","root.openclaw":"OpenClaw","root.clawdbot":"OpenClaw (\u65E7\u76EE\u5F55)","root.roo":"Roo","root.codebuddy":"CodeBuddy","root.workbuddy":"WorkBuddy","root.qoder":"Qoder","root.qoderCn":"Qoder CN CLI","root.lingma":"Qoder CN","root.antigravity":"Google Antigravity"},en:{"summary.group.one":"{count} skill","summary.group.other":"{count} skills","format.locale":"en-US","format.warningSeparator":"; ",title:"Skills",desc:"Load and manage Agent Skills on this computer in one place.","link.project":"GitHub","link.feedback":"Issues","btn.create":"Create skill","btn.import":"Import","btn.refresh":"Refresh","btn.cancel":"Cancel","btn.close":"Close","btn.detail":"View details","btn.more":"More","btn.trash":"Move to trash","btn.restore":"Restore","btn.delete.forever":"Delete forever","btn.file.pick":"Choose file","btn.folder.pick":"Choose folder","btn.import.now":"Install","btn.create.now":"Create skill","btn.disable":"Disable","btn.enable":"Enable","btn.confirm":"Confirm","status.enabled":"Enabled","status.disabled":"Disabled","status.invalid":"Needs attention","status.shadowed":"Shadowed","summary.total.one":"{count} skill","summary.total.other":"{count} skills","summary.enabled.one":"{count} enabled","summary.enabled.other":"{count} enabled","summary.disabled.one":"{count} disabled","summary.disabled.other":"{count} disabled","summary.shadowed.one":"{count} shadowed","summary.shadowed.other":"{count} shadowed","summary.invalid.one":"{count} diagnostic","summary.invalid.other":"{count} diagnostics","table.skill":"Skill name and description","table.status":"Invocation status","filter.workspace":"Workspace","filter.source":"Source","filter.all":"All sources","filter.option":"{name} ({count})",search:"Search","search.placeholder":"Search skill names or descriptions","search.clear":"Clear search","empty.search":"No matching skills.","empty.source":"This source does not exist or has no skills yet.",loading:"Loading skills\u2026","note.missing":"No description provided","skill.linked":"External directory link, read-only","source.toggle":"Toggle source","skill.toggle":"Toggle skill","category.toggle":"Toggle category","category.create":"New category","category.uncategorized":"Uncategorized","category.assign":"Move to {name}","category.rename":"Rename","category.delete":"Delete category","category.note":"Categories stay in this source and do not move files.","category.name":"Category name","category.empty":"No skills yet. Use More on a skill to place it here.","category.progress":"{count} \xB7 {enabled}/{usable} enabled","category.actions":"Category actions","category.created":"Added category \u201C{name}\u201D. No directory was created.","category.renamed":"Renamed. Skill file names are unchanged.","category.deleted":"Deleted category \u201C{name}\u201D. Skills returned to Uncategorized and were not trashed.","category.assigned":"Moved {name} to \u201C{category}\u201D. The file was not moved.","category.dragTip":"Drag to reorder or move to another category","category.moved":"Updated the category or order for {name}.","confirm.category.title":"Delete category?","confirm.category.desc":"\u201C{name}\u201D will be removed. Its skills return to Uncategorized. Files are not moved.","error.category.duplicate":"A category with this name already exists: {name}","error.category.name":"Category name is required and must be at most 24 characters","error.category.notFound":"Category not found","error.category.root":"Skill source not found: {root}","error.category.position":"Invalid skill ordering position","error.category.target":"The target skill is not in the destination category","detail.title":"Skill details","detail.description":"Description","detail.document":"SKILL.md","detail.body":"Body","detail.frontmatter":"Frontmatter","detail.diagnostics":"Diagnostics","detail.path":"Source file","detail.noIssues":"No diagnostic issues found.","detail.copyBody":"Copy body","detail.copied":"Copied","detail.copyFailed":"Copy failed","create.title":"Create skill","create.name":"Name","create.name.placeholder":"e.g. code-review-helper","create.description":"Description","create.description.placeholder":"One sentence describing when to use it","create.body":"Body (Markdown)","create.body.placeholder":"Write the instructions, steps, and boundaries\u2026","create.chat.note":"Created skills are not linked to repository updates, and no source file is modified.","import.title":"Import skill","upload.drop.title":"Drop a skill here","upload.drop.copy":"Supports .zip, a skill folder, or one SKILL.md","upload.selected.one":"{count} file \xB7 {size}","upload.selected.other":"{count} files \xB7 {size}","upload.remove":"Remove selection","upload.requirements":"File requirements","upload.requirement.skill":"Archives and folders must contain SKILL.md","upload.requirement.frontmatter":"SKILL.md must include a YAML name and description","upload.requirement.copy":"Import copies all content and never modifies the source","upload.importing":"Installing\u2026","status.selected":"Selected","select.file.invalid":"Choose a .zip archive or one SKILL.md.","select.folder.invalid":"No SKILL.md was found in the selected folder.","error.browse.absolute":"Folder path must be absolute: {path}","error.browse.unreadable":"Could not read folder: {path}","error.browse.notDirectory":"Not a folder: {path}","trash.title":"Trash","trash.empty":"Trash is empty.","trash.deletedAt":"Deleted {time}","trash.source":"Source: {source}","confirm.trash.title":"Move to trash?","confirm.trash.desc":"\u201C{name}\u201D will move out of its current skill source and can be restored to the same location later.","confirm.delete.title":"Delete forever?","confirm.delete.desc":"\u201C{name}\u201D will be permanently deleted from trash and cannot be recovered.","result.created":"Created skill: {name}","result.imported":"Import complete: {names}","result.importPartial":"Imported: {imported}; skipped existing skills: {skipped}","result.importSkipped":"No skills were imported; existing skills were skipped: {names}","result.importEmpty":"No skills were imported.","result.importWarnings":"{result}; warnings: {warnings}","result.restored":"Restored skill: {name}","result.trashed":"Moved to trash: {name}","result.deleted":"Permanently deleted: {name}","result.updated":"Status updated.","error.action":"Action failed: {error}","warning.scan.truncated":"Some skills were not shown because the directory is too large or deeply nested: {path}","warning.state.invalid":"The manager state file could not be read; all skills are disabled and state writes are blocked until it is repaired: {path}","warning.backupUncleaned":"Old version backup was not cleaned up: {path} ({error})","warning.project.unavailable":"The active workspace could not be read from the host, so its project skills are hidden: {path}","error.root.readonly":"This source does not allow {action}","error.root.unknown":"Unknown skill source: {root}","error.workspace.unregistered":"Select a registered workspace.","error.workspace.unavailable":"Workspace directory is unavailable: {path}","error.root.unsafe":"The project skill directory is unsafe, so the write was refused: {path}","error.skill.notFound":"Skill not found: {name}","error.skill.linked":"This directory link cannot be deleted or overwritten: {path}","error.skill.noFrontmatter":"Skill lacks complete frontmatter, cannot {action}: {name}","error.skill.notLoadable":"Skill structure is incomplete, cannot {action}: {name}","error.source.notFound":"Path does not exist: {path}","error.source.symlink":"Skill sources containing symbolic links are not supported: {path}","error.source.unrecognized":"Unrecognized skill source: {path}","error.source.tooDeep":"Skill source directory depth exceeds {depth} levels: {path}","error.import.overlap":"Import source cannot be the same as, contain, or be inside the DSH skills directory","error.import.emptySource":"No skill entries found in the directory: {path}","error.import.invalidName":"Cannot generate a valid kebab-case name (original: {name})","error.import.duplicateName":"Batch source contains duplicate skill names: {name}","error.import.failed":"Import failed","error.import.rollbackFailed":"Overwrite import rollback failed; backups kept at: {path} ({error})","error.upload.path":"Upload contains an invalid path: {path}","error.upload.encoding":"Upload encoding is invalid","error.upload.empty":"Upload is empty","error.upload.tooMany":"Too many uploaded files; maximum {limit}","error.upload.tooLarge":"Upload is too large; limit {limit} bytes","error.upload.archiveTooLarge":"ZIP archive is too large; limit {limit} bytes","error.upload.duplicate":"Upload contains a duplicate path: {path}","error.upload.zipInvalid":"ZIP archive could not be extracted","error.trash.notFound":"Trash item not found: {id}","error.trash.conflict":"Cannot restore because a skill with the same name exists: {name}","error.trash.invalid":"Invalid trash item path: {id}","error.trash.projectUnavailable":"The original project is not an active workspace, so this skill cannot be restored: {path}","error.trash.rollbackFailed":"Move-to-trash rollback failed; unrecovered content was kept at: {path} ({error})","error.state.invalid":"The manager state file could not be read, so overwriting it was refused: {path}","error.create.descriptionRequired":"Skill description is required","error.create.bodyRequired":"Skill body is required","error.create.tooLarge":"Skill content is too large","error.create.conflict":"A skill with the same name already exists: {name}","error.proto.forbidden":"Forbidden mutation request (missing client marker)","error.proto.forbiddenHost":"Forbidden request origin (invalid host)","error.proto.contentType":"Content type must be application/json","error.proto.method":"Method not allowed","error.proto.unknownAction":"Unknown action","error.proto.invalidParams":"Invalid request parameters","error.proto.bodyTooLarge":"Request body too large","error.proto.invalidJson":"Invalid JSON request body","error.proto.nonJson":"Server returned a non-JSON response (HTTP {status})","error.update.disabled":"Online updates are disabled","error.catalog.query":"The search query is invalid.","error.catalog.upstream":"The catalog service is temporarily unavailable.","error.catalog.response":"The catalog response is invalid or too large.","error.catalog.identity":"The catalog skill identifier is invalid.","diagnostic.frontmatter.missing":"Missing complete YAML frontmatter","diagnostic.name.missing":"Frontmatter is missing name","diagnostic.name.invalid":"Skill name format is not supported by host (lowercase letters, numbers and hyphens only), cannot be enabled. To invoke it, specify an English name in the SKILL.md frontmatter (directory name can remain unchanged): {name}","diagnostic.description.missing":"Frontmatter is missing description","diagnostic.invocation.invalid":"Invocation policy value is invalid","diagnostic.shadowed":"Shadowed by higher-priority source {root}","action.enable":"enable","action.disable":"disable","action.create":"create","action.delete":"delete","action.restore":"restore","action.toggle":"enabling or disabling","scope.user":"Global skills","scope.project":"Project skills","scope.trash":"Trash","scope.label":"Skill manager views","scope.userHint":"Available across projects. Toggles only affect invocation in DSH.","scope.projectHint":"View project skills by workspace. Toggles do not modify other agents\u2019 source files.","project.empty":"No registered workspaces yet. Add one in the sidebar first.","project.noSkills":"Registered workspaces do not have skills yet.","workspace.unavailable":"Directory unavailable","workspace.noSkills":"No skills in this workspace yet.","workspace.loading":"Loading\u2026","workspace.loadFailed":"Failed to load: {error}","workspace.listFailed":"Cannot read the workspace list: {error}","filter.status":"Invocation status","filter.statusAll":"All statuses","status.shadowedBy":"Overridden by the same skill in {source}","status.fallback.user":"Currently using the global {source} copy.","status.fallback.project":"Currently using the project {source} copy.","source.selectHint":"Select a source to view its directory or turn the whole source off. Turning a source off only affects invocation in DSH and does not change files.","import.global":"Import skill","category.batchAssigned":"Added {count} skills to \u201C{category}\u201D. Files were not moved.","category.selectSkills":"Add skills to \u201C{name}\u201D","category.noAvailableSkills":"No skills available to add","category.addSkills":"Add skills","root.dsh":"DSH skills","root.agents":"Shared Agent","root.ccswitch":"CC Switch","root.projectDsh":"DSH skills","root.projectAgents":"Project Agent","root.codex":"Codex","root.claude":"Claude Code","root.gemini":"Gemini","root.opencode":"OpenCode","root.cursor":"Cursor","root.copilot":"GitHub Copilot","root.windsurf":"Windsurf","root.windsurfUser":"Windsurf (User Home)","root.trae":"Trae","root.traeCn":"Trae CN","root.openclaw":"OpenClaw","root.clawdbot":"OpenClaw (Legacy)","root.roo":"Roo","root.codebuddy":"CodeBuddy","root.workbuddy":"WorkBuddy","root.qoder":"Qoder","root.qoderCn":"Qoder CN CLI","root.lingma":"Qoder CN","root.antigravity":"Google Antigravity"}};Object.assign(fa.zh,Wa.zh,Ka.zh,Ja.zh);Object.assign(fa.en,Wa.en,Ka.en,Ja.en);var Zt=Rr(I),Fr=yr({react:I,SourceSelect:Zt,translateError:ye}),Ur=Fr.DestinationPicker,Qn=hr({react:I,Modal:rt,Input:ut,Button:Me.Button,SourceSelect:Zt,destination:Fr,api:ma,headers:Qt,translateError:ye,getLocale:Wr}),Zn=br+Ga+`.dssm-sources{display:flex;flex-direction:column;gap:9px}.dssm-scope-tabs{display:grid!important;box-sizing:border-box!important;width:100%;height:32px!important;min-height:32px!important;max-height:32px!important;padding:2px!important;border-radius:var(--dsw-radius-sm,8px)!important;border:0.5px solid var(--dsw-alias-border-l2)!important;background:var(--dsw-alias-bg-layer-1)!important}.dssm-scope-tabs>span[aria-hidden="true"],.dssm-scope-tabs>[class*="indicator"]{width:calc((100% - 4px)/4)!important;inset:2px auto 2px 2px!important;border-radius:6px!important;border:0.5px solid var(--dsw-alias-border-l3,rgba(255,255,255,.12))!important;background:var(--dsw-alias-bg-layer-3,rgba(255,255,255,.08))!important;box-shadow:none!important}.dssm-scope-tabs [role=tab]{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:6px!important;height:28px!important;padding:0 12px!important;border-radius:6px!important;font-size:13px!important;line-height:20px!important;color:var(--dsw-alias-label-secondary)!important;text-align:center!important;box-sizing:border-box!important;transition:color 150ms ease!important}.dssm-scope-tabs [role=tab]:hover{color:var(--dsw-alias-label-primary)!important}.dssm-scope-tabs [role=tab][aria-selected="true"]{color:var(--dsw-alias-label-primary)!important;font-weight:600!important}.dssm-scope-tabs [role=tab] svg{flex:none;display:block}.dssm-source-head{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 12px}.dssm-source-toggle{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.dssm-source-toggle:focus-visible{outline:var(--dsw-focus-ring-width,1px) solid var(--dsw-focus-ring-color,var(--dsw-alias-brand-primary));outline-offset:2px}.dssm-fold-chevron{flex:none;color:var(--dsw-alias-label-tertiary);transform:rotate(-90deg);transition:transform 160ms ease}.dssm-fold-chevron.is-open{transform:rotate(0deg)}@media (prefers-reduced-motion:reduce){.dssm-fold-chevron{transition:none}}.dssm-source-label{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.dssm-drag-handle{cursor:grab;color:var(--dsw-alias-label-tertiary,#888);font-size:13px;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:16px;height:22px;border-radius:var(--dsw-radius-sm,8px);flex-shrink:0;user-select:none;transition:color 0.15s}.dssm-skill-row:hover .dssm-drag-handle{color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-drag-handle:active{cursor:grabbing}.dssm-cat.drag-over{border-color:var(--dsw-alias-brand-primary,#3b82f6);box-shadow:0 0 0 1px var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row.dragging{opacity:0.4;background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover,transparent))}.dssm-skill-row.drop-before{box-shadow:inset 0 2px 0 var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row.drop-after{box-shadow:inset 0 -2px 0 var(--dsw-alias-brand-primary,#3b82f6)}.dssm-skill-row{display:flex;align-items:center;gap:8px;margin:0;padding:11px 13px;border:0;border-top:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:0;background:transparent}.dssm-skill-copy{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.dssm-skill-actions{display:flex;align-items:center;gap:8px;flex:none;flex-wrap:nowrap}.dssm-skill-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;line-height:18px}.dssm-icon-danger{color:var(--dsw-alias-state-error-primary,#ef7272)}.dssm-skill-row .dssm-name{font-size:14px;font-weight:650;color:var(--dsw-alias-label-primary,#eeeeee)}.dssm-skill-actions{display:flex;align-items:center;gap:8px;flex:none}.dssm-source{overflow:hidden;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-xl,20px);background:transparent}.dssm-textarea{box-sizing:border-box;display:block;width:100%;min-height:160px;margin:0;padding:8px 12px;border:0.5px solid var(--dsw-alias-border-l4);border-radius:var(--dsw-radius-md,12px);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:14px;line-height:22px;resize:vertical}.dssm-textarea:focus,.dssm-textarea:focus-visible{outline:none;border-color:var(--dsw-alias-state-business-primary)}.dssm-textarea[readonly]{resize:none}.dssm-source-title{font-size:14px;font-weight:650;white-space:nowrap;flex:none}.dssm-source-path{min-width:0;max-width:50%;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px}.dssm-source-actions{display:flex;flex:none;align-items:center;gap:8px;margin-left:12px}.dssm-cat{margin:0 10px 8px;border:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:var(--dsw-radius-lg,16px)}.dssm-cat-head{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 8px 0 6px}.dssm-cat-main{display:flex;align-items:center;gap:8px;flex:1;min-width:0;min-height:36px;padding:4px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.dssm-cat-title{font-size:14px;font-weight:700;display:inline-flex;align-items:center}.dssm-cat-note{margin:2px 16px 8px}.dssm-fallback{margin-top:4px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-section{box-sizing:border-box;display:flex;width:100%;min-width:0;padding:2px 0 36px;container-type:inline-size;flex-direction:column;gap:14px;color:var(--dsw-alias-label-primary,#eeeeee);font-family:inherit}.dssm-head{display:flex;flex-direction:column;align-items:stretch;gap:16px}.dssm-title-block{min-width:0}.dssm-title-row{display:flex;align-items:center;gap:8px 12px;min-width:0;flex-wrap:wrap}.dssm-feedback-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dssm-feedback-links>span[data-mpi-check]{display:inline-flex;align-items:center}.dssm-title{margin:0;font-size:24px;line-height:32px;font-weight:600;letter-spacing:-.4px;white-space:nowrap}.dssm-desc{margin:12px 0 0;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:14px;line-height:22px}.dssm-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:0;flex:none}.dssm-upload-link:focus-visible,.dssm-file-remove:focus-visible{outline:2px solid var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary,#f2f2f2));outline-offset:2px}.dssm-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1)}.dssm-stat{padding:4px 10px;border-right:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);font-size:12px;line-height:18px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-stat:last-child{border-right:0}.dssm-stat strong{margin-right:4px;color:var(--dsw-alias-label-primary,#eeeeee);font-size:14px;font-weight:650}.dssm-filters{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;width:100%!important;min-width:0;box-sizing:border-box}.dssm-filter-actions{display:flex;align-items:center;gap:8px;flex:none;margin-left:auto}.dssm-filters .dssm-search{flex:1 1 0;min-width:160px;max-width:none}.dssm-filters .dssm-source-filter,.dssm-filters .dssm-status-filter,.dssm-filters .dssm-project-filter,.dssm-filters .dssm-menu-select-wrap,.dssm-filters span[class*="_root_"],.dssm-filters .dssm-source-select-menu,.dssm-filters .dssm-menu-select-trigger{width:auto!important;min-width:0!important;display:inline-flex!important;flex:none}.dssm-field .dssm-menu-select-wrap,.dssm-destination-pair .dssm-menu-select-wrap,.dssm-destination-pair span[class*="_root_"]{display:flex!important;width:100%!important;min-width:0!important;height:auto!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important}.dssm-destination-pair .dssm-menu-select-trigger,.dssm-form .dssm-menu-select-trigger{display:flex!important;width:100%!important;height:36px!important;border-radius:var(--dsw-radius-md,10px)!important;padding:0 12px!important;box-sizing:border-box!important}.dssm-source-select-menu{min-width:130px;max-width:280px}.dssm-menu-select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;height:32px;padding:0 10px;border:0.5px solid var(--dsw-alias-border-l2);border-radius:var(--dsw-radius-sm,8px);background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary);font:inherit;font-size:13px;line-height:20px;cursor:pointer;user-select:none;width:max-content;min-width:8em;transition:border-color 120ms ease,background 120ms ease}.dssm-menu-select-trigger:hover:not(:disabled){border-color:var(--dsw-alias-border-l3,#555)}.dssm-menu-select-trigger.is-open,.dssm-menu-select-trigger:focus-visible{border-color:var(--dsw-alias-brand-primary)!important;outline:var(--dsw-focus-ring-width,1px) solid var(--dsw-focus-ring-color,var(--dsw-alias-brand-primary))!important;outline-offset:0!important}.dssm-menu-select-trigger:disabled{opacity:.5;cursor:default}.dssm-menu-select-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:left}.dssm-menu-select-arrow{color:var(--dsw-alias-label-secondary);flex-shrink:0}.dssm-count{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;white-space:nowrap;flex:none}.dssm-name{overflow-wrap:anywhere;font-size:13px;font-weight:570}.dssm-note{overflow-wrap:anywhere;margin-top:2px;color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:11px;line-height:17px}.dssm-enabled{color:var(--dsw-alias-state-success-primary,#51b976);font-size:12px;white-space:nowrap}.dssm-disabled{color:var(--dsw-alias-state-warn-primary,#d49245);font-size:12px;white-space:nowrap}.dssm-shadowed{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;white-space:nowrap}.dssm-trash-count{padding:2px 7px;border-radius:999px;corner-shape:round;background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12));color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:11px}.dssm-empty{padding:25px 14px;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:12px;text-align:center}.dssm-feedback{padding:9px 11px;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:12px}.dssm-warning{border-color:var(--dsw-alias-state-warn-primary,#d49245);color:var(--dsw-alias-state-warn-primary,#d49245)}.dssm-error{border-color:var(--dsw-alias-state-error-primary,#ef7272);color:var(--dsw-alias-state-error-primary,#ef7272)}.dssm-form,.dssm-field,.dssm-detail-section{display:flex;flex-direction:column}.dssm-form{gap:12px}.dssm-detail{display:flex;flex-direction:column;gap:12px;min-width:0}.dssm-detail .dssm-desc{margin:0}.dssm-field{gap:6px}.dssm-label{font-size:12px;color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-detail-title{font-size:14px;line-height:22px;font-weight:650}.dssm-help{margin:0;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;line-height:18px}.dssm-batch-list{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto;margin:12px 0;padding:2px}.dssm-batch-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:0.5px solid var(--dsw-alias-border-l1,#3a3a3a);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));cursor:pointer;user-select:none;transition:background 0.15s,border-color 0.15s}.dssm-batch-item:hover{background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-interactive-bg-hover,transparent));border-color:var(--dsw-alias-border-l2,#494949)}.dssm-batch-item.selected{border-color:var(--dsw-alias-brand-primary,#3b82f6);background:var(--dsw-alias-state-business-tertiary)}.dssm-batch-item input[type="checkbox"]{cursor:pointer;margin:0;flex-shrink:0;width:15px;height:15px}.dssm-batch-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.dssm-batch-name-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.dssm-batch-name{font-size:13px;font-weight:600;color:var(--dsw-alias-label-primary,#eee);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dssm-batch-cat-tag{font-size:10px;padding:1px 6px;border-radius:var(--dsw-radius-xs,4px);background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary,#b9b9b9);white-space:nowrap;flex-shrink:0}.dssm-batch-desc{font-size:12px;line-height:16px;color:var(--dsw-alias-label-tertiary,#a0a0a0);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.dssm-modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.dssm-hidden-input{display:none}.dssm-dropzone{box-sizing:border-box;display:flex;width:100%;min-height:170px;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:22px;border:1px dashed var(--dsw-alias-border-l3,#555555);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9);transition:border-color 180ms ease,background 180ms ease}.dssm-dropzone:hover,.dssm-dropzone-active{border-color:var(--dsw-alias-brand-primary,var(--dsw-alias-label-primary,#f2f2f2));background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12))}.dssm-dropzone-title{color:var(--dsw-alias-label-primary,#eeeeee);font-size:14px;font-weight:620}.dssm-dropzone-copy{font-size:12px;line-height:18px;text-align:center}.dssm-upload-choices{display:flex;align-items:center;gap:7px}.dssm-upload-link,.dssm-file-remove{padding:0;border:0;background:transparent;font:inherit;font-size:12px;cursor:pointer}.dssm-upload-link{color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-upload-link:hover{color:var(--dsw-alias-label-primary,#eeeeee);text-decoration:underline}.dssm-upload-link:disabled{opacity:.45;cursor:default}.dssm-upload-divider{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px}.dssm-file{display:flex;align-items:center;gap:9px;padding:10px 11px;border:0.5px solid var(--dsw-alias-border-l2,#494949);border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-primary,#eeeeee);font-size:12px}.dssm-file-kind{display:inline-flex;min-width:30px;height:24px;align-items:center;justify-content:center;border-radius:var(--dsw-radius-sm,8px);background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.12));color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:9px;font-weight:700}.dssm-file-name{min-width:0;overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.dssm-file-meta{color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;white-space:nowrap}.dssm-file-remove{width:24px;height:24px;color:var(--dsw-alias-label-secondary,#b9b9b9);font-size:18px}.dssm-upload-requirements{padding:1px 1px 0}.dssm-upload-requirements ul{display:flex;margin:7px 0 0;padding-left:18px;flex-direction:column;gap:5px;color:var(--dsw-alias-label-tertiary,#a0a0a0);font-size:11px;line-height:17px}.dssm-detail-section{gap:7px}.dssm-detail-path{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:14px;line-height:22px}.dssm-detail-section .dssm-note,.dssm-diag{font-size:14px;line-height:22px}.dssm-detail-path{padding:8px 10px;border-radius:var(--dsw-radius-lg,16px);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9);word-break:break-all}.dssm-diag{padding:8px 10px;border-left:2px solid var(--dsw-alias-state-warn-primary,#d49245);background:var(--dsw-alias-bg-layer-1,var(--dsw-alias-interactive-bg-hover,transparent));color:var(--dsw-alias-label-secondary,#b9b9b9)}.dssm-trash-panel{display:flex;flex-direction:column;gap:10px}.dssm-trash-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:11px 13px;border:0.5px solid var(--dsw-alias-border-l2,rgba(128,128,128,.2));border-radius:var(--dsw-radius-xl,20px);background:transparent}.dssm-trash-main{min-width:0;display:flex;flex-direction:column;gap:6px}.dssm-trash-item .dssm-name{font-size:14px;line-height:20px;color:var(--dsw-alias-label-primary,inherit)}.dssm-trash-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;font-size:11px;line-height:17px;color:var(--dsw-alias-label-tertiary,#909090);overflow-wrap:anywhere}.dssm-trash-source{min-width:0;background:transparent;color:var(--dsw-alias-label-tertiary,#a0a0a0)}.dssm-trash-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
34
34
  @container(max-width:400px){.dssm-source-path{display:none}}@media(max-width:760px){.dssm-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.dssm-title-row{flex-wrap:wrap}}@container(max-width:520px){.dssm-trash-item{grid-template-columns:minmax(0,1fr)}.dssm-skill-row{flex-wrap:wrap}.dssm-skill-actions{width:100%;margin-inline-start:0;justify-content:flex-end}.dssm-trash-actions{justify-content:flex-end}.dssm-head{flex-direction:column}.dssm-actions{width:100%;margin-left:0}.dssm-actions button{flex:1}.dssm-summary{grid-template-columns:1fr}}.dssm-row-state{display:flex;align-items:center;justify-content:flex-end;gap:8px}
35
35
  .dssm-enable-switch{box-sizing:border-box;position:relative;flex:0 0 auto;width:36px;height:20px;padding:2px;border:0;border-radius:999px;corner-shape:round;background:var(--dsw-alias-border-l3,#555);cursor:pointer}.dssm-enable-switch[aria-checked=true]{background:var(--dsw-alias-brand-primary)}.dssm-enable-switch:disabled{cursor:default;opacity:.5}.dssm-enable-switch:focus-visible{outline:var(--dsw-focus-ring-width,1px) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:2px}.dssm-enable-switch-thumb{display:block;width:16px;height:16px;border-radius:50%;corner-shape:round;background:var(--dsw-alias-label-primary-foreground,#fff);transition:transform 120ms ease;pointer-events:none}.dssm-enable-switch[aria-checked=false] .dssm-enable-switch-thumb{background:var(--dsw-alias-switch-thumb,#fff)}.dssm-enable-switch[aria-checked=true] .dssm-enable-switch-thumb{transform:translateX(16px)}
36
36
  .dssm-icon-action{width:22px;min-width:22px;height:22px;padding:0;border-radius:var(--dsw-radius-sm,8px);background:transparent;color:var(--dsw-alias-label-secondary,#b9b9b9);border-color:var(--dsw-alias-border-l2,#494949)}.dssm-icon-action:not(:disabled):not(.dssm-icon-danger):hover{color:var(--dsw-alias-link,#4176e6)!important;border-color:var(--dsw-alias-link,#4176e6)!important}.dssm-icon-action.dssm-icon-danger{color:var(--dsw-alias-state-error-primary,#ef7272);border-color:var(--dsw-alias-state-error-primary,#ef7272)}.dssm-btn-danger:not(:disabled){color:var(--dsw-alias-state-error-primary,#ef7272)}
package/lib/core.js CHANGED
@@ -36,7 +36,8 @@ const EXTERNAL_SOURCE_ORDER = [
36
36
  "workbuddy",
37
37
  "qoder",
38
38
  "qoder-cn",
39
- "lingma"
39
+ "lingma",
40
+ "antigravity"
40
41
  ];
41
42
  function rankSources(sources, startRank) {
42
43
  const order = (root) => EXTERNAL_SOURCE_ORDER.indexOf(root.key);
@@ -319,6 +320,18 @@ function userRoots() {
319
320
  mutable: false,
320
321
  toggleable: true,
321
322
  native: false
323
+ },
324
+ {
325
+ key: "antigravity",
326
+ localeKey: "antigravity",
327
+ path: join(
328
+ process.env.DSH_ANTIGRAVITY_HOME || join(homedir(), ".gemini", "config"),
329
+ "skills"
330
+ ),
331
+ label: "Google Antigravity",
332
+ mutable: false,
333
+ toggleable: true,
334
+ native: false
322
335
  }
323
336
  ], 500);
324
337
  }
@@ -1248,10 +1261,18 @@ function validManagerStateDocument(value) {
1248
1261
  }
1249
1262
  return true;
1250
1263
  }
1264
+ const BASELINE_SOURCES = /* @__PURE__ */ new Set([
1265
+ "dsh",
1266
+ "agents",
1267
+ "codex",
1268
+ "claude",
1269
+ "gemini",
1270
+ "opencode"
1271
+ ]);
1251
1272
  function migrateManagerStateDocument(value) {
1252
1273
  if (!value || typeof value !== "object" || Array.isArray(value) || value.version !== 1)
1253
1274
  return value;
1254
- const addedSources = ["ccswitch", "cursor", "copilot", "windsurf", "windsurf-user", "trae", "trae-cn", "openclaw", "clawdbot", "roo", "codebuddy", "workbuddy", "qoder", "qoder-cn", "lingma"];
1275
+ const addedSources = userRoots().map((root) => root.key).filter((key) => !BASELINE_SOURCES.has(key));
1255
1276
  for (const key of addedSources) {
1256
1277
  for (const field of ["sources", "disabledSkills", "enabledSkills"]) {
1257
1278
  if (value[field] && typeof value[field] === "object" && !Array.isArray(value[field]) && value[field][key] === void 0)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michengai/dsh-skills-manager",
3
- "version": "1.2.14",
3
+ "version": "1.2.16",
4
4
  "description": "DSH Skills Manager — 在 DeepSeek Harness 中统一加载并安全管理本机 Agent Skills · Load and safely manage local Agent Skills in DSH",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {