OpenBMB/ChatDev · error · ValueError

skill_name is required

Error message

skill_name is required

What it means

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.

Source

Thrown at runtime/node/executor/agent_executor.py:891

                "Follow its instructions for the current task until they are completed or no longer relevant.\n\n"
                f"{instructions}{tool_constraint}"
            ),
            metadata={"source": node_id, "skill_name": skill_name, "skill_activation": True},
        )

    def _execute_skill_tool(
        self,
        tool_name: str,
        arguments: Dict[str, Any],
        skill_manager: AgentSkillManager | None,
    ) -> Dict[str, Any]:
        if skill_manager is None:
            raise ValueError("Agent Skills are not enabled for this node")

        if tool_name == "activate_skill":
            skill_name = str(arguments.get("skill_name", "")).strip()
            if not skill_name:
                raise ValueError("skill_name is required")
            return skill_manager.activate_skill(skill_name)

        if tool_name == "read_skill_file":
            skill_name = str(arguments.get("skill_name", "")).strip()
            relative_path = str(arguments.get("relative_path", "")).strip()
            if not skill_name:
                raise ValueError("skill_name is required")
            if not relative_path:
                raise ValueError("relative_path is required")
            return skill_manager.read_skill_file(skill_name, relative_path)

        raise ValueError(f"Unsupported skill tool '{tool_name}'")

    def _build_function_call_output_event(
        self,
        tool_call: ToolCallPayload,
        result: Any,
    ) -> FunctionCallOutputEvent:

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Ensure the tool-call arguments include a non-empty skill_name
  2. Improve the tool description/example so the model supplies the parameter
  3. Wrap execution and feed the error message back to the model to retry with corrected arguments

Example fix

# before
arguments = {}
skill_manager.activate_skill(...)

# after
arguments = {"skill_name": "my-skill"}
Defensive patterns

Strategy: validation

Validate before calling

name = str(args.get('skill_name', '')).strip()
if not name:
    return {'error': 'skill_name is required'}

Prevention

When it happens

Trigger: Tool call to activate_skill whose arguments dict lacks 'skill_name' or contains only whitespace.

Common situations: Weak model emitting malformed tool arguments; prompt template that fails to fill a skill name placeholder; hand-crafted test payloads omitting the field.

Understand the failure class

Background: Missing required parameter errors: what 'X is required' and 'the required X param is missing' mean, and how to fix them — this error's family across 27 libraries.

Related errors


AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27). Data as JSON: /api/errors/671fe3d50b914d1f. Report an issue: GitHub.