@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,717 @@
1
+ ---
2
+ name: soke-certificate
3
+ summary: 证书管理查询
4
+ version: 1.0.0
5
+ description: "证书管理查询:查询证书列表、证书分类、证书获得人员。当用户需要查看证书模板/证书列表、筛选已发布证书、获取证书 UUID 或查询证书发放人员时使用。 | Certificate management query: list certificates, certificate categories, and certificate users. Use when users need certificate templates/lists, published certificate filtering, certificate UUIDs, or issued certificate users."
6
+ metadata:
7
+ requires:
8
+ bins: ["soke-cli"]
9
+ cliHelp: "soke-cli certificate --help"
10
+ ---
11
+
12
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../soke-shared/MODULE.md`](../soke-shared/MODULE.md),其中包含认证、配置、权限处理**
13
+
14
+ ## 核心概念
15
+
16
+ - **Certificate(证书)**: 企业后台配置的证书模板或证书资源,通过 `uuid` 标识
17
+ - **Category(证书分类)**: 证书分类,通过 `category_id` / `uuid` 标识
18
+ - **CertificateUser(证书获得人员)**: 已获得某个证书的学员记录
19
+
20
+ ## Shortcuts(推荐优先使用)
21
+
22
+ | Shortcut | 说明 |
23
+ |----------|------|
24
+ | [`+templates`](#templates) | 查询证书内置模板列表 |
25
+ | [`+list`](#list) | 查询证书列表 |
26
+ | [`+category`](#category) | 查询证书分类 |
27
+ | [`+create`](#create) | 创建证书 |
28
+ | [`+get`](#get) | 获取证书详情 |
29
+ | [`+users`](#users) | 查询证书用户获取记录 |
30
+ | [`+award`](#award) | 手动颁发证书 |
31
+ | [`+cancel-user`](#cancel-user) | 取消学员证书 |
32
+ | [`+check-linked`](#check-linked) | 查询证书模块关联 |
33
+ | [`+coordinate`](#coordinate) | 设置证书坐标 |
34
+ | [`+update`](#update) | 更新证书数据、发布或关闭证书 |
35
+ | [`+delete`](#delete) | 删除证书 |
36
+
37
+ ---
38
+
39
+ ## 命令详解
40
+
41
+ ### +templates
42
+
43
+ 查询证书内置模板列表。
44
+
45
+ **命令格式**:
46
+ ```bash
47
+ soke-cli certificate +templates [--format json|yaml|table]
48
+ ```
49
+
50
+ **返回字段**(表格显示关键字段):
51
+ - `name`: 模板名称
52
+ - `url`: 模板图片 URL
53
+ - `path`: 模板文件路径
54
+
55
+ **示例**:
56
+ ```bash
57
+ soke-cli certificate +templates
58
+
59
+ # 查看完整返回
60
+ soke-cli certificate +templates --format json
61
+ ```
62
+
63
+ **接口**: `GET /skills/certificate/template`
64
+
65
+ ---
66
+
67
+ ### +list
68
+
69
+ 查询证书列表,支持按状态筛选。
70
+
71
+ **命令格式**:
72
+ ```bash
73
+ soke-cli certificate +list \
74
+ [--page <page>] \
75
+ [--limit <limit>] \
76
+ [--status <status>] \
77
+ [--keyword <keyword>] \
78
+ [--format json|yaml|table]
79
+ ```
80
+
81
+ **参数说明**:
82
+ - `--page`: 页码,默认 `1`
83
+ - `--limit`: 每页条数,默认 `10`
84
+ - `--status`: 证书状态,可选;`0` 未发布,`1` 已发布,`2` 已关闭
85
+ - `--keyword`: 关键词,模糊查询证书标题/编码
86
+
87
+ **返回字段**(表格显示关键字段):
88
+ - `uuid`: 证书 UUID
89
+ - `title`: 证书标题
90
+ - `status`: 证书状态
91
+ - `code`: 证书编号
92
+ - `type`: 证书类型
93
+ - `category_title`: 分类名称
94
+ - `create_time`: 创建时间
95
+ - `update_time`: 更新时间
96
+
97
+ **示例**:
98
+ ```bash
99
+ # 查询已发布证书
100
+ soke-cli certificate +list --page 1 --limit 10 --status 1
101
+
102
+ # 模糊查询证书
103
+ soke-cli certificate +list --keyword "普通证书" --page 1 --limit 10
104
+
105
+ # 查询全部证书并输出完整 JSON
106
+ soke-cli certificate +list --page 1 --limit 20 --format json
107
+ ```
108
+ ---
109
+
110
+ ### +create
111
+
112
+ 创建证书。通常先通过 `+templates` 获取模板 `url/path`,再通过 `+category` 获取分类 UUID。
113
+
114
+ **命令格式**:
115
+ ```bash
116
+ soke-cli certificate +create \
117
+ --title <title> \
118
+ --code <code> \
119
+ --image <template_url> \
120
+ --target-path <template_path> \
121
+ --category-id <category_uuid> \
122
+ [--category-title <title>] \
123
+ [--path <uuid1,uuid2>] \
124
+ [--status <0|1|2>] \
125
+ [--description <text>] \
126
+ [--custom-content <text>] \
127
+ [--serial-number <number>] \
128
+ [--is-expiration <0|1>] \
129
+ [--expiration-day <days>] \
130
+ [--is-expiration-remind <0|1>] \
131
+ [--type <type>] \
132
+ [--advance-day <days>] \
133
+ [--is-student <0|1>] \
134
+ [--format json|yaml|table]
135
+ ```
136
+
137
+ **核心参数**:
138
+ - `--title`: 证书标题,必填
139
+ - `--code`: 证书编号,必填;必须唯一,只能由字母、数字、下划线组成,不超过 20 位
140
+ - `--image`: 证书图片 URL,必填;可以来自图片库图片,也可以来自 `+templates` 返回的内置模板 URL
141
+ - `--target-path`: 证书图片 OSS 路径,必填;例如 `dingfc5d942826fce9d9/public/image/certificate/certificate1.png`
142
+ - `--category-id`: 分类 UUID,必填,来自 `+category`
143
+ - `--path`: 分类路径 UUID 列表;不传时默认使用 `--category-id`
144
+ - `--custom-content`: 自定义内容;不传时默认使用 `--description`
145
+ - `--serial-number`: 流水号位数,系统会自动生成流水号并作为证书编号尾数;建议位数大于系统学员数位数,否则可能造成证书编号重复
146
+
147
+ **常用默认值**:
148
+ - `--status`: 默认 `0`
149
+ - `--serial-number`: 默认 `6`
150
+ - `--is-expiration`: 默认 `0`
151
+ - `--expiration-day`: 默认 `0`
152
+ - `--is-expiration-remind`: 默认 `0`
153
+ - `--type`: 默认 `1`
154
+ - `--advance-day`: 默认 `1`
155
+ - `--is-student`: 默认 `1`
156
+
157
+ **返回字段**(表格显示关键字段):
158
+ - `uuid`: 新证书 UUID
159
+ - `title`: 证书标题
160
+ - `status`: 证书状态
161
+ - `code`: 证书编号
162
+ - `serial_number`: 流水号位数
163
+ - `is_expiration`: 是否按有效期过期
164
+ - `expiration_day`: 有效天数
165
+ - `create_time`: 创建时间
166
+ - `create_user_name`: 创建人
167
+
168
+ **示例**:
169
+ ```bash
170
+ soke-cli certificate +create \
171
+ --title "111" \
172
+ --code "2343242345546565645" \
173
+ --image "https://newsokecdn.soke.cn/dingfc5d942826fce9d9/public/image/certificate/certificate1.png" \
174
+ --target-path "dingfc5d942826fce9d9/public/image/certificate/certificate1.png" \
175
+ --category-id "704E6B75-F4B3-4961-AEE4-D8C9FCC2D7FC" \
176
+ --status 0 \
177
+ --description "测试证书" \
178
+ --custom-content "测试证书" \
179
+ --serial-number 6 \
180
+ --is-expiration 1 \
181
+ --expiration-day 30 \
182
+ --is-expiration-remind 0 \
183
+ --type 1 \
184
+ --format json
185
+ ```
186
+ ---
187
+
188
+ ### +category
189
+
190
+ 查询证书分类列表,支持按分类名称模糊搜索。
191
+
192
+ **命令格式**:
193
+ ```bash
194
+ soke-cli certificate +category \
195
+ [--keyword <keyword>] \
196
+ [--format json|yaml|table]
197
+ ```
198
+
199
+ **参数说明**:
200
+ - `--keyword`: 关键词,模糊查询证书分类名称
201
+
202
+ **返回字段**(表格显示关键字段):
203
+ - `uuid`: 分类 UUID
204
+ - `title`: 分类名称
205
+ - `parent_id`: 父分类 ID
206
+ - `weight`: 排序权重
207
+ - `has_children`: 是否有子分类
208
+ - `create_dept_user_name`: 创建人
209
+ - `create_time`: 创建时间
210
+
211
+ **示例**:
212
+ ```bash
213
+ # 按关键词查询证书分类
214
+ soke-cli certificate +category --keyword "添加编号"
215
+
216
+ # 查询全部证书分类并输出完整 JSON
217
+ soke-cli certificate +category --format json
218
+ ```
219
+ ---
220
+
221
+ ### +get
222
+
223
+ 获取证书详情。
224
+
225
+ **命令格式**:
226
+ ```bash
227
+ soke-cli certificate +get \
228
+ --certificate-id <certificate_uuid> \
229
+ [--format json|yaml|table]
230
+ ```
231
+
232
+ **参数说明**:
233
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list` 返回的 `data.list[].uuid`
234
+
235
+ **返回字段**(表格显示关键字段):
236
+ - `uuid`: 证书 UUID
237
+ - `title`: 证书标题
238
+ - `status`: 证书状态
239
+ - `code`: 证书编号
240
+ - `type`: 证书类型
241
+ - `target_point`: 目标学分/学时
242
+ - `category_title`: 分类名称
243
+ - `expire_time`: 过期时间
244
+ - `create_time`: 创建时间
245
+ - `update_time`: 更新时间
246
+
247
+ **示例**:
248
+ ```bash
249
+ soke-cli certificate +get --certificate-id DAACD37D-1B72-4CE4-B8D0-12C7F4DAA4C3
250
+
251
+ # 查看完整 info 和 categoryInfo
252
+ soke-cli certificate +get --certificate-id DAACD37D-1B72-4CE4-B8D0-12C7F4DAA4C3 --format json
253
+ ```
254
+ ---
255
+
256
+ ### +users
257
+
258
+ 查询证书用户获取记录,支持按证书、关键词、状态分页筛选。
259
+
260
+ **命令格式**:
261
+ ```bash
262
+ soke-cli certificate +users \
263
+ --certificate-id <certificate_uuid> \
264
+ [--keyword <keyword>] \
265
+ [--page <page>] \
266
+ [--limit <limit>] \
267
+ [--status <status>] \
268
+ [--format json|yaml|table]
269
+ ```
270
+
271
+ **参数说明**:
272
+ - `--certificate-id`: 证书 UUID,必填
273
+ - `--keyword`: 关键词,模糊查询用户姓名/工号
274
+ - `--page`: 页码,默认 `1`
275
+ - `--limit`: 每页条数,默认 `10`
276
+ - `--status`: 获取记录状态筛选,默认 `all`
277
+
278
+ **返回字段**(表格显示关键字段):
279
+ - `uuid`: 证书获取记录 UUID
280
+ - `dept_user_id`: 部门用户 ID
281
+ - `dept_user_name`: 学员姓名
282
+ - `job_number`: 工号
283
+ - `certificate_title`: 证书名称
284
+ - `certificate_num`: 证书编号
285
+ - `module`: 来源模块
286
+ - `status`: 状态
287
+ - `award_time`: 颁发时间
288
+ - `expire_time`: 证书过期时间
289
+
290
+ **示例**:
291
+ ```bash
292
+ # 查询某证书下的用户获取记录
293
+ soke-cli certificate +users --certificate-id 8200D7C4-6DD1-4F09-BC9B-940512A7E7C4 --page 1 --limit 10 --status all
294
+
295
+ # 按用户关键词筛选
296
+ soke-cli certificate +users --certificate-id 8200D7C4-6DD1-4F09-BC9B-940512A7E7C4 --keyword "武玲"
297
+
298
+ # 查看完整字段
299
+ soke-cli certificate +users --certificate-id 8200D7C4-6DD1-4F09-BC9B-940512A7E7C4 --format json
300
+ ```
301
+ ---
302
+
303
+ ### +award
304
+
305
+ 手动给用户颁发证书。`user_list` 需要使用部门用户列表中的用户对象。
306
+
307
+ **命令格式**:
308
+ ```bash
309
+ soke-cli certificate +award \
310
+ --certificate-id <certificate_uuid> \
311
+ --certificate-title <title> \
312
+ --certificate-num <certificate_num> \
313
+ --certificate-image <image_url> \
314
+ --user-list-json '<user_array_json>' \
315
+ [--lang zh] \
316
+ [--utcoffset -28800] \
317
+ [--format json|yaml|table]
318
+ ```
319
+
320
+ **参数说明**:
321
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list`
322
+ - `--certificate-title`: 证书标题
323
+ - `--certificate-num`: 证书编号
324
+ - `--certificate-image`: 证书图片 URL
325
+ - `--user-list-json`: 部门用户对象数组 JSON,来自 `contact +list-department-users`
326
+ - `--lang`: 语言,默认 `zh`
327
+ - `--utcoffset`: 时区偏移,默认 `-28800`
328
+
329
+ **user-list-json 示例字段**:
330
+ - `dept_id`: 部门 ID
331
+ - `user_id`: 用户 ID
332
+ - `show_name`: 展示姓名
333
+ - `dept_user_id`: 部门用户 ID
334
+ - `dept_user_name`: 部门用户姓名
335
+ - `avatar_color`: 头像颜色
336
+ - `avatar`: 头像
337
+ - `job_number`: 工号
338
+ - `position`: 职位
339
+
340
+ **示例**:
341
+ ```bash
342
+ # 先查询部门用户
343
+ soke-cli contact +list-department-users --dept-id -999 --page 1 --page-size 100 --format json
344
+
345
+ # 使用部门用户对象数组颁发证书
346
+ soke-cli certificate +award \
347
+ --certificate-id CE459727-7895-4F90-9F68-FEEB532BC5EA \
348
+ --certificate-title "普通证书批量导入测试1111" \
349
+ --certificate-num "15678765432123456787" \
350
+ --certificate-image "https://newsokecdn.soke.cn/dingfc5d942826fce9d9/public/image/certificate/certificate2.gif" \
351
+ --user-list-json '[{"dept_id":-999,"user_id":"92B5B989-A708-477A-8ACF-4222C7137CF5","show_name":"钰欣","dept_user_id":"SOKE0088-5840-423E-B205-0E3CC6D877F1","dept_user_name":"钰欣","avatar_color":"#4DA9EB","avatar":"","job_number":"","position":""}]'
352
+ ```
353
+
354
+ **接口**: `POST /skills/certificate/user/create?lang=zh&utcoffset=-28800`
355
+
356
+ ---
357
+
358
+ ### +cancel-user
359
+
360
+ 取消学员证书。路径里的 UUID 是 `certificate +users` 返回的证书获取记录 `uuid`,不是证书 UUID。
361
+
362
+ **命令格式**:
363
+ ```bash
364
+ soke-cli certificate +cancel-user \
365
+ --certificate-user-id <certificate_user_uuid> \
366
+ --content <reason> \
367
+ [--format json|yaml|table]
368
+ ```
369
+
370
+ **参数说明**:
371
+ - `--certificate-user-id`: 证书获取记录 UUID,来自 `certificate +users` 返回的 `data.list[].uuid`
372
+ - `--content`: 取消理由
373
+
374
+ **返回字段**(表格显示关键字段):
375
+ - `status`: 更新后的状态
376
+ - `is_delete`: 是否删除
377
+ - `cancel_message`: 取消原因
378
+ - `update_time`: 更新时间
379
+ - `update_user_name`: 更新人
380
+ - `certificate_image`: 证书图片
381
+
382
+ **示例**:
383
+ ```bash
384
+ # 先查询证书用户获取记录,拿到记录 uuid
385
+ soke-cli certificate +users --certificate-id 8200D7C4-6DD1-4F09-BC9B-940512A7E7C4 --format json
386
+
387
+ # 取消学员证书
388
+ soke-cli certificate +cancel-user \
389
+ --certificate-user-id 47C64244-E402-4CD9-84FD-406E7967BE33 \
390
+ --content "这是理由"
391
+ ```
392
+
393
+ **接口**: `PUT /skills/certificate/user/update/{uuid}`
394
+
395
+ ---
396
+
397
+ ### +check-linked
398
+
399
+ 查询证书是否被课程、考试、学习地图、培训或学习阶段关联。
400
+
401
+ **命令格式**:
402
+ ```bash
403
+ soke-cli certificate +check-linked \
404
+ --certificate-id <certificate_uuid> \
405
+ [--format json|yaml|table]
406
+ ```
407
+
408
+ **参数说明**:
409
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list` 返回的 `data.list[].uuid`
410
+
411
+ **返回字段**(表格显示关键字段):
412
+ - `module`: 模块标识
413
+ - `module_name`: 模块名称
414
+ - `title`: 关联资源标题
415
+ - `title_num`: 关联资源数量
416
+
417
+ **示例**:
418
+ ```bash
419
+ soke-cli certificate +check-linked --certificate-id 8200D7C4-6DD1-4F09-BC9B-940512A7E7C4
420
+ ```
421
+
422
+ ---
423
+
424
+ ### +coordinate
425
+
426
+ 设置证书上的用户名、发证时间、到期时间、编号、自定义内容、积分、部门等字段坐标和样式。
427
+
428
+ **命令格式**:
429
+ ```bash
430
+ soke-cli certificate +coordinate \
431
+ --certificate-id <certificate_uuid> \
432
+ [--user-name-left <px>] \
433
+ [--user-name-top <px>] \
434
+ [--user-name-font-size <px>] \
435
+ [--user-name-color <color>] \
436
+ [--date-time-left <px>] \
437
+ [--date-time-top <px>] \
438
+ [--date-time-font-size <px>] \
439
+ [--date-time-color <color>] \
440
+ [--expire-time-left <px>] \
441
+ [--expire-time-top <px>] \
442
+ [--expire-time-font-size <px>] \
443
+ [--expire-time-color <color>] \
444
+ [--cert-code-left <px>] \
445
+ [--cert-code-top <px>] \
446
+ [--cert-code-font-size <px>] \
447
+ [--cert-code-color <color>] \
448
+ [--customize-left <px>] \
449
+ [--customize-top <px>] \
450
+ [--customize-font-size <px>] \
451
+ [--customize-color <color>] \
452
+ [--point-left <px>] \
453
+ [--point-top <px>] \
454
+ [--point-font-size <px>] \
455
+ [--point-color <color>] \
456
+ [--dept-names-left <px>] \
457
+ [--dept-names-top <px>] \
458
+ [--dept-names-font-size <px>] \
459
+ [--dept-names-color <color>] \
460
+ [--width <px>] \
461
+ [--height <px>] \
462
+ [--dept-show <0|1>] \
463
+ [--format json|yaml|table]
464
+ ```
465
+
466
+ **参数说明**:
467
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list` 返回的 `data.list[].uuid`
468
+ - `--user-name-left/top/font-size/color`: 用户名距离左边框、顶部的像素位置,以及文字大小和颜色
469
+ - `--date-time-left/top/font-size/color`: 发证时间距离左边框、顶部的像素位置,以及文字大小和颜色
470
+ - `--expire-time-left/top/font-size/color`: 到期时间距离左边框、顶部的像素位置,以及文字大小和颜色
471
+ - `--cert-code-left/top/font-size/color`: 证书编号距离左边框、顶部的像素位置,以及文字大小和颜色
472
+ - `--customize-left/top/font-size/color`: 自定义内容距离左边框、顶部的像素位置,以及文字大小和颜色
473
+ - `--point-left/top/font-size/color`: 积分距离左边框、顶部的像素位置,以及文字大小和颜色
474
+ - `--dept-names-left/top/font-size/color`: 部门距离左边框、顶部的像素位置,以及文字大小和颜色
475
+ - `--width` / `--height`: 证书画布宽高,单位像素
476
+ - `--dept-show`: 部门是否显示,`0` 不显示,`1` 显示
477
+ - `--status`: 证书状态,`0` 未发布,`1` 已发布,`2` 已关闭
478
+ - `--action`: 坐标设置动作,默认 `coor`
479
+ - `--nwidth` / `--nheight`: 证书图片宽高缩放比例
480
+
481
+ **示例**:
482
+ ```bash
483
+ soke-cli certificate +coordinate \
484
+ --certificate-id 65092195-49D0-453F-9CE1-A6CBB4502EF1 \
485
+ --user-name-left "518.7747789200492px" \
486
+ --user-name-top "450.53825882621436px" \
487
+ --user-name-font-size "16px" \
488
+ --user-name-color "#409EFF" \
489
+ --date-time-left "826.5791337253736px" \
490
+ --date-time-top "496.53478056534476px" \
491
+ --expire-time-left "707.2756554645041px" \
492
+ --expire-time-top "498.1573838275412px" \
493
+ --cert-code-left "780.7005668573794px" \
494
+ --cert-code-top "443.16283331829567px" \
495
+ --cert-code-font-size "16px" \
496
+ --cert-code-color "#409EFF" \
497
+ --customize-left "444px" \
498
+ --customize-top "218px" \
499
+ --customize-font-size "16px" \
500
+ --customize-color "#409EFF" \
501
+ --point-left "220px" \
502
+ --point-top "160px" \
503
+ --point-font-size "16px" \
504
+ --point-color "#409EFF" \
505
+ --dept-names-left "220px" \
506
+ --dept-names-top "220px" \
507
+ --dept-names-font-size "16px" \
508
+ --dept-names-color "#409EFF" \
509
+ --width 1653 \
510
+ --height "1169.9919626086958" \
511
+ --dept-show 1
512
+ ```
513
+
514
+ ---
515
+
516
+ ### +update
517
+
518
+ 更新证书数据、发布证书或关闭证书。接口根据 `action` 判断操作类型:`update` 更新数据,`publish` 发布,`close` 关闭。
519
+
520
+ **命令格式**:
521
+ ```bash
522
+ soke-cli certificate +update \
523
+ --certificate-id <certificate_uuid> \
524
+ --action <update|publish|close> \
525
+ [--title <title>] \
526
+ [--code <code>] \
527
+ [--store-code <old_code>] \
528
+ [--image <image_url>] \
529
+ [--target-path <oss_path>] \
530
+ [--description <text>] \
531
+ [--path <uuid1,uuid2>] \
532
+ [--custom-content <text>] \
533
+ [--serial-number <number>] \
534
+ [--expire-time <YYYY-MM-DD>] \
535
+ [--target-point <point>] \
536
+ [--credit-year <year>] \
537
+ [--is-expiration <0|1>] \
538
+ [--expiration-day <days>] \
539
+ [--is-expiration-remind <0|1>] \
540
+ [--advance-day <days>] \
541
+ [--is-student <0|1>] \
542
+ [--is-designated-personnel <0|1>] \
543
+ [--format json|yaml|table]
544
+ ```
545
+
546
+ **参数说明**:
547
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list` 返回的 `data.list[].uuid`
548
+ - `--action`: 操作类型;`update` 更新数据,`publish` 发布证书,`close` 关闭证书
549
+ - `--title`: 证书标题,`action=update` 时必填
550
+ - `--code`: 新证书编号,`action=update` 时必填;唯一,只能由字母、数字、下划线组成,不超过 20 位
551
+ - `--store-code`: 原证书编号,`action=update` 时必填
552
+ - `--image`: 证书图片 URL,`action=update` 时必填;可以来自图片库或内置模板
553
+ - `--target-path`: 证书图片 OSS 路径,`action=update` 时必填
554
+ - `--path`: 分类路径 UUID 列表,多个用英文逗号分隔,`action=update` 时必填
555
+ - `--custom-content`: 自定义内容;不传时默认使用 `--description`
556
+
557
+ **返回字段**(表格显示关键字段):
558
+ - `title`: 证书标题
559
+ - `code`: 证书编号
560
+ - `status`: 更新后的状态
561
+ - `update_time`: 更新时间
562
+ - `update_user_name`: 更新人
563
+
564
+ **示例**:
565
+ ```bash
566
+ # 更新证书数据
567
+ soke-cli certificate +update \
568
+ --certificate-id 65092195-49D0-453F-9CE1-A6CBB4502EF1 \
569
+ --action update \
570
+ --title "证书关闭获取测试" \
571
+ --code "1234444445577447787" \
572
+ --store-code "123444444557744778" \
573
+ --image "https://newsokecdn.soke.cn/dingfc5d942826fce9d9/public/image/certificate/certificate4.png" \
574
+ --target-path "dingfc5d942826fce9d9/public/image/certificate/certificate4.png" \
575
+ --description "232323" \
576
+ --path "DFECCF24-AFC5-40E4-A0FD-3B71BFB6B140" \
577
+ --custom-content "1212" \
578
+ --serial-number 6 \
579
+ --target-point "0.00"
580
+
581
+ # 发布证书
582
+ soke-cli certificate +update --certificate-id 65092195-49D0-453F-9CE1-A6CBB4502EF1 --action publish
583
+
584
+ # 关闭证书
585
+ soke-cli certificate +update --certificate-id 65092195-49D0-453F-9CE1-A6CBB4502EF1 --action close
586
+ ```
587
+
588
+ **接口**: `PUT /skills/certificate/update/{uuid}`
589
+
590
+ ---
591
+
592
+ ### +delete
593
+
594
+ 删除证书。
595
+
596
+ **命令格式**:
597
+ ```bash
598
+ soke-cli certificate +delete \
599
+ --certificate-id <certificate_uuid> \
600
+ [--format json|yaml|table]
601
+ ```
602
+
603
+ **参数说明**:
604
+ - `--certificate-id`: 证书 UUID,通常来自 `certificate +list` 返回的 `data.list[].uuid`
605
+
606
+ **示例**:
607
+ ```bash
608
+ soke-cli certificate +delete --certificate-id DAACD37D-1B72-4CE4-B8D0-12C7F4DAA4C3
609
+ ```
610
+
611
+ **接口**: `DELETE /skills/certificate/delete/{uuid}`
612
+
613
+ ---
614
+
615
+ ## 常见工作流
616
+
617
+ ### 查询内置模板
618
+
619
+ ```bash
620
+ soke-cli certificate +templates
621
+ ```
622
+
623
+ ### 创建证书
624
+
625
+ ```bash
626
+ soke-cli certificate +templates
627
+ soke-cli certificate +category --keyword "<分类关键词>"
628
+ soke-cli certificate +create \
629
+ --title "<证书标题>" \
630
+ --code "<唯一证书编号>" \
631
+ --image "<templates 返回的 url>" \
632
+ --target-path "<模板或图片库图片的 OSS path>" \
633
+ --category-id "<category 返回的 uuid>" \
634
+ --description "<证书简介>"
635
+ ```
636
+
637
+ ### 查询已发布证书并获取 UUID
638
+
639
+ ```bash
640
+ soke-cli certificate +list --status 1 --page 1 --limit 10 --format json
641
+ ```
642
+
643
+ 从返回的 `data.list[].uuid` 中获取证书 UUID。
644
+
645
+ ### 查看证书详情
646
+
647
+ ```bash
648
+ soke-cli certificate +get --certificate-id <certificate_uuid> --format json
649
+ ```
650
+
651
+ ### 查询证书用户获取记录
652
+
653
+ ```bash
654
+ soke-cli certificate +users --certificate-id <certificate_uuid> --page 1 --limit 10 --status all
655
+ ```
656
+
657
+ ### 手动颁发证书
658
+
659
+ ```bash
660
+ soke-cli contact +list-department-users --dept-id <dept_id> --format json
661
+ soke-cli certificate +award --certificate-id <certificate_uuid> --certificate-title "<证书标题>" --certificate-num "<证书编号>" --certificate-image "<证书图片 URL>" --user-list-json '<部门用户对象数组 JSON>'
662
+ ```
663
+
664
+ ### 取消学员证书
665
+
666
+ ```bash
667
+ soke-cli certificate +users --certificate-id <certificate_uuid> --format json
668
+ soke-cli certificate +cancel-user --certificate-user-id <certificate +users 返回的 uuid> --content "<取消理由>"
669
+ ```
670
+
671
+ ### 删除前检查模块关联
672
+
673
+ ```bash
674
+ soke-cli certificate +check-linked --certificate-id <certificate_uuid>
675
+ ```
676
+
677
+ ### 设置证书坐标
678
+
679
+ ```bash
680
+ soke-cli certificate +get --certificate-id <certificate_uuid> --format json
681
+ soke-cli certificate +coordinate --certificate-id <certificate_uuid> --user-name-left "518px" --user-name-top "450px"
682
+ ```
683
+
684
+ ### 更新、发布或关闭证书
685
+
686
+ ```bash
687
+ soke-cli certificate +update --certificate-id <certificate_uuid> --action update --title "<证书标题>" --code "<新证书编号>" --store-code "<原证书编号>" --image "<图片 URL>" --target-path "<OSS path>" --path "<分类 UUID>"
688
+ soke-cli certificate +update --certificate-id <certificate_uuid> --action publish
689
+ soke-cli certificate +update --certificate-id <certificate_uuid> --action close
690
+ ```
691
+
692
+ ### 删除证书
693
+
694
+ ```bash
695
+ soke-cli certificate +delete --certificate-id <certificate_uuid>
696
+ ```
697
+
698
+ ## 注意事项
699
+
700
+ 1. `+list` 使用 `limit` 参数,对接 `/skills/certificate/list`
701
+ 2. `+templates` 返回内置模板 URL 和对应 path
702
+ 3. `+create` 的 `image` 可以来自图片库图片或 `+templates` 返回的内置模板 URL
703
+ 4. `+create` 的 `path` 不传时默认使用 `category-id`
704
+ 5. `+create` 的 `target-path` 是图片 OSS 路径,不是完整 URL
705
+ 6. `+create` 的 `code` 是唯一证书编号,只能由字母、数字、下划线组成,不超过 20 位
706
+ 7. `+create` 的 `serial-number` 是系统自动生成的流水号位数,作为编号尾数,建议大于系统学员数位数
707
+ 8. `+category` 对接新版证书分类接口,返回结构为 `data.list.list`
708
+ 9. `+get` 返回完整 `data`,表格仅展示证书核心字段
709
+ 10. `+users` 对接证书用户获取记录接口,按 `certificate_id` 查询证书下用户获取记录
710
+ 11. `+award` 的 `user-list-json` 必须是部门用户对象数组,先从 `contact +list-department-users` 获取
711
+ 12. `+cancel-user` 使用的是 `+users` 返回的证书获取记录 UUID,不是证书 UUID
712
+ 13. `+check-linked` 可用于删除前确认是否有关联模块
713
+ 14. `+coordinate` 会根据命令行参数自动组装接口所需的坐标 JSON
714
+ 15. `+update` 的 `action` 支持 `update`、`publish`、`close`;`action=update` 时会发送证书数据字段
715
+ 16. `+delete` 是删除操作,请先确认目标证书 UUID
716
+ 17. 表格输出仅展示关键字段,完整字段请使用 `--format json`
717
+ 18. 权限不足或 Token 问题参考 [`../soke-shared/MODULE.md`](../soke-shared/MODULE.md)