You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Allow dot-namespaced skill names (#92)
Extend the ValidateName regex from `^[a-z0-9]+(-[a-z0-9]+)*$` to
`^[a-z0-9]+([.-][a-z0-9]+)*$`, accepting dots as a segment separator
with the same shape rules as hyphens. Names like `myorg.bootstrap` and
`codebase-intelligence.scan` are now valid; `.bootstrap`,
`myorg..bootstrap`, `bootstrap.`, and `myorg.-foo` are still rejected.
The new regex is a strict superset of the old one — every previously
valid name remains valid. No migration required, no JSON shape change.
Why: skill installers use dot-namespacing to mark ownership (e.g.
`myorg.*`). Platforms that derive slash commands from directory names
(GitHub Copilot maps `.copilot/skills/<dir>/` to `/<dir>`) lose the
namespace if installers must strip dots before registering. The
declared `name:` in `SKILL.md`, the registered directory, and the
downstream slash command can now all stay in sync.
- internal/skill/skill.go: regex + error message
- internal/skill/skill_test.go: positive cases (dotted, mixed) and
negative cases (consecutive dots, leading/trailing dot, dot adjacent
to hyphen)
- AGENTS.md, docs/writing-skills.md, docs/concepts/skill-format.md,
docs/reference/validation.md: regex string + note on dot semantics
- CHANGELOG.md: Unreleased entry
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Add e2e regression test for dot-namespaced skill name (#92)
Cover the full create -> validate -> install -> uninstall -> remove
lifecycle with `myorg.bootstrap` so the literal dot in the on-disk
directory name is exercised across the registry and an installed
platform. The CI Windows matrix picks this up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -226,7 +226,7 @@ Key points:
226
226
227
227
### Skill Name Validation
228
228
229
-
Names must match `^[a-z0-9]+(-[a-z0-9]+)*$` and be 1-64 characters.
229
+
Names must match `^[a-z0-9]+([.-][a-z0-9]+)*$` and be 1-64 characters. Dots and hyphens are both valid segment separators; dots enable namespace-style names (e.g. `myorg.bootstrap`).
Copy file name to clipboardExpand all lines: docs/concepts/skill-format.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,7 +46,7 @@ The main technique or pattern (before/after for techniques).
46
46
47
47
| Field | Required | Description |
48
48
|-------|----------|-------------|
49
-
|`name`| Yes | Skill name matching `[a-z0-9]+(-[a-z0-9]+)*`, 1-64 chars. Must equal the directory name. |
49
+
|`name`| Yes | Skill name matching `[a-z0-9]+([.-][a-z0-9]+)*`, 1-64 chars. Hyphens and dots are both valid separators (`code-review`, `myorg.bootstrap`). Must equal the directory name. |
50
50
|`description`| Yes | What the skill does — start with "Use when…". Max 1024 chars. |
51
51
|`tags`| No | List of classification tags |
52
52
|`allowed-tools`| No | Tools the skill may use. No empty entries. |
Copy file name to clipboardExpand all lines: docs/reference/validation.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,9 +18,9 @@ The summary line counts each separately, e.g. `Skill "x" has 1 error(s), 0 warni
18
18
19
19
### Name Format
20
20
21
-
Skill names must match `[a-z0-9]+(-[a-z0-9]+)*` and be 1–64 characters.
21
+
Skill names must match `[a-z0-9]+([.-][a-z0-9]+)*` and be 1–64 characters. Lowercase alphanumeric segments are joined by hyphens or dots; dots enable namespace-style names used by skill installers.
Copy file name to clipboardExpand all lines: docs/writing-skills.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,7 +56,7 @@ description: |
56
56
- Prefer verb-first active voice: `creating-skills`not `skill-creation`
57
57
- Be specific: `condition-based-waiting`not `async-test-helpers`
58
58
59
-
Names must match `^[a-z0-9]+(-[a-z0-9]+)*$` and be 1-64 characters.
59
+
Names must match `^[a-z0-9]+([.-][a-z0-9]+)*$` and be 1-64 characters. Hyphens are the conventional separator (`code-review`); dots are also accepted for namespace-style names used by skill installers (`myorg.bootstrap`).
0 commit comments