Files
dsh_shenxian/scripts
admin 39a1f2e31b feat(plugin): 实例内「我的技能」分组(business-plugins 0.3.20→0.3.21,T01 / 档案 100)
⚠️ 本提交是**另一执行会话**(台账记录的 T01 执行方)已完成、且**已上线**的源码侧改动,
   由本会话代为入库(台账 T01 已标「已完成并归档」;线上插件 0.3.21 已投放两实例)。

- 形态:并入既有「功能管理」section 内的**分组**,**不新开 section**(用户口径「不要分开管理」);
  **仅入口层合并、机制层独立** —— 技能是 watch 驱动(启停立即生效、无需重启),插件要重启实例,
  两条 API(/api/skills/mine* vs /api/plugins/mine*)与两套落盘位置一律不动。
- 行式交互:名称(截断三件套)+ 来源徽章(共享/我的)+ 状态 + 事实(文件数·体积,tabular-nums)+ 动作;
  沿用官方卡片行语汇(动作区 margin-left:auto + nowrap)⇒ **结构上不可能换行**。
- 平台共享技能(source:'shared'、locked)显示 🔒 且**不渲染任何动作按钮**,
  与后端 assertNotShared() 的 409 双向一致(前端不给注定失败的按钮,后端仍兜底)。
- 上传/删除:同名走**两阶段替换**(先暂存 → 页内确认,写明「不可恢复」+ 旧/新文件数对照);
  删除必须过页内确认;启用/停用可逆故不弹窗。失败一律行内展示后端中文原文(不自己造词)。
- zh/en 全量词条(msk.*,46 条/语言)。
- 新增 scripts/verify-my-skills.mjs(把「不换行 / 危险操作必须二次确认 / 锁定行无按钮」钉成机械断言),
  并接入根 package.json 的 npm run verify。

验证:node scripts/verify-my-skills.mjs ✓(本会话复核已跑通)
2026-09-15 18:54:00 +08:00
..