关于 stackbone-cli
stackbone-cli 是指导 Agent 操作 Stackbone 命令行的技能,涵盖命令顺序、安全约定、文档查询,以及开发、部署和 CI 流程。
主要功能
- 01MCP 文档查询流程
- 02命令与退出码约定
- 03工作区设置和开发循环
- 04迁移与部署指导
- 05无头及 CI 操作
适用场景
- 01创建并运行 Stackbone 工作区
- 02根据 JSON 输出诊断命令错误
- 03创建并应用数据库迁移
- 04打包并注册部署
MCP 相关
该技能引导 Agent 使用公开的 `stackbone-docs` MCP 服务及其 `list_docs`、`get_doc` 和 `search_docs` 工具查询最新 CLI 文档。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ stackbone/ stackbone-skills --skill stackbone-cli安装后在 Claude Code 中输入/stackbone-cli确认已加载。
详细介绍
Stackbone CLI 技能
本技能将告诉你如何使用 stackbone CLI:操作顺序、每条命令都遵循的约定,以及需要运行的循环。这里不包含标志表:每个标志、输出格式和退出代码都在文档中,每条命令对应一个页面。
文档所在位置
文档通过 MCP 由 stackbone-docs 服务提供(https://docs.stackbone.ai/mcp,公开,工具为 search_docs、get_doc、list_docs)。stackbone docs 会打印连接详情。
- 通过
list_docs(区域为cli)开始会话。 它会返回该章节下的所有 CLI 页面,并附上一行说明。下文的如何查找页面会说明任务需要哪个页面;从列表中获取其路径,然后用get_doc获取。切勿凭记忆输入路径:页面会移动,标题不会变。 - 运行带有本次会话中尚未确认的标志的命令前,先阅读对应页面。
- 不知道哪个命令能完成某项操作时,用通俗语言提出问题,并将
area: "cli"传给search_docs。 stackbone <command> --help是已安装版本的本地准确信息。如果文档与二进制文件不一致,以二进制文件为准。
会话中没有 stackbone-docs 工具? 获取 https://docs.stackbone.ai/llms.txt:这是相同的索引,每个页面占一行,包含标题、说明和原始 Markdown 链接。按标题找到页面并获取该链接。https://docs.stackbone.ai/llms-full.txt 包含所有页面,合并在一个文件中(约 700 KB)。
如何调用 CLI
- 二进制文件为
stackbone(无需安装时使用pnpm dlx @stackbone/cli <command>,也可以全局安装pnpm add -g @stackbone/cli)。如果stackbone --help执行失败,则说明 CLI 未安装。 - 作为调用方时,每次调用都传入
--json:标准输出会有一行{ "schema_version": 1, … },或者标准错误会有{ "error": { "code", "message", "suggestion" } }。 - 对任何有破坏性的动词都传入
--yes(retry、cancel、remove、rollback、approve、reject)。不传时,该动词会在发出任何网络请求前以退出代码5退出。 --json、--yes和CI=1都会关闭提示交互。 原本会要求输入值、选择选项或确认的命令会直接报错,而不会一直等待,因此请将所有必需值作为标志传入。- 根据退出代码分支处理:
0表示成功,1表示通用错误,2表示未通过身份验证(stackbone login),3表示没有项目或stackbone dev未运行,4表示未找到或没有已注册的部署,5表示权限被拒绝。封装中的error.code信息更具体(dev_not_running、runtime_not_configured等)。 - 命令失败时,使用
--json重新运行并读取error.suggestion:它会给出下一条建议尝试的命令。然后可将STACKBONE_LOG_LEVEL=debug设为 CLI 自身的标准错误日志级别;若dev启动阶段卡住,再使用--verbose。
会话开始
先运行以下命令,再进行其他操作,并根据退出代码采取相应措施:
stackbone whoami --json # exit 2 → stackbone login (device flow; --no-browser when headless)
stackbone metadata --json # auth + linked project + agents in one payload; exit 3 → init or link
工作循环
新建工作区。 stackbone login → stackbone init <dir> [--with agent|workflow|workflow-agent] [--name <ws>] → cd <dir> → stackbone dev。init 会将工作区关联到组织,并写入 .stackbone/project.json,因此需要已登录的会话。它会为你安装工作区依赖,所以不要自行添加安装步骤;需要跳过安装或从中恢复时,请阅读该命令的页面。在 TTY 中,它会询问要设置哪些编码 Agent(技能 + 文档 MCP 服务);非交互运行时不会设置任何 Agent,除非传入 --agents claude-code,cursor,…。
扩展工作区。 stackbone add agent <name> / add workflow <name> [--calls <agent>] / add workflow-agent <name>。离线运行,无需登录,只写入新文件,绝不修改现有 TypeScript;如果名称冲突则会失败,除非使用 --force。必须在工作区内运行(否则退出码为 3)。然后使用 stackbone 技能编写代码。
开发循环。 stackbone dev 会启动 Postgres + Redis + MinIO,编译工作区并通过 http://127.0.0.1:4242 提供服务,支持热重载,还会打开隧道,让云端 Studio 可以访问它。在全新机器上首次运行时,会暂停,直到配置好模型提供方(会打印一个 Studio 链接;也可以在启动前导出 MODEL_PROVIDER_BASE_URL + MODEL_PROVIDER_API_KEY)。然后:
stackbone workflows list --json
stackbone workflows start <name> --input '{"…"}' --json # validates against the declared schema → { runId }
stackbone runs get <runId> --json
stackbone logs tail --run <runId> --json # the per-step frames; --follow for a live run
通过 Studio 的 Playground 与 Agent 聊天,或向 POST http://127.0.0.1:4242/openai/v1/chat/completions 发送请求,并设置 "model": "<agent-name>" 和任意非空 bearer(Getting started(CLI › Guides))。
更改架构。 编辑 src/schema.ts → stackbone db migrate create <name> → 阅读 .stackbone/migrations/ 下生成的 SQL → stackbone db migrate up → stackbone db migrate status。绝不要编辑已应用的迁移;应创建一个新的迁移。迁移文件中不要使用 BEGIN / COMMIT。
运维安装实例。 不带 --agent 的动词会针对本地开发安装实例,并且需要正在运行的 stackbone dev(否则为 dev_not_running,退出码为 3)。stackbone agents list --json 会列出安装实例 ID;每次调用时传入 --agent <id>,即可针对已部署的安装实例。审批:stackbone hitl list --status pending --json → stackbone hitl approve|reject <id> --yes --json。
发布。 没有发布命令。stackbone package 会写入一个部署目录(编译后的工作区 + Dockerfile + compose + .env + README),供他人运行 docker compose up -d;stackbone build 只会写入供你自行构建镜像的 bundle。然后注册正在运行的实例:stackbone link --agent <slug> --installation <id> --url <public-url> --secret <hmac-secret> --tag <image-tag>(tag 就是版本;每次部署都要重新运行 link)。一个实例只响应一个安装实例,因此 --installation 必须是该 Agent 在 stackbone agents list --json 中对应的 cloud 行的 ID;link 不会创建安装实例,所以要先安装 Agent。首次运行 link 前,请阅读 link(CLI › Reference):其中说明了密钥的来源。
发布后,交由三个技能接手。 如果没人为实例接线,它就无法访问任何内容,也无法测量任何指标;以下技能各自涵盖 CLI 无法触及的一个侧边栏分组:stackbone-integrations 用于连接提供方、启用触发器以便 Agent 自动接收内容,并将它写出的内容发送到某处;stackbone-guardrails 用于限制正在运行的 Agent——阻止一轮对话、屏蔽数据,或将其暂存以供人工处理;stackbone-evals 可将手动 Playground 测试转为可在 CI 中运行的套件。
CI / 无头模式。 登录仅支持设备流(没有 token 环境变量):在可使用浏览器的地方运行一次 stackbone login,然后将 ~/.stackbone/credentials.json(chmod 600)带入 CI。之后,所有命令都使用 --json,破坏性动词使用 --yes;如果需要设置编码 Agent,则在 init / link 时使用 --agents <list>。
适用于所有情况的规则
- 切勿提交
.stackbone/(init会将其加入 gitignore)。在不含此目录的克隆中运行stackbone dev,它会询问此项目使用哪个 Agent,然后写入该文件。link无法完成这项工作:它需要一个已部署的 box(--installation --url --secret --tag),而且没有项目文件记录 installation id 时,它会拒绝操作。 - 分页列表使用
--limit+--cursor,并返回items+nextCursor;将nextCursor传回即可继续翻页。logs tail则会进行流式传输。 - 永远不会打印密钥:
secrets list会隐藏值,而且没有用于显示密钥的命令。不要尝试通过 CLI 读取密钥。 db query只接受单条只读SELECT;架构变更应通过db migrate create进行。RAG 架构由平台预先配置;切勿手动迁移。init不接受--starter/--template;传入其中任何一个都会以非零状态退出,并显示迁移消息。单项模板由add使用(stackbone add workflow <name> --template <t>)。- 你可能会在旧资料中看到已弃用的命令:
publish、openrouter、connectors。这些命令已不存在;请改用build/package+link、Gateway(Home › Features)以及 Studio 的集成页面。 - 交互式提示用于保护输入
! stackbone …的用户。作为调用方时,默认使用--json --yes。
如何查找页面
- 某个命令的标志、动词、输出格式或退出码:查看 CLI › Reference 下以命令名称命名的页面(
login/logout共用“登录和退出”;whoami/current/list/organization use/metadata共用“帐户和组织”)。 - 每条命令都遵循的规则(动词如何选择目标、JSON 信封格式、分页、
--yes门控、退出码):查看“命令约定”;全局标志、环境变量和磁盘状态请查看“配置参考”(两者均位于 CLI › Reference 下)。 dev启动中止,或某个命令拒绝指定目标:查看 CLI › Guides 下的“故障排除”(或 stackbone-debug skill)。- 其他内容(HTTP 线路协议、发布、手动设置编码 Agent):使用
search_docs,以普通措辞提出问题并选择cli区域;部署和设置页面则选择home区域。
其他 skills
- stackbone:工作区内的代码(
defineDeepAgent、'use workflow'、环境中的stackbone客户端)。 - stackbone-debug:查找错误、失败或卡住的运行、搁置的审批的原因。
- stackbone-coder:通过访谈,从一句话的想法开始创建新组件。