vercel/ai · error · Error
Invalid ACP skill name ${JSON.stringify(skill.name)}: expect
Error message
Invalid ACP skill name ${JSON.stringify(skill.name)}: expected a kebab-case slug. What it means
Error "Invalid ACP skill name ${JSON.stringify(skill.name)}: expected a kebab-case slug." thrown in vercel/ai.
Source
Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:110
const rootDir = path.posix.join(implementationHomeDir, normalizedDirectory);
assertOutsideSessionWorkDir({ rootDir, sessionWorkDir });
return rootDir;
}
function validateACPSkills({
skills,
}: {
skills: ReadonlyArray<HarnessV1Skill>;
}): void {
const skillNames = new Set<string>();
for (const skill of skills) {
if (
!ACP_SKILL_NAME_PATTERN.test(skill.name) ||
skill.name === '.' ||
skill.name === '..'
) {
throw new Error(
`Invalid ACP skill name ${JSON.stringify(skill.name)}: expected a kebab-case slug.`,
);
}
if (skillNames.has(skill.name)) {
throw new Error(
`Duplicate ACP skill name ${JSON.stringify(skill.name)}.`,
);
}
skillNames.add(skill.name);
const filePaths = new Set<string>();
for (const file of skill.files ?? []) {
const normalizedPath = validateACPAttachedFilePath({
skillName: skill.name,
filePath: file.path,
});
if (normalizedPath === 'SKILL.md') {
throw new Error(View on GitHub (pinned to 69428b1f8b)
When it happens
Trigger: Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:110 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/cd3521e1512a2bb2.
Report an issue: GitHub.