@sokeai/cli 1.0.76 → 1.0.78

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 (314) hide show
  1. package/README.md +7 -7
  2. package/package.json +1 -1
  3. package/scripts/build-binaries.sh +1 -1
  4. package/scripts/e2e-test.sh +75 -3
  5. package/scripts/install.js +2 -2
  6. package/scripts/local-test.js +1 -1
  7. package/scripts/test-auto-detect.js +20 -3
  8. package/skills/README.md +25 -174
  9. package/skills/SKILL.md +17 -222
  10. package/skills/mono/README.md +10 -0
  11. package/skills/mono/SKILL.md +223 -0
  12. 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
  13. package/skills/mono/references/modules/soke-ai-coach-director/CHANGELOG.md +203 -0
  14. package/skills/mono/references/modules/soke-ai-coach-director/MODULE.md +221 -0
  15. package/skills/mono/references/modules/soke-ai-coach-director/README.md +121 -0
  16. package/skills/mono/references/modules/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
  17. package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
  18. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part3-flow.md +3 -3
  19. package/skills/mono/references/modules/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
  20. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-optimizer/prompt-optimizer.md +77 -58
  21. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/workbuddy.md +2 -3
  22. package/skills/mono/references/modules/soke-ai-coach-director/platform/interaction.md +103 -0
  23. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/publish-gate.md +3 -3
  24. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/resource-finalizer.md +10 -35
  25. package/skills/mono/references/modules/soke-ai-coach-director/platform/soke-ai-training/soke-ai-training.md +123 -0
  26. package/skills/mono/references/modules/soke-ai-coach-director/platform/sync-engine.md +39 -0
  27. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/change-log-partwise-refactor.md +1 -1
  28. package/skills/mono/references/modules/soke-ai-coach-director/references/env-check.md +146 -0
  29. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-common.md +126 -0
  30. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-handbook.md +621 -0
  31. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part1.md +86 -0
  32. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part2.md +145 -0
  33. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part3.md +91 -0
  34. package/skills/mono/references/modules/soke-ai-coach-director/references/exec-part4.md +187 -0
  35. package/skills/mono/references/modules/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
  36. package/skills/mono/references/modules/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
  37. package/skills/mono/references/modules/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
  38. package/skills/mono/references/modules/soke-ai-coach-director/references/role-resource-matching.md +45 -0
  39. package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/references/self-improvement-examples.md +2 -0
  40. package/skills/mono/references/modules/soke-ai-coach-director/references/self-learning-engine.md +485 -0
  41. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
  42. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
  43. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
  44. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
  45. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
  46. package/skills/mono/references/modules/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
  47. package/skills/mono/references/modules/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
  48. package/skills/mono/references/modules/soke-ai-coach-director/scripts/gate_check.py +112 -0
  49. package/skills/mono/references/modules/soke-ai-coach-director/scripts/validate_operations.py +403 -0
  50. package/skills/{soke-ai-training/SKILL.md → mono/references/modules/soke-ai-training/MODULE.md} +1 -1
  51. package/skills/mono/references/modules/soke-assign/README.md +308 -0
  52. package/skills/mono/references/modules/soke-certificate/MODULE.md +717 -0
  53. package/skills/mono/references/modules/soke-course/MODULE.md +402 -0
  54. package/skills/mono/references/modules/soke-course/README.md +291 -0
  55. package/skills/{soke-course → mono/references/modules/soke-course}/references/course-list-courses.md +49 -84
  56. package/skills/{soke-course → mono/references/modules/soke-course}/references/examples.md +3 -3
  57. package/skills/{soke-course → mono/references/modules/soke-course}/references/intent-cases.md +2 -2
  58. package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-full-workflow.md +4 -2
  59. package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/publish/SOP.md +21 -3
  60. package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/query/SOP.md +9 -7
  61. package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/settings/SOP.md +2 -1
  62. package/skills/{soke-exam/SKILL.md → mono/references/modules/soke-exam/MODULE.md} +1 -1
  63. package/skills/mono/references/modules/soke-exam-question-pool/MODULE.md +123 -0
  64. package/skills/{soke-learning-map/SKILL.md → mono/references/modules/soke-learning-map/MODULE.md} +5 -6
  65. package/skills/{soke-learning-profile/SKILL.md → mono/references/modules/soke-learning-profile/MODULE.md} +2 -2
  66. package/skills/mono/references/modules/soke-lesson/README.md +53 -0
  67. package/skills/mono/references/modules/soke-material/README.md +49 -0
  68. package/skills/{soke-photo-gallery/SKILL.md → mono/references/modules/soke-photo-gallery/MODULE.md} +2 -3
  69. package/skills/mono/references/modules/soke-supervisor/MODULE.md +186 -0
  70. package/skills/mono/references/modules/soke-task/MODULE.md +146 -0
  71. package/skills/mono/references/modules/soke-training-demand/MODULE.md +221 -0
  72. package/skills/mono/references/shared/cli-basics.md +185 -0
  73. package/skills/mono/scripts/check_readiness.py +28 -0
  74. package/skills/mono/scripts/gate_check.py +112 -0
  75. package/skills/mono/scripts/validate_operations.py +403 -0
  76. package/skills/multi/README.md +18 -0
  77. package/skills/multi/soke-ai-coach-director/CHANGELOG.md +203 -0
  78. package/skills/multi/soke-ai-coach-director/README.md +121 -0
  79. package/skills/multi/soke-ai-coach-director/SKILL.md +220 -0
  80. package/skills/multi/soke-ai-coach-director/assets/ERRORS-TEMPLATE.md +5 -0
  81. package/skills/multi/soke-ai-coach-director/assets/FEATURE_REQUESTS-TEMPLATE.md +5 -0
  82. package/skills/multi/soke-ai-coach-director/assets/LEARNINGS-TEMPLATE.md +44 -0
  83. package/skills/multi/soke-ai-coach-director/assets/SKILL-TEMPLATE.md +177 -0
  84. package/skills/multi/soke-ai-coach-director/coaching/knowledge-packager/knowledge-packager.md +91 -0
  85. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part1-basic.md +59 -0
  86. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +97 -0
  87. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part3-flow.md +72 -0
  88. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part4-scoring.md +87 -0
  89. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/parts/part5-constraints.md +48 -0
  90. package/skills/multi/soke-ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +76 -0
  91. package/skills/multi/soke-ai-coach-director/coaching/prompt-optimizer/prompt-optimizer.md +381 -0
  92. package/skills/multi/soke-ai-coach-director/coaching/role-profiler/role-profiler.md +87 -0
  93. package/skills/multi/soke-ai-coach-director/platform/adapters/README.md +68 -0
  94. package/skills/multi/soke-ai-coach-director/platform/adapters/qclaw.md +67 -0
  95. package/skills/multi/soke-ai-coach-director/platform/adapters/workbuddy.md +44 -0
  96. package/skills/multi/soke-ai-coach-director/platform/adapters/wukong.md +70 -0
  97. package/skills/multi/soke-ai-coach-director/platform/adapters/zework.md +89 -0
  98. package/skills/multi/soke-ai-coach-director/platform/api-fallback.md +262 -0
  99. package/skills/multi/soke-ai-coach-director/platform/interaction.md +103 -0
  100. package/skills/multi/soke-ai-coach-director/platform/publish-gate.md +44 -0
  101. package/skills/multi/soke-ai-coach-director/platform/resource-finalizer.md +103 -0
  102. package/skills/{ai-coach-director → multi/soke-ai-coach-director}/platform/soke-ai-training/soke-ai-training.md +34 -4
  103. package/skills/multi/soke-ai-coach-director/platform/sync-engine.md +39 -0
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. 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
  114. 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
  115. 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
  116. 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
  117. 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
  118. 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
  119. 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
  120. 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
  121. 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
  122. 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
  123. 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
  124. 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
  125. 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
  126. 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
  127. 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
  128. 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
  129. 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
  130. 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
  131. 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
  132. package/skills/multi/soke-ai-coach-director/references/change-log-partwise-refactor.md +74 -0
  133. package/skills/multi/soke-ai-coach-director/references/env-check.md +146 -0
  134. package/skills/multi/soke-ai-coach-director/references/exec-common.md +126 -0
  135. package/skills/multi/soke-ai-coach-director/references/exec-handbook.md +621 -0
  136. package/skills/multi/soke-ai-coach-director/references/exec-part1.md +86 -0
  137. package/skills/multi/soke-ai-coach-director/references/exec-part2.md +145 -0
  138. package/skills/multi/soke-ai-coach-director/references/exec-part3.md +91 -0
  139. package/skills/multi/soke-ai-coach-director/references/exec-part4.md +187 -0
  140. package/skills/multi/soke-ai-coach-director/references/gate-check-matrix.md +46 -0
  141. package/skills/{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
  142. package/skills/multi/soke-ai-coach-director/references/micro-tune-labels.md +30 -0
  143. package/skills/multi/soke-ai-coach-director/references/platform-api-pitfalls.md +49 -0
  144. package/skills/multi/soke-ai-coach-director/references/role-resource-matching.md +45 -0
  145. package/skills/multi/soke-ai-coach-director/references/self-improvement-examples.md +373 -0
  146. package/skills/multi/soke-ai-coach-director/references/self-learning-engine.md +485 -0
  147. package/skills/multi/soke-ai-coach-director/references/shared.md +185 -0
  148. package/skills/multi/soke-ai-coach-director/references/subs/part1/SOP.md +17 -0
  149. package/skills/multi/soke-ai-coach-director/references/subs/part2/SOP.md +34 -0
  150. package/skills/multi/soke-ai-coach-director/references/subs/part3/SOP.md +27 -0
  151. package/skills/multi/soke-ai-coach-director/references/subs/part4/SOP.md +31 -0
  152. package/skills/multi/soke-ai-coach-director/references/subs/publish/SOP.md +81 -0
  153. package/skills/multi/soke-ai-coach-director/references/subs/tune/SOP.md +92 -0
  154. package/skills/multi/soke-ai-coach-director/references/verified-cli-cheatsheet.md +56 -0
  155. package/skills/multi/soke-ai-coach-director/scripts/gate_check.py +112 -0
  156. package/skills/multi/soke-ai-coach-director/scripts/validate_operations.py +403 -0
  157. package/skills/multi/soke-ai-training/SKILL.md +247 -0
  158. package/skills/{soke-learning-map/soke-cli/345/256/211/350/243/205/346/214/207/345/215/227.md → multi/soke-ai-training/references/installation.md} +0 -3
  159. package/skills/multi/soke-ai-training/references/shared.md +185 -0
  160. package/skills/{soke-assign → multi/soke-assign}/README.md +3 -5
  161. package/skills/multi/soke-assign/SKILL.md +101 -0
  162. package/skills/{soke-course/SKILL.md → multi/soke-assign/references/dependencies/soke-course.md} +4 -4
  163. package/skills/multi/soke-assign/references/dependencies/soke-exam.md +600 -0
  164. package/skills/multi/soke-assign/references/installation.md +451 -0
  165. package/skills/multi/soke-assign/references/shared.md +185 -0
  166. package/skills/multi/soke-certificate/SKILL.md +715 -0
  167. package/skills/multi/soke-certificate/references/installation.md +451 -0
  168. package/skills/multi/soke-certificate/references/shared.md +185 -0
  169. package/skills/{soke-course → multi/soke-course}/README.md +11 -9
  170. package/skills/multi/soke-course/SKILL.md +399 -0
  171. package/skills/multi/soke-course/agents/openai.yaml +7 -0
  172. package/skills/multi/soke-course/examples/create-basic.md +70 -0
  173. package/skills/multi/soke-course/references/course-list-courses.md +216 -0
  174. package/skills/multi/soke-course/references/dependencies/soke-assign.md +103 -0
  175. package/skills/multi/soke-course/references/dependencies/soke-lesson.md +119 -0
  176. package/skills/multi/soke-course/references/dependencies/soke-material.md +105 -0
  177. package/skills/multi/soke-course/references/examples.md +480 -0
  178. package/skills/multi/soke-course/references/installation.md +451 -0
  179. package/skills/multi/soke-course/references/intent-cases.md +99 -0
  180. package/skills/multi/soke-course/references/shared.md +185 -0
  181. package/skills/multi/soke-course/references/sop-full-workflow.md +177 -0
  182. package/skills/multi/soke-course/references/sop-lesson-types.md +66 -0
  183. package/skills/multi/soke-course/references/sop-publish-check.md +76 -0
  184. package/skills/multi/soke-course/references/subs/ai/SOP.md +153 -0
  185. package/skills/multi/soke-course/references/subs/category/SOP.md +112 -0
  186. package/skills/multi/soke-course/references/subs/charge/SOP.md +107 -0
  187. package/skills/multi/soke-course/references/subs/copy/SOP.md +80 -0
  188. package/skills/multi/soke-course/references/subs/publish/SOP.md +168 -0
  189. package/skills/multi/soke-course/references/subs/query/SOP.md +165 -0
  190. package/skills/multi/soke-course/references/subs/settings/SOP.md +136 -0
  191. package/skills/multi/soke-course/references/subs/template/SOP.md +223 -0
  192. package/skills/multi/soke-course/references/troubleshoot.md +68 -0
  193. package/skills/multi/soke-course/scripts/check_readiness.py +87 -0
  194. package/skills/multi/soke-exam/SKILL.md +598 -0
  195. package/skills/multi/soke-exam/references/exam-get-exam-user.md +212 -0
  196. package/skills/multi/soke-exam/references/installation.md +451 -0
  197. package/skills/multi/soke-exam/references/shared.md +185 -0
  198. package/skills/{soke-exam-question-pool → multi/soke-exam-question-pool}/SKILL.md +2 -4
  199. package/skills/multi/soke-exam-question-pool/references/installation.md +451 -0
  200. package/skills/multi/soke-exam-question-pool/references/shared.md +185 -0
  201. package/skills/multi/soke-learning-map/SKILL.md +553 -0
  202. package/skills/multi/soke-learning-map/references/dependencies/soke-assign.md +103 -0
  203. package/skills/multi/soke-learning-map/references/dependencies/soke-task.md +146 -0
  204. package/skills/multi/soke-learning-map/references/installation.md +451 -0
  205. package/skills/multi/soke-learning-map/references/shared.md +185 -0
  206. package/skills/multi/soke-learning-profile/SKILL.md +221 -0
  207. package/skills/multi/soke-learning-profile/references/installation.md +451 -0
  208. package/skills/multi/soke-learning-profile/references/shared.md +185 -0
  209. package/skills/multi/soke-lesson/SKILL.md +117 -0
  210. package/skills/multi/soke-lesson/references/installation.md +451 -0
  211. package/skills/multi/soke-lesson/references/shared.md +185 -0
  212. package/skills/multi/soke-material/SKILL.md +103 -0
  213. package/skills/multi/soke-material/references/installation.md +451 -0
  214. package/skills/multi/soke-material/references/shared.md +185 -0
  215. package/skills/multi/soke-photo-gallery/SKILL.md +284 -0
  216. package/skills/multi/soke-photo-gallery/references/installation.md +451 -0
  217. package/skills/multi/soke-photo-gallery/references/shared.md +185 -0
  218. package/skills/multi/soke-shared/SKILL.md +183 -0
  219. package/skills/multi/soke-supervisor/SKILL.md +184 -0
  220. package/skills/multi/soke-supervisor/references/installation.md +451 -0
  221. package/skills/multi/soke-supervisor/references/shared.md +185 -0
  222. package/skills/{soke-task → multi/soke-task}/SKILL.md +31 -11
  223. package/skills/multi/soke-task/references/installation.md +451 -0
  224. package/skills/multi/soke-task/references/shared.md +185 -0
  225. package/skills/{soke-training-demand → multi/soke-training-demand}/SKILL.md +2 -4
  226. package/skills/multi/soke-training-demand/references/installation.md +451 -0
  227. package/skills/multi/soke-training-demand/references/shared.md +185 -0
  228. package/skills/ai-coach-director/SKILL.md +0 -1563
  229. package/skills/ai-coach-director/coaching/prompt-engineer/parts/part2-roles.md +0 -317
  230. package/skills/ai-coach-director/coaching/prompt-engineer/prompt-engineer.md +0 -244
  231. package/skills/ai-coach-director/platform/interaction.md +0 -315
  232. package/skills/ai-coach-director/platform/sync-engine.md +0 -1101
  233. package/skills/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/347/224/265/350/257/235/347/272/246/350/256/277_/346/240/207/345/207/206/347/237/245/350/257/206/345/272/223.md +0 -199
  234. package/skills/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/347/224/265/350/257/235/347/272/246/350/256/277/347/237/245/350/257/206/345/272/223.md +0 -388
  235. package/skills/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/tuv-knowledge-base.md +0 -125
  236. package/skills/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/tuv-p03-first-call-scenario-prompt.md +0 -428
  237. package/skills/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/204P03/351/231/252/347/273/203/346/211/247/350/241/214/346/226/271/346/241/210_20260610.md +0 -225
  238. package/skills/ai-coach-director/references/cases/create//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214//346/237/220/345/234/260/346/226/271/351/223/266/350/241/214/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/277AI/351/231/252/347/273/203/346/265/213/350/257/225/347/224/250/344/276/213/345/220/210/351/233/206.md +0 -525
  239. package/skills/ai-coach-director/references/cases/create//347/211/251/346/265/201/350/241/214/344/270/232//347/211/251/346/265/201/350/241/214/344/270/232-/345/210/235/346/254/241/346/213/234/350/256/277/351/246/231/347/262/276/351/246/231/346/226/231/345/256/242/346/210/267.md +0 -146
  240. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2061_/346/226/260/345/223/201/346/216/250/351/224/200_20260701.md +0 -230
  241. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2062_/345/202/254/350/217/234/345/256/211/346/212/232_20260701.md +0 -257
  242. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203_/346/240/207/346/235/2063_/345/267/256/350/257/204/345/233/236/350/256/277_20260701.md +0 -259
  243. package/skills/ai-coach-director/references/cases/create//351/205/222/345/272/227/351/244/220/351/245/256//351/205/222/345/272/227/351/244/220/351/245/256AI/351/231/252/347/273/203/345/234/272/346/231/257/346/226/271/346/241/210_20260701.md +0 -452
  244. package/skills/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_/345/256/242/346/210/267/347/241/256/350/256/244/345/217/215/351/246/210/350/241/250.md +0 -133
  245. package/skills/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_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v1.md +0 -333
  246. package/skills/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_/351/231/252/347/273/203/346/217/220/347/244/272/350/257/215_v2_Part1-Part5.md +0 -649
  247. package/skills/ai-coach-director/references/env-check.md +0 -167
  248. package/skills/ai-coach-director/references/platform-api-pitfalls.md +0 -232
  249. package/skills/ai-coach-director/references/role-resource-matching.md +0 -349
  250. package/skills/ai-coach-director/references/verified-cli-cheatsheet.md +0 -203
  251. package/skills/ai-coach-director/scripts/activator.sh +0 -4
  252. package/skills/ai-coach-director/scripts/error-detector.sh +0 -4
  253. package/skills/ai-coach-director/scripts/extract-skill.sh +0 -7
  254. package/skills/soke-course/scripts/check_readiness.sh +0 -82
  255. /package/skills/{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
  256. /package/skills/{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
  257. /package/skills/{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
  258. /package/skills/{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
  259. /package/skills/{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
  260. /package/skills/{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
  261. /package/skills/{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
  262. /package/skills/{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
  263. /package/skills/{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
  264. /package/skills/{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
  265. /package/skills/{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
  266. /package/skills/{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
  267. /package/skills/{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
  268. /package/skills/{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
  269. /package/skills/{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
  270. /package/skills/{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
  271. /package/skills/{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
  272. /package/skills/{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
  273. /package/skills/{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
  274. /package/skills/{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
  275. /package/skills/{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
  276. /package/skills/{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
  277. /package/skills/{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
  278. /package/skills/{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
  279. /package/skills/{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
  280. /package/skills/{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
  281. /package/skills/{ai-coach-director → mono}/references/cases//345/233/233/345/244/247/345/234/272/346/231/257_GoodCase_BadCase_20260701.md" +0 -0
  282. /package/skills/{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
  283. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/ERRORS-TEMPLATE.md +0 -0
  284. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/FEATURE_REQUESTS-TEMPLATE.md +0 -0
  285. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/LEARNINGS-TEMPLATE.md +0 -0
  286. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/assets/SKILL-TEMPLATE.md +0 -0
  287. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part1-basic.md +0 -0
  288. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part4-scoring.md +0 -0
  289. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/prompt-engineer/parts/part5-constraints.md +0 -0
  290. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/coaching/role-profiler/role-profiler.md +0 -0
  291. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/README.md +0 -0
  292. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/qclaw.md +0 -0
  293. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/wukong.md +0 -0
  294. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/adapters/zework.md +0 -0
  295. /package/skills/{ai-coach-director → mono/references/modules/soke-ai-coach-director}/platform/api-fallback.md +0 -0
  296. /package/skills/{soke-assign/SKILL.md → mono/references/modules/soke-assign/MODULE.md} +0 -0
  297. /package/skills/{soke-course → mono/references/modules/soke-course}/agents/openai.yaml +0 -0
  298. /package/skills/{soke-course → mono/references/modules/soke-course}/examples/create-basic.md +0 -0
  299. /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-lesson-types.md +0 -0
  300. /package/skills/{soke-course → mono/references/modules/soke-course}/references/sop-publish-check.md +0 -0
  301. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/ai/SOP.md +0 -0
  302. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/category/SOP.md +0 -0
  303. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/charge/SOP.md +0 -0
  304. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/copy/SOP.md +0 -0
  305. /package/skills/{soke-course → mono/references/modules/soke-course}/references/subs/template/SOP.md +0 -0
  306. /package/skills/{soke-course → mono/references/modules/soke-course}/references/troubleshoot.md +0 -0
  307. /package/skills/{soke-exam → mono/references/modules/soke-exam}/references/exam-get-exam-user.md +0 -0
  308. /package/skills/{soke-lesson/SKILL.md → mono/references/modules/soke-lesson/MODULE.md} +0 -0
  309. /package/skills/{soke-material/SKILL.md → mono/references/modules/soke-material/MODULE.md} +0 -0
  310. /package/skills/{soke-shared/SKILL.md → mono/references/modules/soke-shared/MODULE.md} +0 -0
  311. /package/skills/{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
  312. /package/skills/{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
  313. /package/skills/{soke-lesson → multi/soke-lesson}/README.md +0 -0
  314. /package/skills/{soke-material → multi/soke-material}/README.md +0 -0
@@ -0,0 +1,86 @@
1
+ # Part1 · 基础信息(创建场景)
2
+
3
+ > v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
4
+
5
+ ---
6
+
7
+ ## 必做操作清单
8
+
9
+ | # | 操作 | CLI 命令 | 产物 |
10
+ |---|------|---------|------|
11
+ | 1 | 创建场景 | `soke-cli +create-scenario --request-file /tmp/part1.json` | `scenario_id` |
12
+ | 2 | 回读验证 | `soke-cli +get-scenario --scenario-id <id>` | name/description/key_points/tags 一致 |
13
+
14
+ > Part1 走**创建链路**,不是 preview/apply 更新链路。没有 operations 数组。
15
+
16
+ ---
17
+
18
+ ## 完整 JSON 模板(part1-create.json)
19
+
20
+ ```json
21
+ {
22
+ "name": "<场景名称,1-100 字符>",
23
+ "description": "<场景描述全文,完整搬运不缩略>",
24
+ "tags": ["标签1", "标签2", "标签3"],
25
+ "key_points": "1) 考核点1;2) 考核点2;3) 考核点3",
26
+ "scene_lang": "简体中文",
27
+ "scenario_cover": "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
28
+ }
29
+ ```
30
+
31
+ ### 字段硬规则
32
+
33
+ | 字段 | 类型 | 固定值/约束 | 高频错误 |
34
+ |------|------|------------|---------|
35
+ | `name` | string | 1-100 字符,≤15 字推荐 | 空字符串 |
36
+ | `description` | string | Part1 场景描述全文,禁缩略 | 只写首句摘要 |
37
+ | `tags` | string[] | 3-5 个数组元素 | ❌ 逗号分隔字符串 |
38
+ | `key_points` | **string** | 多条用分号/编号拼成**单字符串** | ❌ 写成数组(平台会接受但字段为空) |
39
+ | `scene_lang` | string | 固定 `"简体中文"`(永不随场景变) | ❌ `"zh-CN"` / `"中文"` |
40
+ | `scenario_cover` | string | 固定默认图 URL | ❌ 占位/本地路径 |
41
+
42
+ ---
43
+
44
+ ## 提交前断言
45
+
46
+ ```python
47
+ assert isinstance(data["name"], str) and 1 <= len(data["name"]) <= 100
48
+ assert isinstance(data["description"], str) and len(data["description"]) >= 20
49
+ assert isinstance(data["tags"], list) and 3 <= len(data["tags"]) <= 5
50
+ assert isinstance(data["key_points"], str) and len(data["key_points"]) > 0
51
+ assert data["scene_lang"] == "简体中文"
52
+ assert data["scenario_cover"] == "https://newsokeeditorcdn.soke.cn/public/ai/cover/lingshou_daogou.png"
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 反面案例
58
+
59
+ ```json
60
+ ❌ 案例 A:key_points 写成数组(平台接受但字段为空)
61
+ { "key_points": ["快速吸引", "精准推介", "展后跟进"] }
62
+
63
+ ❌ 案例 B:tags 写成逗号分隔字符串
64
+ { "tags": "展会拓客,B2B销售,快速识别" }
65
+
66
+ ❌ 案例 C:scene_lang 写成 zh-CN
67
+ { "scene_lang": "zh-CN" }
68
+
69
+ ❌ 案例 D:封面留空或写占位 URL
70
+ { "scenario_cover": "" }
71
+ ```
72
+
73
+ ---
74
+
75
+ ## 创建后回读校验
76
+
77
+ ```python
78
+ assert result["name"] == part1_create["name"]
79
+ assert result["description"] == part1_create["description"]
80
+ assert result["tags"] == part1_create["tags"]
81
+ assert result["key_points"] == part1_create["key_points"]
82
+ assert result["scenario_id"] not in (None, "")
83
+ ```
84
+
85
+ - `scenario_id` 为空 → 视为创建失败,**禁止进入 Part2**
86
+ - `key_points` 回读为空 → 检查 part1-create.json 是否误写成数组
@@ -0,0 +1,145 @@
1
+ # Part2 · AI 角色设定(双操作同步锁)
2
+
3
+ > v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
4
+
5
+ ---
6
+
7
+ ## 必做操作清单
8
+
9
+ | # | operation.type | 作用 | 不可省略 |
10
+ |---|---------------|------|---------|
11
+ | 1 | `update_basic` | 写入 OS 整体设定 A1-A7 全文到 `ai_roles_overall_description` | ✅ 遗漏会导致平台无 OS,角色退化为普通对话 |
12
+ | 2 | `replace_ai_roles` | 写入所有角色数据到 `ai_roles[]` | ✅ 遗漏会导致平台有 OS 无角色 |
13
+
14
+ **两操作必须全部 applied=true 才算 Part2 完成**。可在同一批 operations 数组提交(OS 在前、roles 在后),也可分两次 apply。
15
+
16
+ ---
17
+
18
+ ## OS(ai_roles_overall_description)写作结构(v2.42 内联,禁再读 part2-roles.md)
19
+
20
+ OS 是单字符串,≥500 字符,≤3000 字符。按以下 7 段顺序拼接(A1-A7),每段一个自然段:
21
+
22
+ ```
23
+ A1 核心身份:你是"高保真人类社交模拟器"兼"隐形考核官",扮演具复杂社会属性、非理性情绪的特定角色,抛弃"乐于助人"的 AI 出厂设置,通过真实对话考核学员的沟通/销售能力。
24
+
25
+ A2 动态状态机:回复前更新 Trust_Level(信任值0-100,<20冷淡/>80成交信号)、Patience_Gauge(耐心条随轮次衰减)、Fact_Anchoring(事实锚点严禁幻觉修改)。
26
+
27
+ A3 双层逻辑:理性真值(后台精确算计)→感性表述(前台拟人化),永远不要轻易痛快答应。
28
+
29
+ A4 行为规范:语言熵增(倒装/重复/断句/口语填充);心理防御(面子机制/逻辑谬误/信息非对称);禁AI式服务、禁格式化输出、禁事实漂移;学员说违规夸大词("绝对""100%")时触发信任崩塌反击。
30
+
31
+ A5 信息挤牙膏:开场只表达表层诉求,被问才透露深层信息;学员单次回复超100字时抓核心痛点重复质疑,但明确回答过的问题不能假装没听见。
32
+
33
+ A6 隐形考核:随机挖坑测试(故意说错数据)、施压测试(突变条件)。
34
+
35
+ A7 导演模式:死局/结束/输入"复盘"时跳出角色,以金牌导师身份复盘,格式【关键死因/成功点】【心理揭秘】【金样板话术】。
36
+ ```
37
+
38
+ 按场景材料填充每段细节(话术风格/行业背景/红线),但**结构必须保持 A1-A7 顺序**。
39
+
40
+ ---
41
+
42
+ ## 完整 JSON 模板(part2-operations.json)
43
+
44
+ ```json
45
+ [
46
+ {
47
+ "type": "update_basic",
48
+ "data": {
49
+ "ai_roles_overall_description": "<A1-A7 OS 全文,单字符串,≥500 字符,禁摘要/禁'参见 Part2'>"
50
+ }
51
+ },
52
+ {
53
+ "type": "replace_ai_roles",
54
+ "data": {
55
+ "roles": [
56
+ {
57
+ "scenario_role_id": "role_<角色短码>",
58
+ "customization_level": "full",
59
+ "is_custom_role": true,
60
+ "customized_fields": ["name", "description", "communication_style", "background", "personality_type", "personality", "tags", "knowledge_level", "taboos_objections", "avatar", "voice_id", "source_type"],
61
+ "template_id": null,
62
+ "template_name": null,
63
+ "template_version": null,
64
+ "role_data": {
65
+ "name": "<角色名>",
66
+ "description": "<角色描述>",
67
+ "communication_style": "<沟通风格>",
68
+ "background": "<四段深度画像全文:我是谁/我的困扰/我的过往经历/我今天的心态>",
69
+ "personality_type": "<MBTI 单值,如 ISFJ>",
70
+ "personality": "<性格描述>",
71
+ "tags": ["标签1", "标签2"],
72
+ "knowledge_level": ["小白"],
73
+ "taboos_objections": ["禁忌1", "禁忌2"],
74
+ "avatar": "<后台资源匹配的 URL,禁手工预设>",
75
+ "voice_id": "<后台资源匹配的 ID,禁手工预设>",
76
+ "source_type": "custom"
77
+ }
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ ]
83
+ ```
84
+
85
+ ---
86
+
87
+ ## 字段硬规则
88
+
89
+ | 字段 | 类型 | 约束 |
90
+ |------|------|------|
91
+ | `ai_roles_overall_description` | string | ≥500 字符;A1-A7 全文拼接,不摘要 |
92
+ | `roles[]` | array | 非空,2-5 个角色 |
93
+ | `roles[].role_data.avatar/voice_id` | string | 后台 `+list-role-avatars/+list-role-voices` 匹配;**禁手工预设** |
94
+ | `roles[].role_data.knowledge_level` | string[] | 数组枚举(如 `["小白"]`),禁长句 |
95
+ | `roles[].role_data.tags` | string[] | 2-4 个 |
96
+ | `roles[].role_data.taboos_objections` | string[] | 列表项 |
97
+ | 外壳字段位置 | - | `customization_level/is_custom_role/customized_fields/scenario_role_id/template_id/template_name/template_version` 必须在 `role_data` **外层**;⚠️ `source_type` 例外——必须在 `role_data` **内**(`role_data.source_type="custom"`),外壳写 source_type 会触发"角色数据异常";⚠️ `created_at`/`updated_at` **禁传**——由平台自动生成,写字符串时间戳会触发"角色数据异常" |
98
+
99
+ ---
100
+
101
+ ## 提交前断言
102
+
103
+ ```python
104
+ op_os = next(o for o in operations if o["type"] == "update_basic")
105
+ os_text = op_os["data"]["ai_roles_overall_description"]
106
+ assert isinstance(os_text, str) and len(os_text) >= 500
107
+
108
+ op_roles = next(o for o in operations if o["type"] == "replace_ai_roles")
109
+ roles = op_roles["data"]["roles"]
110
+ assert isinstance(roles, list) and len(roles) >= 1
111
+ for r in roles:
112
+ for outer_key in ["scenario_role_id", "customization_level", "is_custom_role",
113
+ "customized_fields",
114
+ "template_id", "template_name", "template_version"]:
115
+ assert outer_key in r, f"缺少外壳字段: {outer_key}"
116
+ assert r["template_id"] is None and r["template_name"] is None and r["template_version"] is None
117
+ assert len(r["customized_fields"]) >= 10
118
+ assert "name" in r["customized_fields"]
119
+ assert "source_type" not in r
120
+ rd = r["role_data"]
121
+ assert rd["avatar"] and rd["voice_id"]
122
+ assert isinstance(rd["knowledge_level"], list)
123
+ assert rd.get("source_type") == "custom"
124
+ for shell_field in ["customization_level", "is_custom_role", "customized_fields",
125
+ "scenario_role_id", "created_at", "updated_at",
126
+ "template_id", "template_name", "template_version"]:
127
+ assert shell_field not in rd, f"{shell_field} 误入 role_data"
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 反面案例
133
+
134
+ ```json
135
+ ❌ 案例 A:遗漏操作 1(OS)—— 只提交 replace_ai_roles
136
+ → 平台 ai_roles_overall_description=null,角色无 OS 约束,行为退化为普通对话
137
+
138
+ ❌ 案例 B:外壳字段误放入 role_data
139
+ { "role_data": { "customization_level": "full", "name": "李晓琳" } }
140
+ → 平台报"角色数据异常",avatar/voice_id 均为空
141
+
142
+ ❌ 案例 C:avatar/voice_id 手工预设
143
+ { "role_data": { "avatar": "https://xxx placeholder.png" } }
144
+ → 应该由后台 +list-role-avatars 匹配
145
+ ```
@@ -0,0 +1,91 @@
1
+ # Part3 · 流程设置
2
+
3
+ > v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
4
+
5
+ ---
6
+
7
+ ## 必做操作清单
8
+
9
+ | # | operation.type | 作用 |
10
+ |---|---------------|------|
11
+ | 1 | `update_basic` | 写入 `opening_dialogue`(开场语全文)+ `opening_dialogue_type: 1` |
12
+ | 2 | 每环节一个 `add_conversation_step` | 写入对话 SOP 环节 |
13
+
14
+ > 🔒 **原子性约束**:开场语 + 所有环节必须在**同一批 operations 数组的同一次 apply** 中提交,禁止拆分多次 apply。
15
+
16
+ ---
17
+
18
+ ## 完整 JSON 模板(part3-operations.json)
19
+
20
+ ```json
21
+ [
22
+ {
23
+ "type": "update_basic",
24
+ "data": {
25
+ "opening_dialogue": "<开场语完整原文>",
26
+ "opening_dialogue_type": 1
27
+ }
28
+ },
29
+ {
30
+ "type": "add_conversation_step",
31
+ "data": {
32
+ "step_name": "<环节名>",
33
+ "student_objective": "<学员目标,与 Part1 考核点一一对应>",
34
+ "ai_task": "<AI 任务,含 IF-THEN + 进入条件 + 角色行为 + 退出条件>",
35
+ "max_rounds": 5,
36
+ "sort_order": "1"
37
+ }
38
+ }
39
+ ]
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 字段硬规则
45
+
46
+ | 字段 | 类型 | 约束 | 高频错误 |
47
+ |------|------|------|---------|
48
+ | `opening_dialogue_type` | **number** | 固定 `1`(整数,非字符串) | ❌ `"AI智能生成"` / `"1"` |
49
+ | `opening_dialogue` | string | 开场语完整原文 | ❌ 缩略 |
50
+ | `add_conversation_step.data.sort_order` | **string** | `"1"`、`"2"`(字符串) | ❌ 数字 1 |
51
+ | `ai_task` | string | 含 IF-THEN + 进入条件 + 角色行为 + 退出条件 | ❌ 缺 IF-THEN / 缺退出条件 |
52
+ | `max_rounds` | number | 整数 3-10 | ❌ 字符串 / 超范围 |
53
+
54
+ ---
55
+
56
+ ## 提交前断言
57
+
58
+ ```python
59
+ op_open = next(o for o in operations if o["type"] == "update_basic")
60
+ assert op_open["data"]["opening_dialogue_type"] == 1 # 数字,不是字符串
61
+ assert isinstance(op_open["data"]["opening_dialogue"], str) and len(op_open["data"]["opening_dialogue"]) > 20
62
+
63
+ steps = [o for o in operations if o["type"] == "add_conversation_step"]
64
+ assert 3 <= len(steps) <= 7
65
+ for i, s in enumerate(steps):
66
+ d = s["data"]
67
+ for k in ["step_name", "student_objective", "ai_task", "max_rounds", "sort_order"]:
68
+ assert d.get(k) not in (None, "", []), f"step{i} missing {k}"
69
+ assert isinstance(d["sort_order"], str), f"step{i} sort_order 必须是字符串"
70
+ assert isinstance(d["max_rounds"], int) and 3 <= d["max_rounds"] <= 10
71
+ assert "IF" in d["ai_task"].upper() and "退出" in d["ai_task"]
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 反面案例
77
+
78
+ ```json
79
+ ❌ 案例 A:opening_dialogue_type 写字符串
80
+ { "opening_dialogue_type": "1" }
81
+ → 422 报错:opening_dialogue_type 必须是 1 或 2
82
+
83
+ ❌ 案例 B:sort_order 写数字
84
+ { "sort_order": 1 }
85
+ → 应该是 "1"(字符串)
86
+
87
+ ❌ 案例 C:拆分多次 apply(违反原子性)
88
+ 第 1 次 apply:只提交开场语
89
+ 第 2 次 apply:提交对话环节
90
+ → 违反原子性约束,应同一批 operations
91
+ ```
@@ -0,0 +1,187 @@
1
+ # Part4 · 评分标准(双层包装锁)+ Part5 合并应用(v2.43)
2
+
3
+ > v2.41 从 exec-handbook.md 拆分。通用约束见 `exec-common.md`。
4
+ > **v2.43 变更**:Part5 固定配置不再单独确认/apply——Part4 弹窗确认后,Part4+Part5 两个 operation **合并一批 apply**(part4-operations.json 数组含两个元素)。**exec-part5.md 已删除,Part5 全部规则并入本文件(v2.43.1)。**
5
+ > **展示规则**:聊天正文必须**完整展示 Part4 + Part5 两段**——Part4 展示维度名+权重+一票否决,紧接 Part5 用编号列表完整展示 6 项固定配置。**禁止把 Part5 压缩成一行摘要省略展示**。
6
+
7
+ ---
8
+
9
+ ## 必做操作清单
10
+
11
+ | # | operation.type | 作用 |
12
+ |---|---------------|------|
13
+ | 1 | `replace_scoring_criteria_config` | 写入评分标准(含 5 维度+权重+一票否决) |
14
+ | 2 | `update_basic`(Part5 固定配置,v2.43 并入同批) | 6 项固定值:min/max_practice_duration=0 / max_practice_attempts=10 / passing_score=60 / completion_rule="all_steps" / ai_assistance_enabled=true / pass_difficulty=2 |
15
+
16
+ **弹窗引导语**(≤2 行):`以上是 Part4 评分标准 + Part5 教练配置(6 项固定值),是否确认写入?`
17
+
18
+ **聊天正文展示模板**(Part4 之后紧接 Part5,编号列表,不可省略):
19
+
20
+ ```
21
+ **Part4 评分标准**(合计 100 分)
22
+ | 维度 | 权重 | 一票否决 |
23
+ |---|---|---|
24
+ | <维度1> | <w1> | 有/无 |
25
+ | ... | ... | ... |
26
+
27
+ **Part5 教练配置**(6 项固定值)
28
+ 1. 练习时长:不限
29
+ 2. 最大练习次数:10 次
30
+ 3. 通关分数:60 分
31
+ 4. 完成规则:全环节完成
32
+ 5. AI 辅助:开启
33
+ 6. 通关难度:2
34
+ ```
35
+
36
+ > ⚠️ **6 项固定配置禁按场景调整**(原 exec-part5.md 规则,v2.43.1 并入)。字段名以实际成功发布的版本为准。Part5 不再同步 `closing_dialogue` / `golden_dialogue_description` / `key_points`(这些已在 Part1/Part3 同步)。
37
+
38
+ ---
39
+
40
+ ## 完整 JSON 模板(part4-operations.json)
41
+
42
+ ```json
43
+ [
44
+ {
45
+ "type": "replace_scoring_criteria_config",
46
+ "data": {
47
+ "config": {
48
+ "customization_level": "full",
49
+ "is_custom_criteria": true,
50
+ "customized_fields": ["criteria_data"],
51
+ "scenario_criteria_id": "criteria_<场景短码>",
52
+ "criteria_data": {
53
+ "name": "<评分标准名称,8-20 字>",
54
+ "description": "<评分标准描述全文>",
55
+ "source_type": "enterprise",
56
+ "total_weight": 100,
57
+ "tags": ["标签1", "标签2"],
58
+ "dimensions": [
59
+ {
60
+ "id": "dim_<code>",
61
+ "code": "<英文 code>",
62
+ "name": "<维度名>",
63
+ "description": "<维度描述>",
64
+ "weight": 25,
65
+ "scoring_rule": "<评分规则全文,含一票否决嵌入末尾>",
66
+ "criteria": ["评分点1", "评分点2"],
67
+ "sort_order": 1
68
+ }
69
+ ]
70
+ }
71
+ }
72
+ }
73
+ },
74
+ {
75
+ "type": "update_basic",
76
+ "data": {
77
+ "min_practice_duration": 0,
78
+ "max_practice_duration": 0,
79
+ "max_practice_attempts": 10,
80
+ "passing_score": 60,
81
+ "completion_rule": "all_steps",
82
+ "ai_assistance_enabled": true,
83
+ "pass_difficulty": 2
84
+ }
85
+ }
86
+ ]
87
+ ```
88
+
89
+ ---
90
+
91
+ ## 双层包装锁
92
+
93
+ | 层级 | 位置 | 字段 |
94
+ |------|------|------|
95
+ | **第 1 层(config 外壳)** | `data.config` | `customization_level` / `is_custom_criteria` / `customized_fields` / `scenario_criteria_id` / `criteria_data` |
96
+ | **第 2 层(criteria_data 内核)** | `data.config.criteria_data` | `name` / `description` / `source_type` / `total_weight` / `tags` / `dimensions[]` |
97
+
98
+ **双层缺一不可**。常见错误:只包 `config` 漏 `criteria_data`(平台会接受但存储结构错误,后续查询/weight 校验/同步都异常)。
99
+
100
+ ---
101
+
102
+ ## 🔒 UI 展示硬要求
103
+
104
+ **以下字段 API 存储时不强制,但平台 UI 展示时必需——缺失会导致 UI 上看不到 Part4 数据**:
105
+
106
+ | 字段 | 位置 | 必需值示例 |
107
+ |------|------|-----------|
108
+ | `customization_level` | `criteria_data` 顶层 | `"full"` |
109
+ | `is_custom_criteria` | `criteria_data` 顶层 | `true` |
110
+ | `customized_fields` | `criteria_data` 顶层 | `["criteria_data"]` |
111
+ | `scenario_criteria_id` | `criteria_data` 顶层 | `"criteria_<场景短码>_v1"` |
112
+ | `total_weight` | `criteria_data` 顶层 | `100` |
113
+ | `tags` | `criteria_data` 顶层 | 与 Part1 场景标签一致 |
114
+ | `dimensions[].id` | 每个维度 | `"dim_<code>"` |
115
+ | `dimensions[].sort_order` | 每个维度 | 数字 1、2、3... |
116
+
117
+ > ⚠️ **历史教训**:API 接受只包 `criteria_data.dimensions` 的简化结构(存储成功),但平台 UI 会显示"无评分标准"。必须在 `criteria_data` 顶层补全上述 6 个字段,每个维度补 `id` 和 `sort_order`。
118
+
119
+ ---
120
+
121
+ ## 字段硬规则
122
+
123
+ | 字段 | 类型 | 约束 | 高频错误 |
124
+ |------|------|------|---------|
125
+ | `dimensions[].sort_order` | **number** | 整数 1、2、3 | ❌ 字符串(与 Part3 `sort_order` 相反) |
126
+ | `dimensions[].weight` | number | 整数,所有维度合 = 100 | ❌ 不等于 100 |
127
+ | `dimensions[].criteria` | string[] | 至少 2 个评分点 | ❌ 单条 / 逗号字符串 |
128
+ | `dimensions[].scoring_rule` | string | 一票否决嵌入末尾 | ❌ 全局 one_vote_veto 字段 |
129
+ | `dimensions[].code` | string | 英文语义编码 | ❌ 中文 |
130
+
131
+ ---
132
+
133
+ ## 提交前断言
134
+
135
+ ```python
136
+ op = operations[0]
137
+ assert op["type"] == "replace_scoring_criteria_config"
138
+
139
+ config = op["data"]["config"]
140
+ assert "criteria_data" in config, "缺第 2 层 criteria_data 包装"
141
+
142
+ cd = config["criteria_data"]
143
+ for k in ["name", "description", "source_type", "total_weight", "tags", "dimensions"]:
144
+ assert cd.get(k) not in (None, "", []), f"criteria_data.{k} 空/缺失"
145
+
146
+ assert cd["source_type"] == "enterprise"
147
+ assert cd["total_weight"] == 100
148
+
149
+ dims = cd["dimensions"]
150
+ assert len(dims) >= 2
151
+ assert sum(d["weight"] for d in dims) == 100, "权重总和不等于 100"
152
+ for i, d in enumerate(dims):
153
+ for k in ["id", "code", "name", "description", "weight", "scoring_rule", "criteria"]:
154
+ assert d.get(k) not in (None, "", []), f"dim{i} missing {k}"
155
+ assert isinstance(d["sort_order"], int), f"dim{i} sort_order 必须是数字"
156
+ assert isinstance(d["criteria"], list) and len(d["criteria"]) >= 2
157
+ assert d["code"].isascii(), f"dim{i} code 必须是英文"
158
+
159
+ # Part5 固定配置(v2.43 并入同批)
160
+ op5 = operations[1]
161
+ assert op5["type"] == "update_basic"
162
+ d5 = op5["data"]
163
+ assert d5["min_practice_duration"] == 0 and d5["max_practice_duration"] == 0
164
+ assert d5["max_practice_attempts"] == 10
165
+ assert d5["passing_score"] == 60
166
+ assert d5["completion_rule"] == "all_steps"
167
+ assert d5["ai_assistance_enabled"] is True
168
+ assert d5["pass_difficulty"] == 2
169
+ ```
170
+
171
+ ---
172
+
173
+ ## 反面案例
174
+
175
+ ```json
176
+ ❌ 案例 A:只包 config 漏 criteria_data(平台会接受但存储错误)
177
+ { "type": "replace_scoring_criteria_config", "data": { "config": { "name": "...", "dimensions": [...] } } }
178
+ → 平台存为 {name, dimensions} 散在根,与正确结构不一致
179
+
180
+ ❌ 案例 B:dimensions.sort_order 写字符串
181
+ { "sort_order": "1" }
182
+ → 应该是数字 1(注意 Part3 是字符串,Part4 是数字)
183
+
184
+ ❌ 案例 C:一票否决写在全局
185
+ { "one_vote_veto": [...] }
186
+ → 应该嵌入各维度 scoring_rule 末尾
187
+ ```
@@ -0,0 +1,46 @@
1
+ # AI 陪练 Gate Check 矩阵
2
+
3
+ > 各阶段/Part 结束时对照检查。🔴 阻塞(必须修复)/ 🟡 警告(建议修复)。Part1-5 逐项字段校验已在各 Part SOP 自查清单与 exec-handbook 断言中定义,本文件聚焦发布前汇总闸门。
4
+ >
5
+ > **v2.39 闸门精简规则**:Step 7 的 12 项中,9 项与 Part1-5 自检清单完全重叠(标注「↔PartN自检」)。Part 自检全部通过后,这 9 项**自动视为通过**,不再重复检查。闸门仅补查 3 项(标注「⚡仅闸门」)。
6
+
7
+ ## Step 7 创建质量闸门(12 项,全部通过才进 Step 8)
8
+
9
+ | # | 检查项 | 严重度 | v2.39 精简 |
10
+ |---|--------|--------|------------|
11
+ | 1 | 材料完整(含业务场景+话术素材) | 🔴 | ↔Part1自检(自检通过则跳过) |
12
+ | 2 | 场景类型判定已确认 | 🔴 | ↔Step2确认(已确认则跳过) |
13
+ | 3 | 角色行为化(无空泛画像) | 🔴 | ↔Part2自检(自检通过则跳过) |
14
+ | 4 | 信息释放规则明确 | 🔴 | ↔Part2自检(自检通过则跳过) |
15
+ | 5 | 每环节含进入/退出条件 | 🔴 | ↔Part3自检(自检通过则跳过) |
16
+ | 6 | 评分可识别(维度↔考核点对应) | 🔴 | ↔Part4自检(自检通过则跳过) |
17
+ | 7 | 练习配置匹配固定模板 | 🔴 | ↔Part4+5 合并自检(v2.43.1,exec-part4.md 断言区) |
18
+ | 8 | Part 内容完整展示 | 🔴 | ⚡仅闸门(需检查展示记录) |
19
+ | 9 | Part2 角色 background 四段完整 | 🔴 | ↔Part2自检(自检通过则跳过) |
20
+ | 10 | Part4 权重和 = 100 | 🔴 | ↔Part4自检(自检通过则跳过) |
21
+ | 11 | 测试用例 | 🟡 | ⚡仅闸门(可选,不阻塞) |
22
+ | 12 | 整体设定 ≤ 3000 字 | 🟡 | ⚡仅闸门(需统计字数) |
23
+
24
+ > **v2.39 批量校验脚本缩减**:Part 自检全部通过后,闸门批量校验从 16 个断言缩减为 7 个(4 项发布闸门 + 3 项补查项)。
25
+
26
+ ## Step 8 发布闸门(资源兜底,任一缺失禁止发布)
27
+
28
+ | # | 检查项 | 严重度 |
29
+ |---|--------|--------|
30
+ | 1 | 封面 = 固定默认图 | 🔴 |
31
+ | 2 | 全部 avatar 非空 URL | 🔴 |
32
+ | 3 | 全部 voice_id 非空 ID | 🔴 |
33
+ | 4 | 无"角色数据异常" | 🔴 |
34
+
35
+ ## 微调闸门(8 项)
36
+
37
+ | # | 检查项 | 严重度 |
38
+ |---|--------|--------|
39
+ | 1 | 有证据 | 🟡 |
40
+ | 2 | 已技术分流 | 🔴 |
41
+ | 3 | 已打标签(F/I/O/L/E/S/R/K/T/D) | 🔴 |
42
+ | 4 | 修改决策 | 🔴 |
43
+ | 5 | 标注改稿 | 🔴 |
44
+ | 6 | 复测方案 | 🔴 |
45
+ | 7 | 版本记录建议 | 🟡 |
46
+ | 8 | 整体设定 ≤ 3000 字 | 🟡 |
@@ -0,0 +1,30 @@
1
+ # 微调诊断标签完整定义
2
+
3
+ > 由 SKILL.md「微调诊断标签」节引用。微调型任务必须打标签后才能进入修改建议。
4
+ > 核心原则:**没有标签,不进入修改建议。**
5
+
6
+ | 标签 | 含义 | 判定要点 |
7
+ |------|------|---------|
8
+ | **F** | 格式违规 | 括号动作、Markdown语法、后台痕迹外显 |
9
+ | **I** | 信息释放违规 | 开场透露全部症状/底线/背景 |
10
+ | **O** | 角色OOC | 太热情/太攻击/说出不该说的术语 |
11
+ | **P** | 指令执行度违规 | AI实际行为与提示词行为指令不一致 |
12
+ | **N** | 对话自然度违规 | 模板化、万能回应、句式单一、过渡生硬 |
13
+ | **L** | 逻辑违规 | 信任值异常、价格防线过早松动 |
14
+ | **E** | 结束违规 | 提前结束、成交后继续追问 |
15
+ | **S** | 场景规则违规 | 违反药房/合规/B2B场景规则 |
16
+ | **R** | 评分规则问题 | 评分项抽象、目标错位、无法识别间接达成 |
17
+ | **K** | 知识/合规问题 | 产品知识错误、禁用话术未触发 |
18
+ | **T** | 技术/体验问题 | ASR/TTS/权限/跳转 |
19
+ | **D** | 数据/看板问题 | 指标口径错误、数据污染 |
20
+
21
+ ## 诊断分析顺序
22
+
23
+ 必须严格按此顺序执行:
24
+
25
+ ```
26
+ T排障 → O拟真 → P指令执行 → N自然度 → I信息释放/K知识 → E结束/S场景 → L逻辑/F格式 → R评分
27
+ ```
28
+
29
+ - **P 在第 3 位**:先确认角色没崩(O),再查指令执行度(P),避免角色OOC导致P误判
30
+ - **N 在第 4 位**:先确认行为指令合规(P),再查表达是否自然(N)。模板化"好的""了解了"等万能回应属于 N 违规而非 O 或 F 问题
@@ -0,0 +1,49 @@
1
+ # 平台 API 踩坑清单(致命陷阱速查)
2
+
3
+ > 已验证的致命陷阱,优先级高于历史示例。命令速查见 `verified-cli-cheatsheet.md`。
4
+
5
+ ## 🔴 4 条致命陷阱(踩了必坏)
6
+
7
+ ### 1. Part2 角色外壳字段放错层级 → "角色数据异常"
8
+
9
+ 每个角色的**外壳**必须包含以下字段(与 `role_data` 同级,**不可**写进 `role_data` 内):
10
+ `scenario_role_id` / `customization_level="full"` / `is_custom_role=true` / `customized_fields` / `template_id=null` / `template_name=null` / `template_version=null`。
11
+
12
+ > ⚠️ **`created_at`/`updated_at` 禁传(2026-08-18 实测)**:外壳若传字符串时间戳(如 `"2026-08-18T05:41:14Z"`),会触发「角色数据异常」,导致 `role_data` 全字段置空(name 变成"角色数据异常")。这两个字段由平台自动生成,生成 `part2-operations.json` 时**一律省略**,不要写入外壳。exec-handbook 旧断言要求外壳含 created_at/updated_at 是错误结论,以本条为准。
13
+
14
+ - `customized_fields` 必须列全 12 个字段名:`["name","description","communication_style","background","personality_type","personality","tags","knowledge_level","taboos_objections","avatar","voice_id","source_type"]`,只写 `["role_data"]` 会导致静默不持久化。
15
+ - `source_type="custom"` 在 `role_data` **内**(外壳不写 source_type)。
16
+ - `avatar` 用头像 URL(`+list-role-avatars` 的 `url`),`voice_id` 用声音 ID(`+list-role-voices` 的 `id`)。
17
+ - `knowledge_level` 必须是数组,不是字符串。
18
+
19
+ ### 2. Part4 shell 字段放错层级 → UI 不显示评分
20
+
21
+ `data.config` 顶层必须含 4 个 shell 字段:`scenario_criteria_id` / `customization_level="full"` / `is_custom_criteria=true` / `customized_fields=["criteria_data"]`,**不能放进 `criteria_data` 内**。`criteria_data` 内只放:`name` / `description` / `dimensions` / `total_weight` / `source_type="enterprise"` / `status=1` / `tags`。每个维度含 `id`(dim_{code}) 和 `sort_order`(数字)。
22
+
23
+ ### 3. add_conversation_step 数据不持久化(CLI bug)+ apply 禁止用于验证(v2.37 教训)
24
+
25
+ `add_conversation_step` apply 返回成功但 `+get-scenario` 回读 `conversation_steps: []`(CLI v1.0.65+ 已知 bug,`replace_conversation_steps` 被 422 拒绝)。处理:仍按标准语义用 `add_conversation_step` 先试,回读为空则判定持久化缺陷,改走 MentorAI Web 后台手动补录。不阻断发布。
26
+
27
+ > ⚠️ **v2.37 教训(2026-08-18 升舱场景事故)**:质量闸门阶段误用 `+apply-scenario-update`(operations-file=part3-operations.json)当验证用,导致 `add_conversation_step` **重复添加**(4 环节变 8 环节),不得不查快照→回滚→重新 get 验证,浪费 3-5 积分。
28
+ > **规则**:apply 是**写入操作**,不是读取操作。验证数据用 `+get-scenario`。apply 后只从返回值提取 `updated_at`(`tail -1` 或 Python 提取),**不回显 operations/snapshot_id**,**不用 apply 回读环节**。
29
+
30
+ ### 4. +create-scenario 只存基础字段
31
+
32
+ `+create-scenario --request-file` 仅持久化 `name/description/tags/key_points/scene_lang/scenario_cover`;`ai_roles`/`scoring_criteria_config`/`conversation_steps`/练习配置全部被忽略。必须创建后逐 Part 用 `+apply-scenario-update` 写入。
33
+
34
+ ## ⚠️ 高频坑(速查)
35
+
36
+ - **沙箱**:所有 soke-cli 命令设 `dangerouslyDisableSandbox: true`(Go 二进制受限)。
37
+ - **子命令**:统一 `soke-cli ai-training +...`,不省略 `ai-training`。
38
+ - **operations 格式**:裸数组 `[{type,data},...]`,不套 `{"operations":[...]}`。
39
+ - **apply 参数**:`--idempotency-key`(apply 必传,preview 不传)、`--reason`(两者必传)。
40
+ - **乐观锁**:每次 preview/apply 前 `+get-scenario` 重取最新 `updated_at`。
41
+ - **验收**:apply 后 `+get-scenario --raw` 逐字段核对目标字段;preview/apply 成功≠平台最终解析正常。
42
+ - **JSON 中文引号**:用 Python `json.dump(ensure_ascii=False)` 写入,禁 heredoc/echo(全角双引号会报错)。
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`。
45
+ - **身份字段**:`corp_id/user_id/implementation_corp_id` 禁写请求体,不作选租户依据。
46
+
47
+ ## 推荐顺序
48
+
49
+ 环境检测 → Step1 写固定封面 → 每 Part 前 `get-scenario` → preview → apply → `get-scenario --raw` 验收。回读异常先查:Part2 查 avatar/外壳/customized_fields/background(background=null 最常见);Part4 查三层嵌套与元数据字段;Part5 只查练习配置字段。