{"record":{"id":"671fe3d50b914d1f","repo":"OpenBMB/ChatDev","slug":"skill-name-is-required-671fe3","errorCode":null,"errorMessage":"skill_name is required","messagePattern":"skill_name is required","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"runtime/node/executor/agent_executor.py","lineNumber":891,"sourceCode":"                \"Follow its instructions for the current task until they are completed or no longer relevant.\\n\\n\"\n                f\"{instructions}{tool_constraint}\"\n            ),\n            metadata={\"source\": node_id, \"skill_name\": skill_name, \"skill_activation\": True},\n        )\n\n    def _execute_skill_tool(\n        self,\n        tool_name: str,\n        arguments: Dict[str, Any],\n        skill_manager: AgentSkillManager | None,\n    ) -> Dict[str, Any]:\n        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:","sourceCodeStart":873,"sourceCodeEnd":909,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/node/executor/agent_executor.py#L873-L909","documentation":"The model called activate_skill with an empty or missing skill_name argument. The executor strips and validates the argument before forwarding to AgentSkillManager.activate_skill.","triggerScenarios":"Tool call to activate_skill whose arguments dict lacks 'skill_name' or contains only whitespace.","commonSituations":"Weak model emitting malformed tool arguments; prompt template that fails to fill a skill name placeholder; hand-crafted test payloads omitting the field.","solutions":["Ensure the tool-call arguments include a non-empty skill_name","Improve the tool description/example so the model supplies the parameter","Wrap execution and feed the error message back to the model to retry with corrected arguments"],"exampleFix":"# before\narguments = {}\nskill_manager.activate_skill(...)\n\n# after\narguments = {\"skill_name\": \"my-skill\"}","handlingStrategy":"validation","validationCode":"name = str(args.get('skill_name', '')).strip()\nif not name:\n    return {'error': 'skill_name is required'}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Mark skill_name required in the tool JSON schema","Return argument errors as tool output so the model self-corrects"],"tags":["skills","tool-arguments","validation"],"backgroundTag":"missing-required-parameter","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}