vercel/ai · error · Error
Cline did not create its native skills tool.
Error message
Cline did not create its native skills tool.
What it means
createClineSkillsRuntime builds a tool set from Cline's createNativeTools (with enableSkills: true) and expects a tool literally named 'skills'. If the native tool factory returns no such tool — e.g. the Cline version bundled lacks the skills tool or the factory behavior changed — this plain Error is thrown as an internal invariant failure. It indicates an incompatibility between the harness package and the Cline runtime, not bad user input.
Source
Thrown at packages/harness-cline/src/cline-skills.ts:76
name: skill.name,
description: skill.description,
disabled: false,
}));
const tool = createDefaultTools({
executors: { skills: executor },
enableReadFiles: false,
enableSearch: false,
enableBash: false,
enableWebFetch: false,
enableApplyPatch: false,
enableEditor: false,
enableSkills: true,
enableAskQuestion: false,
enableSubmitAndExit: false,
}).find(tool => tool.name === 'skills');
if (tool == null) {
throw new Error('Cline did not create its native skills tool.');
}
return { signature, tool };
}
function projectClineSkills({
skills,
}: {
skills: ReadonlyArray<HarnessV1Skill>;
}): ReadonlyArray<ProjectedClineSkill> {
const names = new Set<string>();
const ids = new Set<string>();
return skills
.map(skill => {
if (
!CLINE_SKILL_NAME_PATTERN.test(skill.name) ||
skill.name === '.' ||
skill.name === '..'View on GitHub (pinned to 69428b1f8b)
Solutions
- Align the @ai-sdk/harness-cline package version with the installed Cline runtime/extension version (upgrade or pin both).
- Remove or empty the skills option on turn calls to avoid creating the skills runtime until versions are compatible.
- Inspect the tool list returned by Cline's createNativeTools in your installed version to confirm the 'skills' tool name; if it was renamed, report/patch the harness mapping.
Example fix
// before
await session.prompt({ text, skills: [mySkill] }); // runtime without native skills tool
// after
await session.prompt({ text }); // omit skills, or upgrade the Cline runtime that provides the 'skills' native tool Defensive patterns
Strategy: try-catch
Validate before calling
// Precheck your Cline runtime exposes the skills tool
import { createNativeTools } from '<cline-runtime>';
const hasSkillsTool = createNativeTools({ enableEditor: false, enableSkills: true, enableAskQuestion: false, enableSubmitAndExit: false })
.some(t => t.name === 'skills');
if (!hasSkillsTool) skills = undefined; // omit skills option for this turn Try / catch
try {
await session.prompt({ text, skills });
} catch (e) {
if (e instanceof Error && e.message === 'Cline did not create its native skills tool.') {
await session.prompt({ text }); // retry without skills; also flag runtime/version mismatch
} else throw e;
} Prevention
- Pin matching versions of @ai-sdk/harness-cline and the Cline runtime; check the changelog for native tool renames.
- Smoke-test skills support (probe createNativeTools for the 'skills' entry) at startup before advertising the feature.
- Make the skills option opt-in per environment where the Cline build is known to include skills support.
When it happens
Trigger: Starting a Cline turn with skills supplied (turnOpts.skills non-empty), where createNativeTools({ enableSkills: true, ... }) returns a tool list without an entry named 'skills'.
Common situations: Version mismatch: the Cline runtime/extension was updated or downgraded and its native tool names changed; a patched or custom Cline build that omits the skills tool; passing skills on a runtime where skills support was removed.
Related errors
- Invalid Cline skill name: ${skill.name}
- maxEmbeddingsPerCall must be greater than 0
- maxInputBytesPerCall must be greater than 0
- No image generated.
- No object generated: the model did not return a response.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/800238c20cd48981.
Report an issue: GitHub.