Fission-AI/OpenSpec · error
Unknown tool '${toolId}'. Valid tools: ${validToolIds.join
Error message
Unknown tool '${toolId}'. Valid tools:
${validToolIds.join('\n ')} What it means
Error "Unknown tool '${toolId}'. Valid tools: ${validToolIds.join('\n ')}" thrown in Fission-AI/OpenSpec.
Source
Thrown at src/core/init.ts:808
return index === firstSharedIndex && sharedTargetOwner ? [sharedTargetOwner] : [];
})
: toolIds;
if (
reconciledToolIds.length !== toolIds.length ||
reconciledToolIds.some((toolId, index) => toolId !== toolIds[index])
) {
console.log(
chalk.dim(
`Codex, Zed, and agents share .agents/skills; writing one tree for ${sharedTargetOwner}.`
)
);
}
for (const toolId of reconciledToolIds) {
const tool = AI_TOOLS.find((t) => t.value === toolId);
if (!tool) {
const validToolIds = getToolsWithSkillsDir();
throw new Error(
`Unknown tool '${toolId}'. Valid tools:\n ${validToolIds.join('\n ')}`
);
}
if (!toolSupportsSkills(tool)) {
const validToolsWithSkills = getToolsWithSkillsDir();
throw new Error(
`Tool '${toolId}' does not support skill generation.\nTools with skill generation support:\n ${validToolsWithSkills.join('\n ')}`
);
}
const preState = toolStates.get(tool.value);
const skillsPath = resolveToolSkillsDir(projectPath, tool);
const isGlobalSkillTarget = hasGlobalSkillTarget(tool);
validatedTools.push({
value: tool.value,
name: tool.name,
skillsDir: tool.skillsDir,View on GitHub (pinned to 6926ccb18a)
When it happens
Trigger: Thrown at src/core/init.ts:808 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25).
Data as JSON: /api/errors/590bfc379d975d67.
Report an issue: GitHub.