ziniao-open/skills

ziniao-shared

紫鸟 CLI ?

All-time #2715 Trending #3055 Hot #3654 First seen Jun 10, 2026
8-week activity · all time api

Installation

$ npx skills add ziniao-open/skills --skill ziniao-shared

Summary

紫鸟 CLI 共享基础:应用配置初始化、ZClaw 客户端与 Bridge 就绪、统一 apiKey 认证、错误处理、输出格式和安全规则。当用户需要首次使用 ziniao-cli、配置 API Key、启动紫鸟客户端、登录 ZClaw 或排查认证/Bridge 问题时触发。

Also in this package

Other skills from ziniao-open/skills · top by installs.

npx skills add ziniao-open/skills

Browse all from ziniao-open/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 5
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
More metadata
requires
{"bins":["ziniao-cli"]}

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 22,625 B
  • docs SUMMARY.md 310 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 5,116 installs

SKILL.md

ziniao-cli 共享规则

本技能指导你如何通过 ziniao-cli 操作紫鸟开放平台资源和控制紫鸟浏览器,以及有哪些注意事项。

配置初始化

首次使用需运行 ziniao-cli config init 完成应用配置。

初始化模式

命令 场景 行为
ziniao-cli config init --new AI Agent(推荐) 直接进入新建应用流程,输出浏览器链接后轮询等待
ziniao-cli config init 人类用户交互 菜单选择:[1] 新建应用 [2] 手动输入 Key
ziniao-cli config init --api-key-stdin CI/CD 管道 从 stdin 读取已有 API Key
ziniao-cli config init --api-key-stdin --member 成员账号 CI 跳过企业信息获取,仅用于控制浏览器
ziniao-cli config init --profile <name> 多账号 指定 profile 名称(不传则自动命名)

AI Agent 初始化流程

使用 background 方式执行以下命令,启动后读取 stderr 输出,从中提取浏览器链接并展示给用户:

# 直接进入新建应用流程(该命令会阻塞直到审核通过、被拒绝或超时 1 小时)
ziniao-cli config init --new

输出示例(Boss 账号):

请在浏览器中打开以下链接完成应用创建:

  https://open.ziniao.com/memberAuth?cliRequestId=a1b2c3d4-...&from=cli

⏳ 等待应用创建及审核... (按 Ctrl+C 取消)
⏳ 等待中... 已等待 30s
✓ 审核已通过
⏳ 正在获取企业信息...
✓ 企业 ID: 15393571083459
✓ 配置已保存

输出示例(成员账号):

...
✓ 审核已通过
✓ 成员账号,跳过企业信息获取
✓ 配置已保存

Agent 应该:

  1. 后台执行 config init --new
  2. 从输出中提取 URL(包含 memberAuth?cliRequestId= 的行)
  3. 将链接展示给用户,提示在浏览器中打开完成应用创建
  4. 等待命令完成(审核通过/拒绝/超时)
  5. 如果审核被拒绝,告知用户联系 Boss 审批

apiKey 加密后写入本地。沙箱/容器可直接使用,无需系统钥匙串。

Boss 与成员账号

初始化时服务端返回 isBoss 标识,决定账号权限范围:

账号类型 服务端 API ZClaw Bridge(本地浏览器)
Boss ✓ 全部可用 ✓ 全部可用
成员 ✗ 不可用(返回 auth 错误) ✓ 全部可用

服务端 API 权限仅 Boss 账号可申请和调用。成员账号不能开通这些权限点,也不存储 companyId;所有通过 api 命令或服务端快捷命令(account/staff/department/role/device)的请求会被拦截并提示"需要 Boss 权限"。

检查配置

ziniao-cli config show   # 查看当前配置(含 profile 名称)
ziniao-cli config list   # 列出所有 profile
ziniao-cli doctor         # 全面自检(配置 + apiKey + 网络 + ZClaw Bridge)

ZClaw 客户端与 Bridge 就绪

ZClaw 本地浏览器操作依赖紫鸟客户端和本地 Bridge。本次任务首次执行店铺或页面命令前,先运行以下命令检查环境:

登录命令硬约束

本节所有“登录”“自动登录”“先登录”都只表示逐字执行 ziniao-cli zclaw login。不存在可替代的 ziniao-cli login,也不得省略 zclaw。在输出或执行登录步骤前先核对完整命令。

ziniao-cli doctor

如果 doctor 各项明细确认配置、API Key、服务端连通性、Bridge 连通且客户端账号与当前 profile 一致,直接执行原店铺或页面命令;不要只依据最后的汇总文字。一次任务内已经检查通过且认证、profile 和客户端状态未变化时,不要为每个后续命令重复检查。

doctor 的客户端明细明确显示“紫鸟客户端已启动,但尚未登录”或 [CLIENTLOGGEDOUT],且 Bridge 已连通、没有 API Key、终端绑定或账号不一致错误时,这已经是确定的未登录状态。未登录恢复命令固定且只能是 ziniao-cli zclaw loginziniao-cli login 不是有效命令,不得缩写或替换。必须在任何 storepage 业务命令之前按以下顺序执行:

ziniao-cli zclaw login
ziniao-cli doctor
# 仅当 doctor 明细全部通过时,执行一次原业务命令

禁止先调用 store liststore resolvestore openpage 命令来再次探测登录状态,即使 doctor 退出码为 0 或 Bridge 显示正常也不例外。登录失败或复查仍未通过时立即停止并报告实际错误。

仅当 doctor 的客户端检查明确显示“紫鸟客户端未启动或本地服务未就绪”时,才可尝试启动客户端。调用前按当前 Shell选择一种命令检查 ziniao 是否可解析,不得把某一种检测命令用于所有平台,也不得依次执行多种检测命令:

当前 Shell 命令检测
Windows PowerShell Get-Command ziniao -ErrorAction SilentlyContinue
Windows CMD where.exe ziniao
macOS/Linux Bash、Zsh、sh,或 Windows Git Bash command -v ziniao

若当前 Shell 找不到 ziniao,不得调用或重试 ziniao start。macOS 例外:如果 /Applications/ziniao.app 存在,可执行一次 open -a "/Applications/ziniao.app" 启动桌面客户端,然后重新运行 ziniao-cli doctor;不得把 open 当作 Bridge 就绪证明。其他平台提示用户手动启动紫鸟客户端,用户完成后重新运行 ziniao-cli doctor。只有找到 ziniao 命令时,才执行一次:

ziniao start
ziniao-cli doctor

ziniao start 只用于启动或唤起单实例紫鸟客户端,不能修复 API Key、终端绑定、账号不一致或登录会话问题。Bridge 可能在客户端启动后才就绪;启动后可短间隔重新运行 doctor,总等待时间最多 30 秒。若 ziniao start 返回 Windows 错误 1113 或其他启动错误,或命令成功返回但 macOS 上 doctor 仍明确显示客户端未启动,可在 /Applications/ziniao.app 存在时额外执行一次 open -a "/Applications/ziniao.app",随后重新运行 doctor;不得再次重试 ziniao start。仍未通过则报告启动错误和 doctor 明细后停止。

如果 ZClaw Bridge 暂时不可连接,不要再次执行 ziniao start,也不要执行 zclaw login;只短间隔重新运行 doctor,总等待时间最多 30 秒,仍未恢复则停止并报告。即使同一次 doctor 还显示客户端未登录,也必须先等 Bridge 恢复。Bridge 恢复后的下一步只能是读取最新一次 doctor 明细并重新分流:仍未登录才执行 ziniao-cli zclaw login,全部通过才执行原业务命令;禁止在复查前预先执行或承诺执行 store open。不要把启动或登录当作状态探测。

独立的运行中会话失效分支:如果此前 doctor 明细已经通过,但原始 storepage 或其他 ZClaw 本地命令随后明确返回 Ziniao user is not logged in,下一条命令必须逐字为:

ziniao-cli zclaw login

这里同样只能使用完整命令 ziniao-cli zclaw login,不得写成不存在的 ziniao-cli login。登录成功后,使用相同参数只重试刚才失败的原命令一次;不要为了这次恢复额外执行 doctor。不得在尚未尝试 zclaw login 前要求用户手工登录。

zclaw login 失败,直接报告其实际错误。API Key 无效或被拒绝、终端未绑定、账号不一致,或 Bridge 不可连接时,必须立即停止,禁止重复登录、重复发送店铺请求,或笼统要求用户“先登录客户端”。只有原始错误不是该精确未登录错误、或登录命令本身无法恢复时,才按对应原因要求用户处理前置条件。

只有 doctor 显示配置、API Key、服务端连通性、ZClaw Bridge 和客户端账号一致时,才继续浏览器操作:

  • 店铺窗口操作使用 ziniao-store Skill。
  • 页面浏览器自动化使用 ziniao-page Skill。
  • 查询可用 Bridge 工具使用 ziniao-cli zclaw tools;仅在没有快捷命令或用户明确要求调试原始工具时,才使用 ziniao-cli zclaw invoke <tool>
现象 处理
config init --new 提示客户端未登录 启动并登录紫鸟客户端,再重新执行初始化。
doctor 提示客户端未启动或本地服务未就绪 按当前 Shell 使用 PowerShell Get-Command、CMD where.exe 或 POSIX/Git Bash command -v 检测;找到命令才执行一次 ziniao start。若 macOS 上 ziniao start 失败或执行后仍未启动,且存在 /Applications/ziniao.app,可再执行一次 open -a "/Applications/ziniao.app",随后重新运行 doctor;若 macOS 找不到命令但应用存在,也直接使用一次 open;其他情况提示用户手动启动。
doctor 明确显示客户端已启动但未登录,且 Bridge 已连通 直接执行一次 ziniao-cli zclaw login,不得先发店铺或页面命令探测;登录后重新运行 doctor,明细全部通过后才执行原业务命令。
127.0.0.1:9481 暂不可连接(无论客户端是否同时显示未登录) 不启动、不登录;短间隔重新运行 doctor,最多等待 30 秒。Bridge 恢复后再按最新客户端明细分流。
ziniao start 返回 Windows 错误 1113 或其他启动错误 不重试启动;立即重新运行一次 doctor,明细通过则继续,否则同时报告启动错误和 doctor 明细后停止。
zclaw login 提示无法连接 ZClaw Bridge 不把登录当作启动探测;回到 doctor 判断 9481 不可连接的具体原因。
API Key 无效或未配置 使用正确的 Key 重新执行 ziniao-cli config init,或重新运行 ziniao-cli config init --new
初始化后 ZClaw 仍提示 API Key 认证失败 前往 https://open.ziniao.com 的用户应用「终端管理」,绑定当前终端识别码(在紫鸟浏览器设置中查看),然后重新执行 ziniao-cli zclaw loginziniao-cli doctor
doctor 提示客户端登录用户与当前 profile 不一致 明确说明当前 profile 与客户端登录账号及其不一致,询问用户是否切换到当前 profile 对应账号并继续原请求;不要只要求用户手工切换。用户确认后按既有登录流程继续。

多账号切换

支持多个账号配置(profile),通过 config use 切换:

# 列出所有 profile
ziniao-cli config list
# * zhangsan
#   staging

# 切换到指定 profile
ziniao-cli config use staging

# 重命名 profile
ziniao-cli config rename staging production

初始化时通过 --profile 指定名称,浏览器创建流程会自动用账号用户名命名。

删除配置

删除操作会弹出确认提示,--yes 可跳过:

ziniao-cli config remove              # 删除当前 profile(需确认)
ziniao-cli config remove --profile staging  # 删除指定 profile(需确认)
ziniao-cli config remove --yes        # 跳过确认直接删除

认证

认证模型

ziniao-cli 使用统一 apiKey(Bearer Token),一个 Key 同时用于:

用途 地址 说明
服务端 API sbappstoreapi.ziniao.com 部门/员工/账号/设备等业务接口
本地 ZClaw Bridge 127.0.0.1:9481 紫鸟浏览器店铺/页面操控

没有 OAuth、token 刷新、双身份(user/bot)等复杂机制。apiKey 是静态凭证,不过期。

ISV 应用权限点

调用服务端 API 前,需在紫鸟开放平台为应用开通对应的权限点。这些权限仅 Boss 账号可申请和调用。以下是各模块所需的权限点:

模块 权限点 覆盖接口
部门员工 ERP-部门与员工接口 部门 CRUD + 员工查询/新增/修改/启禁用(9 个)
部门员工 ERP-用户的部门变更 员工调岗(1 个)
角色权限 ERP-角色列表查询 角色列表 + 用户角色列表(2 个)
角色权限 ERP-角色详情 角色详情(1 个)
角色权限 ERP-权限列表 权限项列表(1 个)
角色权限 ERP-角色添加、修改权限 添加/修改/调整角色(3 个)
设备管理 ERP-设备查询 设备列表 + 历史绑定记录(2 个)
设备管理 ERP-设备套餐列表查询权限 套餐列表(1 个)
设备管理 ERP-设备绑定权限 绑定设备(1 个)
设备管理 ERP-解绑设备 解绑设备(1 个)
设备管理 ERP-开关自动续费 自动续费开关(1 个)
设备管理 ERP-设备购买与续费权限 购买 + 续费(2 个)
设备管理 ERP-添加自有设备(新) 添加自有设备(1 个)
设备管理 ERP-修改自有设备信息(新) 修改自有设备(1 个)
设备管理 ERP-查询已购设备价格接口 已购设备价格(1 个)
账号管理 ERP-账号查看权限 账号列表/授权查询/用户账号列表/授权用户列表(4 个)
账号管理 ERP-创建与删除账号权限 创建 + 删除账号(2 个)
账号管理 ERP-编辑账号基础信息 编辑账号信息(1 个)
账号管理 ERP-账号授权权限 授权新增 + 授权删除(2 个)
账号管理 ERP-清除账号授权 清除全部授权(1 个)
账号管理 ERP-清除账号缓存 清除缓存(1 个)
账号管理 ERP-标签列表 企业标签列表(1 个)
账号管理 ERP-查询某用户有权限的账号列表 用户有权限的账号(1 个)
账号管理 ERP-获取附加网站信息 附加网站信息(1 个)
账号管理 账号标签管理权限 标签 CRUD + 绑定/解绑/替换/清空/移除(9 个)
访问策略 ERP-网页访问权限 访问规则/网页/网页分组全部操作(22 个)

如果调用接口返回 isv.invalid-method(不存在的方法名),通常是该权限点未开通。前往 紫鸟开放平台 → 应用管理 → 权限管理 中开通。

公共参数

每个服务端 API 请求都需要 companyIdCLI 自动注入并强制使用配置值,无需也不应手动传递。该值在 config init 时通过 /app/builtin/company 接口自动获取并写入配置;即使 --data 中显式传入 companyId,CLI 也会用配置值覆盖。

两层命令体系

第一层:通用 api 命令(覆盖全部 73 个接口)

任何紫鸟服务端 API 都可以通过 api 命令调用,无需专门的快捷命令:

ziniao-cli api <path> [--data '{}'] [--format table] [--jq '.data[]']
ziniao-cli api GET /app/builtin/company
ziniao-cli api /superbrowser/rest/v1/erp/department/list
ziniao-cli api /superbrowser/rest/v1/erp/staff/list --data '{"page":1,"limit":10}' --format table
  • 默认 POST 方法,支持 GET/POST/PUT/DELETE
  • companyId 由框架自动注入,并强制覆盖 --data 中的同名字段
  • --page-all 自动翻页(默认最多 10 页,需取全部时配合 --page-limit 0
  • --page-size N 每页条数(默认 20)
  • --page-limit N 最大翻页数(默认 10,0 为不限,配合 --page-all
  • --page-delay MS 翻页间隔毫秒数(默认 200,配合 --page-all
  • --dry-run 预览请求不执行
  • --jq 内置 jq 过滤

第二层:快捷命令(高频场景优化)

为复杂接口提供命名 flag + 智能默认值:

ziniao-cli department list --tree
ziniao-cli staff create --username "zhangsan" --name "张三" --password "Pass123!" --role-id 16691047257645
ziniao-cli store list --format table

accountstore 的区别

两组命令都涉及"店铺",但职责和通道完全不同:

| | account 命令 | store 命令 | |--|---------------|-------------| | 通道 | 服务端 API(sbappstoreapi.ziniao.com) | 本地 ZClaw Bridge(127.0.0.1:9481) | | 职责 | 店铺账号的 CRUD、授权、标签等管理操作 | 控制已打开的浏览器实例:列出、打开、关闭 | | 前置条件 | 只需 apiKey + 网络 | 紫鸟浏览器客户端必须已启动 | | 典型场景 | 创建店铺、批量授权员工、管理标签 | 打开店铺浏览器 → 导航 → 截图 → 自动化操作 |

简单记忆: account = 管理后台增删改查,store = 控制本地浏览器窗口。

命令优先级

AI Agent 调用时按优先级选择:

  1. 快捷命令 -- staff listdepartment createstore open 等(参数简化,体验最好)
  2. 通用 api 命令 -- api <path> 兜底(任意接口都能调,需要手写 JSON body)
  3. zclaw invoke -- zclaw invoke <tool> 兜底(任意 ZClaw 工具都能调)

ZClaw 快捷命令硬约束

若某个 ZClaw 工具已有对应快捷命令,必须只调用快捷命令,禁止再调用 ziniao-cli zclaw invoke <tool>。两者最终都会请求同一个 Bridge 工具;重复调用会重复执行操作。

zclaw invoke 仅用于没有快捷命令的 Bridge 工具,或用户明确要求按原始工具名和 JSON 参数调试。

例如 visit_page 已由 page visit 封装,必须使用 ziniao-cli page visit ...

店铺环境结果硬约束

当用户要求店铺浏览器、店铺代理或该店铺登录态下的结果时,结果只能来自该店铺环境。 店铺页面操作失败后,禁止改用公开网页、搜索引擎、其他店铺、服务端 API 或供应来源来“替代”结果;除非用户明确将任务范围改为公开信息检索。

发生 ERRSOCKSCONNECTION_FAILED 时,保持当前店铺打开,等待 5 秒后以相同参数重试;最多 3 次总尝试。仍失败时,报告该店铺环境暂时无法访问及已尝试次数,并停止该店铺任务;不得声称已取得店铺环境结果。

输出格式

所有命令支持 --format json|table|csv--jq 过滤:

ziniao-cli staff list --format table
ziniao-cli staff list --jq '.[].name'
ziniao-cli department list --format csv

输出结构

成功(stdout):

{"ok": true, "data": ..., "meta": {"count": 10}}

失败(stderr):

{"ok": false, "error": {"type": "gateway|business|auth|validation", "code": 1001, "message": "...", "hint": "..."}}

错误类型与处理

错误类型 含义 AI Agent 应该做什么
auth apiKey 缺失或无效 提示用户运行 ziniao-cli config init
gateway 网关层错误 (code != "0") 报告错误,检查网络/apiKey
business 业务层错误 (ret != 0) 报告错误信息,根据 msg 判断原因
validation 参数校验失败 检查命令参数是否正确
network 网络不通/Bridge 未启动 ZClaw 相关:回到 doctor 明细路由,只有客户端未启动时才进入启动流程;API 相关:检查网络

更新检查

ziniao-cli 命令执行后,如果检测到新版本,JSON 输出中会包含 _notice.update 字段:

{
  "ok": true,
  "data": ...,
  "_notice": {
    "update": {
      "current": "1.0.0",
      "latest": "1.1.0",
      "message": "ziniao-cli 1.1.0 可用,当前 1.0.0,运行 npm update -g @ziniao-open/cli 更新"
    }
  }
}

当你在输出中看到 _notice.update 时:

  1. 先完成用户当前请求
  2. 然后将 message 字段内容展示给用户,提议帮其更新
  3. 若用户同意,执行 npm update -g @ziniao-open/cli

更新提示仅通过 stdout JSON 的 notice 字段传递,不会输出到 stderr。可通过环境变量 ZINIAOCLINOUPDATE_CHECK=1 禁用检查。

环境兼容说明

Windows Git Bash 路径转义问题

Git Bash 中,以 / 开头的字符串会被 MSYS 自动转换为 Windows 本地路径(如 /superbrowser/...C:/Program Files/Git/superbrowser/...),导致 api 命令的路径参数被破坏。

PowerShell 和 CMD 无此问题。

解决方式一(推荐):写入 .bashrc 永久生效

echo 'export MSYS_NO_PATHCONV=1' >> ~/.bashrc
source ~/.bashrc

解决方式二:每次命令前加前缀

MSYS_NO_PATHCONV=1 ziniao-cli api /superbrowser/rest/v1/erp/store/create \
  --data '{"storeData":[{"name":"新店铺"}]}'

安全规则

  • API Key 是静态敏感凭证:不得请求用户在聊天中发送完整 Key,也不得在回复、终端输出或错误信息中展示完整 Key
  • 禁止把完整 API Key 写入命令行参数、Shell 历史、脚本、截图、录屏、聊天消息、日志或 Git
  • 人工交互环境使用 ziniao-cli config init 输入 Key;输入期间避免屏幕共享、录屏和终端日志采集
  • CI/CD 使用 ziniao-cli config init --api-key-stdin,由 Secret Manager 或受保护的标准输入提供 Key;不得把 Key 直接写在流水线命令中
  • 写入/删除操作前必须确认用户意图
  • high-risk-write 操作(department delete、staff remove)会要求交互式确认,可用 --yes 跳过
  • 建议先用 --dry-run 预览危险请求

重要行为规则

  • ZClaw 本地接口必须通过 ziniao-cli 调用:调用紫鸟浏览器本地接口(store/page/zclaw 命令)时,必须使用本技能体系中的 ziniao-cli 能力,不要使用 ziniao-assistant 技能自行调用 ZClaw Bridge。
  • 店铺列表优先使用本地接口:如果用户要求获取店铺列表,应优先使用 store list 快捷命令(走本地 ZClaw Bridge),因为普通成员没有服务端 account list 接口权限。成员类型可通过 ziniao-cli config show 结果中的 isBoss 字段判断。
  • ZClaw 认证失败排查:如果帮用户初始化应用(config init)之后,请求 ZClaw 接口仍返回 API Key 认证失败,应提醒用户前往紫鸟开放平台 https://open.ziniao.com 查看自己的用户应用里「终端管理」是否已绑定当前终端识别码(识别码在紫鸟浏览器设置中查看)。