mpdev
v0.1.0
Published
OpenClaw Marketplace CLI client
Readme
mpdev
这是一个 Node.js CLI 项目,采用 CommonJS + 自研命令分发器结构:
bin/mpdev.js:CLI 入口lib/cli-parser.js:轻量参数解析lib/api.js:零依赖 API 封装lib/commands/publish.js:发布命令
当前真正实现的是 publish 命令,已经接好以下发布链路:
createUploadsignUploadPartUrlcompleteUploadcreateAssetSemver- 失败时自动尝试
abortUpload
当前也已实现 search 命令,搜索链路为:
searchAssets- 按类型、作者、安装量、简述格式化输出
当前也已实现 install 命令,安装链路为:
getAssetlistAssetSemversgetReversionDownloadUrl- 下载归档并解压到本地 OpenClaw 目录
- 将
GetAsset(assetId)返回值写入安装目录下的.metadata.json
安装目标格式:
<type>/<assetId><type>/<assetId>@<semver>
其中 @<semver> 用来指定版本;也可以继续使用 --version <semver>。
运行要求
- Node.js
>=18.0.0 - 零运行时依赖
凭证
默认读取:
- macOS / Linux:
~/.openclaw/hub-credentials.json - Windows:
%USERPROFILE%\\.openclaw\\hub-credentials.json
文件最少需要:
{
"token": "your-credential-token"
}请求头约定:
Authorization: Bearer <credential token>:受保护接口必需;search可匿名调用X-Request-ID:自动生成,也可通过--request-id显式指定Cli-Version:自动带当前 package 版本
用法
npm install -g mpdev
mpdev publish /path/to/asset示例:
mpdev publish ./my-skill \
--type skill \
--category productivity \
--tags agent,automation \
--version 1.0.0 \
--yes更新已有资产版本:
mpdev publish ./my-skill --version 1.0.1 --yes如果目录根部已存在 .assetid,会自动把该值透传为 assetId;也可显式传入 --asset-id <id>。
只做本地校验和打包:
mpdev publish ./my-skill --dry-run安装示例:
mpdev install skill/7c19dc4c3244418096f1dcb59c93f795
mpdev install skill/[email protected]搜索示例:
mpdev search 天气 --page-size 10命令结构
入口采用懒加载:
publishsearchinstalluninstalllist
其中当前可用的是 publish、search、install。
发布命令参数
--type <skill|experience|plugin|trigger|channel>--asset-id <id>:未传时会尝试读取目录根部.assetid--name <slug>--display-name <name>--description <text>--version <semver>--category <category>--tags <a,b,c>--tag <value>:可重复--long-description <text>--base-url <url>--token-file <path>--part-size-mb <number>--ttl-seconds <number>--request-id <id>--dry-run--yes, -y--verbose
目录发布打包规则
- 目录发布会默认跳过
.git、node_modules、__MACOSX、.DS_Store、Thumbs.db - 根目录可通过
.openclawmpignore补充忽略规则,也会读取根目录.gitignore/.npmignore的常见规则 - 子路径遇到无权限读取的目录或文件时会自动跳过;使用
--verbose可查看具体跳过项
Metadata 提取规则
- 优先级:CLI 显式参数 >
.metadata.json>README.md>package.json>openclaw.plugin.json>SKILL.md .metadata.json存在时会优先使用,适合显式固定type、name、displayName、description、version、category、tags、longDescriptionSKILL.md的name、display-name、description、version、tags只从 frontmatter(---到---)提取,不会把正文内容混进descriptionREADME.md支持 YAML frontmatter 和前置key: value形式字段提取name、display-name、description、version、type、category、tagstrigger/experience会把 README 标题后的第一段作为描述兜底- 发布必填规则:
assetType、name、displayName、semver version必须是严格的x.x.x形式,例如1.2.1、1.1.10assetId为可选字段;有就透传,没有就省略,由后端判断是新建还是已有资产发新版objectId由上传完成后自动生成,登录态始终必需- 调用发布接口前会打印
CreateAssetSemver请求预览;真正发网请求前会打印对应 request body
默认配置来源
baseUrl 优先级:
--base-urlOPENCLAWMP_API_BASE_URLOPENCLAWMP_BASE_URLAPI_BASE_URLNEXT_PUBLIC_API_BASE_URL- 仓库根目录
.env.local/.env/.env.prod https://seafood.c.stepfun-inc.net
