@sokeai/cli 1.0.77 → 1.0.79

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 (291) hide show
  1. package/package.json +1 -1
  2. package/scripts/install.js +2 -2
  3. package/scripts/local-test.js +1 -1
  4. package/scripts/test-auto-detect.js +20 -3
  5. package/skills/README.md +25 -174
  6. package/skills/SKILL.md +17 -239
  7. package/skills/mono/README.md +10 -0
  8. package/skills/mono/SKILL.md +223 -0
  9. package/skills/{soke-course/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → mono/references/installation.md} +0 -3
  10. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/README.md +2 -1
  11. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +1 -1
  12. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/publish-gate.md +1 -0
  13. package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +123 -0
  14. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-handbook.md +5 -5
  15. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part1.md +5 -5
  16. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/platform-api-pitfalls.md +1 -1
  17. package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part1/SOP.md +2 -2
  18. package/skills/mono/references/modules/soke-ai-coach-director/scripts/gate_check.py +114 -0
  19. package/skills/mono/references/modules/soke-ai-coach-director/scripts/validate_operations.py +410 -0
  20. package/skills/{soke-ai-training/SKILL.md → mono/references/modules/soke-ai-training/MODULE.md} +3 -1
  21. package/skills/mono/references/modules/soke-assign/README.md +308 -0
  22. package/skills/{soke-certificate/SKILL.md → mono/references/modules/soke-certificate/MODULE.md} +2 -2
  23. package/skills/mono/references/modules/soke-course/MODULE.md +402 -0
  24. package/skills/mono/references/modules/soke-course/README.md +291 -0
  25. package/skills/{soke-course → mono/references/modules/soke-course}/references/examples.md +3 -3
  26. package/skills/{soke-exam/SKILL.md → mono/references/modules/soke-exam/MODULE.md} +1 -1
  27. package/skills/{soke-learning-map/SKILL.md → mono/references/modules/soke-learning-map/MODULE.md} +5 -6
  28. package/skills/{soke-learning-profile/SKILL.md → mono/references/modules/soke-learning-profile/MODULE.md} +2 -2
  29. package/skills/mono/references/modules/soke-lesson/README.md +53 -0
  30. package/skills/mono/references/modules/soke-material/README.md +49 -0
  31. package/skills/{soke-photo-gallery/SKILL.md → mono/references/modules/soke-photo-gallery/MODULE.md} +2 -3
  32. package/skills/mono/references/modules/soke-supervisor/MODULE.md +186 -0
  33. package/skills/mono/references/modules/soke-task/MODULE.md +146 -0
  34. package/skills/{soke-training-demand/SKILL.md → mono/references/modules/soke-training-demand/MODULE.md} +1 -1
  35. package/skills/mono/references/shared/cli-basics.md +185 -0
  36. package/skills/mono/scripts/check_readiness.py +28 -0
  37. package/skills/{soke-ai-coach-director → mono}/scripts/validate_operations.py +2 -2
  38. package/skills/multi/README.md +18 -0
  39. package/skills/multi/soke-ai-coach-director/CHANGELOG.md +203 -0
  40. package/skills/multi/soke-ai-coach-director/README.md +124 -0
  41. package/skills/multi/soke-ai-coach-director/SKILL.md +220 -0
  42. package/skills/multi/soke-ai-coach-director/assets/ERRORS-TEMPLATE.md +5 -0
  43. package/skills/multi/soke-ai-coach-director/assets/FEATURE_REQUESTS-TEMPLATE.md +5 -0
  44. package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +45 -0
  45. package/skills/multi/soke-ai-coach-director/assets/SKILL-TEMPLATE.md +177 -0
  46. package/skills/multi/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
  47. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +59 -0
  48. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
  49. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part3-flow.md +72 -0
  50. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part4-scoring.md +87 -0
  51. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part5-constraints.md +48 -0
  52. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
  53. package/skills/multi/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +381 -0
  54. package/skills/multi/soke-ai-coach-director/coaching/role-profiler/role-profiler.md +87 -0
  55. package/skills/multi/soke-ai-coach-director/platform/adapters/README.md +68 -0
  56. package/skills/multi/soke-ai-coach-director/platform/adapters/qclaw.md +67 -0
  57. package/skills/multi/soke-ai-coach-director/platform/adapters/workbuddy.md +44 -0
  58. package/skills/multi/soke-ai-coach-director/platform/adapters/wukong.md +70 -0
  59. package/skills/multi/soke-ai-coach-director/platform/adapters/zework.md +89 -0
  60. package/skills/multi/soke-ai-coach-director/platform/api-fallback.md +262 -0
  61. package/skills/multi/soke-ai-coach-director/platform/interaction.md +103 -0
  62. package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +45 -0
  63. package/skills/multi/soke-ai-coach-director/platform/resource-finalizer.md +103 -0
  64. package/skills/{soke-ai-coach-director → multi/soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +1 -1
  65. package/skills/multi/soke-ai-coach-director/platform/sync-engine.md +39 -0
  66. package/skills/multi/soke-ai-coach-director/references/cases/AI/345/256/242/346/210/267/350/247/222/350/211/262/346/250/241/346/235/277/345/272/223.md +265 -0
  67. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +206 -0
  68. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/345/210/233/345/273/272/351/227/256/351/242/230/345/272/223.md +666 -0
  69. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/345/234/272/346/231/257/345/210/206/347/261/273/345/272/223.md +213 -0
  70. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/345/256/242/346/210/267/346/235/220/346/226/231/346/270/205/345/215/225/344/270/216/350/256/277/350/260/210/351/242/230/345/272/223.md +229 -0
  71. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/345/276/256/350/260/203/351/227/256/351/242/230/345/272/223.md +833 -0
  72. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/346/212/200/346/234/257/350/276/271/347/225/214/344/270/216/346/216/222/351/232/234/345/272/223.md +239 -0
  73. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/346/250/241/345/235/227/345/272/223.md +249 -0
  74. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/346/225/260/346/215/256/346/214/207/346/240/207/344/270/216/347/234/213/346/235/277/345/217/243/345/276/204/345/272/223.md +282 -0
  75. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/272/223.md +254 -0
  76. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/350/257/204/345/210/206/346/240/207/345/207/206/347/273/204/344/273/266/345/272/223.md +264 -0
  77. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/231/252/347/273/203/351/241/271/347/233/256/346/241/210/344/276/213/345/244/215/347/233/230/345/272/223.md +223 -0
  78. package/skills/multi/soke-ai-coach-director/references/cases/AI/351/241/276/345/256/242/350/247/222/350/211/262/346/250/241/346/213/237_GoodCase_BadCase_20260701.md +304 -0
  79. package/skills/multi/soke-ai-coach-director/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/345/256/242/346/210/267/346/235/220/346/226/231/346/261/207/346/200/273_2026-05-19_1341.md +42 -0
  80. package/skills/multi/soke-ai-coach-director/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/347/237/245/350/257/206/345/272/223/347/224/237/346/210/220_20260615.md +23 -0
  81. package/skills/multi/soke-ai-coach-director/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/347/224/237/346/210/220_20260615.md +34 -0
  82. package/skills/multi/soke-ai-coach-director/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210/344/272/244/344/273/230/350/256/260/345/275/225_20260610.md +26 -0
  83. package/skills/multi/soke-ai-coach-director/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/346/217/220/347/244/272/350/257/215/346/220/255/345/273/272_20260622.md +30 -0
  84. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.2_20260616.md +254 -0
  85. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/345/216/213/347/274/251/347/211/210_V2.0_20260616.md +96 -0
  86. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_20260616.md +20 -0
  87. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277AI/351/231/252/347/273/203/347/263/273/347/273/237_/346/265/213/350/257/225/345/217/215/351/246/210/346/261/207/346/200/273_2026-06-01.md +434 -0
  88. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/344/277/241/344/273/273/345/200/274/347/246/201/344/273/244_2026-06-09_0932.md +22 -0
  89. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v2_20260608.md +261 -0
  90. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.2.md +354 -0
  91. package/skills/multi/soke-ai-coach-director/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_V2_/350/257/212/346/226/255/344/272/244/344/273/230_20260609.md +26 -0
  92. package/skills/multi/soke-ai-coach-director/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md +194 -0
  93. package/skills/multi/soke-ai-coach-director/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md +41 -0
  94. package/skills/multi/soke-ai-coach-director/references/change-log-partwise-refactor.md +74 -0
  95. package/skills/multi/soke-ai-coach-director/references/env-check.md +146 -0
  96. package/skills/multi/soke-ai-coach-director/references/exec-common.md +126 -0
  97. package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +621 -0
  98. package/skills/multi/soke-ai-coach-director/references/exec-part1.md +86 -0
  99. package/skills/multi/soke-ai-coach-director/references/exec-part2.md +145 -0
  100. package/skills/multi/soke-ai-coach-director/references/exec-part3.md +91 -0
  101. package/skills/multi/soke-ai-coach-director/references/exec-part4.md +187 -0
  102. package/skills/multi/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
  103. package/skills/{soke-learning-map/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-coach-director/references/installation.md} +0 -3
  104. package/skills/multi/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
  105. package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
  106. package/skills/multi/soke-ai-coach-director/references/role-resource-matching.md +45 -0
  107. package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +376 -0
  108. package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +489 -0
  109. package/skills/multi/soke-ai-coach-director/references/shared.md +185 -0
  110. package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
  111. package/skills/multi/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
  112. package/skills/multi/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
  113. package/skills/multi/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
  114. package/skills/multi/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
  115. package/skills/multi/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
  116. package/skills/multi/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
  117. package/skills/multi/soke-ai-coach-director/scripts/activator.sh +4 -0
  118. package/skills/multi/soke-ai-coach-director/scripts/error-detector.sh +4 -0
  119. package/skills/multi/soke-ai-coach-director/scripts/extract-skill.sh +7 -0
  120. package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +114 -0
  121. package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +410 -0
  122. package/skills/multi/soke-ai-training/SKILL.md +249 -0
  123. package/skills/{soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-training/references/installation.md} +0 -3
  124. package/skills/multi/soke-ai-training/references/shared.md +185 -0
  125. package/skills/{soke-assign → multi/soke-assign}/README.md +3 -5
  126. package/skills/multi/soke-assign/SKILL.md +101 -0
  127. package/skills/{soke-course/SKILL.md → multi/soke-assign/references/dependencies/soke-course.md} +1 -1
  128. package/skills/multi/soke-assign/references/dependencies/soke-exam.md +600 -0
  129. package/skills/multi/soke-assign/references/installation.md +451 -0
  130. package/skills/multi/soke-assign/references/shared.md +185 -0
  131. package/skills/multi/soke-certificate/SKILL.md +715 -0
  132. package/skills/multi/soke-certificate/references/installation.md +451 -0
  133. package/skills/multi/soke-certificate/references/shared.md +185 -0
  134. package/skills/{soke-course → multi/soke-course}/README.md +5 -7
  135. package/skills/multi/soke-course/SKILL.md +399 -0
  136. package/skills/multi/soke-course/agents/openai.yaml +7 -0
  137. package/skills/multi/soke-course/examples/create-basic.md +70 -0
  138. package/skills/multi/soke-course/references/course-list-courses.md +216 -0
  139. package/skills/multi/soke-course/references/dependencies/soke-assign.md +103 -0
  140. package/skills/multi/soke-course/references/dependencies/soke-lesson.md +119 -0
  141. package/skills/multi/soke-course/references/dependencies/soke-material.md +105 -0
  142. package/skills/multi/soke-course/references/examples.md +480 -0
  143. package/skills/multi/soke-course/references/installation.md +451 -0
  144. package/skills/multi/soke-course/references/intent-cases.md +99 -0
  145. package/skills/multi/soke-course/references/shared.md +185 -0
  146. package/skills/multi/soke-course/references/sop-full-workflow.md +177 -0
  147. package/skills/multi/soke-course/references/sop-lesson-types.md +66 -0
  148. package/skills/multi/soke-course/references/sop-publish-check.md +76 -0
  149. package/skills/multi/soke-course/references/subs/ai/SOP.md +153 -0
  150. package/skills/multi/soke-course/references/subs/category/SOP.md +112 -0
  151. package/skills/multi/soke-course/references/subs/charge/SOP.md +107 -0
  152. package/skills/multi/soke-course/references/subs/copy/SOP.md +80 -0
  153. package/skills/multi/soke-course/references/subs/publish/SOP.md +168 -0
  154. package/skills/multi/soke-course/references/subs/query/SOP.md +165 -0
  155. package/skills/multi/soke-course/references/subs/settings/SOP.md +136 -0
  156. package/skills/multi/soke-course/references/subs/template/SOP.md +223 -0
  157. package/skills/multi/soke-course/references/troubleshoot.md +68 -0
  158. package/skills/multi/soke-course/scripts/check_readiness.py +87 -0
  159. package/skills/multi/soke-exam/SKILL.md +598 -0
  160. package/skills/multi/soke-exam/references/exam-get-exam-user.md +212 -0
  161. package/skills/multi/soke-exam/references/installation.md +451 -0
  162. package/skills/multi/soke-exam/references/shared.md +185 -0
  163. package/skills/multi/soke-exam-question-pool/SKILL.md +121 -0
  164. package/skills/multi/soke-exam-question-pool/references/installation.md +451 -0
  165. package/skills/multi/soke-exam-question-pool/references/shared.md +185 -0
  166. package/skills/multi/soke-learning-map/SKILL.md +553 -0
  167. package/skills/multi/soke-learning-map/references/dependencies/soke-assign.md +103 -0
  168. package/skills/{soke-task/SKILL.md → multi/soke-learning-map/references/dependencies/soke-task.md} +1 -1
  169. package/skills/multi/soke-learning-map/references/installation.md +451 -0
  170. package/skills/multi/soke-learning-map/references/shared.md +185 -0
  171. package/skills/multi/soke-learning-profile/SKILL.md +221 -0
  172. package/skills/multi/soke-learning-profile/references/installation.md +451 -0
  173. package/skills/multi/soke-learning-profile/references/shared.md +185 -0
  174. package/skills/multi/soke-lesson/SKILL.md +117 -0
  175. package/skills/multi/soke-lesson/references/installation.md +451 -0
  176. package/skills/multi/soke-lesson/references/shared.md +185 -0
  177. package/skills/multi/soke-material/SKILL.md +103 -0
  178. package/skills/multi/soke-material/references/installation.md +451 -0
  179. package/skills/multi/soke-material/references/shared.md +185 -0
  180. package/skills/multi/soke-photo-gallery/SKILL.md +284 -0
  181. package/skills/multi/soke-photo-gallery/references/installation.md +451 -0
  182. package/skills/multi/soke-photo-gallery/references/shared.md +185 -0
  183. package/skills/multi/soke-shared/SKILL.md +183 -0
  184. package/skills/multi/soke-supervisor/SKILL.md +184 -0
  185. package/skills/multi/soke-supervisor/references/installation.md +451 -0
  186. package/skills/multi/soke-supervisor/references/shared.md +185 -0
  187. package/skills/multi/soke-task/SKILL.md +144 -0
  188. package/skills/multi/soke-task/references/installation.md +451 -0
  189. package/skills/multi/soke-task/references/shared.md +185 -0
  190. package/skills/multi/soke-training-demand/SKILL.md +219 -0
  191. package/skills/multi/soke-training-demand/references/installation.md +451 -0
  192. package/skills/multi/soke-training-demand/references/shared.md +185 -0
  193. package/skills/soke-course/scripts/check_readiness.sh +0 -82
  194. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/345/256/242/346/210/267/350/247/222/350/211/262/346/250/241/346/235/277/345/272/223.md" +0 -0
  195. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203Bad Case/346/240/267/346/234/254/345/272/223.md" +0 -0
  196. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/345/210/233/345/273/272/351/227/256/351/242/230/345/272/223.md" +0 -0
  197. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/345/234/272/346/231/257/345/210/206/347/261/273/345/272/223.md" +0 -0
  198. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/345/256/242/346/210/267/346/235/220/346/226/231/346/270/205/345/215/225/344/270/216/350/256/277/350/260/210/351/242/230/345/272/223.md" +0 -0
  199. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/345/276/256/350/260/203/351/227/256/351/242/230/345/272/223.md" +0 -0
  200. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/346/212/200/346/234/257/350/276/271/347/225/214/344/270/216/346/216/222/351/232/234/345/272/223.md" +0 -0
  201. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/346/250/241/345/235/227/345/272/223.md" +0 -0
  202. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/346/225/260/346/215/256/346/214/207/346/240/207/344/270/216/347/234/213/346/235/277/345/217/243/345/276/204/345/272/223.md" +0 -0
  203. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/272/223.md" +0 -0
  204. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/350/257/204/345/210/206/346/240/207/345/207/206/347/273/204/344/273/266/345/272/223.md" +0 -0
  205. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/231/252/347/273/203/351/241/271/347/233/256/346/241/210/344/276/213/345/244/215/347/233/230/345/272/223.md" +0 -0
  206. /package/skills/{soke-ai-coach-director → mono}/references/cases/AI/351/241/276/345/256/242/350/247/222/350/211/262/346/250/241/346/213/237_GoodCase_BadCase_20260701.md" +0 -0
  207. /package/skills/{soke-ai-coach-director → mono}/references/cases/create//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/224/265/350/257/235/347/272/246/350/256/277//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/345/256/242/346/210/267/346/235/220/346/226/231/346/261/207/346/200/273_2026-05-19_1341.md" +0 -0
  208. /package/skills/{soke-ai-coach-director → mono}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/347/237/245/350/257/206/345/272/223/347/224/237/346/210/220_20260615.md" +0 -0
  209. /package/skills/{soke-ai-coach-director → mono}/references/cases/create//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267//346/226/260/350/203/275/346/272/220/350/275/246/344/270/273/350/264/267/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215/347/224/237/346/210/220_20260615.md" +0 -0
  210. /package/skills/{soke-ai-coach-director → mono}/references/cases/create//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204//346/237/220/345/233/275/351/231/205/346/243/200/346/265/213/346/234/272/346/236/204/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210/344/272/244/344/273/230/350/256/260/345/275/225_20260610.md" +0 -0
  211. /package/skills/{soke-ai-coach-director → mono}/references/cases/create//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206//351/231/214/346/213/234/344/277/241/346/201/257/346/224/266/351/233/206_/346/217/220/347/244/272/350/257/215/346/220/255/345/273/272_20260622.md" +0 -0
  212. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.2_20260616.md" +0 -0
  213. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/345/216/213/347/274/251/347/211/210_V2.0_20260616.md" +0 -0
  214. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_20260616.md" +0 -0
  215. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277AI/351/231/252/347/273/203/347/263/273/347/273/237_/346/265/213/350/257/225/345/217/215/351/246/210/346/261/207/346/200/273_2026-06-01.md" +0 -0
  216. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/344/277/241/344/273/273/345/200/274/347/246/201/344/273/244_2026-06-09_0932.md" +0 -0
  217. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277KYC/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v2_20260608.md" +0 -0
  218. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.2.md" +0 -0
  219. /package/skills/{soke-ai-coach-director → mono}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215/344/274/230/345/214/226_V2_/350/257/212/346/226/255/344/272/244/344/273/230_20260609.md" +0 -0
  220. /package/skills/{soke-ai-coach-director → mono}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
  221. /package/skills/{soke-ai-coach-director → mono}/references/cases//346/241/210/344/276/213/345/272/223/350/241/245/345/205/205_2026-06-24.md" +0 -0
  222. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/CHANGELOG.md +0 -0
  223. /package/skills/{soke-ai-coach-director/SKILL.md → mono/references/modules/soke-ai-coach-director/MODULE.md} +0 -0
  224. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
  225. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
  226. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
  227. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
  228. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/knowledge-packager/knowledge-packager.md +0 -0
  229. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part2-roles.md +0 -0
  230. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +0 -0
  231. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
  232. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
  233. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/prompt-engineer.md +0 -0
  234. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +0 -0
  235. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
  236. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/README.md +0 -0
  237. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
  238. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/workbuddy.md +0 -0
  239. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
  240. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/zework.md +0 -0
  241. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/api-fallback.md +0 -0
  242. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/interaction.md +0 -0
  243. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/resource-finalizer.md +0 -0
  244. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/sync-engine.md +0 -0
  245. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/change-log-partwise-refactor.md +0 -0
  246. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/env-check.md +0 -0
  247. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-common.md +0 -0
  248. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part2.md +0 -0
  249. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part3.md +0 -0
  250. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/exec-part4.md +0 -0
  251. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/gate-check-matrix.md +0 -0
  252. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/micro-tune-labels.md +0 -0
  253. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/role-resource-matching.md +0 -0
  254. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-improvement-examples.md +0 -0
  255. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-learning-engine.md +0 -0
  256. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part2/SOP.md +0 -0
  257. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part3/SOP.md +0 -0
  258. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/part4/SOP.md +0 -0
  259. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/publish/SOP.md +0 -0
  260. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/subs/tune/SOP.md +0 -0
  261. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/verified-cli-cheatsheet.md +0 -0
  262. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/activator.sh +0 -0
  263. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/error-detector.sh +0 -0
  264. /package/skills/{soke-ai-coach-director → mono/references/modules/soke-ai-coach-director}/scripts/extract-skill.sh +0 -0
  265. /package/skills/{soke-assign/SKILL.md → mono/references/modules/soke-assign/MODULE.md} +0 -0
  266. /package/skills/{soke-course → mono/references/modules/soke-course}/agents/openai.yaml +0 -0
  267. /package/skills/{soke-course → mono/references/modules/soke-course}/examples/create-basic.md +0 -0
  268. /package/skills/{soke-course → mono/references/modules/soke-course}/references/course-list-courses.md +0 -0
  269. /package/skills/{soke-course → mono/references/modules/soke-course}/references/intent-cases.md +0 -0
  270. /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-full-workflow.md +0 -0
  271. /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-lesson-types.md +0 -0
  272. /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-publish-check.md +0 -0
  273. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/ai/SOP.md +0 -0
  274. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/category/SOP.md +0 -0
  275. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/charge/SOP.md +0 -0
  276. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/copy/SOP.md +0 -0
  277. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/publish/SOP.md +0 -0
  278. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/query/SOP.md +0 -0
  279. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/settings/SOP.md +0 -0
  280. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/template/SOP.md +0 -0
  281. /package/skills/{soke-course → mono/references/modules/soke-course}/references/troubleshoot.md +0 -0
  282. /package/skills/{soke-exam → mono/references/modules/soke-exam}/references/exam-get-exam-user.md +0 -0
  283. /package/skills/{soke-exam-question-pool/SKILL.md → mono/references/modules/soke-exam-question-pool/MODULE.md} +0 -0
  284. /package/skills/{soke-lesson/SKILL.md → mono/references/modules/soke-lesson/MODULE.md} +0 -0
  285. /package/skills/{soke-material/SKILL.md → mono/references/modules/soke-material/MODULE.md} +0 -0
  286. /package/skills/{soke-shared/SKILL.md → mono/references/modules/soke-shared/MODULE.md} +0 -0
  287. /package/skills/{soke-ai-coach-director → mono}/scripts/gate_check.py +0 -0
  288. /package/skills/{soke-ai-coach-director → multi/soke-ai-coach-director}/references/cases/micro-tune//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/347/263/273/345/210/227//344/274/201/344/270/232/345/256/266/347/216/213/346/200/273/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_V1.1_20260616.md" +0 -0
  289. /package/skills/{soke-ai-coach-director → multi/soke-ai-coach-director}/references/cases/micro-tune//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/347/263/273/345/210/227//345/206/234/346/210/267/345/274/240/350/200/201/346/235/277/346/217/220/347/244/272/350/257/215_/344/274/230/345/214/226/347/211/210_v1.1.md" +0 -0
  290. /package/skills/{soke-lesson → multi/soke-lesson}/README.md +0 -0
  291. /package/skills/{soke-material → multi/soke-material}/README.md +0 -0
@@ -0,0 +1,223 @@
1
+ ---
2
+ name: soke-cli
3
+ description: "授客AI CLI 全业务 Mono Skill。通过 soke-cli 管理课程、考试、题库、素材、课件、指派、学习地图、学习档案、证书、图片库、培训需求、AI 教练和 AI 督导。当用户需要从自然语言执行或了解上述业务操作时使用。"
4
+ metadata:
5
+ requires:
6
+ bins:
7
+ - soke-cli
8
+ ---
9
+
10
+ # 授客AI CLI 全业务 Skill
11
+
12
+ 本目录是可独立复制和安装的 Mono 发布包。所有参考文档、工作流、案例和脚本均位于本目录内,不依赖原始代码仓库。
13
+
14
+ ## 前置条件
15
+
16
+ 开始任何业务操作前,先读取 [安装与认证](./references/installation.md) 和 [共享 CLI 规则](./references/shared/cli-basics.md)。
17
+
18
+ ## 意图路由
19
+
20
+ 按用户意图选择对应模块,并按需读取该模块的 `MODULE.md`:
21
+
22
+ | 场景 | 模块 |
23
+ |---|---|
24
+ | 课程、课程发布、学习记录 | [soke-course](./references/modules/soke-course/MODULE.md) |
25
+ | 考试、题库、试卷、成绩 | [soke-exam](./references/modules/soke-exam/MODULE.md) |
26
+ | 题库答题练习 | [soke-exam-question-pool](./references/modules/soke-exam-question-pool/MODULE.md) |
27
+ | 素材上传与管理 | [soke-material](./references/modules/soke-material/MODULE.md) |
28
+ | 课件与课程章节 | [soke-lesson](./references/modules/soke-lesson/MODULE.md) |
29
+ | 课程/考试/地图指派 | [soke-assign](./references/modules/soke-assign/MODULE.md) |
30
+ | 学习地图 | [soke-learning-map](./references/modules/soke-learning-map/MODULE.md) |
31
+ | 学员学习档案 | [soke-learning-profile](./references/modules/soke-learning-profile/MODULE.md) |
32
+ | 证书、图片库、培训需求 | 对应模块目录 |
33
+ | AI 教练、AI 督导 | 对应模块目录 |
34
+
35
+ ## 共享规则
36
+
37
+ - 所有命令使用 `soke-cli`,不要绕过 CLI 直接调用 HTTP API。
38
+ - 不编造 UUID、用户 ID、课程 ID 等标识符,必须先通过命令查询。
39
+ - 写入、删除、发布等高风险操作遵循模块文档中的确认要求。
40
+ - 详细资料按需读取,避免一次性加载整个参考目录。
41
+
42
+ ## 目录说明
43
+
44
+ - `references/modules/`:各业务模块的完整参考资料
45
+ - `references/shared/`:认证、权限、错误处理和 CLI 共用规则
46
+ - `references/workflows/`:跨模块流程
47
+ - `references/cases/`:AI 教练案例资料
48
+ - `scripts/`:本 Skill 随附的辅助脚本
49
+
50
+ ## 严格禁止(NEVER DO)
51
+
52
+ - 不要绕过 `soke-cli` 直接使用 `curl`、HTTP API 或浏览器操作业务接口。
53
+ - 不要编造课程 ID、考试 ID、题库 ID、用户 ID、部门 ID 或其他 UUID;必须从 CLI 返回结果中提取。
54
+ - 不要输出 `app_secret`、`access_token`、`refresh_token` 等敏感凭证。
55
+ - 不要把示例值当成真实业务数据,不要自行补全用户未提供的信息。
56
+ - 不要在未确认目标对象、影响范围和用户意图时执行删除、发布、指派或其他写操作。
57
+ - 不要把 `soke-cli api` 当作绕过业务 Skill 约束的替代方案;只有模块文档明确要求时才使用。
58
+
59
+ ## 必须执行(MUST DO)
60
+
61
+ - 开始任何业务操作前,先读取 [安装与认证](./references/installation.md) 和 [共享 CLI 规则](./references/shared/cli-basics.md)。
62
+ - 先判断用户的核心动作,再选择业务模块;名词相似时不能仅凭关键词猜测。
63
+ - 执行命令前使用对应命令的 `--help` 核对当前版本真实可用的参数,不要凭旧文档猜 flag。
64
+ - 需要机器解析时优先使用 `--format json`;展示给用户时提炼关键字段,不回显大段原始 JSON。
65
+ - 查询得到真实 ID 后才能执行后续依赖该 ID 的操作,并在多步流程中沿用同一对象。
66
+ - 写操作完成后,根据模块文档要求报告结果;失败时保留具体错误,不静默改用未经验证的替代命令。
67
+
68
+ ## 前置检查
69
+
70
+ ```bash
71
+ soke-cli --version
72
+ soke-cli config show
73
+ soke-cli auth login # 首次使用或认证失效时执行
74
+ soke-cli doctor # 当前版本支持时执行健康检查
75
+ ```
76
+
77
+ 认证、Token、权限和通用错误处理以 [共享 CLI 规则](./references/shared/cli-basics.md) 为准。
78
+
79
+ ## 完整意图路由
80
+
81
+ | 用户意图 | 模块参考 |
82
+ |---|---|
83
+ | 创建、发布、查询课程,配置课程设置 | [soke-course](./references/modules/soke-course/MODULE.md) |
84
+ | 上传或查询视频、音频、文档素材 | [soke-material](./references/modules/soke-material/MODULE.md) |
85
+ | 创建、查询、排序课程课件 | [soke-lesson](./references/modules/soke-lesson/MODULE.md) |
86
+ | 将课程、考试或学习地图指派给用户/部门 | [soke-assign](./references/modules/soke-assign/MODULE.md) |
87
+ | 创建、管理、发布、查询考试/题库/试卷 | [soke-exam](./references/modules/soke-exam/MODULE.md) |
88
+ | 进行可练习题库的随机答题 | [soke-exam-question-pool](./references/modules/soke-exam-question-pool/MODULE.md) |
89
+ | 创建、发布、查询学习地图 | [soke-learning-map](./references/modules/soke-learning-map/MODULE.md) |
90
+ | 查询学员学习档案和学习统计 | [soke-learning-profile](./references/modules/soke-learning-profile/MODULE.md) |
91
+ | 查询证书、证书分类和获得人员 | [soke-certificate](./references/modules/soke-certificate/MODULE.md) |
92
+ | 上传、查询或删除图片库图片 | [soke-photo-gallery](./references/modules/soke-photo-gallery/MODULE.md) |
93
+ | 创建统计导出任务、查询任务状态 | [soke-task](./references/modules/soke-task/MODULE.md) |
94
+ | 查询、提交或投票培训需求 | [soke-training-demand](./references/modules/soke-training-demand/MODULE.md) |
95
+ | AI 教练知识包、场景和知识计划 | [soke-ai-training](./references/modules/soke-ai-training/MODULE.md) |
96
+ | AI 陪练创建、微调、平台同步和质量闸门 | [soke-ai-coach-director](./references/modules/soke-ai-coach-director/MODULE.md) |
97
+ | AI 督导场景、评分标准、指派和发布 | [soke-supervisor](./references/modules/soke-supervisor/MODULE.md) |
98
+
99
+ ### 易混淆场景
100
+
101
+ - 上传课程文件 → `soke-material`;把已上传素材放进课程章节 → `soke-lesson`。
102
+ - 创建课程/考试/地图后的对象分配 → `soke-assign`,不要自行构造指派请求。
103
+ - 查询考试成绩 → `soke-exam`;按题库随机答题 → `soke-exam-question-pool`。
104
+ - 学习地图或课程统计导出 → `soke-task`,不要把导出任务当作普通列表查询。
105
+ - AI 教练知识包同步 → `soke-ai-training`;陪练创建、微调、资源匹配和发布闸门 → `soke-ai-coach-director`。
106
+ - AI 督导场景管理 → `soke-supervisor`,不要与普通课程指派混用。
107
+
108
+ ## 意图判断与执行流程
109
+
110
+ 1. **识别动作**:区分查询、创建、更新、发布、指派、删除、导出、同步或答题练习。
111
+ 2. **确认范围**:明确模块、目标对象、组织/用户范围和输出要求;存在歧义时先询问。
112
+ 3. **读取规则**:读取本入口、共享规则和对应模块 `MODULE.md`;复杂场景再读取专项参考资料。
113
+ 4. **发现命令**:先运行父级帮助,再运行叶子命令 `--help` 核对参数。
114
+ 5. **查询前置数据**:先获取分类、对象或用户的真实 ID,禁止猜测。
115
+ 6. **执行与衔接**:按模块定义顺序执行,每一步返回值作为下一步输入。
116
+ 7. **确认高风险操作**:发布、指派、删除和批量写入前展示摘要并等待明确确认。
117
+ 8. **汇报结果**:只报告相关结果、ID、状态和下一步,不泄露凭证或无关调试输出。
118
+
119
+ ## 命令发现与参数边界
120
+
121
+ `soke-cli` 的命令帮助是当前二进制的最终事实源。文档示例用于理解流程,不能替代实际帮助输出。
122
+
123
+ ```bash
124
+ soke-cli --help
125
+ soke-cli course --help
126
+ soke-cli exam --help
127
+ soke-cli course +list-courses --help
128
+ soke-cli exam +get-exam-user --help
129
+ soke-cli course +list-courses --format json
130
+ ```
131
+
132
+ - 有精确覆盖用户意图的 `+verb` shortcut 时,优先使用该 shortcut。
133
+ - shortcut 不存在或不能覆盖完整流程时,按模块文档使用标准命令或 `api` 命令。
134
+ - 文档与 `--help` 不一致时,以当前 `--help` 为准,并说明差异。
135
+ - 不要为了验证参数而执行实际写操作;命令支持 `--dry-run` 时先使用预览模式。
136
+ - 不要把列表响应、详情响应或 `--help` 输出误认为业务操作已经成功。
137
+
138
+ ## 输出与交互规范
139
+
140
+ - 列表结果应说明分页、筛选条件和结果数量,不能把第一页当作全量结果。
141
+ - 需要用户从固定选项中选择时,使用当前 Agent 可用的选择交互,不要求用户重新输入长编号列表。
142
+ - 多步骤流程中,前一步未获得必要结果或用户选择时,不得擅自推进下一步。
143
+ - AI 陪练主管流程必须遵循其前台/后台输出边界,不回显中间 JSON 或调试输出。
144
+
145
+ ## 高风险操作确认
146
+
147
+ 以下操作执行前必须展示操作摘要,并获得明确同意:
148
+
149
+ | 操作类别 | 示例 | 必须说明 |
150
+ |---|---|---|
151
+ | 删除 | 删除课程、考试、证书、图片或任务 | 目标对象和不可逆影响 |
152
+ | 发布/上线 | 发布课程、试卷、考试、学习地图、AI 场景 | 发布对象和可见范围 |
153
+ | 指派 | 给部门或批量用户指派课程、考试、学习地图 | 资源、对象范围和必修/选修属性 |
154
+ | 批量写入 | 批量创建或更新记录 | 数量、字段和失败处理方式 |
155
+ | AI 平台同步 | 应用场景、绑定知识包、发布或关闭场景 | 将要修改的场景和配置摘要 |
156
+
157
+ 确认流程:
158
+
159
+ ```text
160
+ Step 1 → 展示操作类型、目标对象、影响范围
161
+ Step 2 → 等待用户明确确认
162
+ Step 3 → 按模块文档执行命令;仅在命令要求时使用确认参数
163
+ Step 4 → 返回执行结果和真实对象 ID
164
+ ```
165
+
166
+ ## 跨模块标准工作流
167
+
168
+ ### 课程创建与发布
169
+
170
+ ```text
171
+ 课程分类 → 创建课程 → 上传素材 → 创建课件 → 配置课程 → 发布课程 → 指派学员
172
+ ```
173
+
174
+ 必须按 `soke-course` 流程执行。课件创建参数必须来自 `soke-material` 的真实上传结果。
175
+
176
+ ### 考试创建与成绩查询
177
+
178
+ ```text
179
+ 题库分类 → 题库 → 试题 → 试卷 → 发布试卷 → 考试 → 指派 → 查询成绩
180
+ ```
181
+
182
+ 填空题、发布参数和题库/试卷 ID 依赖以 [soke-exam](./references/modules/soke-exam/MODULE.md) 为准。
183
+
184
+ ### 学习地图与统计导出
185
+
186
+ ```text
187
+ 地图分类 → 创建地图 → 查询课程 → 创建阶段 → 发布地图 → 指派 → 创建 task 导出 → 查询 task
188
+ ```
189
+
190
+ 统计导出统一读取 [soke-task](./references/modules/soke-task/MODULE.md),不要重复实现异步轮询。
191
+
192
+ ## 错误处理
193
+
194
+ 1. 记录失败命令、模块、参数摘要和完整错误信息,敏感字段必须脱敏。
195
+ 2. 参数错误时运行同一叶子命令的 `--help`,修正后再试;不要换成猜测的命令。
196
+ 3. 认证错误时检查配置并执行 `soke-cli auth login`。
197
+ 4. 权限错误时告知缺失权限或需要管理员开通的范围,不要绕过权限。
198
+ 5. 写操作重试前确认是否可能已经成功,避免重复创建或重复指派。
199
+ 6. 仍无法解决时报告失败阶段、错误摘要和建议的人工处理动作。
200
+
201
+ ## 随附脚本
202
+
203
+ 发布包只保留有实际职责的 Python 辅助脚本:
204
+
205
+ - AI 陪练质量闸门:[gate_check.py](./references/modules/soke-ai-coach-director/scripts/gate_check.py)
206
+ - AI 陪练操作校验:[validate_operations.py](./references/modules/soke-ai-coach-director/scripts/validate_operations.py)
207
+ - Mono 环境检查:[check_readiness.py](./scripts/check_readiness.py)
208
+
209
+ 使用脚本前先阅读对应模块说明,并使用 `python3` 执行。脚本输出中的凭证、完整响应和调试数据不得直接回显给用户。
210
+
211
+ ## 详细参考(按需读取)
212
+
213
+ - [安装与认证](./references/installation.md)
214
+ - [共享 CLI 规则](./references/shared/cli-basics.md)
215
+ - [课程模块](./references/modules/soke-course/)
216
+ - [考试模块](./references/modules/soke-exam/)
217
+ - [AI 陪练主管](./references/modules/soke-ai-coach-director/)
218
+ - [AI 教练知识包](./references/modules/soke-ai-training/)
219
+ - [学习地图](./references/modules/soke-learning-map/)
220
+ - [培训需求](./references/modules/soke-training-demand/)
221
+ - [案例库](./references/cases/)
222
+
223
+ 除非用户明确要求全量内容,否则只读取与当前意图直接相关的模块和参考文件。
@@ -434,9 +434,6 @@ npx skills add liuchenlong1111/soke-cli -y -g
434
434
 
435
435
  ### 📖 阅读详细文档
436
436
 
437
- - [README.md](../README.md) - 项目概览
438
- - [CLAUDE.md](../CLAUDE.md) - 项目架构和开发规范
439
- - [skills/README.md](../skills/README.md) - AI Agent Skills 详细说明
440
437
 
441
438
  ---
442
439
 
@@ -98,7 +98,8 @@ soke-ai-coach-director/
98
98
  ├── validate_operations.py
99
99
  ├── extract-skill.sh
100
100
  ├── error-detector.sh
101
- └── activator.sh
101
+ ├── activator.sh
102
+ └── gate_check.py
102
103
  ```
103
104
 
104
105
  ## 关键规则速查
@@ -23,7 +23,7 @@
23
23
  - 每条都能在 Part4 中找到对应评分维度
24
24
  - 不写空泛价值观,必须写成可观察行为或明确结果
25
25
  5. **考核关键点是 `step1-create.json.key_points` 的直接来源**:Part1 确认后生成 `step1-create.json` 时,必须将考核关键点拼接为单个字符串写入 `key_points`(多条用分号或编号拼接,不能是数组)
26
- 6. **`scene_lang` 固定为 `"简体中文"`**:永远写死为简体中文,取值不随用户语言、场景语种变化。→ 直接来源 `step1-create.json.scene_lang`
26
+ 6. **`scene_lang` 必须是语言代码**:仅支持 `zh`(简体中文)、`tw`(繁体中文)、`en`(英文)。→ 直接来源 `step1-create.json.scene_lang`
27
27
 
28
28
  #### 推荐输出格式
29
29
 
@@ -6,6 +6,7 @@
6
6
 
7
7
  ### 结构验收
8
8
  - Part1 基础字段存在:`name/description/tags/key_points/scene_lang/scenario_cover`
9
+ - Part1 `scene_lang` 必须是 `zh`、`tw` 或 `en`
9
10
  - Part2 角色回读正常:无 `角色数据异常`
10
11
  - Part4 评分配置存在:`scoring_criteria_config.criteria_data.dimensions` 非空
11
12
  - Part5 固定配置有效
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: soke-ai-training
3
+ summary: AI教练知识包同步、source管理、场景绑定和知识计划查询
4
+ version: 1.0.0
5
+ description: "用于本地Agent通过soke-cli调用开放平台AI教练知识包接口,完成Markdown source上传、结构化entries同步、source管理、场景知识包版本绑定和知识计划编译查询。"
6
+ metadata:
7
+ requires:
8
+ bins: ["soke-cli"]
9
+ cliHelp: "soke-cli ai-training --help"
10
+ ---
11
+
12
+ # AI教练知识包
13
+
14
+ **CRITICAL — 开始前 MUST 先读取 [`../../../soke-shared/MODULE.md`](../../../soke-shared/MODULE.md),其中包含认证、配置和权限处理。**
15
+
16
+ ## 使用前提
17
+
18
+ 1. 运行 `soke-cli auth login` 完成用户授权。
19
+ 2. 确认 `soke-cli config show` 中有 `APIBaseURL`、`AppKey`、`AppSecret`、`CorpID` 和用户 token。
20
+ 3. 客户原始 PDF、Word、Excel、网页等资料必须先由本地 Agent/Skills 提炼为 Markdown sources 和结构化 entries JSON。
21
+
22
+ ## 推荐同步
23
+
24
+ ```bash
25
+ soke-cli ai-training +sync \
26
+ --manifest ./knowledge-package.json \
27
+ --idempotency-key cli-rcb-loan-products-20260610-001
28
+ ```
29
+
30
+ `+sync` 会完成:
31
+
32
+ 1. 读取 manifest 和 entries。
33
+ 2. 校验 Markdown 文件、source_refs、entry_id/source_id 唯一性。
34
+ 3. 调用 `/skills/ai-training/knowledge-packages/upload-tokens`。
35
+ 4. 直传 Markdown 到服务端返回的 `upload_url`。
36
+ 5. 调用 `/skills/ai-training/knowledge-packages/sync`。
37
+ 6. 写入 `.mentorai-sync-state.json`。
38
+
39
+ ## Manifest 示例
40
+
41
+ ```json
42
+ {
43
+ "package": {
44
+ "package_id": "rcb-loan-products",
45
+ "name": "农商银行贷款产品知识包",
46
+ "domain": "banking_loan",
47
+ "tags": ["贷款产品"]
48
+ },
49
+ "sources": [
50
+ {
51
+ "source_id": "src_manual",
52
+ "path": "./sources/manual.md",
53
+ "display_name": "贷款产品手册",
54
+ "origin_type": "pdf",
55
+ "origin_filename": "loan-manual.pdf"
56
+ }
57
+ ],
58
+ "entries_path": "./knowledge-package.entries.json"
59
+ }
60
+ ```
61
+
62
+ ## entries 格式(2026-08-18 实测补全)
63
+
64
+ `entries_path` 指向的 JSON 是数组,每项字段:
65
+
66
+ - `entry_id`:条目唯一 ID(如 `e_upgrade_super`)
67
+ - `entry_type`:**必填枚举**,只能是 `customer_topic` / `disclosure_step` / `advisor_golden_script` / `evaluation_rubric_evidence` / `business_fact`(传其他值会 422)
68
+ - `source_id`:来源 source 的 ID
69
+ - `title`:条目标题
70
+ - `content`:条目正文
71
+ - `source_refs`:**对象数组**(不是字符串数组),形如 `[{"source_id": "src_manual"}]`(传字符串数组会 422)
72
+ - `tags`:标签数组
73
+
74
+ ```json
75
+ [
76
+ {
77
+ "entry_id": "e_001",
78
+ "entry_type": "business_fact",
79
+ "source_id": "src_manual",
80
+ "title": "产品权益",
81
+ "content": "……",
82
+ "source_refs": [{"source_id": "src_manual"}],
83
+ "tags": ["产品"]
84
+ }
85
+ ]
86
+ ```
87
+
88
+ ## 查询和管理
89
+
90
+ ```bash
91
+ soke-cli ai-training +list-packages --format json
92
+ soke-cli ai-training +list-versions --package-id rcb-loan-products
93
+ soke-cli ai-training +list-sources --package-id rcb-loan-products
94
+ soke-cli ai-training +rename-source --package-id rcb-loan-products --source-id src_manual --display-name "贷款产品手册2026Q2"
95
+ soke-cli ai-training +delete-source --package-id rcb-loan-products --source-id src_manual
96
+ ```
97
+
98
+ ## 场景绑定
99
+
100
+ ```bash
101
+ soke-cli ai-training +bind-scenario \
102
+ --scenario-id scenario_micro_loan_sales \
103
+ --version-ids 8ed4c1c4-5b3c-4d44-ae8e-d5b064bf1e12 \
104
+ --compile-plan
105
+
106
+ soke-cli ai-training +compile-plan \
107
+ --scenario-id scenario_micro_loan_sales \
108
+ --version-ids 8ed4c1c4-5b3c-4d44-ae8e-d5b064bf1e12 \
109
+ --force
110
+
111
+ soke-cli ai-training +get-plan --scenario-id scenario_micro_loan_sales --format json
112
+ ```
113
+
114
+ ## 注意
115
+
116
+ - 不要在 manifest 或 entries 中伪造 `corp_id`、`user_id` 或 `object_key`。
117
+ - `object_key` 必须使用 upload-token 返回值。
118
+ - 不要把客户原始资料、token、app_secret 或 OSS 签名写入仓库。
119
+ - `advisor_golden_script` 不应进入 AI 客户角色可见知识。
120
+ - ⚠️ `+sync` **不支持 `--pretty`** 参数(加了会报 unknown flag,用 `--format json` 替代)。
121
+ - ⚠️ `origin_filename` 用**纯 ASCII**(如 `manual.pdf`),中文文件名会触发 500「生成知识包上传凭证失败」(2026-08-18 实测)。
122
+ - ⚠️ **v2.37 知识包复用提炼稿**:知识包 Markdown source 直接复用材料提炼稿(`/tmp/xxx_refined.md`),**禁止从零重写**(内容已在上下文中,重写浪费 3-5 积分)。只需按 entries 格式拆条目。
123
+ - ⚠️ **v2.37 CLI 全重定向**:`+sync` / `+bind-scenario` 输出一律 `> /tmp/xxx.json 2>/dev/null`,Python 从重定向文件提取 `version_id` / `package_id`,**禁止 `--format json` 直出到对话**。
@@ -25,7 +25,7 @@
25
25
  "description": "<场景描述全文,完整搬运不缩略>",
26
26
  "tags": ["标签1", "标签2", "标签3"],
27
27
  "key_points": "1) 考核点1;2) 考核点2;3) 考核点3",
28
- "scene_lang": "简体中文",
28
+ "scene_lang": "zh",
29
29
  "scenario_cover": "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
30
30
  }
31
31
  ```
@@ -38,7 +38,7 @@
38
38
  | `description` | string | Part1 场景描述全文,禁缩略 | 只写首句摘要 |
39
39
  | `tags` | string[] | 3-5 个数组元素 | ❌ 逗号分隔字符串 |
40
40
  | `key_points` | **string** | 多条用分号/编号拼成**单字符串** | ❌ 写成数组(平台会接受但字段为空) |
41
- | `scene_lang` | string | 固定 `"简体中文"`(永不随场景变) | ❌ `"zh-CN"` / `"中文"` |
41
+ | `scene_lang` | string | 仅支持 `zh`、`tw`、`en`(分别为简体中文、繁体中文、英文) | ❌ `"简体中文"` / `"zh-CN"` / `"中文"` |
42
42
  | `scenario_cover` | string | 固定默认图 URL | ❌ 占位/本地路径 |
43
43
 
44
44
  ### 提交前断言(Python 表达式)
@@ -48,7 +48,7 @@ assert isinstance(data["name"], str) and 1 <= len(data["name"]) <= 100
48
48
  assert isinstance(data["description"], str) and len(data["description"]) >= 20
49
49
  assert isinstance(data["tags"], list) and 3 <= len(data["tags"]) <= 5
50
50
  assert isinstance(data["key_points"], str) and len(data["key_points"]) > 0 # 必须是字符串
51
- assert data["scene_lang"] == "简体中文"
51
+ assert data["scene_lang"] in {"zh", "tw", "en"}
52
52
  assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
53
53
  ```
54
54
 
@@ -67,9 +67,9 @@ assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cov
67
67
  "tags": "展会拓客,B2B销售,快速识别"
68
68
  }
69
69
 
70
- ❌ 案例 C:scene_lang 写成 zh-CN
70
+ ❌ 案例 C:scene_lang 使用不支持的展示名称或区域码
71
71
  {
72
- "scene_lang": "zh-CN"
72
+ "scene_lang": "简体中文"
73
73
  }
74
74
 
75
75
  ❌ 案例 D:封面留空或写占位 URL
@@ -23,7 +23,7 @@
23
23
  "description": "<场景描述全文,完整搬运不缩略>",
24
24
  "tags": ["标签1", "标签2", "标签3"],
25
25
  "key_points": "1) 考核点1;2) 考核点2;3) 考核点3",
26
- "scene_lang": "简体中文",
26
+ "scene_lang": "zh",
27
27
  "scenario_cover": "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
28
28
  }
29
29
  ```
@@ -36,7 +36,7 @@
36
36
  | `description` | string | Part1 场景描述全文,禁缩略 | 只写首句摘要 |
37
37
  | `tags` | string[] | 3-5 个数组元素 | ❌ 逗号分隔字符串 |
38
38
  | `key_points` | **string** | 多条用分号/编号拼成**单字符串** | ❌ 写成数组(平台会接受但字段为空) |
39
- | `scene_lang` | string | 固定 `"简体中文"`(永不随场景变) | ❌ `"zh-CN"` / `"中文"` |
39
+ | `scene_lang` | string | 仅支持 `zh`、`tw`、`en`(分别为简体中文、繁体中文、英文) | ❌ `"简体中文"` / `"zh-CN"` / `"中文"` |
40
40
  | `scenario_cover` | string | 固定默认图 URL | ❌ 占位/本地路径 |
41
41
 
42
42
  ---
@@ -48,7 +48,7 @@ assert isinstance(data["name"], str) and 1 <= len(data["name"]) <= 100
48
48
  assert isinstance(data["description"], str) and len(data["description"]) >= 20
49
49
  assert isinstance(data["tags"], list) and 3 <= len(data["tags"]) <= 5
50
50
  assert isinstance(data["key_points"], str) and len(data["key_points"]) > 0
51
- assert data["scene_lang"] == "简体中文"
51
+ assert data["scene_lang"] in {"zh", "tw", "en"}
52
52
  assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
53
53
  ```
54
54
 
@@ -63,8 +63,8 @@ assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cov
63
63
  ❌ 案例 B:tags 写成逗号分隔字符串
64
64
  { "tags": "展会拓客,B2B销售,快速识别" }
65
65
 
66
- ❌ 案例 C:scene_lang 写成 zh-CN
67
- { "scene_lang": "zh-CN" }
66
+ ❌ 案例 C:scene_lang 使用不支持的展示名称或区域码
67
+ { "scene_lang": "简体中文" }
68
68
 
69
69
  ❌ 案例 D:封面留空或写占位 URL
70
70
  { "scenario_cover": "" }
@@ -41,7 +41,7 @@
41
41
  - **验收**:apply 后 `+get-scenario --raw` 逐字段核对目标字段;preview/apply 成功≠平台最终解析正常。
42
42
  - **JSON 中文引号**:用 Python `json.dump(ensure_ascii=False)` 写入,禁 heredoc/echo(全角双引号会报错)。
43
43
  - **类型**:Part3 `max_rounds` 整数、`sort_order` 字符串 `"1"`;Part4 `sort_order` 数字 `1`(两者相反)。
44
- - **Part1 必填**:`key_points` 是字符串(非数组)、`scene_lang="简体中文"`、`scenario_cover` 固定默认图 `https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png`。
44
+ - **Part1 必填**:`key_points` 是字符串(非数组)、`scene_lang` 为 `zh/tw/en` 之一、`scenario_cover` 固定默认图 `https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png`。
45
45
  - **身份字段**:`corp_id/user_id/implementation_corp_id` 禁写请求体,不作选租户依据。
46
46
 
47
47
  ## 推荐顺序
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 固定约束
6
6
 
7
- - 场景语言 `scene_lang` 固定 `"简体中文"`(永不随场景变)。
7
+ - 场景语言 `scene_lang` 仅支持 `zh`(简体中文)、`tw`(繁体中文)、`en`(英文)。
8
8
  - 封面固定默认 URL `https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png`(确认后后台写入)。
9
9
  - `key_points` 必须**单个字符串**(多条用分号/编号拼接,非数组)。
10
10
 
@@ -14,4 +14,4 @@
14
14
 
15
15
  ## 自查清单(7 项)
16
16
 
17
- 1. name 非空 ≤15 字;2. description 100-200 字;3. scene_lang="简体中文";4. cover 非空(固定 URL);5. **key_points 是字符串非数组(最高频错误)**;6. category_id 非空;7. tags 3-5 个。
17
+ 1. name 非空 ≤15 字;2. description 100-200 字;3. scene_lang 为 `zh/tw/en` 之一;4. cover 非空(固定 URL);5. **key_points 是字符串非数组(最高频错误)**;6. category_id 非空;7. tags 3-5 个。
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ soke-ai-coach-director · 闸门一次性校验器(v2.42)
4
+ Usage:
5
+ python3 scripts/gate_check.py /tmp/scenario_get.json
6
+
7
+ 输入:+get-scenario 重定向后的 JSON 文件(自动处理 {data:{...}} 嵌套)
8
+ 输出:单行结果 —— 全过输出 "GATE PASS",否则 "GATE FAIL" + 逐项失败原因
9
+ 退出码:0 = 通过,1 = 失败
10
+
11
+ 设计目的:消除闸门阶段逐字段拆轮探查(历史实测浪费 ~8 积分)。
12
+ AI 只需跑这一个脚本,禁止再用 Python 逐步看返回结构。
13
+ """
14
+
15
+ import json
16
+ import sys
17
+
18
+
19
+ def unwrap(raw):
20
+ """处理 CLI 返回的可能嵌套:{data:{...}} / {code,data} / 裸对象。"""
21
+ if not isinstance(raw, dict):
22
+ return raw
23
+ d = raw.get("data")
24
+ if isinstance(d, dict):
25
+ return d
26
+ return raw
27
+
28
+
29
+ def check(sc: dict) -> list:
30
+ errs = []
31
+
32
+ # ---------- Step 8 发布闸门(4 项,任一缺失禁止发布) ----------
33
+
34
+ # 1. 封面 = 固定默认图(非空且正确前缀)
35
+ cover = sc.get("scenario_cover") or sc.get("cover")
36
+ if not cover or "roles_avatars" in str(cover) or not str(cover).startswith("http"):
37
+ errs.append(f"[发布1] 封面缺失或非法: {cover!r:.80}")
38
+
39
+ # 2/3. 全部角色 avatar / voice_id 非空
40
+ roles = sc.get("ai_roles") or []
41
+ if not roles:
42
+ errs.append("[发布2] ai_roles 为空")
43
+ for i, r in enumerate(roles):
44
+ rd = r.get("role_data") or r
45
+ av = rd.get("avatar")
46
+ vi = rd.get("voice_id")
47
+ if not av or not str(av).startswith("http"):
48
+ errs.append(f"[发布2] 角色{i}({rd.get('name','?')}) avatar 非法: {av!r:.60}")
49
+ if not vi:
50
+ errs.append(f"[发布3] 角色{i}({rd.get('name','?')}) voice_id 为空")
51
+
52
+ # 4. 无"角色数据异常":OS 存在且足够长
53
+ os_text = sc.get("ai_roles_overall_description") or ""
54
+ if len(os_text) < 500:
55
+ errs.append(f"[发布4] OS 过短({len(os_text)}<500),疑似角色数据异常")
56
+
57
+ # ---------- Step 7 补查 3 项(Part 自检已过的 9 项跳过) ----------
58
+
59
+ # 8. Part 内容完整:name/key_points/tags 非空
60
+ if not sc.get("name"):
61
+ errs.append("[闸门8] 场景名为空")
62
+ if not sc.get("key_points"):
63
+ errs.append("[闸门8] key_points 为空(检查 Part1 是否误写数组)")
64
+ if not (sc.get("tags") and len(sc.get("tags", [])) >= 3):
65
+ errs.append("[闸门8] tags 少于 3 个")
66
+ if sc.get("scene_lang") not in {"zh", "tw", "en"}:
67
+ errs.append(f"[闸门8] scene_lang 必须是 zh、tw 或 en,当前 {sc.get('scene_lang')!r}")
68
+
69
+ # 12. 整体设定 ≤ 3000 字
70
+ if len(os_text) > 3000:
71
+ errs.append(f"[闸门12] OS 超长({len(os_text)}>3000)")
72
+
73
+ # 5. Part3 环节存在(回读 conversation_steps 非空;空则提示 CLI 限制,不阻塞)
74
+ steps = sc.get("conversation_steps") or []
75
+ if not steps:
76
+ print("WARN: conversation_steps 为空——已知 CLI/平台限制,发布后走 Web 后台补录(不阻塞)")
77
+
78
+ # 6. Part4 评分维度存在且权重和 = 100
79
+ cd = ((sc.get("scoring_criteria_config") or {}).get("criteria_data")) or sc.get("criteria_data") or {}
80
+ dims = cd.get("dimensions") or []
81
+ if not dims:
82
+ print("WARN: 评分维度在 get 返回中不可见——以 Part4 自检 + apply 成功为准(不阻塞)")
83
+ else:
84
+ w = sum(d.get("weight", 0) for d in dims)
85
+ if w != 100:
86
+ errs.append(f"[闸门6→发布] 维度权重和={w}≠100")
87
+
88
+ return errs
89
+
90
+
91
+ def main() -> int:
92
+ if len(sys.argv) != 2:
93
+ print("Usage: gate_check.py <scenario_get.json>", file=sys.stderr)
94
+ return 1
95
+ try:
96
+ with open(sys.argv[1], encoding="utf-8") as f:
97
+ raw = json.load(f)
98
+ except Exception as e:
99
+ print(f"GATE FAIL: JSON 读取失败 {e}", file=sys.stderr)
100
+ return 1
101
+
102
+ sc = unwrap(raw)
103
+ errs = check(sc)
104
+ if errs:
105
+ print("GATE FAIL")
106
+ for e in errs:
107
+ print(f" {e}")
108
+ return 1
109
+ print("GATE PASS")
110
+ return 0
111
+
112
+
113
+ if __name__ == "__main__":
114
+ sys.exit(main())