描述一次公司 API,你的 agent 就能生成 命令行 和 agent skill——鉴权、统一输出、类型化错误、渐进式披露全都有。 无需学习框架,无需手写样板。
从「这是我的 API」到「所有 agent 都能调用」,三步完成。
直接让 agent 安装内置的 agent-cli-builder skill——告诉它「帮我安装这个 skill:github.com/renxqoo/agent-cli-sdk/tree/main/skills/agent-cli-builder」。它教 agent 生成 CLI,而不只是会读 CLI。
把 API 规范交给 agent——OpenAPI、一个 cURL 示例,或一段大白话。它用 defineCommand 声明写出约 20 行的命令代码。
skills gen 写出 SKILL.md;skills sync 把它分发到 Claude、Codex 及所有其他 agent 目录。
同一条命令既是人类 CLI 又是 agent skill——单一来源,永不漂移。
import { defineCliApp, defineCommand } from "@renxqoo/agent-cli-sdk";
import * as z from "zod";
const app = await defineCliApp({
name: "acme",
binName: "acme",
baseUrl: "https://api.acme.com",
commands: {
orders: defineCommand({
name: "orders",
description: "List orders",
args: { schema: z.object({ limit: z.coerce.number().default(20) }) },
async run(ctx, args) {
const res = await ctx.get("/orders", { limit: args.limit });
return { data: res.data, meta: { count: res.data.length } };
},
}),
},
});
人类运行 acme orders list | jq。
Agent 读取 skills/acme/SKILL.md,用同样的方式调用。
可靠地调用 API——开箱即用。
成功是 stdout 上的 {ok, data, meta};其余一切都在 stderr。可 | jq 组合。
校验、鉴权、网络、未找到、策略……各自映射到一个 exit code,agent 可据此分支。
设备码流程、PKCE、client-credentials,带 401 自动续期——一行配置搞定。
SKILL.md 自动生成并同步;agent 按需懒加载,未用到的 API 零 token 开销。
一份 schema 同时驱动校验、类型、帮助与 --input-schema。没有第二套协议。
Vite 式 apply + provides + 生命周期钩子。鉴权和安装器本身也只是插件。