sino-bc-cli 1.8.9 → 1.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +124 -97
  2. package/dist/SKILL.md +83 -30
  3. package/dist/affordance/auth.md +27 -0
  4. package/dist/affordance/biz-line.md +11 -11
  5. package/dist/affordance/dashboard.md +73 -0
  6. package/dist/affordance/delivery.md +81 -0
  7. package/dist/affordance/document.md +69 -0
  8. package/dist/affordance/file.md +43 -0
  9. package/dist/affordance/im.md +66 -0
  10. package/dist/affordance/organization.md +45 -0
  11. package/dist/affordance/project-analysis.md +75 -0
  12. package/dist/affordance/project-stage.md +40 -0
  13. package/dist/affordance/project.md +199 -0
  14. package/dist/affordance/sso.md +1 -1
  15. package/dist/affordance/task.md +109 -0
  16. package/dist/affordance/tenant.md +15 -0
  17. package/dist/affordance/user.md +33 -0
  18. package/dist/api-doc/README.md +51 -0
  19. package/dist/api-doc/custom/cli-oauth.md +19 -0
  20. package/dist/api-doc/oapi/auth.md +57 -0
  21. package/dist/api-doc/oapi/biz-line-query.md +9 -1
  22. package/dist/api-doc/oapi/biz-line-strategy.md +500 -312
  23. package/dist/api-doc/oapi/dashboard.md +202 -0
  24. package/dist/api-doc/oapi/delivery.md +253 -0
  25. package/dist/api-doc/oapi/document.md +192 -0
  26. package/dist/api-doc/oapi/file.md +92 -0
  27. package/dist/api-doc/oapi/im.md +195 -0
  28. package/dist/api-doc/oapi/organization.md +86 -0
  29. package/dist/api-doc/oapi/project-analysis.md +252 -0
  30. package/dist/api-doc/oapi/project-stage.md +88 -0
  31. package/dist/api-doc/oapi/project.md +597 -0
  32. package/dist/api-doc/oapi/sso.md +5 -1
  33. package/dist/api-doc/oapi/task.md +361 -0
  34. package/dist/api-doc/oapi/tenant.md +17 -0
  35. package/dist/api-doc/oapi/user.md +73 -0
  36. package/dist/generated/api-catalog.json +23976 -143
  37. package/dist/index.js +1 -1
  38. package/dist/skills/default/sino-bc-shared/SKILL.md +18 -7
  39. package/dist/skills/default/sino-bc-shared/references/config-and-env.md +10 -7
  40. package/dist/skills/default/sino-bc-shared/references/output-contract.md +52 -7
  41. package/dist/skills/default/sino-bc-shared/references/write-approval.md +4 -4
  42. package/dist/skills/oapi/sino-bc-auth/SKILL.md +34 -0
  43. package/dist/skills/oapi/sino-bc-biz-line/SKILL.md +45 -40
  44. package/dist/skills/oapi/sino-bc-biz-line/references/common-mistakes.md +10 -0
  45. package/dist/skills/{custom → oapi}/sino-bc-biz-line/references/enums.md +7 -1
  46. package/dist/skills/oapi/sino-bc-dashboard/SKILL.md +48 -0
  47. package/dist/skills/oapi/sino-bc-delivery/SKILL.md +53 -0
  48. package/dist/skills/oapi/sino-bc-document/SKILL.md +51 -0
  49. package/dist/skills/oapi/sino-bc-file/SKILL.md +46 -0
  50. package/dist/skills/oapi/sino-bc-im/SKILL.md +49 -0
  51. package/dist/skills/oapi/sino-bc-organization/SKILL.md +44 -0
  52. package/dist/skills/oapi/sino-bc-project/SKILL.md +69 -0
  53. package/dist/skills/oapi/sino-bc-project-analysis/SKILL.md +48 -0
  54. package/dist/skills/oapi/sino-bc-project-analysis/references/analysis-workflow.md +17 -0
  55. package/dist/skills/oapi/sino-bc-project-analysis/references/filters-and-metrics.md +32 -0
  56. package/dist/skills/oapi/sino-bc-project-stage/SKILL.md +47 -0
  57. package/dist/skills/oapi/sino-bc-sso/SKILL.md +15 -17
  58. package/dist/skills/oapi/sino-bc-task/SKILL.md +57 -0
  59. package/dist/skills/oapi/sino-bc-task/references/state-machine.md +18 -0
  60. package/dist/skills/oapi/sino-bc-tenant/SKILL.md +32 -0
  61. package/dist/skills/oapi/sino-bc-user/SKILL.md +48 -0
  62. package/package.json +4 -5
  63. package/dist/api-doc/custom/README.md +0 -92
  64. package/dist/skills/custom/sino-bc-biz-line/references/common-mistakes.md +0 -8
  65. package/dist/skills/oapi/sino-bc-biz-line/references/long-tail-api.md +0 -18
  66. package/dist/skills/oapi/sino-bc-sso/references/long-tail-api.md +0 -9
package/README.md CHANGED
@@ -84,9 +84,20 @@ npm ls -g --depth=0 sino-bc-cli # 确认全局安装的版本
84
84
  sino-bc-cli /init
85
85
  ```
86
86
 
87
- `/init` 会把根 `SKILL.md` 与 `skills/oapi/`、`skills/custom/`、`skills/default/` 下的标准子技能(`SKILL.md` + `references/`,同路径以后写的层为准)嵌进 `~/.agents/skills/sino-bc-cli/`,不出现 `oapi/` / `custom/` / `default/` 这一层;同时删除旧的平级 `sino-bc-shared` / `sino-bc-<domain>` 技能目录。豆包本地列表里只应看到 **`sino-bc-cli`**。飞书豆包工作侧还需:技能·连接器 → 管理 → **本地** → 刷新。查看包内技能:`sino-bc-cli /skill`。
87
+ `/init` 会把根 `SKILL.md` 与 `skills/oapi/`、`skills/custom/`、`skills/default/` 下的标准子技能(`SKILL.md` + `references/`,同路径以后写的层为准)嵌进各 Agent 技能目录下的 `sino-bc-cli/`,不出现 `oapi/` / `custom/` / `default/` 这一层;同时删除旧的平级 `sino-bc-shared` / `sino-bc-<domain>` 技能目录。
88
88
 
89
- > 每次升级版本后请重新执行一次 `sino-bc-cli /init`,以刷新本地技能文件。
89
+ **默认安装目标(带门控):**
90
+
91
+ | 目标 | 门控 |
92
+ | :--- | :--- |
93
+ | `~/.agents/skills` | 始终创建并写入(飞书豆包 / 通用) |
94
+ | `~/.cursor/skills` | 仅当 `~/.cursor` 已存在时写入,否则标记 `skipped`(不创建 Agent 根) |
95
+ | `~/.claude/skills` | 仅当 `~/.claude` 已存在 |
96
+ | `~/.codex/skills` | 仅当 `~/.codex` 已存在 |
97
+
98
+ 结果区分 `written` / `skipped` / `failed`;`skipped` 不算失败。还可用 `/skill target add <dir>` 注册自定义目录(强制创建、写入 `config.json` 的 `extraSkillTargets`),`/init` 会一并刷新。豆包本地列表里只应看到 **`sino-bc-cli`**。飞书豆包工作侧还需:技能·连接器 → 管理 → **本地** → 刷新。查看包内技能:`sino-bc-cli /skill`;查看安装目标:`sino-bc-cli /skill target list`。
99
+
100
+ > 已安装用户升级请执行 `sino-bc-cli /update`(拉取 latest 并自动 `/init`)。仅刷新技能仍可单独执行 `/init`。
90
101
 
91
102
  ### ⑥ 免安装临时执行
92
103
 
@@ -107,10 +118,10 @@ npx sino-bc-cli --help
107
118
  | **lodash** | `^4.17.21` | 工具函数库,提供对象/数组/字符串处理等高效方法 |
108
119
  | **dayjs** | `^1.11.11` | 轻量级日期处理库,替代 Moment.js 处理日期时间格式化 |
109
120
  | **axios** | `^1.7.0` | HTTP 客户端库,用于网络请求、连通性检测等 |
110
- | **crypto-js** | `^4.2.0` | 加密算法库,提供 MD5、SHA-256、AES、Base64 等加解密能力 |
111
- | **commander** | `^12.1.0` | 命令行参数解析框架(预留,当前采用自研注册器模式) |
112
121
  | **chalk** | `^4.1.2` | 终端彩色输出库,用于美化日志和帮助信息 |
113
- | **open** | `^8.4.2` | 跨平台文件/URL 打开工具(兼容备用方案) |
122
+ | **open** | `^8.4.2` | 跨平台打开浏览器 / 本地文件(OAuth 登录、`/skill` 打开 SKILL.md) |
123
+ | **@napi-rs/keyring** | `^2.0.0` | Windows 凭据库与 macOS 主密钥;令牌本体在 macOS/Linux 为 AES 文件 |
124
+ | **fs-native-extensions** | `^1.5.1` | 跨进程文件锁(OAuth 刷新) |
114
125
 
115
126
  ### 开发依赖
116
127
 
@@ -118,9 +129,10 @@ npx sino-bc-cli --help
118
129
  | :----------------- | :-------- | :-------------------------------- |
119
130
  | `@types/node` | `^22.0.0` | Node.js 类型声明 |
120
131
  | `@types/lodash` | `^4.17.5` | lodash 类型声明 |
121
- | `@types/crypto-js` | `^4.2.2` | crypto-js 类型声明 |
122
132
  | `ts-node` | `^10.9.2` | 开发阶段直接运行 TypeScript 代码 |
123
133
  | `rimraf` | `^5.0.7` | 跨平台目录清理工具,替代 `rm -rf` |
134
+ | `esbuild` | `^0.28.2` | 打单文件 `dist/index.js` |
135
+ | `javascript-obfuscator` | `^5.6.0` | 构建期轻量混淆 |
124
136
 
125
137
  ---
126
138
 
@@ -141,22 +153,27 @@ sino-bc-cli/
141
153
  │ │
142
154
  │ ├── commands/ # 📦 命令实现层(每命令一个文件,可独立扩展)
143
155
  │ │ ├── index.ts # 命令批量注册入口
144
- │ │ ├── init.command.ts # /init 命令实现(注册 Agent 技能 + 初始化变量配置)
145
- │ │ ├── bc-api.command.ts # /bc-api 已下线,仅打印迁移提示并非 0 退出
156
+ │ │ ├── init.command.ts # /init 命令实现(只注册 Agent 技能)
157
+ │ │ ├── update.command.ts # /update 命令实现(装 latest,再用新包入口 /init)
158
+ │ │ ├── auth.command.ts # /auth 命令实现(登录 / 状态 / 退出)
159
+ │ │ ├── tenant.command.ts # /tenant 命令实现(仅 list)
160
+ │ │ ├── schema.command.ts # /schema 命令实现(自省 catalog)
146
161
  │ │ ├── get-config.command.ts # /get-config 命令实现(查看变量配置)
147
162
  │ │ ├── set-config.command.ts # /set-config 命令实现(修改变量配置)
148
163
  │ │ ├── skill.command.ts # /skill 命令实现(列出包内技能或打开 SKILL.md)
149
164
  │ │ └── uninstall.command.ts # /uninstall 命令实现(清理技能目录与配置并卸载)
150
165
  │ │
151
166
  │ ├── shortcuts/ # ⚡ Shortcut 执行面(业务命令,域 + `+cmd`)
152
- │ │ ├── index.ts # 注册表与执行器(flag 解析、输出格式、写确认门)
167
+ │ │ ├── index.ts # 执行器(flag 解析、输出格式、写确认门)
168
+ │ │ ├── registry.ts # 各业务域手写命令注册
169
+ │ │ ├── raw-api.ts # 各域 api <name> 点名调用
170
+ │ │ ├── helpers.ts # 共用接口查找与 flag 读取
153
171
  │ │ ├── flags.ts # Shortcut 面参数解析(含公共 flag)
154
172
  │ │ ├── types.ts # Shortcut 声明与执行上下文类型
155
173
  │ │ └── biz-line/ # biz-line 域
156
174
  │ │ ├── index.ts # 该域全部 Shortcut 登记处
157
175
  │ │ ├── read.ts # 只读 Shortcut(+channels/+categories/+list/+strategies)
158
176
  │ │ ├── write.ts # 写 Shortcut(+save/+update/+status/+delete/+strategy-*)
159
- │ │ ├── raw-api.ts # biz-line api <name> 点名调用
160
177
  │ │ └── helpers.ts # 按名解析业务线、字典名称映射等编排
161
178
  │ │
162
179
  │ ├── utils/ # 🛠 工具类层(高内聚的可复用工具)
@@ -166,12 +183,12 @@ sino-bc-cli/
166
183
  │ │ ├── crypto.ts # 加密工具(MD5、SHA-256、AES、Base64、签名生成)
167
184
  │ │ ├── http.ts # HTTP 工具(axios 封装:请求/响应拦截、自动重试)
168
185
  │ │ ├── gateway-client.ts # 网关调用唯一出口(拼地址、注入鉴权与来源头、解包 result)
169
- │ │ ├── presenter.ts # 输出与退出码(table / JSON 信封,stdout / stderr 分流)
186
+ │ │ ├── presenter.ts # 输出与退出码(json / table / ndjson / csv,stdout / stderr 分流)
170
187
  │ │ ├── cli-error.ts # 带分类的 CLI 错误(validation / config / api / 待确认)
171
188
  │ │ ├── common.ts # 通用工具(日期、深拷贝、防抖节流、ID 生成等)
172
189
  │ │ ├── prompt.ts # 终端交互(复用单一 readline 会话:提问、选择、确认)
173
190
  │ │ ├── config-store.ts # 变量配置读写(字段元信息 + 读 / 写 / 删)
174
- │ │ ├── config-prompt.ts # 变量配置交互采集(/init 与 /set-config 共用)
191
+ │ │ ├── config-prompt.ts # 变量配置交互采集(/set-config)
175
192
  │ │ └── skill-install.ts # Agent 技能目录的写入与清理
176
193
  │ │
177
194
  │ ├── types/ # 📝 类型定义层
@@ -304,13 +321,21 @@ sino-bc-cli biz-line --help
304
321
  sino-bc-cli biz-line +list --name <业务线名称>
305
322
  ```
306
323
 
307
- `npm i sino-bc-cli -g` 完成后会自动执行 `/init`,把唯一技能 `sino-bc-cli` 写到 `~/.agents/skills/sino-bc-cli/`,并清掉旧的平级 `sino-bc-shared` / `sino-bc-<domain>`。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。若未出现,手动执行:
324
+ `npm i sino-bc-cli -g` 完成后会自动执行 `/init`:向通过门控的默认目标写入唯一技能 `sino-bc-cli`,并清掉旧的平级 `sino-bc-shared` / `sino-bc-<domain>`。未安装对应 Agent 的目录会 `skipped`。飞书豆包工作:技能·连接器 → 管理 → **本地** → 刷新。若未出现,手动执行:
308
325
 
309
326
  ```bash
310
327
  sino-bc-cli /init
311
328
  ```
312
329
 
313
- > 卸载全局链接:`npm unlink` 或 `npm uninstall -g sino-bc-cli`
330
+ 自定义安装路径:
331
+
332
+ ```bash
333
+ sino-bc-cli /skill target add ~/my-agent/skills
334
+ sino-bc-cli /skill target list
335
+ sino-bc-cli /skill target remove ~/my-agent/skills
336
+ ```
337
+
338
+ > 卸载:`sino-bc-cli /uninstall --yes`(删技能 + 配置 + 全局 npm 包);`sino-bc-cli /uninstall --yes --keep-cli` 只保留全局 npm 包,**仍删除**技能与配置。
314
339
 
315
340
  ---
316
341
 
@@ -322,12 +347,15 @@ sino-bc-cli /init
322
347
 
323
348
  | 命令 | 说明 |
324
349
  | :---------- | :-------------------------------------------------------------------------------------------- |
325
- | `/init` | 注册唯一技能 `sino-bc-cli` 到 Agent 技能目录(并删除旧平级 `sino-bc-shared` / `sino-bc-<domain>`),交互设置环境 / `API_KEY` / `APIFOX_TOKEN` |
326
- | `/skill` | 列出包内 Agent 技能;传入 name 打开对应 `SKILL.md` |
350
+ | `/init` | 注册唯一技能 `sino-bc-cli` 到通过门控的默认 Agent 目录 + `extraSkillTargets`(整目录重建,不残留旧文件;不碰同级其它技能);结果区分 written / skipped / failed。不询问、不写入身份令牌 |
351
+ | `/update` | 全局安装 `sino-bc-cli@latest`,再用当前 Node 执行新包 `dist/index.js /init`。`--quiet` 抑制 npm 日志并传给该次 `/init`。npm link / 其它全局链接安装拒绝;探测失败则中止,以免覆盖未知安装 |
352
+ | `/skill` | 列出包内 Agent 技能;传入 name 打开对应 `SKILL.md`;`target add\|remove\|list` 管理自定义安装目录 |
353
+ | `/schema` | 自省 catalog:无参数列出 `name/domain/summary/risk/tenant`;`/schema <name>` 返回 `inputSchema` + `_meta`(含 tenant 与调用级主体参数;始终 JSON,默认不暴露 method/path;仅 high-risk-write 注入确认字段 `yes`) |
327
354
  | `/get-config` | 查看变量配置;密钥默认打码,`--show-secret` 显示明文,`--json` 输出 JSON |
328
- | `/set-config` | 修改变量配置(环境 / API_KEY / 维护者的 `APIFOX_TOKEN`);不带参数时逐项交互修改环境与 API_KEY;`/set-config APIFOX_TOKEN` 省略取值写入内置默认 |
329
- | `/uninstall` | 删除技能目录与变量配置文件,并从全局 npm 卸载本 CLI |
330
- | `/bc-api` | **已下线**。只打印迁移提示并非 0 退出,改用 `biz-line +<shortcut>` 或 `biz-line api <name>` |
355
+ | `/set-config` | 只写身份令牌;不带参数时逐项交互修改 |
356
+ | `/auth` | `status` 查看身份令牌、`authContextId` 与凭证类型(打码展示);`logout` 清除整份身份面;`login` 发起浏览器设备授权;`keychain-downgrade` 把 macOS 主密钥落到文件;OAuth 令牌到期前自动刷新 |
357
+ | `/tenant` | 只支持 `list`;tenant 接口每次调用传入 `--corporation-id` 与 `--auth-context-id` |
358
+ | `/uninstall` | 先清身份面,再删除全部默认/自定义目标下的技能目录与 `~/.sino-bc-cli`,并从全局 npm 卸载;`--keep-cli` 仅跳过 npm 卸载(不保留配置与身份面) |
331
359
 
332
360
  ### 业务命令(`biz-line`)
333
361
 
@@ -347,55 +375,94 @@ sino-bc-cli /init
347
375
 
348
376
  | 参数 | 说明 |
349
377
  | :--- | :--- |
350
- | `--format json\|table` | 输出格式。TTY 默认 `table`,非 TTY 默认 `json` |
378
+ | `--format json\|table\|ndjson\|csv` | 输出格式。TTY 默认 `table`,非 TTY 默认 `json`。**无 `pretty`** |
379
+ | `--page-all` | 自动翻页直至按 `total` 取尽;仅分页接口可用 |
380
+ | `--page-limit <n>` | 翻页页数上限,`0` = 不封顶(**默认不封顶**);单独出现也会开启翻页 |
381
+ | `--page-delay <ms>` | 翻页间隔毫秒(默认 200) |
351
382
  | `--dry-run` | 走与真实请求相同的本地 dry-run,只打印将要发起的 method / URL / 请求体,不发请求 |
352
- | `--yes` | 跳过写操作确认;本地 dry-run 通过后发起请求 |
383
+ | `--yes` | 跳过写操作确认;本地 dry-run 通过后发起请求。不能绕过 tenant 主体门禁 |
384
+ | `--corporation-id` | 本次调用的签约主体 ID;仅 catalog `tenant: true` 的接口需要,不放进 `--data`,不回退全局配置 |
385
+ | `--auth-context-id` | 本次调用的认证上下文 ID,须与 `/auth status` 的 `authContextId` 成对;认证变化后必须整组重绑 |
386
+
387
+ **格式与形状**:`json` 忠实保留上游形状(分页接口即 `total` + 条目数组)。`ndjson` / `csv` / `table` 面向记录,只认该接口分页 profile 声明的条目字段并下钻逐条渲染;没有该字段就不下钻(不会去猜"哪个数组字段是记录集",详情类接口常带若干数组字段,猜错会把同级标量字段一起丢了)。`csv` 不会失败——没有记录数组时降级为 `key,value` 两列并按点号路径拍平,方便「查详情」也进表格工具。
388
+
389
+ 单页调用若上游报告的总数大于本页条数,非 `json` 格式会向 stderr 提示「未取全,加 `--page-all`」;`json` 的 `data` 本身带总数,不额外提示。
390
+
391
+ **自动翻页**:默认仍是单页,只有显式传 `--page-all` 或 `--page-limit` 才翻页。
392
+
393
+ 能否翻页由接口在 OpenAPI 上的 `x-cli-pagination` 声明,同步期把字段名钉进 catalog,运行时不猜形状。网关上并存两套写法,CLI 都支持:
394
+
395
+ | 请求字段 | 响应条目字段 | 典型接口 |
396
+ | :--- | :--- | :--- |
397
+ | `pageNum` / `pageSize` | `result` | `biz-line-list`、`biz-line-strategy-list`、`optimize-project-query-by-page` |
398
+ | `page` / `size` | `data` | Facebook / Google / TikTok 的 `dimension`、`metrics` 列表 |
399
+
400
+ 页码从 1 递增,页大小未传时 CLI 注入默认值。停止条件为「本页为空 / 累计条数达到 `total` / 达到显式页数上限 / 触及单次拉取硬上限 100 万条」——最后一条是给「上游忽略页码、每页返回同一批数据」这种异常场景的兜底,不影响正常接口。
401
+
402
+ ```bash
403
+ # 取尽(默认不封顶)
404
+ sino-bc-cli biz-line api optimize-project-query-by-page --page-all --data '{"pageSize":100}'
405
+ # 只抽前两页看看
406
+ sino-bc-cli biz-line api optimize-project-query-by-page --page-limit 2
407
+ ```
408
+
409
+ 翻页成功时 `data` 保持单页调用的对象形状(条目字段替换为拼接后的全部条目),`meta` 额外给出 `count` / `pages` / `total`;只有显式传了 `--page-limit` 且被截断时 `meta.truncated` 才为 `true` 并在 stderr 提示——**看到 `truncated` 就说明数据不全**,请加大或去掉 `--page-limit`。
410
+
411
+ 两类接口不能翻页,传分页 flag 会以 `validation` 失败且**不发起请求**:写操作(重复请求不可逆),以及 catalog 未声明分页的接口。用 `sino-bc-cli /schema <name>` 看 `_meta.pagination` 即可判断某接口能否翻页。
412
+
413
+ 手写 Shortcut(`+list` / `+strategies`)默认请求体带 `pagination: false`(服务端一次返回全量);传 `--page-all` / `--page-limit` 时 CLI 会去掉该字段并注入页码字段按页翻页。
353
414
 
354
415
  ### 输出契约与退出码
355
416
 
356
417
  非 TTY(管道 / CI / Agent)默认输出 JSON 信封。成功走 stdout,失败走 stderr:
357
418
 
358
419
  ```json
359
- { "ok": true, "env": "prod", "command": "biz-line +list", "data": [], "meta": { "count": 0 } }
360
- { "ok": false, "env": "prod", "command": "biz-line +delete", "error": { "type": "confirmation_required", "message": "...", "hint": "..." } }
420
+ { "ok": true, "command": "biz-line +list", "data": [], "meta": { "count": 0 } }
421
+ { "ok": false, "command": "biz-line +delete", "error": { "type": "confirmation_required", "message": "...", "hint": "..." } }
361
422
  ```
362
423
 
363
- `data` 只包含上游 `result`。**判断成功请看 `ok` 或进程退出码,不要看上游 `code`。**
424
+ `data` 只包含上游 `result`;`meta.count` 恒为主记录数组的长度,与是否翻页无关。**判断成功请看 `ok` 或进程退出码,不要看上游 `code`。**
425
+
426
+ 失败信封**恒为 JSON 且恒走 stderr**,与 `--format` 无关:失败的首要消费者是 Agent,契约不随渲染格式分叉。
364
427
 
365
428
  | 退出码 | 含义 |
366
429
  | :----- | :--- |
367
430
  | `0` | 成功 |
431
+ | `2` | 调用方参数或配置有误(`error.type` 为 `validation` / `config`)——**改命令再试**,重试原命令没用 |
368
432
  | `10` | 写操作待确认,**不是错误**;向用户确认后在原命令末尾追加 `--yes` 重试 |
369
- | 其他非 0 | 失败,详见 `error.type`(`validation` / `config` / `api`) |
433
+ | `1` | 上游网关或业务接口失败(`error.type` 为 `api`)——可重试或告知用户 |
370
434
 
371
435
  ### 变量配置文件
372
436
 
373
- 环境、`API_KEY` 与维护者用的 `apifoxToken` 存放在 `<用户主目录>/.sino-bc-cli/config.json`。`X-GATEWAY-TYPE` 固定为 `A2C-CLI`,不开放配置。
437
+ 身份令牌(`authToken`,即网关鉴权用的 JWT)存于平台密钥存储:macOS/Linux 为 `~/.sino-bc-cli/secrets/` 下的 AES-256-GCM 密文,Windows 为当前用户凭据库;均不写入 `config.json` 明文。`X-GATEWAY-TYPE` 固定为 `A2C-CLI`,不开放配置。可写配置为身份令牌与 `gateway-url`;签约主体是调用级参数。写配置时删除磁盘旧键 `env` / `apifoxToken` / `corporationId`。
374
438
 
375
439
  | 字段 | 命令行键名 | 默认值 | 说明 |
376
440
  | :--- | :--------- | :----- | :--- |
377
- | `env` | `env` | `prod` | 目标环境,可选 `test` / `pre` / `prod` |
378
- | `apiKey` | `api-key` | 内置默认 Key | 网关鉴权用的 API Key(业务命令使用) |
379
- | `apifoxToken` | `apifox-token` / `APIFOX_TOKEN` | 未配置为空;`/init` 或 `/set-config` 省略取值时写入内置默认 | 仅维护者同步接口文档用(`npm run sync-api-doc`),与业务调用无关;`/init` 会询问,裸 `/set-config` 不问 |
441
+ | `authToken` | `auth-token` | 无内置默认值 | 网关鉴权用的身份令牌(JWT,业务命令使用);不同身份(公司人员 / 客户 / 内部应用)持有各自的令牌;存于平台密钥存储 |
442
+ | `gatewayUrl` | `gateway-url` | `https://agent.beyondclick.com` | 业务与认证共用的网关根;合法 http/https 绝对 URL,可带 path 前缀 |
443
+ | (调用级主体) | `--corporation-id` / `--auth-context-id` | 每次调用显式传入 | 仅 `x-cli-tenant` 接口需要;`/auth status` 取认证上下文,`/tenant list` 查可用主体 |
380
444
 
381
445
  ```bash
382
446
  # 查看(密钥打码)
383
447
  sino-bc-cli /get-config
384
448
 
385
- # 三种修改写法等价
386
- sino-bc-cli /set-config env test
387
- sino-bc-cli /set-config env=test
388
- sino-bc-cli /set-config --env=test
389
-
390
- # 不带参数则逐项交互修改,直接回车保留当前值(只问环境与 API_KEY)
449
+ # 不带参数则逐项交互修改;访问令牌处回车保留现有凭证
391
450
  sino-bc-cli /set-config
392
451
 
393
- # 维护者才需要:配置 Apifox token(省略取值写入内置默认;默认打码,--show-secret 看明文)
394
- sino-bc-cli /set-config APIFOX_TOKEN
395
- sino-bc-cli /set-config apifox-token <你的 token>
452
+ # 手动配置访问令牌;刷新令牌可省略
453
+ sino-bc-cli /set-config auth-token <AT>
454
+ sino-bc-cli /set-config auth-token <AT> <RT>
455
+ # 改网关(与当前不同则清除凭证,须重新 /auth login)
456
+ sino-bc-cli /set-config gateway-url https://agent.beyondclick.com
457
+ sino-bc-cli /auth status
458
+ sino-bc-cli /auth logout
459
+
460
+ # 客户身份下查询可用主体;每次 tenant 调用显式传入主体与认证上下文
461
+ sino-bc-cli /auth status
462
+ sino-bc-cli /tenant list
396
463
  ```
397
464
 
398
- > `/init` 在非交互环境(npm `postinstall`、CI、Agent 调用)下不提问:已有配置保持,但空的 `apifoxToken` 会补上内置默认;不存在则按默认值创建(含 `APIFOX_TOKEN`)。
465
+ > `/init` 只注册技能,不询问、不写入身份令牌。登录用 `/auth login`,手动令牌用 `/set-config auth-token <AT> [RT]`。维护者同步接口文档请设置环境变量 `APIFOX_TOKEN`,不要写入用户配置。
399
466
 
400
467
  ### 全局选项
401
468
 
@@ -407,15 +474,13 @@ sino-bc-cli /set-config apifox-token <你的 token>
407
474
 
408
475
  ### 环境与请求网关
409
476
 
410
- 业务命令的请求地址由 [`src/constants/gateway.ts`](./src/constants/gateway.ts) 的 `GATEWAY_CONFIG` 决定,统一走 `joinGatewayUrl(env, path)` 拼接,实际请求由 [`src/utils/gateway-client.ts`](./src/utils/gateway-client.ts) 这一个出口发出。`path` 等于接口文档 / OpenAPI / catalog 路由(带 `/sino-opti-hive` 则原样保留)。
477
+ 业务与认证请求的根地址取生效 `gateway-url`(缺省 [`src/constants/gateway.ts`](./src/constants/gateway.ts) 的 `DEFAULT_GATEWAY_BASE_URL`),统一走 `joinGatewayUrl(path)` 拼接,由 [`src/shared/gateway-client.ts`](./src/shared/gateway-client.ts) 与 OAuth 客户端发出。`path` 等于接口文档 / OpenAPI / catalog 路由(带 `/sino-opti-hive` 则原样保留)。
411
478
 
412
- | `ENV` | 说明 | 网关地址 |
413
- | :----- | :------- | :----------------------------------- |
414
- | `test` | 测试环境 | `https://test-agent.beyondclick.com` |
415
- | `pre` | 预发环境 | `https://test-agent.beyondclick.com` |
416
- | `prod` | 生产环境 | `https://test-agent.beyondclick.com` |
479
+ | 说明 | 网关地址 |
480
+ | :--- | :--- |
481
+ | 缺省生产网关 | `https://agent.beyondclick.com` |
417
482
 
418
- > 当前三环境同一地址。换地址只需改 `GATEWAY_CONFIG`,同时同步 [`SKILL.md`](./SKILL.md) 与 [`src/api-doc/`](./src/api-doc/custom/README.md) 中的示例地址。
483
+ > 改地址:`sino-bc-cli /set-config gateway-url <URL>`。归一化后与当前不同会清除身份凭证。
419
484
 
420
485
  ### 使用示例
421
486
 
@@ -437,7 +502,7 @@ sino-bc-cli -h
437
502
  sino-bc-cli biz-line --help
438
503
  ```
439
504
 
440
- 接口字段口径见 [`src/api-doc/custom/README.md`](./src/api-doc/custom/README.md)。
505
+ 接口字段口径见 [`src/api-doc/README.md`](./src/api-doc/README.md)。
441
506
 
442
507
  #### ③ 查询业务线数据
443
508
 
@@ -456,7 +521,7 @@ sino-bc-cli biz-line api biz-line-strategy-compare \
456
521
  --data '{"bizLineId":123,"currentId":2,"prevId":1}'
457
522
  ```
458
523
 
459
- 执行效果:向配置文件指定环境的网关发起请求,路径等于接口文档路由,自动注入 `Authorization` 与 `X-GATEWAY-TYPE: A2C-CLI`。接口清单见 [`src/api-doc/custom/README.md`](./src/api-doc/custom/README.md)。
524
+ 执行效果:向配置文件指定环境的网关发起请求,路径等于接口文档路由,自动注入 `Authorization` 与 `X-GATEWAY-TYPE: A2C-CLI`。接口清单见 [`src/api-doc/README.md`](./src/api-doc/README.md)。
460
525
 
461
526
  #### ④ 执行写操作(需确认)
462
527
 
@@ -527,63 +592,25 @@ npm run rebuild
527
592
 
528
593
  ## 🔧 扩展新命令(开发者指南)
529
594
 
530
- 先判断要加的是哪一类:
531
-
532
- - **生命周期命令**(安装、配置、维护,用 `/` 前缀)→ 加到 `src/commands/`
533
- - **业务命令**(调接口拿数据,形如 `biz-line +xxx`)→ 加到 `src/shortcuts/`
534
-
535
- ### A. 新增业务 Shortcut
536
-
537
- 1. **写声明**:在 `src/shortcuts/biz-line/read.ts` 或 `write.ts` 里新增一条 `IShortcutDefinition`,声明 `command`、`risk`、`flags`,并在 `resolve()` 里返回目标接口与请求体
538
- 2. **登记**:加入 `src/shortcuts/biz-line/index.ts` 的 `BIZ_LINE_SHORTCUTS` 数组
539
- 3. **补测试**:在 `tests/` 下用 HTTP 桩断言请求与输出
540
- 4. **同步文档**:`skills/oapi/sino-bc-biz-line` 的意图表、`affordance/biz-line.md` 的 WHEN、`src/api-doc/oapi/` 的字段口径;手写补充放 `skills/default/`、`skills/custom/` 与 `src/api-doc/custom/`;根 `SKILL.md` 只做入口
541
-
542
- 参数解析、输出格式、写操作确认门、错误归类都由 `src/shortcuts/index.ts` 统一承担,声明里不要自己发 HTTP。接口 `name` 一律取自 `src/generated/api-catalog.json`,不要新造。
543
-
544
- 维护者同步 Apifox:`npm run sync-api-doc`。token 按三级回退取值——环境变量 `APIFOX_TOKEN` > `~/.sino-bc-cli/config.json` 的 `apifoxToken` > 终端交互输入;交互输入到的 token 会写回该配置文件,下次不再询问。三处都没有则非 0 退出。CI 用环境变量覆盖即可。**不要把 token 写入仓库任何文件。**
545
-
546
- > 只是想调一个已有接口,通常不需要写新 Shortcut——直接 `biz-line api <name> --data '<json>'` 即可。Shortcut 应当带来智能默认值、参数编排或更友好的输出,否则不值得新增。
595
+ 仓库开发统一使用 [bc-develop](.cursor/skills/bc-develop/SKILL.md)。Cursor 输入 `/bc-develop` 只打开该技能;任务不明会先询问。任务入口为 `/bc-develop-api`、`/bc-develop-commands`、`/bc-develop-skills`、`/bc-develop-review`、`/bc-develop-verify`、`/bc-develop-maintain`、`/bc-develop-merge`,均读取同一技能。改了会进仓库的文件后必须走 `/bc-develop-review`,不要实现完就停。
547
596
 
548
- ### B. 新增生命周期命令
597
+ 一对一接口由 catalog 生成命令;有名称解析、月份筛选等便利能力才增加 `src/shortcuts/<domain>/` 手写实现,并由通用 registry 聚合。根索引标签在 `src/catalog/sync/business-info.json`,详细口径放 `src/catalog/sync/domains/`;同步统一生成接口文档、域入口、帮助与根索引。
549
598
 
550
- 1. **新建命令文件**:在 `src/commands/` 下创建 `xxx.command.ts`
551
- 2. **实现 ICommand 接口**:编写 `name`、`description` 和 `execute()` 方法
552
- 3. **注册命令**:在 `src/commands/index.ts` 的 `commands` 数组中添加实例
599
+ 维护者执行 `npm run sync-api-doc` 从 Apifox 自动发现并同步全部模块。token 只取环境变量 `APIFOX_TOKEN`,不写入仓库或用户配置。详细开发入口见 [如何添加功能](developer-doc/02-handbook-add-feature.md)。
553
600
 
554
- ### 示例
601
+ ---
555
602
 
556
- ```typescript
557
- // src/commands/example.command.ts
558
- import { ICommand } from "../types";
559
- import { logger, BrowserUtils } from "../utils";
603
+ ## 📄 License
560
604
 
561
- export class ExampleCommand implements ICommand {
562
- public readonly name = "example";
563
- public readonly description = "示例命令 - 打开示例网站";
605
+ MIT License
564
606
 
565
- public async execute(args: string[]): Promise<void> {
566
- logger.info("执行示例命令,参数:", args);
567
- await BrowserUtils.openUrl("https://example.com/");
568
- }
569
- }
570
- ```
571
607
 
572
- ```typescript
573
- // src/commands/index.ts
574
- import { ExampleCommand } from "./example.command"; // 新增导入
608
+ ### 浏览器设备授权
575
609
 
576
- export const commands: ICommand[] = [
577
- new InitCommand(),
578
- new GetConfigCommand(),
579
- new ExampleCommand(), // 新增注册
580
- ];
581
- ```
610
+ 执行 `sino-bc-cli /auth login`,在自动打开的浏览器中确认授权。终端每 3 秒等待一次授权结果,没有固定总等待时限;按 Ctrl+C 可取消。成功后进度流提示「授权成功,本机身份已就绪」,不回显令牌。AT、RT、到期时间写入平台密钥存储,普通配置文件不保存凭证。凭证与环境无关。业务请求在 AT 剩余时间不超过 5 分钟时自动刷新;RT 过期或失效时清除对应凭证并要求重新登录。暂时的网络或服务错误不会清除凭证。macOS 无图形会话时可用 `/auth keychain-downgrade` 把主密钥落到文件。
582
611
 
583
- 完成后执行 `npm run build` 即可使用 `sino-bc-cli /example`。
612
+ `/auth status` 默认打码展示 AT,并给出 JWT `userType` 与已缓存的 `sso` / `system` / `passport`(passport 为按主体 ID 分槽的 map,没有当前主体)。资料缓存在配置目录的 `identity-cache.json`(权限 `0o600`),不进 `config.json`、不进密钥存储,也不得用来填充 `--corporation-id`。`/auth logout` 清除整份身份面、删除该缓存,并取消仍在等待的旧登录。`/set-config auth-token <AT> [<RT>]` 写成手动凭证;省略 RT 则刷新令牌为空。带 RT 的手动凭证在 JWT 即将到期时也会走刷新。并发进程通过本地锁协调刷新,过时的网络响应不会覆盖手动配置、退出或新登录。
584
613
 
585
- ---
586
-
587
- ## 📄 License
614
+ 认证与业务共用生效 `gateway-url`(缺省 `https://agent.beyondclick.com`)。认证请求不跟随重定向。确认页打开服务端返回的 `verificationUrl` 原值。
588
615
 
589
- MIT License
616
+ 查询参数同样用 `--data` 传入;上传接口的文件字段填写本地文件路径。具体用法见 [查询参数与文件上传](developer-doc/06-request-input.md)。交互配置令牌时直接回车会保留整套 OAuth 凭证。
package/dist/SKILL.md CHANGED
@@ -5,9 +5,11 @@ description: >
5
5
  投放渠道/品类、业务线列表/详情/状态、周策略增删改查与策略生成、策略周期/消耗/红绿灯、优化项目;
6
6
  Facebook / Google / TikTok 广告策略维度(目标、出价、定向等配置分布)
7
7
  与广告策略成效(消耗、曝光、点击等);
8
- SSO 组别;以及 /init、/get-config、/set-config。
8
+ SSO 组别; 以及 /init、/update、/get-config、/set-config、/schema。
9
+ 也用于优化项目月度分析、消耗与工时趋势、优化师人效、Excel 报表导出(project-analysis),
10
+ 以及营销协同项目、阶段、任务、文档、文件、投放数据、看板、飞书消息、组织用户、租户和用户资料接口。
9
11
  用户提到业务线、周策略、策略生成、广告结构、广告层级、广告成效、广告策略维度、biz-line、
10
- Meta、Facebook、Google、TikTok、sso、sino-opti-hive 时也必须用本技能,不要自己拼 HTTP。
12
+ Meta、Facebook、Google、TikTok、sso、user、sino-opti-hive、sino-bc-nexus、营销协同时也必须用本技能,不要自己拼 HTTP。
11
13
  完整规则在子技能 sino-bc-shared 与 sino-bc-<domain>。
12
14
  metadata:
13
15
  requires:
@@ -18,66 +20,117 @@ metadata:
18
20
 
19
21
  用全局 CLI `sino-bc-cli` 查询或操作 BeyondClick。本文件是**唯一对外技能**,也是决策页:按用户意图只读一份子技能,再执行命令。不要自己拼网关 HTTP,也不要一次读完全部子技能。
20
22
 
21
- `/init` 之后本机目录是 `~/.agents/skills/sino-bc-cli/`,子技能嵌在其下(没有 `oapi/` / `custom/` / `default/` 这一层):
23
+ `/init` 之后本机技能落在各 Agent 的 `skills/sino-bc-cli/`(至少会写 `~/.agents/skills`;Cursor / Claude / Codex 仅在对应 Agent 根已存在时写入)。子技能嵌在其下(没有 `oapi/` / `custom/` / `default/` 这一层):
22
24
 
23
25
  ```text
24
26
  sino-bc-cli/
25
- ├── SKILL.md ← 本文件
26
- ├── sino-bc-shared/ 横切:配置、信封、确认门
27
- ├── sino-bc-biz-line/ 业务线、周策略、投放渠道/品类、关联项目、广告策略维度与成效
28
- └── sino-bc-sso/ SSO 组别
27
+ ├── SKILL.md ← 本文件
28
+ ├── sino-bc-shared/ 横切:配置、信封、确认门
29
+ ├── sino-bc-auth/ 身份令牌与浏览器授权
30
+ ├── sino-bc-biz-line/ 业务线、周策略、投放渠道/品类、广告策略维度与成效
31
+ ├── sino-bc-sso/ SSO 组别
32
+ ├── sino-bc-tenant/ 签约主体
33
+ ├── sino-bc-project-analysis/ 优化项目月度分析、趋势、人效与导出
34
+ ├── sino-bc-project/ 营销协同项目、成员、分组、建项字段
35
+ ├── sino-bc-project-stage/ 营销协同项目阶段
36
+ ├── sino-bc-task/ 营销协同任务交付闭环
37
+ ├── sino-bc-document/ 营销协同文档中心与项目文档
38
+ ├── sino-bc-file/ 营销协同文件上传
39
+ ├── sino-bc-delivery/ 营销协同投放数据与 Campaign 归集
40
+ ├── sino-bc-dashboard/ 营销协同看板
41
+ ├── sino-bc-im/ 营销协同飞书群消息
42
+ ├── sino-bc-organization/ 组织、团队与当前用户
43
+ └── sino-bc-user/ SSO / 签约主体(租户)用户资料
29
44
  ```
30
45
 
31
- ## 运行环境
32
-
33
- `sino-bc-cli` 装在用户电脑、服务器本机,或被内嵌进 Agent 沙箱,不保证出现在当前默认执行面。先按下表选执行面,找到命令再进入「怎么跑」。
46
+ Agent 读取时用本机实际安装路径(常见为 `~/.agents/skills/sino-bc-cli/`、`~/.cursor/skills/sino-bc-cli/` 等);也可用 `sino-bc-cli /skill target list` 查看。
34
47
 
35
- | 当前环境 | 怎么拿 CLI |
36
- | --- | --- |
37
- | 豆包工作伙伴 | **优先查沙箱外**本机 CLI。本 CLI 装在用户电脑,沙箱镜像里通常没有。 |
38
- | 其他 Agent 已把本 CLI 内嵌进沙箱 | 在**当前沙箱**直接执行。 |
39
- | Linux 服务器或未识别环境(走兜底) | **先查沙箱**;沙箱没有再查本机环境。 |
48
+ ## 运行环境
40
49
 
41
- 对得上前两行就按前两行;认不准时走 Linux 兜底。沙箱里找不到不要在沙箱里 `npm i`,也不要改去拼 HTTP。两边都没有:提示在本机安装 `npm i sino-bc-cli@latest -g`。
50
+ 【sino-bc-cli 执行规则(最高优先级,适用于所有环境)】
51
+ 1. 所有 sino-bc-cli 操作前,先读取本机已安装的 `sino-bc-cli/` 下对应 SKILL.md(常见路径见上;不确定时先 `sino-bc-cli /skill target list`)。
52
+ 2. 统一探测流程(不按环境预设):
53
+ ① 先在当前执行面运行 `which sino-bc-cli` 探测:
54
+ - 存在 → 直接在当前执行面执行命令;
55
+ - 不存在 → 进入第②步。
56
+ ② 探测本机:用提权方式(require_escalated)运行 `which sino-bc-cli`:
57
+ - 存在 → 所有命令一律带 require_escalated 在本机执行;
58
+ - 不存在 → 提示安装 `npm i sino-bc-cli@latest -g`,不得改用其他方式。
59
+ 3. 严禁自行拼 HTTP 调网关;写操作须用户确认后再加 --yes。
60
+ 4. 命令失败时:若是沙箱资源类错误(如 Too many open files),等待后重试,不得降级或跳过;其他错误按报错修正。
42
61
 
43
62
  ## 怎么跑
44
63
 
45
64
  1. 用 Read 打开 [`sino-bc-shared/SKILL.md`](sino-bc-shared/SKILL.md):禁止拼 HTTP、成功看 `ok` / 退出码、写操作退出码 10、配置。
46
65
  2. 按下表再读**一份**域技能。Shortcut、组参、枚举、长尾 `api <name>` 都在那份里。
47
66
  3. 有 Shortcut 用 `sino-bc-cli <domain> +<shortcut>`;没有再用 `sino-bc-cli <domain> api <name> --data '<json>'`。
48
- 4. 写操作先停下确认环境和意图,用户同意后再加 `--yes`。**不要自行补 `--yes`。**
49
67
 
50
- CLI 未安装:`npm i sino-bc-cli@latest -g`(Node.js >= 24)。技能未出现或升级 CLI 后:`sino-bc-cli /init`。
68
+ 输入字段先查看 `/schema <name>`:query 参数同样放入 `--data`,由 CLI 编码到 URL;multipart 文件字段填写本地文件路径(如 `"file":"/path/report.pdf"`),CLI 发送文件内容。`--dry-run` 只校验并预览,不上传。
69
+ 4. 写操作先停下确认意图,用户同意后再加 `--yes`。**不要自行补 `--yes`。**
70
+
71
+ CLI 未安装:`npm i sino-bc-cli@latest -g`(Node.js >= 24)。技能未出现:`sino-bc-cli /init`。升级已安装的 CLI:`sino-bc-cli /update`(拉取 latest 并自动 `/init`)。
51
72
 
52
73
  ## 意图 → 子技能
53
74
 
54
75
  | 用户在问 | 读 | 命令入口 |
55
76
  | --- | --- | --- |
56
- | 环境、API_KEY、成功/失败怎么看、写操作要不要确认 | [`sino-bc-shared/SKILL.md`](sino-bc-shared/SKILL.md) | `/init` `/get-config` `/set-config` |
77
+ | 身份令牌、网关地址、成功/失败怎么看、写操作要不要确认 | [`sino-bc-shared/SKILL.md`](sino-bc-shared/SKILL.md) | `/auth login` `/set-config auth-token <AT> [RT]` `/get-config` |
78
+ | 浏览器授权登录、身份令牌状态、清除凭证、查询可用签约主体 | 同上 | `/auth login\|status\|logout` `/tenant list` |
57
79
  | 投放渠道/品类、业务线列表/详情/状态、周策略增删改查与策略生成、策略周期/消耗/红绿灯、关联项目/优化项目 | [`sino-bc-biz-line/SKILL.md`](sino-bc-biz-line/SKILL.md) | `biz-line +<shortcut>` |
58
80
  | Facebook / Google / TikTok 广告策略维度(目标、出价、定向等配置分布)或广告策略成效(消耗、曝光、点击等) | 同上 | `biz-line +<shortcut>`(维度 / 成效) |
59
81
  | SSO 组别 | [`sino-bc-sso/SKILL.md`](sino-bc-sso/SKILL.md) | `sso +group-list` |
60
-
61
- 不要用本技能处理:本仓库源码开发、扩展命令、npm 发版(见仓库 `README.md` / `ReleaseSteps.md`)。
82
+ | 优化项目月度汇总、项目明细、消耗/工时趋势、优化师人效、导出 Excel | [`sino-bc-project-analysis/SKILL.md`](sino-bc-project-analysis/SKILL.md) | `project-analysis +summary` / `+projects` 等 |
83
+ | 营销协同对客项目、成员、分组、建项字段 | [`sino-bc-project/SKILL.md`](sino-bc-project/SKILL.md) | `project api <name>` |
84
+ | 营销协同项目阶段 | [`sino-bc-project-stage/SKILL.md`](sino-bc-project-stage/SKILL.md) | `project-stage api <name>` |
85
+ | 营销协同任务交付闭环、审核/确认/暂停 | [`sino-bc-task/SKILL.md`](sino-bc-task/SKILL.md) | `task api <name>` |
86
+ | 营销协同文档中心、项目文档 | [`sino-bc-document/SKILL.md`](sino-bc-document/SKILL.md) | `document api <name>` |
87
+ | 营销协同文件上传与下载链接 | [`sino-bc-file/SKILL.md`](sino-bc-file/SKILL.md) | `file api <name>` |
88
+ | 营销协同投放数据、Campaign 归集、阶段指标 | [`sino-bc-delivery/SKILL.md`](sino-bc-delivery/SKILL.md) | `delivery api <name>` |
89
+ | 营销协同看板预算分布与时间轴 | [`sino-bc-dashboard/SKILL.md`](sino-bc-dashboard/SKILL.md) | `dashboard api <name>` |
90
+ | 营销协同飞书群消息 | [`sino-bc-im/SKILL.md`](sino-bc-im/SKILL.md) | `im api <name>` |
91
+ | 组织架构、团队成员、登录态当前用户(`organization +info`) | [`sino-bc-organization/SKILL.md`](sino-bc-organization/SKILL.md) | `organization api <name>` |
92
+ | 按 userId 查询 SSO 或签约主体(租户)用户姓名 | [`sino-bc-user/SKILL.md`](sino-bc-user/SKILL.md) | `user +sso-info` / `user +tenant-info`(租户用户 `corporationId` 放 `--data`) |
93
+
94
+ 不要用本技能处理:本仓库源码开发、扩展命令、npm 发版。
62
95
 
63
96
  ## 子技能索引
64
97
 
65
98
  Agent 先读子技能 `sino-bc-shared`,再按意图读域技能。
66
99
 
67
100
  1. 配置、信封、确认门、禁止拼 HTTP:[`sino-bc-shared/SKILL.md`](sino-bc-shared/SKILL.md)(仓库 [`skills/default/sino-bc-shared/SKILL.md`](skills/default/sino-bc-shared/SKILL.md))
68
- 2. 业务线、周策略生成、广告结构、广告成效:[`sino-bc-biz-line/SKILL.md`](sino-bc-biz-line/SKILL.md)(仓库 [`skills/oapi/sino-bc-biz-line/SKILL.md`](skills/oapi/sino-bc-biz-line/SKILL.md))
69
- 3. SSO 组别:[`sino-bc-sso/SKILL.md`](sino-bc-sso/SKILL.md)(仓库 [`skills/oapi/sino-bc-sso/SKILL.md`](skills/oapi/sino-bc-sso/SKILL.md))
70
-
71
- 安装与刷新(会写入上面列出的子技能到本机 `sino-bc-cli/`,并删除旧的平级 `sino-bc-shared` / `sino-bc-<domain>` 技能目录):
101
+ 2. 身份令牌与浏览器授权:[`sino-bc-auth/SKILL.md`](sino-bc-auth/SKILL.md)(仓库 [`skills/oapi/sino-bc-auth/SKILL.md`](skills/oapi/sino-bc-auth/SKILL.md))
102
+ 3. 业务线、周策略、投放渠道/品类、关联项目、广告策略维度与成效:[`sino-bc-biz-line/SKILL.md`](sino-bc-biz-line/SKILL.md)(仓库 [`skills/oapi/sino-bc-biz-line/SKILL.md`](skills/oapi/sino-bc-biz-line/SKILL.md))
103
+ 4. 营销协同看板:预算分布、项目分布与关键项目时间轴:[`sino-bc-dashboard/SKILL.md`](sino-bc-dashboard/SKILL.md)(仓库 [`skills/oapi/sino-bc-dashboard/SKILL.md`](skills/oapi/sino-bc-dashboard/SKILL.md))
104
+ 5. 营销协同投放数据:Campaign 归集与投放阶段指标:[`sino-bc-delivery/SKILL.md`](sino-bc-delivery/SKILL.md)(仓库 [`skills/oapi/sino-bc-delivery/SKILL.md`](skills/oapi/sino-bc-delivery/SKILL.md))
105
+ 6. 营销协同文档:文档中心与项目文档:[`sino-bc-document/SKILL.md`](sino-bc-document/SKILL.md)(仓库 [`skills/oapi/sino-bc-document/SKILL.md`](skills/oapi/sino-bc-document/SKILL.md))
106
+ 7. 营销协同文件上传与对象存储记录:[`sino-bc-file/SKILL.md`](sino-bc-file/SKILL.md)(仓库 [`skills/oapi/sino-bc-file/SKILL.md`](skills/oapi/sino-bc-file/SKILL.md))
107
+ 8. 营销协同飞书群消息:[`sino-bc-im/SKILL.md`](sino-bc-im/SKILL.md)(仓库 [`skills/oapi/sino-bc-im/SKILL.md`](skills/oapi/sino-bc-im/SKILL.md))
108
+ 9. 组织架构、团队成员与当前用户:[`sino-bc-organization/SKILL.md`](sino-bc-organization/SKILL.md)(仓库 [`skills/oapi/sino-bc-organization/SKILL.md`](skills/oapi/sino-bc-organization/SKILL.md))
109
+ 10. 营销协同项目:生命周期、成员、分组与建项字段:[`sino-bc-project/SKILL.md`](sino-bc-project/SKILL.md)(仓库 [`skills/oapi/sino-bc-project/SKILL.md`](skills/oapi/sino-bc-project/SKILL.md))
110
+ 11. 优化项目月度分析、消耗与工时趋势、优化师人效及 Excel 导出:[`sino-bc-project-analysis/SKILL.md`](sino-bc-project-analysis/SKILL.md)(仓库 [`skills/oapi/sino-bc-project-analysis/SKILL.md`](skills/oapi/sino-bc-project-analysis/SKILL.md))
111
+ 12. 营销协同项目阶段:[`sino-bc-project-stage/SKILL.md`](sino-bc-project-stage/SKILL.md)(仓库 [`skills/oapi/sino-bc-project-stage/SKILL.md`](skills/oapi/sino-bc-project-stage/SKILL.md))
112
+ 13. SSO 组别:[`sino-bc-sso/SKILL.md`](sino-bc-sso/SKILL.md)(仓库 [`skills/oapi/sino-bc-sso/SKILL.md`](skills/oapi/sino-bc-sso/SKILL.md))
113
+ 14. 营销协同任务:交付闭环与操作日志:[`sino-bc-task/SKILL.md`](sino-bc-task/SKILL.md)(仓库 [`skills/oapi/sino-bc-task/SKILL.md`](skills/oapi/sino-bc-task/SKILL.md))
114
+ 15. 签约主体:[`sino-bc-tenant/SKILL.md`](sino-bc-tenant/SKILL.md)(仓库 [`skills/oapi/sino-bc-tenant/SKILL.md`](skills/oapi/sino-bc-tenant/SKILL.md))
115
+ 16. SSO 用户与签约主体(租户)用户资料:[`sino-bc-user/SKILL.md`](sino-bc-user/SKILL.md)(仓库 [`skills/oapi/sino-bc-user/SKILL.md`](skills/oapi/sino-bc-user/SKILL.md))
116
+
117
+ 安装与刷新:
72
118
 
73
119
  ```bash
120
+ # 升级已安装的 CLI(装 latest 并自动刷新技能)
121
+ sino-bc-cli /update
122
+
123
+ # 只刷新本机技能,不改全局包
74
124
  sino-bc-cli /init
75
125
  sino-bc-cli /skill
126
+ sino-bc-cli /skill target list
76
127
  ```
77
128
 
78
- 列出包内技能:`sino-bc-cli /skill`(只有这一条)。查看某条命令何时用:`sino-bc-cli biz-line --help`。
79
- 升级 CLI 后请再跑一次 `/init`。
129
+ 列出包内技能:`sino-bc-cli /skill`(只有入口这一条)。管理安装目录:`/skill target add|remove|list`。查看某条命令何时用:`sino-bc-cli biz-line --help`。
130
+ 不要把 `/update` 和 `/init` 连着跑:升级只用 `/update`。
131
+
132
+ > 仓库里 `skills/default/` 只留 `sino-bc-shared`。域默认技能在 `skills/oapi/`,由 `npm run sync-api-doc` 整层重写。`skills/custom/` 可空;有同名目录则打包和 `/init` 整份用 custom,不再与 oapi 按文件叠加,且必须自带完整 `SKILL.md`。custom 不能覆盖 `sino-bc-shared`。
133
+ > `/init` 把根 `SKILL.md` 与选定子技能嵌进通过门控的默认目标(`~/.agents/skills` 始终写;Cursor/Claude/Codex 需 Agent 根已存在)以及 `extraSkillTargets`。
134
+ > 上面的索引由同步脚本按 catalog 维护;域中文标签在 `src/catalog/sync/business-info.json`,概念与 HOW 在 `src/catalog/sync/domains/`,不要手改索引或往通用生成器添加业务特例。
80
135
 
81
- > 仓库里子技能分三层:`skills/oapi/sino-bc-<domain>/` 由 `npm run sync-api-doc` **整层重写**(域 `SKILL.md` 不再与旧文件合并);`skills/default/sino-bc-shared/` 与 `skills/custom/sino-bc-<domain>/references/` 手写且不会被同步覆盖。域 custom 不要放 `SKILL.md`,以免 `/init` 盖掉生成稿。每个子技能都是标准目录:`SKILL.md` + `references/`。
82
- > `/init` 把根 `SKILL.md` 与各层子技能嵌进 `~/.agents/skills/sino-bc-cli/`。
83
- > 上面的索引由同步脚本维护,改它请改 `src/api-utils/render-skills.ts`。
136
+ CLI 授权接口出入参采用驼峰;`accessExpiresAt`、`refreshExpiresAt` 为毫秒时间戳。凭证由 CLI 直接保存,Agent 无需自行换算或处理 token。
@@ -0,0 +1,27 @@
1
+ # auth 命令何时用
2
+
3
+ 字段口径在 `src/api-doc/`,这里只写 WHEN / 别用 / 示例。
4
+
5
+ ## +code
6
+
7
+ - **WHEN**:获取授权链接地址
8
+ - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
9
+ - **示例**:`sino-bc-cli auth +code --data '{...}'`
10
+
11
+ ## +exchange
12
+
13
+ - **WHEN**:获取访问凭证accessToken和刷新凭证refreshToken
14
+ - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
15
+ - **示例**:`sino-bc-cli auth +exchange --data '{...}'`
16
+
17
+ ## +refresh
18
+
19
+ - **WHEN**:通过刷新凭证refreshToken获取访问凭证accessToken
20
+ - **别用**:已有更贴切的 Shortcut 时不要用本命令凑合。
21
+ - **示例**:`sino-bc-cli auth +refresh --data '{...}'`
22
+
23
+ ## api
24
+
25
+ - **WHEN**:需要原始 JSON 字段,或没有合适的便捷 Shortcut 时按 name 调用。
26
+ - **别用**:已有 Shortcut 的高频查询仍应走 `+xxx`。
27
+ - **示例**:`sino-bc-cli auth api <name> --data '{...}'`