gsxdsm
5c4c765134
FN-5904: feat(FN-5904): add browse-and-install flow for skills.sh catalog in Skills view
Add end-to-end browse-and-install flow for skills.sh catalog entries in the dashboard Skills view, enabling users to install skills directly from the catalog UI.
- Add POST /api/skills/install route with source validation and scoped project cwd
- Add installSkill method to SkillsAdapter using supervised npx skills add spawn
- Add installSkill client API function and Install button on catalog cards
- Refresh discovered skills list automatically after successful install
- Handle install errors with structured error codes (invalid_source, install_failed, install_timeout, spawn_error)
- Add card header layout with install button, disabled state, and loading spinner
- Add comprehensive tests: adapter unit tests, route integration tests, component tests
- Add changeset for @runfusion/fusion minor bump
- Update dashboard-guide.md with install endpoint documentation
Files changed:
.changeset/four-oranges-film.md | 5 +
docs/dashboard-guide.md | 45 +++++++
packages/dashboard/app/__tests__/api-skills.test.ts | 46 +++++++
packages/dashboard/app/api/legacy.ts | 12 ++
packages/dashboard/app/components/SkillsView.css | 16 +++
packages/dashboard/app/components/SkillsView.tsx | 83 +++++++++---
packages/dashboard/app/components/__tests__/SkillsView.test.tsx | 72 +++++++++++
packages/dashboard/src/__tests__/routes-skills.test.ts | 67 ++++++++++
packages/dashboard/src/__tests__/skills-adapter.test.ts | 113 ++++++++++++++++
packages/dashboard/src/routes/__tests__/register-agent-skills-routes.test.ts | 144 +++++++++++++++++++++
packages/dashboard/src/routes/register-agent-skills-routes.ts | 51 ++++++++
packages/dashboard/src/skills-adapter.ts | 103 +++++++++++++++
12 files changed, 736 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-5904
Fusion-Task-Lineage: 338d53e3-baba-4c6c-9173-8e214242403c
2026-06-02 18:29:53 -07:00
..
2026-04-24 19:39:20 -07:00
2026-05-22 20:20:42 -07:00
2026-05-19 20:29:59 -07:00
2026-05-09 17:05:43 -07:00
2026-05-30 14:20:12 -07:00
2026-05-08 17:17:59 -07:00
2026-05-25 16:32:57 -07:00
2026-05-31 08:32:01 -07:00
2026-05-12 07:47:10 -07:00
2026-05-07 18:47:08 -07:00
2026-05-09 10:31:04 -07:00
2026-06-02 18:29:53 -07:00
2026-05-29 10:55:25 -07:00
2026-05-16 12:49:57 -07:00
2026-05-07 18:35:45 -07:00
2026-05-07 23:21:05 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-05-18 05:35:14 -07:00
2026-04-23 13:29:23 -07:00
2026-05-17 10:37:54 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-05-20 14:28:45 -07:00
2026-05-11 10:54:26 -07:00
2026-05-22 20:20:42 -07:00
2026-05-22 20:20:42 -07:00
2026-04-24 19:39:20 -07:00
2026-05-22 20:20:42 -07:00
2026-05-22 20:20:42 -07:00
2026-04-24 19:39:20 -07:00
2026-05-22 10:37:21 -07:00
2026-05-07 14:09:39 -07:00
2026-05-19 01:59:22 -07:00
2026-05-10 23:36:10 -07:00
2026-05-29 20:05:14 -07:00
2026-05-22 20:20:42 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-04-07 23:25:34 -07:00
2026-05-23 20:24:18 -07:00
2026-03-28 16:30:23 -04:00
2026-04-24 22:25:57 -07:00
2026-05-22 10:37:21 -07:00
2026-05-22 20:20:42 -07:00
2026-05-15 10:05:46 -07:00
2026-05-22 20:20:42 -07:00
2026-05-02 02:54:26 -07:00
2026-05-29 08:20:28 -07:00
2026-04-24 19:39:20 -07:00
2026-05-07 23:21:05 -07:00
2026-05-08 01:57:55 -07:00
2026-05-06 05:29:56 -07:00
2026-06-01 23:29:21 -07:00
2026-05-17 19:11:59 -07:00
2026-05-17 03:28:21 -07:00
2026-05-08 07:38:50 -07:00
2026-05-17 15:11:48 -07:00
2026-05-28 19:45:27 -07:00
2026-04-24 19:39:20 -07:00
2026-04-30 21:26:54 -07:00
2026-05-23 20:24:18 -07:00
2026-05-13 10:00:00 -07:00
2026-05-17 19:11:59 -07:00
2026-05-29 20:05:14 -07:00