{"record":{"id":"9a43abb37265a7f0","repo":"tinyhumansai/openhuman","slug":"create-skill-invalid-params-e","errorCode":null,"errorMessage":"create_skill: invalid params: {e}","messagePattern":"create_skill: invalid params: (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/skills/tools.rs","lineNumber":586,"sourceCode":"                \"scope\": { \"type\": \"string\", \"enum\": [\"user\", \"project\"], \"description\": \"Install scope (default user).\" },\n                \"license\": { \"type\": \"string\" },\n                \"author\": { \"type\": \"string\" },\n                \"tags\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n                \"allowed_tools\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n                \"inputs\": { \"type\": \"array\", \"items\": { \"type\": \"object\" } }\n            },\n            \"required\": [\"name\", \"description\"]\n        })\n    }\n\n    fn permission_level(&self) -> PermissionLevel {\n        PermissionLevel::Write\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        log::debug!(\"[tool][skills] create invoked\");\n        let params: CreateWorkflowParams = serde_json::from_value(args)\n            .map_err(|e| anyhow::anyhow!(\"create_skill: invalid params: {e}\"))?;\n        let skill = create_workflow(&self.workspace_dir, params)\n            .map_err(|e| anyhow::anyhow!(\"create_skill: {e}\"))?;\n        Ok(ToolResult::success(serde_json::to_string(&skill)?))\n    }\n}\n\n/// Install a skill from a remote URL. **Fetches + writes** — default-OFF.\npub struct WorkflowInstallFromUrlTool {\n    workspace_dir: PathBuf,\n}\n\nimpl WorkflowInstallFromUrlTool {\n    pub fn new(config: Arc<Config>) -> Self {\n        Self {\n            workspace_dir: config.workspace_dir.clone(),\n        }\n    }\n}","sourceCodeStart":568,"sourceCodeEnd":604,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/skills/tools.rs#L568-L604","documentation":"create_skill failed to deserialize its tool arguments into the CreateSkill params struct: a required field (name or description) is missing, or an optional field (scope, tags, allowed_tools, inputs, ...) has the wrong JSON type. This is the params-parse guard, fired before any skill is written.","triggerScenarios":"Thrown at src/openhuman/skills/tools.rs:586 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the serde error {e}: it names the offending field and the expected type","Supply both required fields 'name' and 'description' as strings","Use the documented shapes: scope is 'user'|'project', tags/allowed_tools are string arrays, inputs is an array of objects"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}