@sokeai/cli 1.0.79 → 1.0.80

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 (128) hide show
  1. package/package.json +1 -1
  2. package/scripts/install.js +8 -0
  3. package/scripts/run.js +3 -2
  4. package/skills/mono/.workbuddy/memory/2026-09-01.md +2 -0
  5. package/skills/mono/.workbuddy/memory/MEMORY.md +4 -0
  6. package/skills/mono/ARCHITECTURE_AND_EXTENSION_GUIDE.md +572 -0
  7. package/skills/mono/README.md +2 -0
  8. package/skills/mono/SKILL.md +125 -119
  9. package/skills/mono/SKILL_MD_/344/274/230/345/214/226/346/226/271/346/241/210.md +478 -0
  10. package/skills/mono/references/modules/README.md +74 -0
  11. package/skills/mono/references/modules/soke-ai-coach-director/CHANGELOG.md +1 -1
  12. package/skills/mono/references/modules/soke-ai-coach-director/MODULE.md +12 -0
  13. package/skills/mono/references/modules/soke-ai-coach-director/README.md +1 -1
  14. package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +3 -3
  15. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/README.md +4 -2
  16. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/qclaw.md +3 -1
  17. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/{wukong.md → qwen.md} +18 -18
  18. package/skills/mono/references/modules/soke-ai-coach-director/platform/adapters/workbuddy.md +1 -1
  19. package/skills/mono/references/modules/soke-ai-coach-director/platform/api-fallback.md +1 -1
  20. package/skills/mono/references/modules/soke-ai-coach-director/platform/interaction.md +1 -1
  21. package/skills/mono/references/modules/soke-ai-coach-director/platform/platform-support-matrix.md +28 -0
  22. package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +5 -3
  23. package/skills/mono/references/modules/soke-ai-coach-director/platform/sync-engine.md +2 -2
  24. package/skills/mono/references/modules/soke-ai-coach-director/references/env-check.md +3 -0
  25. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-handbook.md +2 -2
  26. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/publish/SOP.md +3 -3
  27. package/skills/mono/references/modules/soke-ai-training/MODULE.md +55 -7
  28. package/skills/mono/references/modules/soke-assign/MODULE.md +50 -11
  29. package/skills/mono/references/modules/soke-certificate/MODULE.md +47 -1
  30. package/skills/mono/references/modules/soke-course/CHANGELOG.md +93 -0
  31. package/skills/mono/references/modules/soke-course/MODULE.md +110 -352
  32. package/skills/mono/references/modules/soke-course/README.md +45 -291
  33. package/skills/mono/references/modules/soke-course/cli-facts.md +107 -0
  34. package/skills/mono/references/modules/soke-course/intent-cases.md +41 -0
  35. package/skills/mono/references/modules/soke-course/scripts/check_readiness.sh +45 -0
  36. package/skills/mono/references/modules/soke-course/sop-publish-check.md +46 -0
  37. package/skills/mono/references/modules/soke-course/subs/assign/SOP.md +40 -0
  38. package/skills/mono/references/modules/soke-course/subs/batch/SOP.md +96 -0
  39. package/skills/mono/references/modules/soke-course/{references/subs → subs}/category/SOP.md +18 -27
  40. package/skills/mono/references/modules/soke-course/subs/charge/SOP.md +22 -0
  41. package/skills/mono/references/modules/soke-course/subs/copy/SOP.md +35 -0
  42. package/skills/mono/references/modules/soke-course/subs/exam/SOP.md +39 -0
  43. package/skills/mono/references/modules/soke-course/subs/phase1-create/SOP.md +66 -0
  44. package/skills/mono/references/modules/soke-course/subs/phase2-lesson/SOP.md +34 -0
  45. package/skills/mono/references/modules/soke-course/subs/photo/SOP.md +26 -0
  46. package/skills/mono/references/modules/soke-course/subs/publish/SOP.md +26 -0
  47. package/skills/mono/references/modules/soke-course/subs/query/SOP.md +36 -0
  48. package/skills/mono/references/modules/soke-course/{references/subs → subs}/settings/SOP.md +3 -4
  49. package/skills/mono/references/modules/soke-course/subs/template/SOP.md +58 -0
  50. package/skills/mono/references/modules/soke-exam/MODULE.md +49 -1
  51. package/skills/mono/references/modules/soke-exam-question-pool/MODULE.md +45 -5
  52. package/skills/mono/references/modules/soke-learning-map/MODULE.md +51 -11
  53. package/skills/mono/references/modules/soke-learning-profile/MODULE.md +46 -3
  54. package/skills/mono/references/modules/soke-lesson/MODULE.md +34 -20
  55. package/skills/mono/references/modules/soke-material/MODULE.md +33 -19
  56. package/skills/mono/references/modules/soke-photo-gallery/MODULE.md +40 -20
  57. package/skills/mono/references/modules/soke-shared/MODULE.md +9 -0
  58. package/skills/mono/references/modules/soke-supervisor/MODULE.md +32 -1
  59. package/skills/mono/references/modules/soke-task/MODULE.md +48 -1
  60. package/skills/mono/references/modules/soke-training-demand/MODULE.md +38 -17
  61. package/skills/mono/references/shared/README.md +50 -0
  62. package/skills/mono/references/shared/async-task.md +30 -0
  63. package/skills/mono/references/shared/auth-check.md +57 -0
  64. package/skills/mono/references/shared/command-discovery.md +34 -0
  65. package/skills/mono/references/shared/environment-check.md +31 -0
  66. package/skills/mono/references/shared/error-handling.md +27 -0
  67. package/skills/mono/references/shared/file-input.md +31 -0
  68. package/skills/mono/references/shared/interaction.md +39 -0
  69. package/skills/mono/references/shared/object-context.md +51 -0
  70. package/skills/mono/references/shared/output-policy.md +39 -0
  71. package/skills/mono/references/shared/pagination.md +41 -0
  72. package/skills/mono/references/shared/rule-ownership.md +57 -0
  73. package/skills/mono/references/shared/state-machine.md +35 -0
  74. package/skills/mono/references/shared/write-guard.md +34 -0
  75. package/skills/mono/references/shared/write-verify.md +33 -0
  76. package/skills/mono/references/workflows/README.md +115 -0
  77. package/skills/mono/scripts/check_package.py +310 -0
  78. package/skills/mono/scripts/check_readiness.py +1 -1
  79. package/skills/mono/scripts/check_syntax.py +35 -0
  80. package/skills/mono//357/275/223/357/275/217/357/275/213/357/275/205/357/274/215/357/275/203/357/275/214/357/275/211/346/225/264/344/275/223/346/236/266/346/236/204.html +13 -0
  81. package/skills/multi/soke-course/.skill-metadata.yaml +40 -0
  82. package/skills/multi/soke-course/CHANGELOG.md +77 -0
  83. package/skills/multi/soke-course/README.md +27 -274
  84. package/skills/multi/soke-course/SKILL.md +135 -353
  85. package/skills/multi/soke-course/_user_meta.json +5 -0
  86. package/skills/multi/soke-course/agents/openai.yaml +1 -5
  87. package/skills/multi/soke-course/references/cli-facts.md +105 -0
  88. package/skills/multi/soke-course/references/examples.md +30 -454
  89. package/skills/multi/soke-course/references/intent-cases.md +65 -99
  90. package/skills/multi/soke-course/references/sop-full-workflow.md +81 -177
  91. package/skills/multi/soke-course/references/sop-lesson-types.md +21 -58
  92. package/skills/multi/soke-course/references/sop-publish-check.md +14 -71
  93. package/skills/multi/soke-course/references/subs/assign/SOP.md +37 -0
  94. package/skills/multi/soke-course/references/subs/category/SOP.md +18 -27
  95. package/skills/multi/soke-course/references/subs/exam/SOP.md +28 -0
  96. package/skills/multi/soke-course/references/subs/lesson/SOP.md +28 -0
  97. package/skills/multi/soke-course/references/subs/material/SOP.md +24 -0
  98. package/skills/multi/soke-course/references/subs/photo/SOP.md +23 -0
  99. package/skills/multi/soke-course/references/subs/publish/SOP.md +15 -157
  100. package/skills/multi/soke-course/references/subs/query/SOP.md +22 -151
  101. package/skills/multi/soke-course/references/subs/settings/SOP.md +3 -4
  102. package/skills/multi/soke-course/references/subs/template/SOP.md +37 -210
  103. package/skills/multi/soke-course/references/troubleshoot.md +37 -54
  104. package/skills/multi/soke-course/scripts/check_readiness.sh +45 -0
  105. package/skills/multi/soke-course/{references/installation.md → soke-cli-install-guide.md} +3 -0
  106. package/skills/mono/references/modules/soke-course/agents/openai.yaml +0 -7
  107. package/skills/mono/references/modules/soke-course/references/course-list-courses.md +0 -216
  108. package/skills/mono/references/modules/soke-course/references/examples.md +0 -480
  109. package/skills/mono/references/modules/soke-course/references/intent-cases.md +0 -99
  110. package/skills/mono/references/modules/soke-course/references/sop-full-workflow.md +0 -177
  111. package/skills/mono/references/modules/soke-course/references/sop-lesson-types.md +0 -66
  112. package/skills/mono/references/modules/soke-course/references/sop-publish-check.md +0 -76
  113. package/skills/mono/references/modules/soke-course/references/subs/ai/SOP.md +0 -153
  114. package/skills/mono/references/modules/soke-course/references/subs/charge/SOP.md +0 -107
  115. package/skills/mono/references/modules/soke-course/references/subs/copy/SOP.md +0 -80
  116. package/skills/mono/references/modules/soke-course/references/subs/publish/SOP.md +0 -168
  117. package/skills/mono/references/modules/soke-course/references/subs/query/SOP.md +0 -165
  118. package/skills/mono/references/modules/soke-course/references/subs/template/SOP.md +0 -223
  119. package/skills/mono/references/modules/soke-course/references/troubleshoot.md +0 -68
  120. package/skills/multi/soke-course/examples/create-basic.md +0 -70
  121. package/skills/multi/soke-course/references/course-list-courses.md +0 -216
  122. package/skills/multi/soke-course/references/dependencies/soke-assign.md +0 -103
  123. package/skills/multi/soke-course/references/dependencies/soke-lesson.md +0 -119
  124. package/skills/multi/soke-course/references/dependencies/soke-material.md +0 -105
  125. package/skills/multi/soke-course/references/shared.md +0 -185
  126. package/skills/multi/soke-course/references/subs/ai/SOP.md +0 -153
  127. package/skills/multi/soke-course/scripts/check_readiness.py +0 -87
  128. /package/skills/mono/references/{installation.md → shared/installation.md} +0 -0
@@ -17,7 +17,39 @@ metadata:
17
17
 
18
18
  # 培训需求收集
19
19
 
20
- **CRITICAL — 开始前 MUST 先读取 ../soke-shared/MODULE.md,其中包含认证、配置和权限处理。**
20
+ ## 共用前置
21
+
22
+ 开始前读取 `../../shared/README.md`,并按需加载环境检测、登录验证、对象上下文、分页、交互、写守卫、输出、写后验证和错误处理规则。本模块只保留培训需求特有规则。
23
+
24
+ ## 职责
25
+
26
+ 负责培训需求分类查询、需求提交、需求浏览和投票;不负责课程创建、考试配置或培训项目执行。
27
+
28
+ ## 输入
29
+
30
+ - 培训需求分类及其由平台返回的标签。
31
+ - 用户填写的需求描述和紧急程度。
32
+ - 用户明确的浏览、提交或投票意图。
33
+
34
+ ## 流程
35
+
36
+ 浏览需求/分类 → 按严格四步收集提交信息(分类 → 标签 → 描述 → 紧急程度)→ 创建需求;投票前先查询列表并确认目标。
37
+
38
+ ## 业务特例
39
+
40
+ - 提交需求必须严格执行四步,每步单独等待用户回复;标签为空时才自动跳过标签步骤。
41
+ - 标签只能来自用户选定分类对象的原始 `tag` 字段,最多选择 5 个,禁止跨分类或自行创建。
42
+ - `--category-uuid` 来自分类查询,投票 `--uuid` 来自需求列表;二者不得混用。
43
+ - 提交成功不展示需求 UUID,`create_time` 展示时从 UTC 转为 UTC+8。
44
+
45
+ **失败降级**:`+create` 报“分类无效”时,重新执行 `+list-categories` 取真实 `uuid`,不得手写;报“标签无效”时从所选分类原始 `tag` 重新选取;`+vote` 报“需求无效”时确认传入的是 `+list` 的需求 `uuid` 而非分类 `uuid`。任何一步失败都停下说明,不得跳过四步流程或强行重试。
46
+
47
+ ## 输出
48
+
49
+ - 返回分类、需求列表、提交结果或投票结果的业务摘要。
50
+ - 提交结果隐藏需求 UUID;输出格式和敏感信息处理遵循共享层规则。
51
+
52
+ **完成判定**:需求提交完成当且仅当 `+create` 返回成功且(必要时)该需求可在 `+list` 中按标题/创建人检索到;投票完成当且仅当 `+list` 中对应需求的票数已增加。仅回显“操作成功”但 `+list` 查不到对应需求或票数未变的,视为未完成。
21
53
 
22
54
  ## 🛑 执行守卫(EXECUTION GUARD)
23
55
 
@@ -30,22 +62,11 @@ metadata:
30
62
  >
31
63
  > 5. **标签-分类严格绑定**:步骤 2 展示标签时,MUST 严格使用步骤 1 中用户选定的分类对象(通过序号从 +list-categories 的 data.list 中精确取出)的 tag 字段。NEVER 用其他分类的 tag、NEVER 凭记忆猜测、NEVER 用列表中其他位置分类的 tag。不确定时 MUST 重新调用 +list-categories 按序号精确匹配。
32
64
 
33
- ## 核心规则
34
-
35
- - 分类、标签必须与管理后台设置完全一致,**禁止自行拓展或创造分类/标签**。标签来源仅限用户所选分类的 tag 字段。
36
- - 提交培训需求必须严格按以下 **4 步顺序** 引导用户,不可跳步或合并:
37
- 1. **选择分类**(单选) → 2. **选择标签**(选填,可多选≤5,可跳过,无标签时自动跳过) → 3. **填写培训需求**(≤200字,必填) → 4. **紧急程度**(1-5,选填)
38
- - 分类:从 +list-categories 返回的 data.list[].title 中选择,**仅限单选**,不可同时选多个分类。
39
- - 标签:从所选分类的 data.list[].tag 字段中按逗号拆分,编号列出供用户选择。**标签为选填,用户可以选择标签也可以不选直接跳过**。可多选最多5个。若该分类 tag 为空或不存在,提示"📌 该分类暂无标签",自动跳过标签步骤进入步骤3。
40
- - 培训需求描述:即 --title,**必填,最多 200 字符**,纯文本输入。
41
- - 紧急程度:即 --level,1=普通、2=较普通、3=一般、4=较紧急、5=最紧急,**选填**,不选时默认 0(不设置等级)。
42
- - 投票前,先执行 +list,使用返回的培训需求 uuid。不要把分类 uuid 传给投票接口。
43
- - 创建和投票是写操作。用户意图不明确时,先确认要提交或投票的对象。
44
- - 默认用 --format json 获取结构化输出。
65
+ ## 业务特例详则
45
66
 
46
- ### 提交成功后的展示规则
47
- - **不显示需求 UUID**:提交成功后向用户展示的详情表格中,不要包含 uuid 字段。UUID 仅用于内部投票等操作,不向用户暴露。
48
- - **时间加8小时**:API 返回的 create_time 是 UTC 时间,向用户展示时必须加 8 小时转换为 UTC+8(北京时间)。例如返回 "2026-07-23 01:56:31" 应展示为 "2026-07-23 09:56:31"。
67
+ - 分类和标签必须与后台返回值一致;创建和投票均为写操作,意图不明确时先确认。
68
+ - 分类单选;需求描述对应 `--title`,必填且最多 200 字符;紧急程度对应 `--level`,范围 1–5,未选择默认为 0。
69
+ - 标签规则详见上方“业务特例”和“执行守卫”,避免在多个章节重复维护。
49
70
 
50
71
  ### 标签处理规则
51
72
 
@@ -218,4 +239,4 @@ soke-cli training-demand +vote \
218
239
  - 创建失败提示分类无效:重新执行 +list-categories,不要自行手写分类 UUID。
219
240
  - 创建失败提示标签无效:重新执行 +list-categories,从所选分类返回的 tag 中选择,不要自行编写标签。**确保 --category-tag 传的是原始完整 tag 字段值**。
220
241
  - 投票失败提示需求无效:确认传入的是培训需求 UUID,不是分类 UUID。
221
- - 鉴权失败:按 soke-shared 执行 soke-cli auth login 后重试。
242
+ - 鉴权失败:按 `../../shared/auth-check.md` 的认证失败流程处理后重试。
@@ -0,0 +1,50 @@
1
+ # 共享能力索引
2
+
3
+ 本目录存放所有业务模块共同依赖的运行规则。共享层解决“如何安全、稳定地操作 soke-cli”,不定义课程、考试、AI 陪练等具体业务字段。
4
+
5
+ ## 规则归属
6
+
7
+ 规则唯一来源矩阵见 [`rule-ownership.md`](./rule-ownership.md)。修改共享规则或模块入口前,先按矩阵判断归属,避免同一规则出现多个权威版本。
8
+
9
+ ## 读取原则(按需,不强制全量)
10
+
11
+ 共享前置文档按需加载,启动时不要遍历读完。判断原则:
12
+
13
+ | 文档 | 何时才读 |
14
+ |---|---|
15
+ | `installation.md` | 仅首次安装、重装或需要重新授权时 |
16
+ | `environment-check.md` | `soke-cli --version` 探测失败、版本不符或报缺失依赖时 |
17
+ | `auth-check.md` | `soke-cli config show` 显示未登录 / 未绑定企业 / 401 时 |
18
+ | `cli-basics.md` | 需要确认 CLI 通用安全与输出原则时(`SKILL.md`「严格禁止」已覆盖核心) |
19
+ | `command-discovery.md` | 真正执行某条命令前,按当前版本 `--help` 核对参数时 |
20
+ | 对象 / 分页 / 交互 / 写验证 / 异步任务等 | 命中对应操作时再读 |
21
+
22
+ 就绪探测通过后,直接读目标模块的 `MODULE.md`,无需先遍历共享层。
23
+
24
+ ## 能力清单
25
+
26
+ | 文件 | 负责内容 | 不负责内容 |
27
+ |---|---|---|
28
+ | `installation.md` | 安装、配置和首次认证 | 业务操作流程 |
29
+ | `environment-check.md` | 运行环境和本地依赖 | 登录态判断 |
30
+ | `auth-check.md` | 登录、Token、企业绑定 | 业务权限申请 |
31
+ | `cli-basics.md` | CLI 通用安全、输出和错误原则 | 具体命令参数 |
32
+ | `command-discovery.md` | 版本、`--help`、参数发现 | 业务字段定义 |
33
+ | `object-context.md` | 真实 ID 提取、保存和传递 | 对象业务含义 |
34
+ | `pagination.md` | 分页、全量查询和去重 | 特定接口字段 |
35
+ | `interaction.md` | 选择、确认和分步交互 | 模块专属话术 |
36
+ | `write-guard.md` | 写操作风险分级和确认 | 业务审批流程 |
37
+ | `output-policy.md` | 摘要输出、脱敏和前后台边界 | 业务结果解释 |
38
+ | `write-verify.md` | 写入结果判断、回读和幂等 | 特定对象状态字段 |
39
+ | `async-task.md` | 任务 ID、轮询、超时和失败 | 具体导出参数 |
40
+ | `file-input.md` | 路径、可读性、类型和大小检查 | 材料内容分析 |
41
+ | `state-machine.md` | 通用状态、断点和恢复语义 | 模块业务状态定义 |
42
+ | `error-handling.md` | 错误分类、重试顺序和升级 | 平台缺陷修复 |
43
+
44
+ ## 边界规则
45
+
46
+ - 共享文档只描述跨模块重复出现的操作能力。
47
+ - 模块文档只描述业务对象、字段、业务流程和特有约束。
48
+ - 共享规则与模块规则冲突时,不得静默选择;先报告冲突,再以当前 CLI 帮助和明确的模块约束为准。
49
+ - 共享文档中的示例 ID、路径和命令参数均为示例,不得当作真实业务数据执行。
50
+ - 修改共享规则后,必须运行 `scripts/check_package.py` 和 `scripts/check_syntax.py`。
@@ -0,0 +1,30 @@
1
+ # soke-cli 异步任务
2
+
3
+ 本文件定义跨模块共用的异步任务与轮询规则。
4
+
5
+ ## 通用流程
6
+
7
+ ```text
8
+ 创建任务 → 保存 task ID → 轮询查询 → 判断完成态 → 提取文件或结果
9
+ ```
10
+
11
+ ## 统一规则
12
+
13
+ - 创建任务后必须保存返回的任务 ID。
14
+ - 查询状态时只使用该任务 ID,不猜测、不重建。
15
+ - 轮询要有明确间隔和最大次数。
16
+ - 完成、失败、超时要分开处理。
17
+ - 任务未完成不能视为失败。
18
+ - 任务完成后再提取文件地址、版本信息或统计结果。
19
+
20
+ ## 适用场景
21
+
22
+ - 课程统计导出
23
+ - 学习地图统计导出
24
+ - 知识包编译/同步类异步动作
25
+ - 文件处理类异步动作
26
+
27
+ ## 输出要求
28
+
29
+ - 用户只看任务状态和结果地址。
30
+ - 内部保留原始状态字段和时间戳。
@@ -0,0 +1,57 @@
1
+ # soke-cli 登录与企业绑定验证
2
+
3
+ 本文件定义所有业务模块共用的账号就绪检查。它只处理 CLI 登录态、Token 和企业绑定,不处理具体业务对象。
4
+
5
+ ## 检测流程
6
+
7
+ ### 1. 检查登录态
8
+
9
+ ```bash
10
+ soke-cli config show
11
+ ```
12
+
13
+ 只判断以下状态,不回显完整配置:
14
+
15
+ - 用户凭证非空:登录态通过。
16
+ - 用户凭证为空:需要执行 `soke-cli auth login`。
17
+ - 返回 `401 Unauthorized`:先执行 `soke-cli auth logout`,再执行 `soke-cli auth login`。
18
+
19
+ 授权需要用户在浏览器中完成。浏览器未自动打开时,向用户提供终端输出的完整授权链接;不得截断、改写或回显 Token。
20
+
21
+ ### 2. 检查企业绑定
22
+
23
+ 再次执行:
24
+
25
+ ```bash
26
+ soke-cli config show
27
+ ```
28
+
29
+ - `corpid` 非空:企业绑定通过,可进入业务模块。
30
+ - `corpid` 为空:提示账号已登录但未绑定企业;必要时引导用户执行 `soke-cli auth login --force`,仍为空则联系管理员。
31
+
32
+ ### 3. 切换账号或企业
33
+
34
+ ```bash
35
+ soke-cli auth login --force
36
+ ```
37
+
38
+ 不要直接编辑配置文件修改企业或凭证。所有 ID、Token 和 Secret 都只用于内部判断,不在聊天中展示。
39
+
40
+ ## 统一状态
41
+
42
+ 模块只消费以下结果:
43
+
44
+ ```text
45
+ READY 已登录且已绑定企业
46
+ NOT_AUTHENTICATED 未登录或 Token 失效
47
+ NO_CORP_BINDING 已登录但未绑定企业
48
+ AUTH_PENDING 等待用户完成浏览器授权
49
+ ```
50
+
51
+ `READY` 之外不得继续执行依赖平台账号的业务写操作。认证失败时报告原因和下一步,不要静默切换到未经确认的替代接口。
52
+
53
+ ## 共用前置顺序
54
+
55
+ ```text
56
+ 最小就绪探测(--version / config show)→ 读取业务模块 MODULE.md → 查询真实业务 ID → 执行业务流程
57
+ ```
@@ -0,0 +1,34 @@
1
+ # soke-cli 命令发现
2
+
3
+ 本文件定义所有业务模块共用的命令发现和版本兼容规则。它只解决“当前 CLI 怎么叫、参数怎么写”,不包含业务字段说明。
4
+
5
+ ## 命令发现顺序
6
+
7
+ 1. 先读父命令 `--help`。
8
+ 2. 再读叶子命令 `--help`。
9
+ 3. 如果有明确匹配用户意图的 `+verb` shortcut,优先用 shortcut。
10
+ 4. 文档示例仅用于理解,不可替代当前 `--help`。
11
+
12
+ ## 统一规则
13
+
14
+ - 所有实际命令统一使用 `soke-cli` 前缀。
15
+ - 不凭旧文档猜测参数名、flag 名或命令层级。
16
+ - 文档和当前 CLI `--help` 不一致时,以当前 CLI 为准。
17
+ - 写操作前如果支持 `--dry-run`,先用预览模式。
18
+ - 不把列表响应、详情响应或 `--help` 输出误认为已完成业务操作。
19
+
20
+ ## 推荐检查模板
21
+
22
+ ```bash
23
+ soke-cli --help
24
+ soke-cli course --help
25
+ soke-cli exam --help
26
+ soke-cli task --help
27
+ ```
28
+
29
+ ## 使用场景
30
+
31
+ - 新模块接入
32
+ - 命令改名或参数升级
33
+ - 旧文档迁移
34
+ - 需要判断 shortcut 是否存在
@@ -0,0 +1,31 @@
1
+ # soke-cli 环境检测
2
+
3
+ 本文件定义所有业务模块共用的本机环境检查。它只判断运行依赖,不处理登录和企业绑定。
4
+
5
+ ## 检测顺序
6
+
7
+ 1. Node.js:`node --version`,要求 >= 14.0.0。
8
+ 2. soke-cli:先 `which soke-cli`;若返回 `command not found`(常见于 WorkBuddy 沙箱 PATH 不含 `/usr/local/bin`),改用绝对路径探测 `/usr/local/bin/soke-cli --version`,仍失败再试 `~/.nvm/versions/node/*/bin/soke-cli --version`。**命令已安装但 PATH 未含其目录时,一律用绝对路径调用,不得误判为「未安装」**。真实安装位置参考:`/usr/local/bin/soke-cli`(软链 → `~/.nvm/versions/node/v22.22.1/bin/soke-cli` → `@sokeai/cli/scripts/run.js`)。
9
+ 3. Python 3:仅执行 Python 辅助脚本的模块需要,建议 >= 3.10。
10
+ 4. pdftotext:仅处理 PDF 材料的模块需要。
11
+ 5. 网络:需要调用平台时运行 `soke-cli doctor`;离线检查使用 `soke-cli doctor --offline`。
12
+
13
+ 任一必需依赖缺失时停止业务流程,先报告缺失项和修复方式;不要继续执行创建、更新、发布或同步。
14
+
15
+ ## 统一入口
16
+
17
+ ```bash
18
+ python3 scripts/check_readiness.py --environment-only
19
+ ```
20
+
21
+ 如果当前版本脚本不支持该参数,则按上面的顺序逐项检查,并以 CLI `--help` 和 `doctor` 的实际结果为准。检测输出不得包含 Token、Secret 或完整配置。
22
+
23
+ ## 模块额外依赖
24
+
25
+ | 依赖 | 适用模块 | 缺失时处理 |
26
+ |---|---|---|
27
+ | Python 3 | 使用校验脚本的模块 | 安装 Python 后重试 |
28
+ | pdftotext | AI 陪练材料提炼 | 只阻断 PDF 提炼,不阻断纯文本流程 |
29
+ | 浏览器 | OAuth 授权 | 提示用户手动打开授权链接 |
30
+
31
+ 环境检测通过后,再读取 `auth-check.md` 验证登录状态。
@@ -0,0 +1,27 @@
1
+ # soke-cli 错误处理
2
+
3
+ 本文件定义跨模块共用的错误分类和修复顺序。
4
+
5
+ ## 错误分类
6
+
7
+ - 认证错误:未登录、Token 失效、企业未绑定。
8
+ - 权限错误:无权访问、无权写入、无权发布。
9
+ - 参数错误:缺少必填项、类型错误、范围错误。
10
+ - 业务冲突:重复创建、状态不允许、资源不存在。
11
+ - 平台问题:接口异常、超时、网络失败。
12
+
13
+ ## 处理顺序
14
+
15
+ 1. 先确认是否是认证问题。
16
+ 2. 再确认是否是权限问题。
17
+ 3. 再检查参数和输入格式。
18
+ 4. 再判断是否是重复写入或状态冲突。
19
+ 5. 最后才考虑平台故障或重试。
20
+
21
+ ## 规则
22
+
23
+ - 参数错误时先看当前命令 `--help`。
24
+ - 认证失败时优先 `auth login` 或 `auth login --force`。
25
+ - 权限不足时提示管理员开通,不要绕过权限。
26
+ - 重试前先确认上一步是否已经成功。
27
+ - 错误信息对用户要简洁,对内部要保留细节。
@@ -0,0 +1,31 @@
1
+ # soke-cli 文件输入校验
2
+
3
+ 本文件定义跨模块共用的本地文件输入规则。
4
+
5
+ ## 通用检查
6
+
7
+ - 路径是否存在。
8
+ - 文件是否可读。
9
+ - 扩展名是否支持。
10
+ - 文件大小是否合理。
11
+ - 实际文件类型是否与扩展名一致。
12
+
13
+ ## 适用场景
14
+
15
+ - 素材上传
16
+ - 图片上传
17
+ - PDF / Word / Excel / PPT 提炼
18
+ - 知识包材料整理
19
+
20
+ ## 规则
21
+
22
+ - 不要把目录当成文件上传。
23
+ - 不要把不支持的扩展名误传给上传接口。
24
+ - 先检查再上传,不要依赖接口报错兜底。
25
+ - 大文件、无关文件和非目标文件应提前过滤。
26
+
27
+ ## 业务差异
28
+
29
+ - 素材模块处理视频、音频、文档。
30
+ - 图片库模块处理图片。
31
+ - AI 陪练和知识包模块还需要做内容相关性筛选和提炼。
@@ -0,0 +1,39 @@
1
+ # soke-cli 交互与确认
2
+
3
+ 本文件定义跨模块共用的用户交互规则。
4
+
5
+ ## 交互类型
6
+
7
+ ### 1. 选择型
8
+
9
+ 用户需要从有限选项中选择分类、素材、题库、对象或模板时使用。
10
+
11
+ 规则:
12
+ - 只展示业务名称,不展示内部 ID。
13
+ - 用户选择后,立即保存真实 ID。
14
+ - 若选项过多,分页展示并保留当前上下文。
15
+
16
+ ### 2. 确认型
17
+
18
+ 用户需要确认发布、删除、指派、绑定、更新等高风险动作时使用。
19
+
20
+ 规则:
21
+ - 先展示目标、范围、影响和不可逆性。
22
+ - 再等待明确确认。
23
+ - 未确认前不执行写操作。
24
+
25
+ ### 3. 分步型
26
+
27
+ 像培训需求、AI 陪练这种固定步骤流程使用。
28
+
29
+ 规则:
30
+ - 每一步单独输出。
31
+ - 每一步都要等用户回复。
32
+ - 不跳步,不合并。
33
+ - 前一步未完成时,不进入下一步。
34
+
35
+ ## 输出要求
36
+
37
+ - 文本尽量使用业务语言,不要输出内部字段名。
38
+ - 需要固定选项时,优先使用结构化选择而不是让用户手打编号。
39
+ - 需要继续时,保留当前上下文里的真实 ID 和已确认内容。
@@ -0,0 +1,51 @@
1
+ # soke-cli 对象上下文
2
+
3
+ 本文件定义跨模块共用的对象 ID 管理规则。它只解决“查询到什么、后续用什么”,不定义具体业务对象字段。
4
+
5
+ ## 核心原则
6
+
7
+ - 查询、创建、上传或生成成功后,必须提取并保存真实 ID。
8
+ - 后续操作只能使用真实 ID,不能用名称、序号、标题或猜测值代替。
9
+ - 不要把不同对象类型的 ID 混用。
10
+
11
+ ## 对象类型示例
12
+
13
+ - course-id
14
+ - media uuid
15
+ - lesson-id
16
+ - department-id
17
+ - user-id
18
+ - exam-id
19
+ - paper-id
20
+ - map-id
21
+ - task-id
22
+ - certificate uuid
23
+ - scenario-id
24
+ - package version id
25
+
26
+ ## 上下文记录建议
27
+
28
+ ```json
29
+ {
30
+ "type": "course",
31
+ "id": "真实ID",
32
+ "name": "对象名称",
33
+ "source": "soke-cli course +create",
34
+ "status": "draft"
35
+ }
36
+ ```
37
+
38
+ ## 典型流程
39
+
40
+ ```text
41
+ 创建 / 查询 / 上传
42
+ → 提取真实 ID
43
+ → 保存上下文
44
+ → 执行依赖该 ID 的下一步
45
+ ```
46
+
47
+ ## 规则
48
+
49
+ - 一次只处理一个对象上下文,避免混用。
50
+ - 若前一步未成功,不得提前生成后续对象 ID。
51
+ - 需要回读时,用当前对象真实 ID 再查一次,不要重新猜。
@@ -0,0 +1,39 @@
1
+ # soke-cli 输出与脱敏
2
+
3
+ 本文件定义所有模块共用的输出边界。
4
+
5
+ ## 输出分层
6
+
7
+ ### 用户摘要
8
+
9
+ 给用户看的内容,只保留业务结论、状态和下一步。
10
+
11
+ ### 内部状态
12
+
13
+ 给 Agent 和脚本使用,保存真实 ID、返回码、分页游标和任务状态。
14
+
15
+ ### 失败诊断
16
+
17
+ 只在失败时保留,记录模块、命令、错误摘要和下一步修复建议。
18
+
19
+ ## 脱敏要求
20
+
21
+ - 不输出 access_token、refresh_token、app_secret。
22
+ - 不输出内部 UUID、部门用户 ID、任务 ID、场景 ID、知识包版本 ID 的完整集合,除非业务确实需要且用户已明确要求。
23
+ - 不输出完整 JSON、回读快照或调试堆栈到前台。
24
+ - 旧接口返回字段名中带有敏感含义时,前台只展示业务名称和状态。
25
+
26
+ ## 推荐输出形式
27
+
28
+ ```text
29
+ ✅ 已完成
30
+ - 对象:课程名称
31
+ - 状态:已发布
32
+ - 下一步:可指派学员
33
+ ```
34
+
35
+ ## 规则
36
+
37
+ - 前台简洁,后台完整。
38
+ - 机器读数和人类摘要分开。
39
+ - 没有必要时不要暴露技术字段。
@@ -0,0 +1,41 @@
1
+ # soke-cli 分页与去重
2
+
3
+ 本文件定义跨模块的列表分页、全量拉取和去重规则。
4
+
5
+ ## 通用流程
6
+
7
+ 1. 从第一页开始。
8
+ 2. 读取当前页的列表数据。
9
+ 3. 判断是否还有下一页或是否已到末页。
10
+ 4. 如果会跨页重复,按 `uuid` 或 `id` 去重。
11
+ 5. 最后再做用户展示或内部筛选。
12
+
13
+ ## 统一规则
14
+
15
+ - 当前页不等于全量结果。
16
+ - 用户看到的列表可以截断,内部检索需要按业务决定是否拉全。
17
+ - 如果接口返回 `hasMore`、`total` 或类似字段,优先按接口字段判断分页结束。
18
+ - 如果出现跨页重叠,必须去重后再继续处理。
19
+ - 展示给用户时说明页码、页大小、筛选条件和结果数量。
20
+
21
+ ## 适用场景
22
+
23
+ - 题库/试卷/考试列表
24
+ - 学习地图列表
25
+ - 学员档案列表
26
+ - 图片库列表
27
+ - 证书列表
28
+ - 培训需求列表
29
+ - 异步任务列表
30
+ - 部门/用户列表
31
+
32
+ ## 典型模板
33
+
34
+ ```text
35
+ page = 1
36
+ → 请求列表
37
+ → 合并 data.list
38
+ → 根据 hasMore/total 决定是否继续
39
+ → 以 uuid/id 去重
40
+ → 输出最终结果
41
+ ```
@@ -0,0 +1,57 @@
1
+ # 共享规则唯一来源矩阵
2
+
3
+ 本文件是 Mono Skill 的规则归属契约。新增或修改规则前,先判断它属于共享层还是业务模块;同一条规则只能有一个权威来源。
4
+
5
+ ## 归属矩阵
6
+
7
+ | 规则主题 | 唯一来源 | 模块可保留 | 模块不得重复维护 |
8
+ |---|---|---|---|
9
+ | 安装与配置 | `installation.md` | 模块额外依赖 | 完整安装步骤、配置字段说明 |
10
+ | 运行环境 | `environment-check.md` | 模块额外二进制/文件依赖 | Node、CLI、网络等通用检查 |
11
+ | 登录与企业绑定 | `auth-check.md` | 业务权限或平台特有权限提示 | `auth login`、`config show` 通用流程 |
12
+ | CLI 安全与输出 | `cli-basics.md` | 业务命令示例 | 绕过 CLI、凭证泄露等总则 |
13
+ | 命令和参数发现 | `command-discovery.md` | 当前模块叶子命令清单 | 版本兼容和 `--help` 总则 |
14
+ | 真实 ID | `object-context.md` | 对象之间 ID 不可混用的业务语义 | “ID 必须来自返回值”的通则 |
15
+ | 分页与去重 | `pagination.md` | 特定接口的字段和已知缺陷 | 通用分页、全量和去重流程 |
16
+ | 选择与确认 | `interaction.md` | 严格业务步骤和专属提示词 | 通用选择/确认机制 |
17
+ | 写入风险 | `write-guard.md` | 业务特有影响范围 | 风险分级和确认总则 |
18
+ | 输出脱敏 | `output-policy.md` | 业务结果字段解释 | Token、UUID、完整响应的通用脱敏规则 |
19
+ | 写后验证 | `write-verify.md` | 特定对象回读字段 | 通用成功判断、重试前检查 |
20
+ | 异步任务 | `async-task.md` | 任务类型和业务结果字段 | 通用轮询、超时、任务状态语义 |
21
+ | 文件输入 | `file-input.md` | 文件格式和业务内容要求 | 路径、可读性、大小等通用校验 |
22
+ | 状态与恢复 | `state-machine.md` | 模块状态映射和步骤限制 | 通用状态转换和恢复原则 |
23
+ | 错误处理 | `error-handling.md` | 模块特有错误码和修复动作 | 通用错误分类和重试顺序 |
24
+
25
+ ## 模块写作规则
26
+
27
+ 每个 `MODULE.md` 的共享前置只需要链接共享索引,并按需列出本模块实际使用的能力:
28
+
29
+ ```markdown
30
+ ## 共用前置
31
+
32
+ 开始前读取 `../../shared/README.md`,并按需加载环境检测、登录验证、命令发现和本模块需要的共享规则。本模块只保留业务特有规则。
33
+ ```
34
+
35
+ 模块中允许出现以下内容:
36
+
37
+ - 某个对象的业务字段和状态含义;
38
+ - 某类 UUID 与另一类 UUID 不能混用的具体原因;
39
+ - 某个业务流程必须逐步执行的约束;
40
+ - 某个接口独有的分页字段或平台缺陷;
41
+ - 某个模块特有的确认范围和失败处理。
42
+
43
+ 模块中不应出现以下内容:
44
+
45
+ - 独立的 `auth login` / `config show` 前置流程;
46
+ - 再次解释所有模块都适用的 ID、分页、脱敏或重试规则;
47
+ - 与共享层不同的通用风险等级;
48
+ - 把共享规则复制后改写成另一套话术。
49
+
50
+ ## 修改流程
51
+
52
+ 1. 先搜索共享主题在全包中的现有表述。
53
+ 2. 判断是通用规则还是业务特例。
54
+ 3. 通用规则只修改对应共享文档。
55
+ 4. 业务特例只修改对应模块,并链接共享规则。
56
+ 5. 运行 `scripts/check_package.py` 和 `scripts/check_syntax.py`。
57
+ 6. 检查失败时先修复规则归属或引用,不要绕过检查。
@@ -0,0 +1,35 @@
1
+ # soke-cli 状态机
2
+
3
+ 本文件定义跨模块共用的状态管理思路。
4
+
5
+ ## 通用状态
6
+
7
+ ```text
8
+ pending → running → waiting_user → applied → verified → completed
9
+ ```
10
+
11
+ 失败分支:
12
+
13
+ ```text
14
+ failed → retryable / blocked / manual_required
15
+ ```
16
+
17
+ ## 规则
18
+
19
+ - 状态应能表达当前是否可继续。
20
+ - 已完成步骤不应被重复执行,除非用户明确要求重做。
21
+ - 等待用户时必须停止,不得自动跳步。
22
+ - 已经确认的内容应在后续步骤中保留。
23
+ - 恢复时优先从最近的稳定状态继续,而不是从头重来。
24
+
25
+ ## 适用场景
26
+
27
+ - AI 陪练 Part 流程
28
+ - 题库练习状态
29
+ - 异步任务状态
30
+ - 课程/场景发布流程
31
+
32
+ ## 输出建议
33
+
34
+ - 前台只展示当前状态和下一步。
35
+ - 后台保留完整状态载荷和时间戳。
@@ -0,0 +1,34 @@
1
+ # soke-cli 高风险写操作守卫
2
+
3
+ 本文件定义发布、删除、指派、绑定、批量写入等高风险操作的共用规则。
4
+
5
+ ## 风险等级
6
+
7
+ - L0:查询、列表、详情
8
+ - L1:创建草稿、上传素材
9
+ - L2:更新、绑定、批量写入、分配对象
10
+ - L3:发布、删除、关闭、批量指派、平台同步
11
+
12
+ ## 通用要求
13
+
14
+ - L2 及以上必须先展示目标、影响范围和对象。
15
+ - L3 必须获得明确确认。
16
+ - 删除和关闭类操作必须明确说明不可逆影响。
17
+ - 批量操作必须说明数量、字段和失败处理方式。
18
+ - 平台同步必须说明将要修改的场景、知识包或配置摘要。
19
+
20
+ ## 确认摘要模板
21
+
22
+ ```text
23
+ 操作:<动作>
24
+ 目标:<对象名称>
25
+ 范围:<影响范围>
26
+ 影响:<简要说明>
27
+ 是否确认?
28
+ ```
29
+
30
+ ## 规则
31
+
32
+ - 未确认前不执行写操作。
33
+ - 不把预览结果当作执行结果。
34
+ - 重试前先确认上一步是否已经成功,避免重复写入。
@@ -0,0 +1,33 @@
1
+ # soke-cli 写操作验证与幂等
2
+
3
+ 本文件定义写操作后的验证、重试和幂等处理。
4
+
5
+ ## 统一流程
6
+
7
+ 1. 执行写操作。
8
+ 2. 检查退出码和返回状态。
9
+ 3. 提取真实 ID 或任务 ID。
10
+ 4. 只在必要时进行回读验证。
11
+ 5. 保存状态,供下一步使用。
12
+
13
+ ## 幂等原则
14
+
15
+ - 能使用 idempotency-key 的地方必须使用。
16
+ - 重试前先判断上一次是否可能已经成功。
17
+ - 不要因为没有看到完整输出就重复创建。
18
+ - 异步任务必须保存 task ID 或等价标识。
19
+
20
+ ## 回读规则
21
+
22
+ - 回读只验证本次写入的关键结果,不做无意义全量复核。
23
+ - 回读结果如与写入结果不一致,优先判断是否存在平台延迟或最终一致性问题。
24
+ - 不要用回读替代写操作。
25
+
26
+ ## 适用场景
27
+
28
+ - 课程创建后查课程 ID
29
+ - 素材上传后查 uuid
30
+ - 课件创建后查 lesson-id
31
+ - 任务创建后查 task-id
32
+ - 场景同步后查版本 ID
33
+ - 发布后查状态