-
Notifications
You must be signed in to change notification settings - Fork 2.8k
feat: Add user-facing skills management UI (#10513) #10517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Critical TypeScript compilation errors found. The skills state management was removed during the circular import fix but never restored, breaking the entire Skills UI at both compile-time and runtime.
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
|
I'd keep skills separate form slash commands right now, and I suspect they are more complex to write, since they can include child files, scripts, additional instructions, etc. So I'd ask to make this its own section in settings. |
|
Updated PR to address feedback from @brunobergher: Changes made:
Skills now appears as its own section in the settings sidebar, separate from Slash Commands, as requested. |
Implements a comprehensive skills management feature in the settings UI by expanding the existing slash commands section into a unified 'Commands & Skills' interface. - Add CRUD operations to SkillsManager (create, delete, getSkillsForUI, getSkillFilePath) - Implement skill name validation (agentskills.io spec compliance) - Add WebviewMessage types: requestSkills, createSkill, deleteSkill, openSkillFile - Add ExtensionMessage type for skills state updates - Implement message handlers for skills CRUD operations - Create CommandsAndSkillsSettings component with tabbed interface - Create SkillsTab component with Global/Workspace sections - Create SkillItem component for individual skill display - Add skills state management to ExtensionStateContext - Add i18n translations for skills UI - Update SettingsView to use new unified component - 35 backend tests for SkillsManager (all passing) - 18 UI tests for new components (all passing) - 27 regression tests for existing functionality (all passing) Total: 80 tests passing
…port Moving the SkillForUI interface definition from SkillsManager.ts to shared/ExtensionMessage.ts prevents the webview-ui TypeScript compilation from pulling in the entire SkillsManager service and its dependencies, which was triggering strict mode checks on unrelated files.
The frontend validation regex now matches the backend exactly: - Prevents trailing hyphens (e.g., 'skill-' is now invalid) - Prevents consecutive hyphens (e.g., 'skill--name' is now invalid) - Prevents leading hyphens (already prevented) - Requires starting with letter or number This ensures users get immediate feedback for invalid names before attempting to create a skill.
Added translations for the new Skills UI feature to all locale files: - ca, de, es, fr, hi, id, it, ja, ko, nl, pl, pt-BR, ru, tr, vi, zh-CN, zh-TW Translations include: - Section titles (Commands & Skills, tabs) - Skill labels (Global/Workspace Skills) - Placeholders and validation messages - Delete dialog strings Verified with scripts/find-missing-translations.js - all checks pass.
- Moved Skills from tabbed interface to standalone settings section - Restored SlashCommandsSettings to original non-tabbed state - Created new SkillsSettings component wrapping SkillsTab - Updated SettingsView to include both sections separately - Updated all i18n translations (18 locales) for new section structure - Removed CommandsAndSkillsSettings component and its tests - Added SkillsSettings test suite - All tests passing (42/42) Addresses feedback from Bruno Bergher requesting Skills be separated from slash commands into their own section due to complexity differences.
846ffde to
4baea98
Compare
|
|
||
| export const SkillsTab: React.FC = () => { | ||
| const { t } = useAppTranslation() | ||
| const { skills, cwd } = useExtensionState() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The skills property doesn't exist in ExtensionStateContextType, causing TypeScript compilation to fail with "Property 'skills' does not exist on type 'ExtensionStateContextType'". The skills state management was removed in commit d97c018 to fix circular imports but was never added back. Additionally, the message types "requestSkills", "createSkill", "deleteSkill", and "openSkillFile" are not in the WebviewMessage type union, and there's no "skills" message type in ExtensionMessage type union or skills property in the ExtensionMessage interface. The ExtensionStateContext also lacks a message handler for the "skills" message. This breaks the entire Skills UI functionality at both compile-time and runtime.
Fix it with Roo Code or mention @roomote and request a fix.
Related GitHub Issue
Closes: #10513
Roo Code Task Context (Optional)
No Roo Code task context for this PR
Description
This PR implements a comprehensive user-facing skills management feature in the settings UI by expanding and refactoring the existing slash commands section.
Key implementation details:
Backend Services:
SkillsManagerwith CRUD operations (createSkill,deleteSkill,getSkillsForUI,getSkillFilePath)requestSkills,createSkill,deleteSkill,openSkillFilewebviewMessageHandler.tswith proper error handlingUI Components:
CommandsAndSkillsSettingscomponent with a tabbed interface ("Slash Commands" | "Skills")SkillsTabwith Global and Workspace skills sectionsSkillItemcomponent for individual skill display with edit/delete actionsExtensionStateContextDesign decisions:
SkillForUIinterface to shared types to prevent circular importsAreas for special attention:
webviewMessageHandler.ts(skills CRUD operations starting at line 3032)SkillsManager.ts(line 39-59)CommandsAndSkillsSettings.tsxSkillForUIinterface location insrc/shared/ExtensionMessage.tsTest Procedure
Automated Tests (All Passing):
Test Results:
Manual Testing Steps:
Pre-Submission Checklist
Screenshots / Videos
Documentation Updates
Additional Notes
TypeScript Fix: The second commit fixes a circular import issue by moving the
SkillForUIinterface tosrc/shared/ExtensionMessage.ts. This prevents the webview-ui compilation from pulling in the entire SkillsManager service and its dependencies.Get in Touch
TBD
Important
Add user-facing skills management UI with backend CRUD operations and new UI components for skill management.
SkillsManagerwith CRUD operations:createSkill,deleteSkill,getSkillsForUI,getSkillFilePath.SkillsManager.ts(lines 39-59).webviewMessageHandler.ts(lines 3032+).CommandsAndSkillsSettingscomponent with tabs for "Slash Commands" and "Skills".SkillsTabwith sections for Global and Workspace skills.SkillItemcomponent for skill display with edit/delete actions.SkillForUIinterface to shared types to prevent circular imports.This description was created by
for 4baea98. You can customize this summary. It will automatically update as commits are pushed.