Feature request: config option to exclude skill scan locations and/or support namespaced skill names (e.g. `ck:name`)
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Description
# 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`
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- shell
- Domaine
- cli, tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100