What happened?
In Settings → Skills, the "Enabled" list has no per-row action at all today — the flush-right action slot is wired to a Remove button (SkillSettings.tsx), but it's gated on skillCatalog.deleteSkill, which is never implemented (comment in skillCatalog.ts: "Delete omitted (no BE route)"). There is currently no DELETE route for skills at all (packages/trueforge/src/routes/skillRoutes.ts only has list/create/put), so the button silently never renders.
There's also no way to edit a configured skill's description or source once it's added — the SkillCatalogServer port (@truefoundry/assistant-ui-runtime) has no updateSkill method, and the list view (listSkills()) only returns { id, name, description } — not the skill's repoURL/path/ref — so even if an edit method existed, a custom GitHub-imported skill's current source isn't visible client-side to pre-fill a form (a registry-sourced skill's source is re-derivable from the catalog via its catalogId, but a plain imported one isn't).
Expected behavior
Like the equivalent MCP connector work (#494, #495):
- A real
DELETE endpoint so a configured skill can be disabled/removed, wired through the already-optional SkillCatalogServer.deleteSkill.
- In the "Enabled" list, the flush-right action becomes "Edit", opening a dialog matching the "Update Agent" pattern (
SaveAgentButton) — name shown, an actual "Disable" action available inside — rather than a bare inline "Remove" button.
- Full field editing (description, and repo/path/ref for GitHub-imported skills) needs a follow-up: either a new
updateSkill port method plus a way to read a skill's full manifest client-side, or widening what listSkills() returns. That's a real port/data-shape change, not just a UI addition — scoping it out here rather than guessing at the shape.
How are you running TrueForge?
npx (standalone / SQLite) and Postgres
Version
main
What happened?
In Settings → Skills, the "Enabled" list has no per-row action at all today — the flush-right action slot is wired to a
Removebutton (SkillSettings.tsx), but it's gated onskillCatalog.deleteSkill, which is never implemented (comment inskillCatalog.ts: "Delete omitted (no BE route)"). There is currently noDELETEroute for skills at all (packages/trueforge/src/routes/skillRoutes.tsonly has list/create/put), so the button silently never renders.There's also no way to edit a configured skill's description or source once it's added — the
SkillCatalogServerport (@truefoundry/assistant-ui-runtime) has noupdateSkillmethod, and the list view (listSkills()) only returns{ id, name, description }— not the skill'srepoURL/path/ref— so even if an edit method existed, a custom GitHub-imported skill's current source isn't visible client-side to pre-fill a form (a registry-sourced skill's source is re-derivable from the catalog via itscatalogId, but a plain imported one isn't).Expected behavior
Like the equivalent MCP connector work (#494, #495):
DELETEendpoint so a configured skill can be disabled/removed, wired through the already-optionalSkillCatalogServer.deleteSkill.SaveAgentButton) — name shown, an actual "Disable" action available inside — rather than a bare inline "Remove" button.updateSkillport method plus a way to read a skill's full manifest client-side, or widening whatlistSkills()returns. That's a real port/data-shape change, not just a UI addition — scoping it out here rather than guessing at the shape.How are you running TrueForge?
npx (standalone / SQLite) and Postgres
Version
main