feat(skills): support folder-scoped skills in agent sessions

- Thread workspace path through useAgentSkills so Codex $-autocomplete
  surfaces folder-local skills in addition to global ones; cache keyed
  by agent + workspace and invalidated per key on focus.
- Add Global/Folder scope tabs and a folder picker (sourced from the
  folder table via loadFolderHistory) to the Skills settings page.
  CRUD for skills now operates against the selected scope and folder.
- Default the settings right panel to a placeholder hint; the new-skill
  form only appears after clicking "New Skill" or selecting an existing
  skill. Search input is hidden in folder scope.
- Disable "New Skill" when folder scope has no folder chosen; show a
  pick-folder hint in the path preview for that state.
- Add scope/noSelectionHint/pickFolderHint strings across 10 locales.
This commit is contained in:
xintaofei
2026-04-15 14:56:53 +08:00
parent 3148966371
commit a6f80088d0
13 changed files with 568 additions and 254 deletions

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "لا يوجد محتوى بعد. انقر \"تحرير\" للبدء.",
"loadingSkill": "جارٍ تحميل Skill...",
"emptyNoAgents": "لا يوجد وكيل متاح.",
"noSelectionHint": "اختر Skill من اليسار، أو انقر على \"Skill جديد\" لإنشاء واحد.",
"scope": {
"global": "عام",
"folder": "مجلد",
"selectFolderPlaceholder": "اختر مجلدًا",
"noFolders": "لم يتم العثور على مجلدات",
"pickFolderHint": "اختر مجلدًا لعرض مهاراته."
},
"actions": {
"preview": "معاينة",
"edit": "تحرير",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "Noch kein Inhalt. Klicke auf „Bearbeiten“, um zu starten.",
"loadingSkill": "Skill wird geladen...",
"emptyNoAgents": "Kein verfügbarer Agent.",
"noSelectionHint": "Wählen Sie links einen Skill oder klicken Sie auf „Neuer Skill“, um einen zu erstellen.",
"scope": {
"global": "Global",
"folder": "Ordner",
"selectFolderPlaceholder": "Ordner auswählen",
"noFolders": "Keine Ordner gefunden",
"pickFolderHint": "Wählen Sie einen Ordner, um dessen Skills anzuzeigen."
},
"actions": {
"preview": "Vorschau",
"edit": "Bearbeiten",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "No content yet. Click \"Edit\" to start.",
"loadingSkill": "Loading skill...",
"emptyNoAgents": "No available agent.",
"noSelectionHint": "Select a skill on the left, or click \"New Skill\" to create one.",
"scope": {
"global": "Global",
"folder": "Folder",
"selectFolderPlaceholder": "Select a folder",
"noFolders": "No folders found",
"pickFolderHint": "Select a folder to view its skills."
},
"actions": {
"preview": "Preview",
"edit": "Edit",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "Aún no hay contenido. Haz clic en \"Editar\" para empezar.",
"loadingSkill": "Cargando Skill...",
"emptyNoAgents": "No hay agentes disponibles.",
"noSelectionHint": "Selecciona un Skill a la izquierda o haz clic en \"Nuevo Skill\" para crear uno.",
"scope": {
"global": "Global",
"folder": "Carpeta",
"selectFolderPlaceholder": "Seleccionar una carpeta",
"noFolders": "No se encontraron carpetas",
"pickFolderHint": "Selecciona una carpeta para ver sus Skills."
},
"actions": {
"preview": "Vista previa",
"edit": "Editar",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "Aucun contenu pour le moment. Cliquez sur « Éditer » pour commencer.",
"loadingSkill": "Chargement de la Skill...",
"emptyNoAgents": "Aucun agent disponible.",
"noSelectionHint": "Sélectionnez un Skill à gauche ou cliquez sur « Nouveau Skill » pour en créer un.",
"scope": {
"global": "Global",
"folder": "Dossier",
"selectFolderPlaceholder": "Sélectionner un dossier",
"noFolders": "Aucun dossier trouvé",
"pickFolderHint": "Sélectionnez un dossier pour afficher ses Skills."
},
"actions": {
"preview": "Aperçu",
"edit": "Éditer",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "まだ内容がありません。「編集」をクリックして開始してください。",
"loadingSkill": "Skillを読み込み中...",
"emptyNoAgents": "利用可能なエージェントがありません。",
"noSelectionHint": "左側から Skill を選択するか、「新規 Skill」をクリックして作成してください。",
"scope": {
"global": "グローバル",
"folder": "フォルダ",
"selectFolderPlaceholder": "フォルダを選択",
"noFolders": "フォルダが見つかりません",
"pickFolderHint": "Skills を表示するフォルダを選択してください。"
},
"actions": {
"preview": "プレビュー",
"edit": "編集",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "아직 내용이 없습니다. \"편집\"을 눌러 시작하세요.",
"loadingSkill": "Skill 불러오는 중...",
"emptyNoAgents": "사용 가능한 에이전트가 없습니다.",
"noSelectionHint": "왼쪽에서 Skill을 선택하거나 \"새 Skill\"을 클릭하여 만드세요.",
"scope": {
"global": "전역",
"folder": "폴더",
"selectFolderPlaceholder": "폴더 선택",
"noFolders": "폴더를 찾을 수 없습니다",
"pickFolderHint": "Skills을 보려면 폴더를 선택하세요."
},
"actions": {
"preview": "미리보기",
"edit": "편집",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "Ainda não há conteúdo. Clique em \"Editar\" para começar.",
"loadingSkill": "Carregando Skill...",
"emptyNoAgents": "Nenhum agente disponível.",
"noSelectionHint": "Selecione um Skill à esquerda ou clique em \"Novo Skill\" para criar um.",
"scope": {
"global": "Global",
"folder": "Pasta",
"selectFolderPlaceholder": "Selecionar uma pasta",
"noFolders": "Nenhuma pasta encontrada",
"pickFolderHint": "Selecione uma pasta para ver suas Skills."
},
"actions": {
"preview": "Prévia",
"edit": "Editar",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "暂无内容。点击“编辑”开始输入。",
"loadingSkill": "正在加载 Skill...",
"emptyNoAgents": "暂无可用 Agent。",
"noSelectionHint": "从左侧选择一个 Skill或点击“新建 Skill”创建。",
"scope": {
"global": "全局",
"folder": "文件夹",
"selectFolderPlaceholder": "选择文件夹",
"noFolders": "未找到任何文件夹",
"pickFolderHint": "选择一个文件夹以查看其 Skills。"
},
"actions": {
"preview": "预览",
"edit": "编辑",

View File

@@ -348,6 +348,14 @@
"emptyContentHint": "暫無內容。點擊「編輯」開始輸入。",
"loadingSkill": "正在載入 Skill...",
"emptyNoAgents": "暫無可用 Agent。",
"noSelectionHint": "從左側選擇一個 Skill或點擊「新建 Skill」建立。",
"scope": {
"global": "全域",
"folder": "資料夾",
"selectFolderPlaceholder": "選擇資料夾",
"noFolders": "找不到任何資料夾",
"pickFolderHint": "選擇一個資料夾以檢視其 Skills。"
},
"actions": {
"preview": "預覽",
"edit": "編輯",