github / github/copilot-cli

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

Open
#2,689 0 comments 3 reactions 0 assignees View on GitHub
area:configuration area:plugins
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
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`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.