e.stopPropagation()}>
{actions.map((action) => (
diff --git a/src/web-ui/src/app/scenes/skills/hooks/useInstalledSkills.ts b/src/web-ui/src/app/scenes/skills/hooks/useInstalledSkills.ts
index 2623b0697..e93219bc7 100644
--- a/src/web-ui/src/app/scenes/skills/hooks/useInstalledSkills.ts
+++ b/src/web-ui/src/app/scenes/skills/hooks/useInstalledSkills.ts
@@ -168,7 +168,17 @@ export function useInstalledSkills({ searchQuery, activeFilter }: UseInstalledSk
const filteredSkills = useMemo(() => {
return skills.filter((skill) => {
- const matchesFilter = activeFilter === 'all' || skill.level === activeFilter;
+ let matchesFilter = true;
+ if (activeFilter === 'user') {
+ matchesFilter = skill.level === 'user' && !skill.isBuiltin;
+ } else if (activeFilter === 'project') {
+ matchesFilter = skill.level === 'project' && !skill.isBuiltin;
+ } else if (activeFilter === 'builtin') {
+ matchesFilter = skill.isBuiltin;
+ } else if (activeFilter === 'suite') {
+ matchesFilter = false;
+ }
+
const matchesQuery = !normalizedQuery || [
skill.name,
skill.description,
@@ -180,8 +190,10 @@ export function useInstalledSkills({ searchQuery, activeFilter }: UseInstalledSk
const counts = useMemo(() => ({
all: skills.length,
- user: skills.filter((skill) => skill.level === 'user').length,
- project: skills.filter((skill) => skill.level === 'project').length,
+ builtin: skills.filter((skill) => skill.isBuiltin).length,
+ user: skills.filter((skill) => skill.level === 'user' && !skill.isBuiltin).length,
+ project: skills.filter((skill) => skill.level === 'project' && !skill.isBuiltin).length,
+ suite: 0,
}), [skills]);
return {
diff --git a/src/web-ui/src/app/scenes/skills/skillsSceneStore.ts b/src/web-ui/src/app/scenes/skills/skillsSceneStore.ts
index b14575354..e7fada41c 100644
--- a/src/web-ui/src/app/scenes/skills/skillsSceneStore.ts
+++ b/src/web-ui/src/app/scenes/skills/skillsSceneStore.ts
@@ -1,6 +1,6 @@
import { create } from 'zustand';
-export type InstalledFilter = 'all' | 'user' | 'project';
+export type InstalledFilter = 'all' | 'builtin' | 'user' | 'project' | 'suite';
interface SkillsSceneState {
searchDraft: string;
diff --git a/src/web-ui/src/locales/en-US/scenes/skills.json b/src/web-ui/src/locales/en-US/scenes/skills.json
index 3687bd097..0cee6f8c5 100644
--- a/src/web-ui/src/locales/en-US/scenes/skills.json
+++ b/src/web-ui/src/locales/en-US/scenes/skills.json
@@ -41,8 +41,17 @@
},
"filters": {
"all": "All",
+ "builtin": "Built-in",
"user": "User",
- "project": "Project"
+ "project": "Project",
+ "suite": "Suites"
+ },
+ "categories": {
+ "all": "All installed skills, including built-in, user-level, and project-level.",
+ "builtin": "Core skills shipped with the app. They cannot be deleted.",
+ "user": "User-level skills installed globally for your account.",
+ "project": "Project-level skills for the current workspace.",
+ "suite": "Curated skill bundles that package related skills together (coming soon)."
},
"section": {
"user": {
@@ -64,6 +73,7 @@
"noMatch": "No matching marketplace skills found",
"noSkills": "No marketplace skills available"
},
+ "resultsInfo": "{{count}} results for \"{{query}}\"",
"item": {
"sourceLabel": "Source: ",
"installs": "Installs: {{count}}",
@@ -98,7 +108,8 @@
"user": "User-level (Global)",
"project": "Project-level (Current Workspace)",
"projectDisabled": " - Need to open workspace first",
- "currentWorkspace": "Current workspace: {{path}}"
+ "currentWorkspace": "Current workspace: {{path}}",
+ "selectedProjectPath": "Selected project path: {{path}}"
},
"path": {
"label": "Skill Folder Path",
@@ -123,6 +134,9 @@
"item": {
"user": "User",
"project": "Project",
+ "builtin": "Built-in",
+ "userInstalled": "Installed",
+ "detail": "Details",
"deleteTooltip": "Delete",
"pathLabel": "Path:",
"openPathInExplorer": "Open this folder in file explorer",
diff --git a/src/web-ui/src/locales/zh-CN/scenes/skills.json b/src/web-ui/src/locales/zh-CN/scenes/skills.json
index 106ad1f55..629e7270e 100644
--- a/src/web-ui/src/locales/zh-CN/scenes/skills.json
+++ b/src/web-ui/src/locales/zh-CN/scenes/skills.json
@@ -41,8 +41,17 @@
},
"filters": {
"all": "全部",
+ "builtin": "内置",
"user": "用户级",
- "project": "项目级"
+ "project": "项目级",
+ "suite": "套件"
+ },
+ "categories": {
+ "all": "查看所有已安装的技能,包含内置、用户和项目级。",
+ "builtin": "系统出厂自带的核心技能,不可删除。",
+ "user": "全局安装到当前账户的用户级技能。",
+ "project": "当前工作区下的项目级技能。",
+ "suite": "精选技能套件将多个相关技能打包提供(敬请期待)。"
},
"section": {
"user": {
@@ -64,6 +73,7 @@
"noMatch": "没有找到匹配的市场技能",
"noSkills": "暂时没有可展示的市场技能"
},
+ "resultsInfo": "关键词「{{query}}」共 {{count}} 条相关结果",
"item": {
"sourceLabel": "来源: ",
"installs": "安装量: {{count}}",
@@ -98,7 +108,8 @@
"user": "用户级(全局)",
"project": "项目级(当前工作空间)",
"projectDisabled": " - 需要先打开工作区",
- "currentWorkspace": "当前工作区: {{path}}"
+ "currentWorkspace": "当前工作区: {{path}}",
+ "selectedProjectPath": "所选项目路径: {{path}}"
},
"path": {
"label": "技能文件夹路径",
@@ -123,6 +134,9 @@
"item": {
"user": "用户级",
"project": "项目级",
+ "builtin": "内置",
+ "userInstalled": "已安装",
+ "detail": "详情",
"deleteTooltip": "删除",
"pathLabel": "路径:",
"openPathInExplorer": "在资源管理器中打开此文件夹",
diff --git a/src/web-ui/src/locales/zh-TW/scenes/skills.json b/src/web-ui/src/locales/zh-TW/scenes/skills.json
index 33e7718ec..d05a66d4f 100644
--- a/src/web-ui/src/locales/zh-TW/scenes/skills.json
+++ b/src/web-ui/src/locales/zh-TW/scenes/skills.json
@@ -41,8 +41,17 @@
},
"filters": {
"all": "全部",
+ "builtin": "內建",
"user": "用戶級",
- "project": "項目級"
+ "project": "項目級",
+ "suite": "套件"
+ },
+ "categories": {
+ "all": "查看所有已安裝的技能,包含內建、用戶與項目級。",
+ "builtin": "系統出廠內建的核心技能,不可刪除。",
+ "user": "為目前帳戶全域安裝的用戶級技能。",
+ "project": "目前工作區底下的項目級技能。",
+ "suite": "精選技能套件將多個相關技能打包提供(敬請期待)。"
},
"section": {
"user": {
@@ -64,6 +73,7 @@
"noMatch": "沒有找到匹配的市場技能",
"noSkills": "暫時沒有可展示的市場技能"
},
+ "resultsInfo": "關鍵詞「{{query}}」共 {{count}} 筆相關結果",
"item": {
"sourceLabel": "來源: ",
"installs": "安裝量: {{count}}",
@@ -98,7 +108,8 @@
"user": "用戶級(全局)",
"project": "項目級(當前工作空間)",
"projectDisabled": " - 需要先打開工作區",
- "currentWorkspace": "當前工作區: {{path}}"
+ "currentWorkspace": "當前工作區: {{path}}",
+ "selectedProjectPath": "所選項目路徑: {{path}}"
},
"path": {
"label": "技能文件夾路徑",
@@ -123,6 +134,9 @@
"item": {
"user": "用戶級",
"project": "項目級",
+ "builtin": "內建",
+ "userInstalled": "已安裝",
+ "detail": "詳情",
"deleteTooltip": "刪除",
"pathLabel": "路徑:",
"openPathInExplorer": "在資源管理器中打開此文件夾",