必须严格定义输入参数结构和输出json格式,否则skill加载失败或返回乱码:① inputs中参数名须小写+下划线,type限五种基础类型,required=true时不可缺;② stdout必须为单行无换行合法json;③ 用clawhub validate校验。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在AionClaw中让自定义Skill被智能体正确调用、传参并解析结果,必须严格定义其输入参数结构和输出数据格式,否则Skill会加载失败或返回乱码。
输入参数定义:用YAML声明必需字段与类型
在Skill根目录下的skill.yaml文件中,通过inputs字段声明所有可接收参数。每个参数必须包含type和required两个键:
① type只能是string、number、boolean、array或object五种基础类型,不支持嵌套schema;
② required: true表示该参数缺失时Skill直接拒绝执行,不会fallback或默认填充;
③ 所有参数名必须为小写字母+下划线组合,例如file_path合法,filePath或File-Path将导致解析失败。
示例片段:
inputs: target_url: type: string required: true timeout_sec: type: number required: false default: 10
【注意:default仅在required: false时生效,且不能与required: true共存】
输出结果规范:标准输出必须是纯JSON字符串
AionClaw运行时只读取Skill进程的标准输出(stdout),且要求输出内容为**单行、无换行符、合法的JSON对象**。
方法一:Python脚本中用json.dumps(result, separators=(',', ':'))确保无空格无换行;
方法二:Shell脚本中用echo '{"status":"success","data":[1,2,3]}'硬编码输出,禁止用jq美化格式;
方法三:Node.js中调用process.stdout.write(JSON.stringify(result)),禁用console.log()——它会额外输出换行符,导致JSON解析失败。
如果输出含多余空格、换行、BOM头或非JSON内容(如调试print语句),AionClaw会静默丢弃整条响应,并在日志中记录Invalid output format错误。
验证是否定义正确:用clawhub validate本地检测
打开终端,进入Skill所在目录,执行:
clawhub validate
该命令会逐项检查:skill.yaml语法、inputs字段完整性、executor路径是否存在、输出JSON schema是否匹配声明的outputs(如有)。
若提示✓ Inputs validated和✓ Output contract satisfied,说明定义已达标;
若报错Missing 'outputs' declaration but executor returns non-empty JSON,需在skill.yaml中补全outputs区块,哪怕只写{}占位。











