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.