{"record":{"id":"43092b8b2bc4c603","repo":"OpenBMB/ChatDev","slug":"unsupported-skill-tool-tool-name","errorCode":null,"errorMessage":"Unsupported skill tool '{tool_name}'","messagePattern":"Unsupported skill tool '(.+?)'","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"runtime/node/executor/agent_executor.py","lineNumber":903,"sourceCode":"        if skill_manager is None:\n            raise ValueError(\"Agent Skills are not enabled for this node\")\n\n        if tool_name == \"activate_skill\":\n            skill_name = str(arguments.get(\"skill_name\", \"\")).strip()\n            if not skill_name:\n                raise ValueError(\"skill_name is required\")\n            return skill_manager.activate_skill(skill_name)\n\n        if tool_name == \"read_skill_file\":\n            skill_name = str(arguments.get(\"skill_name\", \"\")).strip()\n            relative_path = str(arguments.get(\"relative_path\", \"\")).strip()\n            if not skill_name:\n                raise ValueError(\"skill_name is required\")\n            if not relative_path:\n                raise ValueError(\"relative_path is required\")\n            return skill_manager.read_skill_file(skill_name, relative_path)\n\n        raise ValueError(f\"Unsupported skill tool '{tool_name}'\")\n\n    def _build_function_call_output_event(\n        self,\n        tool_call: ToolCallPayload,\n        result: Any,\n    ) -> FunctionCallOutputEvent:\n        call_id = tool_call.id or tool_call.function_name or \"tool_call\"\n        blocks = self._coerce_tool_result_to_blocks(result)\n        if blocks:\n            return FunctionCallOutputEvent(\n                call_id=call_id,\n                function_name=tool_call.function_name,\n                output_blocks=blocks,\n            )\n        return FunctionCallOutputEvent(\n            call_id=call_id,\n            function_name=tool_call.function_name,\n            output_text=self._stringify_tool_result(result),","sourceCodeStart":885,"sourceCodeEnd":921,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/node/executor/agent_executor.py#L885-L921","documentation":"A tool call was routed to the skill-tool dispatcher but tool_name is neither 'activate_skill' nor 'read_skill_file'. The dispatcher raises rather than guessing a handler.","triggerScenarios":"Internal routing sends a tool name starting with/associated to skill tools but not matching the two known names, e.g. a new skill tool added by a caller without extending the dispatcher.","commonSituations":"Extending the skill tool set without updating _execute_skill_tool; version mismatch where a newer manager advertises a tool the executor build doesn't handle; misconfigured tool routing prefix.","solutions":["Use only activate_skill and read_skill_file as skill tool names","If you added a custom skill tool, dispatch it in your own handler instead of the skill dispatcher","Align executor and skill-manager versions so advertised tools match supported ones"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"SKILL_TOOLS = {'activate_skill', 'read_skill_file'}\nassert tool_name in SKILL_TOOLS","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin executor and skill-manager versions together","Never route custom tools into the skill dispatcher"],"tags":["skills","tool-dispatch","unsupported-operation"],"backgroundTag":"unsupported-tool-name","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}