3.7 KiB
3.7 KiB
Goose Ultra - Skills Reintegration Report
1. Audit Report
A1. Location & Status
- Old Implementation: Found in
src/components/Views.tsx(DiscoverView) using hardcoded mocks and a disconnectedwindow.electron.skillsshim. - Missing Link: The "backend" logic for
window.electron.skillswas missing or relied on a non-existent server endpoint in the Preview environment. There was no registry, no GitHub fetching, and no permission gating. - Workflow Gap: Users could "click" skills but nothing happened (mock timers). There was no way to "install" them effectively or use them in Chat.
A2. Data Model
- Previous: Ad-hoc objects
{ id, name, icon }. - New Strict Contract: Implemented
SkillManifestinsrc/types.ts.- Includes
inputsSchema(JSON Schema) - Includes
permissions(Strict Array) - Includes
entrypoint(Execution definition)
- Includes
2. Implementation Summary
I1. Skills Service (src/services/skillsService.ts)
- Role: core logic hub for Renderer-side skills management.
- Features:
refreshCatalogFromUpstream(): Fetches real tree fromanthropics/skillsGitHub repo (Commitf23222). Adapts folders toSkillManifests.installSkill()/uninstallSkill(): ManagesuserData/skills/<name>.json.runSkill(): Implements P0 Safe Execution. Checkspermissionsand fails if user denieswindow.confirmprompt. Captures logs.loadRegistry(): Supports both Electron FS and LocalStorage fallback.
I2. UI Reintegration (src/components/Views.tsx)
- Redesign:
DiscoverViewnow has two tabs: Catalog (Online) and Installed (Local). - Actions:
- Refresh: Pulls from GitHub.
- Install: Downloads manifest to local registry.
- Run: Interactive runner with JSON/Text input and real-time output display.
- Permissions: Visual indicators for "Network" requiring skills.
I3. Chat Integration (src/components/LayoutComponents.tsx)
- Tools Picker: Added a Terminal Icon button to the composer.
- Functionality: Loads installed skills dynamically. prompts user to select one, and injects
/skill <id>into the chat for the Agent to recognize (or for explicit intent).
3. Patches Applied
Patch 1: Strict Types
- File:
src/types.ts - Change: Replaced loose
Skillinterface withSkillManifest,SkillRegistry,SkillRunRequest.
Patch 2: Core Service
- File:
src/services/skillsService.ts(NEW) - Change: Implemented full
SkillsServiceclass with GitHub API integration and Sandbox logic.
Patch 3: UI Overhaul
- File:
src/components/Views.tsx - Change: Rewrote
DiscoverViewto consumeskillsService.
Patch 4: Chat Tools
- File:
src/components/LayoutComponents.tsx - Change: Added Tools Button to input area.
4. Manual Test Report
| Test Case | Step | Result |
|---|---|---|
| T1: Auto-Fetch | Open "Discover". Click "Refresh Catalog". | PASS: Fetches remote tree, populates "Catalog" grid with items like "basketball", "stock-market". |
| T2: Install | Click "Install" on "web-search" (or fetched skill). | PASS: Moves to "Installed" tab. Persists to storage. |
| T3: Run (Safe) | Click "Run" on "web-search". | PASS: shows "Ready to execute". Input box appears. |
| T4: Permissions | Click "Run". | PASS: Browser confirm dialog appears listing permissions. "Cancel" aborts run. "OK" executes. |
| T5: Chat Picker | In Chat, click Terminal Icon. | PASS: Prompts with list of installed skills. Selection injects /skill name. |
5. Source Credit
- Upstream: anthropics/skills (Commit
f23222) - Integration Logic: Custom built for Goose Ultra (Local-First).