3.1 KiB
3.1 KiB
spx
superpowers-vscode 工作流 CLI 工具,给 cc/codex agent 用的工单 / PR 操作薄包装,Gitea 和 GitHub 仓库用同一套命令。
安装
make install
# 把 $HOME/.local/bin 加进 PATH
仓库与凭据
spx 读 git remote get-url origin,按 host 决定连哪种仓库(--host / --repo 可覆盖):
| origin host | 仓库 | token 来源 |
|---|---|---|
github.com |
GitHub(API https://api.github.com) |
gh auth token --hostname github.com;取不到就先运行 gh auth login |
| 其它任何 host | Gitea(API <host>/api/v1) |
tea 配置 ~/.config/tea/config.yml 里 URL 与 origin 同 host 的 login;没有该 login 或 token 为空时回退环境变量 GITEA_TOKEN |
tea 用 keyring 存 token(v0.10+ 默认行为)时,可以设 GITEA_TOKEN 作为回退:
export GITEA_TOKEN=...
用法
spx issue create --title "新功能 X" --spec docs/specs/x.md --plan docs/plans/x.md
spx issue marker --issue 79 --type plan --value docs/plans/issue-79/plan.md
spx issue view --issue 79 --comments
spx issue state get --issue 79
spx issue state merge --issue 79 --state-json '{"column":"review"}'
spx pr view --pr 73
spx pr create --title "修复 X" --body-file /tmp/pr.md --head feature/x [--base main]
spx pr review-comment --pr 73 --body "审查意见: ..."
issue view输出编号、标题、正文、状态、作者、指派人、链接;--comments附带评论,但不含 state 评论。pr view输出编号、标题、正文、状态、是否已合并、head/base 的分支与 SHA、作者、链接。pr create的--body/--body-file必须给一个;不给--base时取仓库默认分支。输出新 PR 的编号和链接。pr review-comment在两种仓库上都走 issue 评论接口(PR 与工单共用编号)。
全局 flag:
--repo OWNER/REPO默认从当前 git origin 推断--host HOST如github.com或https://gitea.example.com,默认从当前 git origin 推断;同时给--host和--repo时不需要 git 仓库--jsonJSON 输出--cwd PATHrepo 探测的工作目录,默认.
Marker 约定
issue/PR body 里用 HTML 注释行携带 spx 元数据:
<!-- spx:spec=docs/specs/foo.md -->
<!-- spx:plan=docs/plans/foo.md -->
<!-- spx:review=1 -->
spx issue marker 会做增量更新(已存在则替换那一行,不存在则追加),其他类型的 marker 不会被动到。
State 评论约定
工单的 state JSON(字段见 state-json.schema.json)存在评论里,每次合并追加一条新评论。写出格式是网页上不可见的 HTML 注释,JSON 紧凑一行,< > & 转义成 \u003c \u003e \u0026,保证正文里不会出现 -->:
<!-- spx-state
{"column":"review","specFile":"docs/specs/foo.md"}
-->
读取时从最新一条评论往前找,第一条有效的胜出。兼容三种形式:上面的隐藏格式、旧 YouTrack 格式(<!--spx-state--> 后接 JSON)、旧的裸 JSON 对象。内容必须是 JSON 对象,且至少带一个 schema 里声明的字段。