tinyhumansai/openhuman · error · anyhow::Error
create_skill: invalid params: {e}
Error message
create_skill: invalid params: {e} What it means
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.
Source
Thrown at src/openhuman/skills/tools.rs:586
"scope": { "type": "string", "enum": ["user", "project"], "description": "Install scope (default user)." },
"license": { "type": "string" },
"author": { "type": "string" },
"tags": { "type": "array", "items": { "type": "string" } },
"allowed_tools": { "type": "array", "items": { "type": "string" } },
"inputs": { "type": "array", "items": { "type": "object" } }
},
"required": ["name", "description"]
})
}
fn permission_level(&self) -> PermissionLevel {
PermissionLevel::Write
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
log::debug!("[tool][skills] create invoked");
let params: CreateWorkflowParams = serde_json::from_value(args)
.map_err(|e| anyhow::anyhow!("create_skill: invalid params: {e}"))?;
let skill = create_workflow(&self.workspace_dir, params)
.map_err(|e| anyhow::anyhow!("create_skill: {e}"))?;
Ok(ToolResult::success(serde_json::to_string(&skill)?))
}
}
/// Install a skill from a remote URL. **Fetches + writes** — default-OFF.
pub struct WorkflowInstallFromUrlTool {
workspace_dir: PathBuf,
}
impl WorkflowInstallFromUrlTool {
pub fn new(config: Arc<Config>) -> Self {
Self {
workspace_dir: config.workspace_dir.clone(),
}
}
}View on GitHub (pinned to 7491200858)
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
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/skills/tools.rs:586 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/9a43abb37265a7f0.
Report an issue: GitHub.