Repository navigation
feat: Support agent skills in agent mode and add preferences settings - #133
Conversation
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…pilot-for-eclipse into ethan/support-skill
There was a problem hiding this comment.
Pull request overview
Adds Skills support to Copilot Chat’s Agent experience by wiring a new “Enable Skills” preference through to CLS settings, extending the conversation templates LSP request to include workspace folders (so CLS can discover SKILL.md / .prompt.md), and updating UI/test infrastructure to validate skills rendering via SWTBot probes.
Changes:
- Add “Enable Skills” preference (UI strings, preference page UI, defaults) and propagate it to language server settings.
- Extend
conversation/templatesrequest to include workspace folders; enrich template model withsource(BUILTIN/PROMPT/SKILL) and update completion filtering/sorting. - Add SWTBot probe actions + a new probe script to validate skills appear/disappear based on the preference.
Reviewed changes
Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.
Show a summary per file
Comments suppressed due to low confidence (2)
com.microsoft.copilot.eclipse.ui/src/com/microsoft/copilot/eclipse/ui/chat/services/ChatCompletionService.java:120
- InterruptedException is caught and only logged here. The thread interrupt flag should be restored (Thread.currentThread().interrupt()) so callers/framework code can react appropriately (e.g., job cancellation).
} catch (InterruptedException | ExecutionException e) {
CopilotCore.LOGGER.error(e);
}
com.microsoft.copilot.eclipse.ui/src/com/microsoft/copilot/eclipse/ui/chat/services/ChatCompletionService.java:234
- syncCommands() mutates the current HashSet/ArrayList instances via clear(). Since fetchAsync() updates these fields from a background Job, readers (e.g., isCommand() from the UI thread) can race with clear(), and HashSet/ArrayList are not thread-safe for concurrent reads+writes. Prefer swapping in new immutable/empty instances (e.g., Collections.emptySet()/emptyList()) to keep the snapshot swap pattern consistent and avoid concurrent mutation.
private void syncCommands(String status) {
switch (status) {
case CopilotStatusResult.OK:
fetchAsync();
break;
default:
allCommands.clear();
templates.clear();
agents.clear();
break;
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
|
Looking forward to it, however README should probably updated as well for this feature. |
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…rity Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…sages Co-authored-by: Copilot <copilot@github.com>

/, the skills should be rendered / hide corresponding to the preference settings.