github / github/copilot-language-server-release

conversation/templates skips discovering user-global skills (~/.copilot/skills/) when workspaceFolders is empty

オープン
#51 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
言語のデータがありません
スター
290
フォーク
24
PR マージ指標
30日以内にマージされた PR はありません

説明

When `conversation/templates` is called with an empty `workspaceFolders` array (`"workspaceFolders": []`), the language server skips discovering user-global skills located in `~/.copilot/skills/` (and `~/.github/skills/`), returning only the 12 built-in command templates.

As soon as at least one project/workspace folder is passed in `workspaceFolders`, the discovery pipeline runs and user-global skills in `~/.copilot/skills/` are returned as expected alongside project templates.

### Background

Given user-global skills installed at `~/.copilot/skills/` (e.g., `my-sample-skill/SKILL.md`):

#### 1. Empty Workspace (`workspaceFolders: []`)
* **Request:**
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "conversation/templates",
"params": {
"workspaceFolders": []
}
}
```
* **Response:**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{ "id": "tests", "source": "builtin" },
{ "id": "simplify", "source": "builtin" },
{ "id": "fix", "source": "builtin" },
{ "id": "explain", "source": "builtin" },
{ "id": "doc", "source": "builtin" },
{ "id": "create-agent", "source": "builtin" },
{ "id": "create-skill", "source": "builtin" },
{ "id": "create-instruction", "source": "builtin" },
{ "id": "create-prompt", "source": "builtin" },
{ "id": "create-hook", "source": "builtin" },
{ "id": "feedback", "source": "builtin" },
{ "id": "help", "source": "builtin" }
]
}
```
*(Returns 12 built-in templates only; `~/.copilot/skills/` is completely omitted).*

#### 2. Non-Empty Workspace (`workspaceFolders: [{"uri": "file:///path/to/project", "name": "project"}]`)
* **Request:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "conversation/templates",
"params": {
"workspaceFolders": [
{ "uri": "file:///path/to/project", "name": "project" }
]
}
}
```
* **Response (SUCCESS):**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": [
{ "id": "tests", "source": "builtin" },
{ "id": "simplify", "source": "builtin" },
...
{
"id": "my-sample-skill",
"description": "Sample custom skill description",
"shortDescription": "Sample Skill",
"scopes": ["agent-panel"],
"source": "skill"
}
]
}
```

---

### Expected Behavior
User-global skills in `~/.copilot/skills/` are user-scoped, not project-scoped. `conversation/templates` should discover and include them unconditionally, even when the client currently has no workspace folders open (`workspaceFolders: []`).

---

### Impact
In GitHub Copilot for Eclipse (and any LSP-based editor integration), the Chat view relies directly on `conversation/templates` to populate the slash-command (`/`) completion popup and discovered skills. When a user launches Eclipse with an empty workspace (or closes all open projects), user-global skills completely disappear from Chat completion until a project is imported/opened.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start at the conversation/templates request handler and trace the discovery pipeline for an empty workspaceFolders array. Reproduce the request with user-global skills in ~/.copilot/skills/ or ~/.github/skills/, then verify that the response includes those skills alongside the 12 built-in templates when no workspace is open.

索引モデルが issue の本文から書いたものです。

評価

領域
api
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
55/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。