github / github/copilot-cli

Feature request: config option to exclude skill scan locations and/or support namespaced skill names (e.g. `ck:name`)

未關閉
#2,689 0 則留言 3 個 reaction 已指派 0 人 在 GitHub 檢視
area:configuration area:plugins
主要語言
Shell
星號
11.2k
分支
1.9k
平均合併
14 小時 16 分鐘
30 天內合併 PR
6

描述

# Feature Request: Allow excluding skill scan locations and/or support namespaced skill names (e.g., `ck:name`)

## Summary

Two related quality-of-life improvements for skills loading in GitHub Copilot CLI:

1. **A config option to exclude specific skill scan directories** (e.g., `ignoredSkillsLocations`)
2. **Support for namespaced skill names containing `:` (colon)**, such as `ck:agent-browser`

---

## Problem

Copilot CLI auto-scans several hardcoded directories for skills, including `~/.claude/skills` and `~/.agents/skills`. These paths are also used by other AI tools (Claude Code, OpenCode, etc.) which have more permissive skill name validation — they accept names with colons, like `ck:agent-browser`.

When skills stored in `~/.claude/skills` use the `ck:` namespacing convention, Copilot CLI fails to load them with errors like:

```
✖ The following skills failed to load:
• ~/.claude/skills/agent-browser/SKILL.md: name: Skill name must contain only letters, numbers, hyphens, underscores, dots, and spaces
• ~/.claude/skills/code-review/SKILL.md: name: Skill name must contain only letters, numbers, hyphens, underscores, dots, and spaces
... (repeated for every skill in the directory)
```

This produces noisy errors on every Copilot CLI startup — even though the user has no intention of using those skills in Copilot CLI. The errors cannot currently be suppressed:

- `disabledSkills` in `config.json` works by skill *name*, but since these skills **fail to parse**, the name is never registered — so `disabledSkills` cannot silence the errors.
- There is no config key to exclude a directory from scanning.

---

## Proposed Solutions

### Option A — `ignoredSkillsLocations` config key (preferred)

Add a `config.json` key that lists directories to exclude from the auto-scan:

```jsonc
// ~/.copilot/config.json
{
"ignoredSkillsLocations": [
"~/.claude/skills",
"~/.agents/skills"
]
}
```

This gives users full control to opt out of auto-scanning shared directories they use for other tools.

---

### Option B — Allow `:` in skill names (namespace support)

Relax the skill name validation regex to accept colons, enabling namespaced names like `ck:agent-browser`:

**Current regex (inferred):** `^[a-zA-Z0-9\-_. ]+$`
**Proposed regex:** `^[a-zA-Z0-9\-_. :]+$`

This would allow skills shared across multiple AI tools to use a common namespacing convention without modification.

---

### Option C — Both (ideal)

Both options are complementary:
- Option A helps users who want clean separation between tool-specific skill directories.
- Option B helps users who want shared skill libraries with namespaced names to work uniformly across tools.

---

## Current Workaround

Users must either:
- Duplicate and rename skills into `~/.copilot/skills` with modified names (lossy, requires manual sync)
- Accept the noisy startup errors with no way to suppress them

---

## Environment

- Platform: macOS
- Tool: GitHub Copilot CLI
- Related auto-scanned paths: `~/.claude/skills`, `~/.agents/skills`, `~/.copilot/skills`

貢獻指南

開啟貢獻指南

研究方向

Start by tracing how config.json is read and how SKILL.md files are discovered under ~/.claude/skills, ~/.agents/skills, and ~/.copilot/skills. Check the skill-name validation involved in the reported errors. Done means the selected directories can be excluded and/or names such as ck:agent-browser no longer produce startup load errors.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
shell
領域
cli, tooling
Issue 類型
功能
難度
4/5
預估耗時
3-5 天
活躍度
冷清
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。