From bd83d2d95f5d1237d99802c48c8bbc189e280f20 Mon Sep 17 00:00:00 2001 From: dongmucat <1127093059@qq.com> Date: Tue, 28 Jul 2026 11:33:45 +0800 Subject: [PATCH] fix(cli): reject ambiguous namespace paths (#606) Signed-off-by: dongmucat <1127093059@qq.com> --- cli/src/shared/skill-name-parser.ts | 2 +- cli/test/unit/shared/skill-name-parser.test.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cli/src/shared/skill-name-parser.ts b/cli/src/shared/skill-name-parser.ts index 575f92fa..98a9a096 100644 --- a/cli/src/shared/skill-name-parser.ts +++ b/cli/src/shared/skill-name-parser.ts @@ -24,7 +24,7 @@ function parseSeparatedCoordinate( const namespace = skillName.slice(namespaceStart, separatorIndex) const slug = skillName.slice(separatorIndex + separatorLength) - if (!namespace || !slug) { + if (!namespace || !slug || slug.includes('/')) { throw invalidCoordinate(skillName) } diff --git a/cli/test/unit/shared/skill-name-parser.test.ts b/cli/test/unit/shared/skill-name-parser.test.ts index 19a22c4c..87c56f96 100644 --- a/cli/test/unit/shared/skill-name-parser.test.ts +++ b/cli/test/unit/shared/skill-name-parser.test.ts @@ -44,7 +44,10 @@ describe('parseSkillName', () => { 'team/', '/my-skill', '--my-skill', - 'team--' + 'team--', + 'team/my-skill/extra', + '@team/my-skill/extra', + 'team--my-skill/extra' ])('rejects malformed coordinate %p', (skillName) => { expectUsageError(() => parseSkillName(skillName)) })