@ohos-cpf/3rdloop 0.0.1

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 (389) hide show
  1. package/README.md +425 -0
  2. package/bin/3rdloop.mjs +48 -0
  3. package/lib/cli.js +741 -0
  4. package/lib/config.js +318 -0
  5. package/lib/doctor.js +114 -0
  6. package/lib/exit-codes.js +31 -0
  7. package/lib/opencode.js +156 -0
  8. package/lib/orch.js +427 -0
  9. package/lib/queries.js +264 -0
  10. package/lib/runner.js +979 -0
  11. package/lib/step.js +326 -0
  12. package/lib/ui.js +223 -0
  13. package/lib/workflow.js +291 -0
  14. package/lib/workflows.js +132 -0
  15. package/package.json +50 -0
  16. package/vendor/Server/Agent/SkillSelector/README.md +344 -0
  17. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -0
  18. package/vendor/Server/Agent/SkillSelector/index.js +14 -0
  19. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -0
  20. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -0
  21. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -0
  22. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -0
  23. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -0
  24. package/vendor/Server/Agent/SkillSelector/types.js +63 -0
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +60 -0
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -0
  27. package/vendor/Server/Brain/Brain.js +686 -0
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -0
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -0
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -0
  31. package/vendor/Server/Brain/index.js +11 -0
  32. package/vendor/Server/CLI/cli.js +243 -0
  33. package/vendor/Server/CLI/opencode/index.js +804 -0
  34. package/vendor/Server/CLI/opencode.js +5 -0
  35. package/vendor/Server/DbUse/MessageArchive.js +61 -0
  36. package/vendor/Server/DbUse/StorageManager.js +107 -0
  37. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -0
  38. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -0
  39. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -0
  40. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -0
  41. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -0
  42. package/vendor/Server/DbUse/index.js +160 -0
  43. package/vendor/Server/DbUse/stores/SessionStore.js +279 -0
  44. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -0
  45. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -0
  46. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -0
  47. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -0
  48. package/vendor/Server/FlexRunner/index.js +12 -0
  49. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -0
  50. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -0
  51. package/vendor/Server/Knowledge/index.js +33 -0
  52. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -0
  53. package/vendor/Server/LoopEngine/index.js +11 -0
  54. package/vendor/Server/Orchestrator/Orchestrator.js +1425 -0
  55. package/vendor/Server/Orchestrator/StepNode.js +312 -0
  56. package/vendor/Server/Orchestrator/index.js +13 -0
  57. package/vendor/Server/Routes/controllers/BrainController.js +241 -0
  58. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -0
  59. package/vendor/Server/Routes/controllers/HealthController.js +44 -0
  60. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -0
  61. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -0
  62. package/vendor/Server/Routes/controllers/OrchestratorController.js +911 -0
  63. package/vendor/Server/Routes/controllers/StatsController.js +57 -0
  64. package/vendor/Server/Routes/controllers/StreamController.js +67 -0
  65. package/vendor/Server/Routes/library/logger.js +179 -0
  66. package/vendor/Server/Routes/library/zipArchive.js +172 -0
  67. package/vendor/Server/Routes/router/Router.js +204 -0
  68. package/vendor/Server/Routes/routes/brain.js +47 -0
  69. package/vendor/Server/Routes/routes/flexrunner.js +72 -0
  70. package/vendor/Server/Routes/routes/health.js +28 -0
  71. package/vendor/Server/Routes/routes/index.js +57 -0
  72. package/vendor/Server/Routes/routes/knowledge.js +55 -0
  73. package/vendor/Server/Routes/routes/loopengine.js +58 -0
  74. package/vendor/Server/Routes/routes/orchestrator.js +61 -0
  75. package/vendor/Server/Routes/routes/registry.js +98 -0
  76. package/vendor/Server/Routes/routes/stats.js +23 -0
  77. package/vendor/Server/Routes/routes/stream.js +30 -0
  78. package/vendor/Server/Routes/server.js +202 -0
  79. package/vendor/Server/Routes/sse/SseHub.js +308 -0
  80. package/vendor/Server/Skills/acceptance-check/SKILL.md +174 -0
  81. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -0
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -0
  83. package/vendor/Server/Skills/arkts-code-check/SKILL.md +314 -0
  84. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +160 -0
  85. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +29 -0
  86. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +222 -0
  87. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +220 -0
  88. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +329 -0
  89. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -0
  90. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +433 -0
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -0
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +789 -0
  93. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -0
  94. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -0
  95. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -0
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -0
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -0
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +99 -0
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -0
  100. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -0
  101. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +433 -0
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -0
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +789 -0
  104. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -0
  105. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -0
  106. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -0
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -0
  108. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +234 -0
  109. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +103 -0
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -0
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -0
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +108 -0
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -0
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -0
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -0
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -0
  117. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -0
  118. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +392 -0
  119. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -0
  120. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +313 -0
  121. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -0
  122. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +166 -0
  123. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +309 -0
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -0
  125. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -0
  126. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +361 -0
  127. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +146 -0
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +253 -0
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +115 -0
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +263 -0
  131. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -0
  132. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -0
  133. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -0
  134. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -0
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +519 -0
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -0
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +93 -0
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -0
  139. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -0
  140. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +433 -0
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -0
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +789 -0
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -0
  144. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +229 -0
  145. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -0
  146. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -0
  147. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +576 -0
  148. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +575 -0
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -0
  150. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +491 -0
  151. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -0
  152. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -0
  153. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +433 -0
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -0
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +789 -0
  156. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -0
  157. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +312 -0
  158. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -0
  159. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +134 -0
  160. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -0
  161. package/vendor/Server/Skills/flutter-interface/README.md +75 -0
  162. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -0
  163. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -0
  164. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -0
  165. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -0
  166. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -0
  167. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +518 -0
  168. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +382 -0
  169. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +342 -0
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -0
  171. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +519 -0
  172. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +407 -0
  173. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +653 -0
  174. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +397 -0
  175. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +745 -0
  176. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +721 -0
  177. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -0
  178. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -0
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -0
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -0
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -0
  182. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -0
  183. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -0
  184. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -0
  185. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -0
  186. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +301 -0
  187. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +105 -0
  188. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +127 -0
  189. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +208 -0
  190. package/vendor/Server/Skills/rn-code-check/SKILL.md +321 -0
  191. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +235 -0
  192. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +189 -0
  193. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +247 -0
  194. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -0
  195. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -0
  196. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -0
  197. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -0
  198. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -0
  199. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -0
  200. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -0
  201. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -0
  202. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -0
  203. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -0
  204. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -0
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -0
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -0
  207. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -0
  208. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -0
  209. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -0
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -0
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -0
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -0
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -0
  214. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -0
  215. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -0
  216. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -0
  217. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -0
  218. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -0
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -0
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +684 -0
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -0
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -0
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -0
  224. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -0
  225. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -0
  226. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -0
  227. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -0
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -0
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -0
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -0
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -0
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -0
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -0
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -0
  235. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -0
  236. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -0
  237. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -0
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -0
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -0
  240. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -0
  241. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -0
  242. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -0
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -0
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -0
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -0
  246. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -0
  247. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -0
  248. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +58 -0
  249. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -0
  250. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -0
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +75 -0
  252. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -0
  253. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +339 -0
  254. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +83 -0
  255. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +859 -0
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +122 -0
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +279 -0
  258. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -0
  259. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -0
  260. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -0
  261. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -0
  262. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -0
  263. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +506 -0
  264. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +280 -0
  265. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -0
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +209 -0
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -0
  268. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -0
  269. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -0
  270. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -0
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -0
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -0
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -0
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -0
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -0
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -0
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -0
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -0
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -0
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -0
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -0
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -0
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -0
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -0
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -0
  286. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -0
  287. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -0
  288. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -0
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -0
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -0
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -0
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -0
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -0
  294. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -0
  295. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -0
  296. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -0
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -0
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -0
  299. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -0
  300. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -0
  301. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -0
  302. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +498 -0
  303. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -0
  304. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -0
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -0
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -0
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -0
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -0
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -0
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -0
  311. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -0
  312. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -0
  313. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -0
  314. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -0
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -0
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -0
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -0
  318. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -0
  319. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -0
  320. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -0
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -0
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -0
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -0
  324. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -0
  325. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -0
  326. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -0
  327. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -0
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -0
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -0
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -0
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -0
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -0
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -0
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -0
  335. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -0
  336. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -0
  337. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -0
  338. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -0
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -0
  340. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -0
  341. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +255 -0
  342. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +77 -0
  343. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -0
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +174 -0
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -0
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -0
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -0
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +137 -0
  349. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -0
  350. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -0
  351. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -0
  352. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -0
  353. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -0
  354. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -0
  355. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -0
  356. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -0
  357. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -0
  358. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -0
  359. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -0
  360. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -0
  361. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -0
  362. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -0
  363. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -0
  364. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -0
  365. package/vendor/Server/Skills/task-decomposition/SKILL.md +529 -0
  366. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -0
  367. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -0
  368. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -0
  369. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -0
  370. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -0
  371. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -0
  372. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -0
  373. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -0
  374. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -0
  375. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -0
  376. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -0
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +425 -0
  378. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -0
  379. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -0
  380. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -0
  381. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -0
  382. package/vendor/Server/TestCheck/TestCheck.js +775 -0
  383. package/vendor/Server/TestCheck/index.js +11 -0
  384. package/vendor/Server/library/McpToolGuide.js +280 -0
  385. package/vendor/Server/library/StatsService.js +127 -0
  386. package/vendor/Server/library/cstTime.js +16 -0
  387. package/vendor/Server/package.json +17 -0
  388. package/vendor/VERSION +3 -0
  389. package/workflows/pr-check.mjs +106 -0
@@ -0,0 +1,174 @@
1
+ ---
2
+ name: arkts-library-demo-coverage
3
+ description: 分析鸿蒙ArkTs原生库现有 Demo 对接口的覆盖情况。读取接口规格,扫描 entry/src/main/ets/ 下所有 .ets 文件,通过 AST/正则双层匹配识别已调用的接口,计算接口覆盖率百分比,输出已覆盖和未覆盖接口清单。当需要对鸿蒙原生库进行 demo 接口覆盖率缺口填补、未覆盖接口测试规划时调用。
4
+ license: Apache-2.0
5
+ compatibility: 需要 Node.js 运行环境
6
+ metadata:
7
+ version: "1.1.0"
8
+ category: harmonyos-development
9
+ language: ArkTS/ETS
10
+ useWhen: 分析鸿蒙原生库 Demo 对接口的覆盖情况
11
+ ---
12
+
13
+ # 鸿蒙ArkTs原生库 Demo 接口覆盖率分析
14
+
15
+ 本 Skill 直接调用本地脚本分析 Demo 源码对库导出接口的覆盖情况,直接输出最终 Markdown 覆盖率报告。
16
+
17
+ > ⚠️ **核心约束**:基于静态 import 分析,动态调用(`obj[methodName]()`)无法识别,报告中需标注此限制。
18
+
19
+ ---
20
+ ## 脚本依赖
21
+
22
+ 本 Skill 直接调用以下本地脚本完成全部分析工作:
23
+
24
+ ```
25
+ 3rdLibraryLoop/MCP/scripts/analyze-demo-coverage.cjs
26
+ ```
27
+
28
+ **调用方式**:通过 `node` 命令行直接执行,使用 `--` 参数传参。
29
+
30
+ ---
31
+
32
+ ## 任务参数
33
+
34
+ | 参数 | 类型 | 必填 | 说明 |
35
+ |------|------|------|------|
36
+ | `libroot` | string | ✅ | 库源码根目录绝对路径(包含 `library/` 和 `entry/` 子目录) |
37
+
38
+ **可选参数**:
39
+
40
+ | 参数 | 默认值 | 说明 |
41
+ |------|--------|------|
42
+ | `spec` | — | 已有的 `interface-spec.json` 路径(由 `extract-interfaces.cjs` 生成)。提供时从 JSON 读取接口规格;未提供时自动从 `libroot` 源码提取 |
43
+ | `output` | `02-{库名}-Demo覆盖率报告.md` | 输出 Markdown 报告路径 |
44
+ | `mode` | `auto` | 匹配模式:`auto`(AST 优先,降级正则)\| `ast`(强制 AST)\| `regex`(强制正则) |
45
+ | `title` | `{库名} Demo 覆盖率分析报告` | 报告标题 |
46
+ | `lib` | 从 spec/libroot 自动提取 | 库名覆盖 |
47
+ | `src` | `{libroot}/entry/src/main/ets` | Demo 源码目录覆盖 |
48
+
49
+ **派生变量**:
50
+ - `skillDir`:本 Skill 所在目录
51
+ - `scriptPath`:分析脚本路径 = `{{skillDir}}/../../../MCP/scripts/analyze-demo-coverage.cjs`
52
+
53
+ ---
54
+
55
+ ## 输入依赖
56
+
57
+ - **前置SKILL**: ArkTsLibraryInterfaceSpecSkill(可选;若提供 `spec` 参数则使用其生成的 JSON,否则脚本自动从源码提取)
58
+ - **输入文件**: 库源码目录(含 `library/` 和 `entry/src/main/ets/`)
59
+ - **输出文件**: Markdown 覆盖率报告(脚本直接生成)
60
+
61
+ ---
62
+
63
+ ## 工作流程概览
64
+
65
+ ```
66
+ Phase 1: 运行 analyze-demo-coverage.cjs → Phase 2: 确认报告输出 → Phase 3: 结果合理性校验
67
+ ```
68
+
69
+ > 全程只有一条 `node` 命令,脚本直接输出最终 Markdown 报告,无中间文件,无需清理。
70
+
71
+ ---
72
+
73
+ ## Phase 1:运行 Demo 覆盖率分析脚本
74
+
75
+ > ⚠️ **脚本一步完成:提取/读取接口规格 + 扫描 Demo 源码 + AST/正则双层匹配 + 生成 Markdown 报告。无中间 JSON 文件。**
76
+
77
+ 运行脚本:
78
+
79
+ ```bash
80
+ node "{{skillDir}}/../../../MCP/scripts/analyze-demo-coverage.cjs" \
81
+ --libroot "{{libroot}}" \
82
+ --output "{{outputDir}}/02-{{libName}}-Demo覆盖率报告.md"
83
+ ```
84
+
85
+ 其中:
86
+ - `{{skillDir}}` = SKILL.md 所在目录
87
+ - `{{libroot}}` = 库源码根目录(包含 `library/` 和 `entry/` 子目录)
88
+ - `{{outputDir}}` = 输出目录(通常与接口规格文档同目录)
89
+ - 库名从 `oh-package.json5` 或 spec JSON 自动提取,无需 `--lib` 参数
90
+
91
+ 若已有 `interface-spec.json`,可通过 `--spec` 参数传入避免重复提取:
92
+
93
+ ```bash
94
+ node "{{skillDir}}/../../../MCP/scripts/analyze-demo-coverage.cjs" \
95
+ --libroot "{{libroot}}" \
96
+ --spec "{{outputDir}}/{{libName}}-interface-spec.json" \
97
+ --output "{{outputDir}}/02-{{libName}}-Demo覆盖率报告.md"
98
+ ```
99
+
100
+ **脚本自动完成**:
101
+ 1. 获取接口规格(从 `spec` JSON 读取,或从 `libroot` 源码自动提取)
102
+ 2. 递归扫描 `entry/src/main/ets/` 下的 `.ets` 文件(排除 `entryability/`、`entrybackupability/`、`model/`、`util/`、`ohosTest/` 等非 demo 目录)
103
+ 3. 提取 import(单行+多行+默认+混合+别名,兼容尾斜杠与子路径写法)并追踪实例变量
104
+ 4. AST 优先匹配(TS Compiler API 语义分析,含库入口文件大小写校准),失败自动降级正则匹配
105
+ 5. 匹配方法调用、检测对象字面量属性、默认导入命名空间宽松兜底
106
+ 6. **过滤低价值常量与类型声明**(对齐 XTS 覆盖率口径):跳过 `lowValue === true` 的静态只读常量与 `kind === 'type'` 的类型别名,不计入统计分母,报告中标注过滤数量
107
+ 7. **直接生成最终 Markdown 报告**(含覆盖率统计、按类/按类型分组、已覆盖/未覆盖清单、文件覆盖详情、提升建议)
108
+
109
+ > ⚠️ **Demo 范围界定**:扫描范围默认 `entry/src/main/ets/`,仅指主工程 demo 页面代码。绝不扩展到 `ohosTest/`、`test/`、`tests/`、`__tests__/`、`testability/` 等测试目录。
110
+
111
+ **退出码处理**:
112
+ - `0` → 成功
113
+ - 其他 → 失败,终止流程并标注 `状态: 失败`
114
+ - 脚本输出的 `⚠️ [警告]/[提示]`(stderr)不改变退出码,但指示结果可信度问题,必须在 Phase 3 处理
115
+
116
+ ---
117
+
118
+ ## Phase 2:确认报告输出
119
+
120
+ 脚本执行完毕后,Markdown 报告已直接生成在 `output` 指定路径(默认为 `02-{库名}-Demo覆盖率报告.md`)。
121
+
122
+ 报告包含以下章节:
123
+ 1. **基本信息** — 库名、源文件数、生成时间;若存在过滤,额外标注「过滤低价值常量」「过滤类型声明」「实际统计接口」三项(与 XTS 覆盖率报告口径一致)
124
+ 2. **覆盖率总览** — 方法级覆盖率百分比 + 进度条 + S/N/M 统计
125
+ 3. **按接口类型统计** — method/property/field/function/variable/enumValue/constructor 分组覆盖率
126
+ 4. **类级覆盖率** — 每个类/接口的覆盖统计(按覆盖率升序排列)
127
+ 5. **未覆盖接口详情** — 按类分组,含参数、返回类型、说明
128
+ 6. **已覆盖接口详情** — 按类分组,含签名和覆盖来源文件
129
+ 7. **文件覆盖详情** — 每个 Demo 文件覆盖的接口列表
130
+ 8. **覆盖率提升建议** — 按优先级排列的未覆盖接口补充清单
131
+
132
+ ---
133
+
134
+ ## Phase 3:结果合理性校验
135
+
136
+ > ⚠️ 覆盖率脚本曾有静默失败历史(import 尾斜杠曾导致 0% 误报、入口文件大小写曾导致 ~11 个百分点低估),即使脚本已内置防护,交付前仍须完成本环节校验,禁止直接采信首轮结果。
137
+
138
+ ### 3.1 检查脚本告警
139
+
140
+ - 控制台出现 `⚠️ [警告]/[提示]/[分析可信度警告]`,或报告头部出现「⚠️ 分析可信度警告」章节时,先按提示排查再采信结果
141
+ - 库模块解析失败时脚本会自动放弃 AST 结果、降级正则模式(控制台有明确提示)。正则模式精度低于 AST,交付时应在报告中注明实际匹配模式
142
+
143
+ ### 3.2 覆盖率异常时交叉验证
144
+
145
+ 覆盖率 < 10% 或为 0%,且 Demo 源码确实存在 `import ... from '<库名>'` 时:
146
+
147
+ 1. **抽样 grep 交叉验证**:对报告中「未覆盖」的接口,在 Demo 源码目录统计真实调用数,与报告比对:
148
+ ```bash
149
+ grep -rh "\.方法名(" entry/src/main/ets/ --include="*.ets" | wc -l
150
+ ```
151
+ 2. **快速诊断口诀**:"import 有、覆盖无 → 查 import 尾斜杠;部分漏、变量 any → 查入口文件大小写"
152
+ 3. **已知历史缺陷与 workaround**(脚本 v1.1 已修复,旧版本脚本仍会触发):
153
+ - **import 尾斜杠**:Demo 写 `from '@ohos/xxx/'`(尾部带 `/`)曾被全部静默跳过 → 0% 误报。Workaround:复制 `entry/src/main/ets` 到临时目录,sed 去除尾斜杠后通过 `--src` 指向副本
154
+ - **入口文件大小写**:仓库入口为小写 `index.ets` 时,macOS(大小写不敏感文件系统)上 AST 模块解析曾静默失败、库类型坍缩为 `any` → 部分接口漏判。Workaround:复制 libroot(排除 .git)将 `library/index.ets` 重命名为 `Index.ets`,`--libroot` 指向副本。Linux(大小写敏感)上症状不同(existsSync 直接失败走降级逻辑),两者同源
155
+
156
+ ### 3.3 统计口径说明
157
+
158
+ 报告默认排除 `entryability/` 等非 Demo 目录(见 Phase 1 扫描范围)。`EntryAbility` 中的库调用(如 `GlobalContext.setValue` 在 `EntryAbility` 中触发)计入「未覆盖」属口径内合理行为,交付报告时应主动注明,避免读者误判为功能缺失。
159
+
160
+ **低价值常量与类型声明过滤**:脚本自动过滤 `public static readonly` 常量(`lowValue === true`)与类型别名(`kind === 'type'`),不计入覆盖率分母,与 `analyze-xts-coverage.cjs` 口径完全一致。报告「基本信息」章节标注过滤数量与实际统计接口数。下游 Demo 场景规划 SKILL 消费的未覆盖清单中不会出现这些低价值常量,避免为纯常量类生成无意义的「常量展示页」。
161
+
162
+ ---
163
+
164
+ ## 注意事项
165
+
166
+ 核心要点:
167
+ 1. **脚本本地调用** — 全部分析工作由 `node` 直接执行 `analyze-demo-coverage.cjs` 一步完成,禁止 AI 手工解析源码或编写报告表格
168
+ 2. **AST/正则双模式** — `mode=auto` 时优先使用 TS Compiler API AST 语义分析,TypeScript 模块不可用时自动降级正则匹配
169
+ 3. **Demo 范围** — 仅 `entry/src/main/ets/`,测试目录自动排除
170
+ 4. **动态调用限制** — `obj[method]()` 无法识别,报告中标注此限制
171
+ 5. **无中间文件** — 脚本直接输出最终 Markdown 报告,无需清理
172
+ 6. **接口规格来源灵活** — 可通过 `--spec` 参数传入已有 JSON,也可不传 `--spec` 让脚本自动从源码提取
173
+ 7. **库名自动提取** — 默认从 `oh-package.json5` 或 spec JSON 读取,无需手工指定
174
+ 8. **结果合理性校验** — 覆盖率异常低/为 0 时先做 grep 抽样交叉验证再采信(见 Phase 3);关注脚本 `⚠️` 告警与报告「分析可信度警告」章节
@@ -0,0 +1,321 @@
1
+ ---
2
+ name: arkts-library-demo-scenario
3
+ description: 基于覆盖率报告,为未覆盖接口生成 ArkTS 测试 Demo 描述文档。读取覆盖率报告中的未覆盖接口清单(含签名和功能描述),以接口为单位生成测试 Demo 描述(名称、描述、步骤、预期结果),并以表格形式汇总输出。允许将存在直接调用关系或属于同一功能模块的接口合并到同一个 Demo 中。当需要对鸿蒙原生库进行 Demo 覆盖率缺口填补、未覆盖接口场景规划时调用。
4
+ license: Apache-2.0
5
+ metadata:
6
+ version: "1.0.0"
7
+ category: harmonyos-development
8
+ language: ArkTS/ETS
9
+ ---
10
+
11
+ # 鸿蒙ArkTs原生库未覆盖接口 Demo 场景生成
12
+
13
+ 本 Skill 读取覆盖率报告中的未覆盖接口清单,以接口为单位自动生成测试 Demo 描述,输出为标准 Markdown 表格文档,使接口覆盖率达到 100%。
14
+
15
+ > ⚠️ **核心约束**:
16
+ > 1. 只生成覆盖率报告"未覆盖接口清单"中列出的接口场景
17
+ > 2. 所有内容必须基于覆盖率报告中真实存在的接口签名和功能描述
18
+ > 3. 严禁捏造不存在的接口、参数或行为
19
+
20
+ ---
21
+
22
+ ## 文档模式选择
23
+
24
+ **选择规则(按顺序判断):**
25
+
26
+ 1. **统计未覆盖接口数量和 Demo 预估数量**
27
+ 2. **判断模式**:若未覆盖接口 ≤ 25 个 **且** Demo ≤ 8 个 → 使用单文档模式
28
+ 3. **否则** → 使用多文档拆分模式
29
+
30
+ | 模式 | 文件命名 | 适用条件 |
31
+ |-----|---------|---------|
32
+ | 单文档 | `{库名}未覆盖接口Demo场景.md` | 未覆盖接口 ≤ 25 个且 Demo ≤ 8 个 |
33
+ | 多文档拆分 | `{库名}未覆盖接口Demo场景(一){模块主题}.md`、`(二)...` | 接口 > 25 个或 Demo > 8 个 |
34
+
35
+ > ⚠️ **多文档模式注意**:Demo 序号和接口覆盖矩阵序号在所有文档间保持全局连续。
36
+
37
+ ## 核心约束概览
38
+
39
+ | 约束类别 | 关键规则 |
40
+ |---------|---------|
41
+ | **内容真实性** | 所有内容必须基于覆盖率报告中真实存在的接口签名和功能描述,严禁凭空捏造 |
42
+ | **接口覆盖** | 每个未覆盖接口必须被至少一个 Demo 覆盖,补充后覆盖率达到 100% |
43
+ | **Demo 分组** | 存在直接调用关系或属于同一功能模块的接口可合并;不同功能方向、无调用关系的接口禁止强行合并 |
44
+ | **可验证性** | 每个按钮/步骤必须对应至少一条设备可观测的预期结果;依赖平台事件且已知不触发的接口改为平台限制说明 |
45
+ | **ArkUI 响应式** | 计数器、状态标志变量必须声明为 `@State`;异步回调链须规划双计数器 |
46
+ | **命名规范** | Demo 名称格式:`[功能动词][操作对象][特征/场景]Demo`,不超过 20 字 |
47
+ | **输出格式** | 步骤和预期结果为编号列表;接口签名格式:`` `函数名(参数类型): 返回类型` `` |
48
+
49
+ ---
50
+
51
+ ## 适用场景
52
+
53
+ - 为已 ohos 化鸿蒙原生库填补 Demo 覆盖率缺口
54
+ - 生成开发者可直接参考的测试 Demo 描述文档
55
+ - 为 QA / 开发团队提供可执行的 Demo 实现指导
56
+ - 配合 ArkTsLibraryInterfaceSpecSkill + ArkTsLibraryDemoCoverageSkill 实现"接口分析 → 覆盖率分析 → 缺口场景规划"完整链路
57
+
58
+ ---
59
+
60
+ ## 任务参数
61
+
62
+ | 参数 | 必需 | 说明 |
63
+ |------|------|------|
64
+ | `coverageReportPath` | ✅ | 覆盖率报告绝对路径(由 ArkTsLibraryDemoCoverageSkill 生成,含未覆盖接口清单及签名) |
65
+ | `sourcePath` | 可选 | 源码根目录(提供后可探查现有 demo 风格作为参考) |
66
+ | `outputDir` | 可选 | 输出目录,默认放置在覆盖率报告所在目录 |
67
+
68
+ ### 输入异常处理
69
+
70
+ | 异常情况 | 处理方式 |
71
+ |---------|---------|
72
+ | 覆盖率报告不存在或无法读取 | 停止执行,向用户提示错误并请求提供有效文档路径 |
73
+ | 覆盖率报告格式异常(非 Markdown 或无法解析) | 停止执行,向用户说明问题并请求提供正确格式的文档 |
74
+ | 未覆盖接口清单为空(覆盖率 100%) | 生成空场景文档,标注"所有接口已覆盖,无需补充" |
75
+ | 无法确定库名称 | 使用默认命名 `Unknown未覆盖接口Demo场景.md`,并向用户说明情况 |
76
+
77
+ ---
78
+
79
+ ---
80
+
81
+ ## 工作流程
82
+
83
+ ### 阶段一:读取覆盖率报告并提取未覆盖接口
84
+
85
+ #### 1.1 读取覆盖率报告
86
+
87
+ ```
88
+ 执行步骤:
89
+ 1. 使用 read_file 读取 {{coverageReportPath}} 全文
90
+ 2. 提取库名称(用于输出文件命名)
91
+ 3. 提取当前覆盖率(用于概述中标注补充前后对比)
92
+ ```
93
+
94
+ #### 1.2 提取未覆盖接口清单
95
+
96
+ 定位覆盖率报告「## 5. 未覆盖接口清单」章节,提取每个未覆盖接口:
97
+
98
+ | 提取字段 | 来源列 | 用途 |
99
+ |---------|--------|------|
100
+ | 接口名称 | `方法/属性` 列 | Demo 命名和步骤描述 |
101
+ | 完整签名 | `签名` 列 | 步骤中标注精确调用方式 |
102
+ | 接口类型 | `类型` 列 | 确定调用方式(method/property/field) |
103
+ | 功能描述 | `功能描述` 列 | Demo 描述和预期结果的依据 |
104
+ | 所属类 | `### {ClassName}` 子标题 | 分组依据 |
105
+
106
+ 覆盖率报告本身已按类分组,同一类下的未覆盖接口天然属于同一功能模块。
107
+
108
+ > ⚠️ **低价值常量跳过规则(强制)**:覆盖率报告已过滤 `public static readonly` 常量(`lowValue === true`)与类型别名(`kind === 'type'`),这些不会出现在未覆盖清单中。若覆盖率报告的「基本信息」章节标注了「过滤低价值常量 > 0」,说明库含纯常量类(如 `BleMsg`、`BluetoothGattCharacteristic`),**禁止为这些类规划独立的"常量展示页"Demo**。常量无行为逻辑、无运行时回归价值,仅作 `import` 引用即可,不纳入 Demo 覆盖目标。
109
+
110
+ #### 1.3 建立未覆盖接口能力清单(内部工作记录)
111
+
112
+ ```
113
+ 未覆盖接口清单示例(不写入输出文件):
114
+ ┌─────────────────────────────────────────────────────┐
115
+ │ 类 ImageKnife │
116
+ │ - 方法 preload(loadSrc: ...): ImageKnifeRequest │
117
+ │ 功能: 图片预加载 │
118
+ │ - 方法 cancel(request: ImageKnifeRequest) │
119
+ │ 功能: 取消预加载请求 │
120
+ │ 类 ImageKnifeOption │
121
+ │ - 属性 onlyRetrieveFromCache: boolean │
122
+ │ 功能: 仅从缓存加载图片 │
123
+ │ ... │
124
+ │ │
125
+ │ 未覆盖接口总数: N │
126
+ │ 当前覆盖率: X% │
127
+ │ 补充后预期覆盖率: 100% │
128
+ └─────────────────────────────────────────────────────┘
129
+ ```
130
+
131
+ ---
132
+
133
+ ### 阶段二:生成测试 Demo 描述
134
+
135
+ #### 2.1 Demo 分组原则
136
+
137
+ **原则一:一接口至少一个 Demo**
138
+ 每个未覆盖接口必须被至少一个 Demo 覆盖。
139
+
140
+ **原则二:关联接口可合并**
141
+ 满足以下任一条件的接口可合并到同一 Demo:
142
+ - 存在明确的调用依赖关系(如 `init()` → `execute()` → `destroy()`)
143
+ - 共同完成一个完整的业务场景(如"创建 → 配置 → 执行 → 获取结果")
144
+ - 属于同一主题功能簇(如所有图像处理相关方法)
145
+ - 一个接口的输出是另一个接口的输入
146
+
147
+ **原则三:禁止无关合并**
148
+ 不同功能方向、无调用关系的接口不得强行合并到同一 Demo。
149
+
150
+ #### 2.2 Demo 描述要素
151
+
152
+ 每个测试 Demo 包含以下五个要素:
153
+
154
+ **① 测试 Demo 名称**
155
+ - 以功能描述为基础简要命名
156
+ - 命名格式:`[功能动词][操作对象][特征/场景]Demo`
157
+ - 示例:`图片模糊处理Demo`、`配置初始化与销毁Demo`、`异步任务执行Demo`
158
+
159
+ **② 测试 Demo 描述**
160
+ - 对该 Demo 的功能和目的进行详细描述
161
+ - 说明该 Demo 展示了哪些接口能力
162
+ - 说明开发者通过该 Demo 能理解什么
163
+
164
+ **③ 测试 Demo 步骤**
165
+ - 以 Demo 页面为载体,列出具体可执行步骤
166
+ - 步骤需包含:页面构建、UI 交互操作、接口调用时机、结果展示方式
167
+ - 示例格式:
168
+ ```
169
+ 1. 创建 Demo 页面,添加 [操作按钮] 和 [结果展示区域]
170
+ 2. 点击按钮触发 xxx() 调用,传入参数 ...
171
+ 3. 在结果区域展示返回值 / 状态变化
172
+ 4. 验证 ...
173
+ ```
174
+
175
+ **④ 测试 Demo 预期结果**
176
+ - 列出验证该 Demo 是否成功的具体可观测指标
177
+ - 包括:UI 展示内容、返回值格式、状态变化、无异常崩溃等
178
+
179
+ **⑤ 对应函数接口**
180
+ - 列出该 Demo 涉及的所有未覆盖接口的完整签名
181
+ - 签名来源于覆盖率报告的"签名"列
182
+ - 格式:`` `函数名(参数类型): 返回类型` ``
183
+
184
+ > ⚠️ **可验证性前置规则(强制)**:在为任何接口编写步骤和预期结果之前,必须先判断:**该接口在目标设备上能否产生可被用户观测到的输出?**
185
+ >
186
+ > | 情况 | 处理方式 |
187
+ > |-----|----------|
188
+ > | 接口有直接返回值、状态变更或 UI 更新 | 正常作为主步骤,预期结果描述可观测指标 |
189
+ > | 接口依赖平台事件回调,且该事件在测试设备上已知不触发 | **禁止**作为主步骤;在 Demo 步骤中标注「平台限制」,建议通过 `dispatchXxx` 桥接方法间接验证 |
190
+ > | 接口无任何可观测输出(无返回值、无回调、无 UI 变更) | 合并到相关流程 Demo 中,通过其他接口的状态变化间接验证 |
191
+ >
192
+ > **禁止「死按钮」**:Demo 中每个按钮(每个步骤中调用的接口)必须对应至少一条 UI 上可观测的预期结果。若无法提供,该按钮/步骤必须删除或改为平台限制说明。
193
+ >
194
+ > 🎯 **ArkUI `@State` 强制规则**:Demo 步骤中包含「计数器(如回调次数、调用次数)」或「状态标志(如是否已初始化)」等运行时变化量时,在步骤或预期结果描述中必须注明:**该变量须声明为 `@State`**,否则 ArkUI 不会触发重渲染,计数器将始终显示初始值(如永远显示 0),导致 Demo 验证逻辑完全失效。
195
+
196
+ #### 2.3 生成策略
197
+
198
+ 按以下优先级顺序生成 Demo:
199
+
200
+ 1. **核心功能 Demo**(P0):覆盖库最主要的功能接口,每个核心功能至少一个 Demo
201
+ 2. **完整流程 Demo**(P1):展示"初始化 → 核心操作 → 销毁"完整生命周期
202
+ 3. **参数变体 Demo**(P2):对同一接口的不同参数组合进行展示(可选)
203
+ 4. **组合能力 Demo**(P1):将相关联接口合并,展示完整使用链路
204
+
205
+ #### 2.4 异步回调链双计数器诊断模式(强制)
206
+
207
+ 对任何 Demo 中涉及「调用库函数 → 等待回调」的异步链路,**必须**在 Demo 设计中规划双计数器:
208
+
209
+ | 计数器位置 | 变量名建议 | 含义 |
210
+ |-----------|----------|------|
211
+ | 调用/分发前(在触发代码中) | `xxxDispatchCount` | 调用/触发动作的执行次数 |
212
+ | 回调内部(在 `onXxx` 回调方法中) | `xxxCallbackCount` | 回调实际被触发的次数 |
213
+
214
+ 两个计数器都必须在 Demo 页面的**验证区域**中展示(Text 组件),且**必须声明为 `@State`**。
215
+
216
+ 诊断规则:
217
+ - `dispatchCount > 0` 且 `callbackCount = 0` → 调用成功但回调未触发,问题在回调注册或平台事件链
218
+ - `dispatchCount = 0` → 触发代码未执行,问题在 Demo 的触发逻辑
219
+ - `dispatchCount = callbackCount > 0` → 链路完全正常
220
+
221
+ ---
222
+
223
+ ### 阶段三:生成输出文档
224
+
225
+ #### 3.1 文档拆分执行
226
+
227
+ 根据"文档模式选择"部分的规则已确定输出模式,执行以下步骤:
228
+
229
+ **多文档拆分原则(仅在多文档模式下执行):**
230
+
231
+ 1. **按功能模块拆分**:每个文档对应一个或几个功能内聚的模块
232
+ 2. **全局连续编号(强制)**:Demo 序号和接口覆盖矩阵序号在所有文档中保持全局唯一且连续
233
+ 3. **每个文档独立完整**:每个拆分文档都包含完整的"概述 → Demo 总览 → 测试 Demo 描述列表 → 接口覆盖矩阵"结构
234
+ 4. **概述中标注分册信息**:注明当前文档是第几部分、覆盖哪些模块,以及其他部分的文件名
235
+
236
+ #### 3.2 输出文件结构
237
+
238
+ **单文档模式文件名**:`{库名}未覆盖接口Demo场景.md`(与覆盖率报告同目录)
239
+
240
+ **多文档模式文件名**:`{库名}未覆盖接口Demo场景({中文数字}){模块主题}.md`
241
+
242
+ **文档结构(每个文档均遵循):**
243
+
244
+ ```markdown
245
+ # {库名} 未覆盖接口 Demo 场景[({分册编号}){模块主题}]
246
+
247
+ ## 概述
248
+
249
+ 简要说明本文档基于覆盖率报告({覆盖率报告文件名},当前覆盖率 {X}%)生成,
250
+ 规划 {N} 个未覆盖接口的 Demo 场景,补充后覆盖率达到 100%。
251
+ [多文档模式] 注明:本文档为第 X 部分,共 Y 部分,覆盖 {模块名} 模块。
252
+
253
+ ## Demo 总览
254
+
255
+ | Demo 数量 | 覆盖接口数量 | 补充前覆盖率 | 补充后覆盖率 | 生成日期 |
256
+ |----------|------------|------------|------------|---------|
257
+ | N 个 | M 个 | {X}% | 100% | YYYY-MM-DD |
258
+
259
+ ## 测试 Demo 描述列表
260
+
261
+ | 序号 | 测试 Demo 名称 | 测试 Demo 描述 | 测试 Demo 步骤 | 测试 Demo 预期结果 | 对应函数接口 |
262
+ |-----|--------------|--------------|--------------|-----------------|------------|
263
+ | {全局起始序号} | ... | ... | ... | ... | ... |
264
+
265
+ ## 接口覆盖矩阵
266
+
267
+ | 序号 | 接口签名 | 接口类型 | 所在 Demo | 覆盖状态 |
268
+ |-----|---------|---------|----------|---------|
269
+ | {全局起始序号} | `{签名}` | {类型} | {Demo名称} | ✅ 已规划Demo |
270
+ ```
271
+
272
+ #### 3.3 表格内容规范
273
+
274
+ - **序号**:全局自增整数,单文档模式从 1 开始;多文档模式保持全局唯一且连续
275
+ - **测试 Demo 名称**:简洁明了,不超过 20 字
276
+ - **测试 Demo 描述**:2-4 句话,说明功能、目的和覆盖接口
277
+ - **测试 Demo 步骤**:编号列表,每步骤一行,具体可执行,含接口调用位置
278
+ - **测试 Demo 预期结果**:编号列表,具体可验证的观测指标
279
+ - **对应函数接口**:列出所有相关接口的完整签名(来自覆盖率报告"签名"列)
280
+
281
+ #### 3.4 步骤写作规范
282
+
283
+ 步骤描述必须以"Demo 页面"为视角,包含以下维度:
284
+
285
+ ```
286
+ - 页面构建:构建什么样的页面(按钮、输入框、展示区)
287
+ - 交互触发:点击什么触发哪个接口调用
288
+ - 参数传递:传入什么参数
289
+ - 结果展示:如何在页面上展示接口返回结果
290
+ - 验证方式:如何判断接口行为符合预期
291
+ ```
292
+
293
+ ---
294
+
295
+ ### 阶段四:质量校验
296
+
297
+ 生成文档前完成以下检查:
298
+
299
+ | 检查项 | 标准 |
300
+ |-------|------|
301
+ | 接口覆盖完整性 | 覆盖率报告中每个未覆盖接口至少被一个 Demo 覆盖,补充后覆盖率达到 100% |
302
+ | 内容真实性 | 所有接口签名、功能描述与覆盖率报告严格一致 |
303
+ | 步骤可执行性 | 步骤描述足够具体,开发者可按步骤实现 |
304
+ | 预期结果可验证 | 每条预期结果可观测、可判断 |
305
+ | 无死按钮 | Demo 中每个可触发接口调用的按钮都有设备可观测的预期结果 |
306
+ | @State 完整性 | 所有计数器、状态标志变量都注明须声明为 `@State`;异步回调链已规划双计数器 |
307
+ | Demo 名称清晰 | 名称能准确反映 Demo 的核心目的 |
308
+ | 无遗漏未覆盖接口 | 接口覆盖矩阵中所有未覆盖接口均已标记「✅ 已规划Demo」 |
309
+
310
+ ---
311
+
312
+ ## 注意事项
313
+
314
+ 1. **只覆盖未覆盖接口**:严格对照覆盖率报告中的"未覆盖接口清单",不重复设计已有 demo 覆盖的接口
315
+ 2. **签名准确**:涉及的功能点中接口签名必须与覆盖率报告"签名"列完全一致,不自行推断参数
316
+ 3. **场景可执行**:每个 Demo 的步骤描述必须能转化为可运行的 ArkTS 代码
317
+ 4. **合并合理**:存在明确调用依赖关系的接口可合并到一个场景;不同功能方向的接口必须独立场景
318
+ 5. **Native 跳过**:`lib*.so` 导出的 Native 模块接口不纳入场景生成范围
319
+ 6. **常量类不规划独立 Demo**:纯常量类(如 `BleMsg`、`BluetoothGattCharacteristic` 等 `public static readonly` 常量集合)已被覆盖率报告过滤,禁止为其规划"常量展示页"Demo。常量无行为逻辑、无运行时回归价值,开发者通过 `import` 引用即可,不纳入 Demo 覆盖目标
320
+ 7. **覆盖率报告自包含**:覆盖率报告的未覆盖清单已包含签名和功能描述,无需额外读取接口规格文档
321
+ 8. **输出目录默认**:若未指定 `outputDir`,输出至覆盖率报告所在目录
@@ -0,0 +1,100 @@
1
+ # 示例:测试 Demo 描述文档
2
+
3
+ 本文档展示使用 `ohos-arkts-demo-doc-generator` 技能针对一个虚构的图像处理鸿蒙原生库(`ohos-blur-kit`)生成的测试 Demo 描述文档示例。
4
+
5
+ > 📌 注意:以下所有接口均为示范用途,实际生成时应严格依据真实规格文档。
6
+
7
+ ---
8
+
9
+ ## 假设的接口规格文档(输入)
10
+
11
+ ```typescript
12
+ // Index.ets - 导出接口清单
13
+
14
+ // 图像模糊处理管理类
15
+ export class BlurManager {
16
+ constructor(radius: number)
17
+ blur(pixelMap: PixelMap): Promise<PixelMap>
18
+ blurSync(pixelMap: PixelMap): PixelMap
19
+ setRadius(radius: number): void
20
+ getRadius(): number
21
+ release(): void
22
+ }
23
+
24
+ // 工具函数
25
+ export function createBlurConfig(radius: number, mode: BlurMode): BlurConfig
26
+ export function isSupported(): boolean
27
+
28
+ // 枚举
29
+ export enum BlurMode {
30
+ GAUSSIAN = 'gaussian',
31
+ STACK = 'stack',
32
+ BOX = 'box'
33
+ }
34
+
35
+ // 接口
36
+ export interface BlurConfig {
37
+ radius: number
38
+ mode: BlurMode
39
+ quality?: number
40
+ }
41
+
42
+ // 常量
43
+ export const VERSION: string
44
+ ```
45
+
46
+ ---
47
+
48
+ ## 生成的输出文档示例
49
+
50
+ 以下为技能输出的 `ohos-blur-kit测试demo描述.md` 内容:
51
+
52
+ ---
53
+
54
+ # ohos-blur-kit 测试 Demo 描述文档
55
+
56
+ ## 概述
57
+
58
+ 本文档基于 `ohos-blur-kit` 库的接口规格说明文档自动生成,提供该库各接口的 ArkTS 测试 Demo 描述,供开发者参考实现功能验证页面。文档按功能相关性对接口进行分组,每组接口对应一个 Demo 页面描述。
59
+
60
+ ## Demo 总览
61
+
62
+ | Demo 数量 | 覆盖接口数量 | 生成日期 |
63
+ |----------|------------|---------|
64
+ | 4 个 | 8 个 | 2026-03-11 |
65
+
66
+ ## 测试 Demo 描述列表
67
+
68
+ | 序号 | 测试 Demo 名称 | 测试 Demo 描述 | 测试 Demo 步骤 | 测试 Demo 预期结果 | 对应函数接口 |
69
+ |-----|--------------|--------------|--------------|-----------------|------------|
70
+ | 1 | 环境检测与配置创建 Demo | 展示如何在使用 BlurManager 前检测当前设备是否支持模糊能力,以及如何通过 `createBlurConfig()` 创建合法的模糊配置对象。帮助开发者理解使用前置条件检查和配置初始化的标准流程。 | 1. 创建 Demo 页面,包含"检测支持"按钮、BlurMode 选择器(Gaussian/Stack/Box)、radius 输入框和"创建配置"按钮,以及 JSON 展示区域。<br>2. 点击"检测支持"按钮,调用 `isSupported()`,将返回的布尔值显示在页面上("当前设备支持模糊 ✅" 或 "当前设备不支持 ❌")。<br>3. 选择 BlurMode 并输入 radius 值,点击"创建配置"按钮,调用 `createBlurConfig(radius, mode)`。<br>4. 在 JSON 展示区域展示返回的 `BlurConfig` 对象,格式化显示 radius、mode、quality 字段。 | 1. 页面加载完成,按钮与选择器可正常操作。<br>2. 调用 `isSupported()` 返回布尔值,页面相应显示支持/不支持状态。<br>3. 调用 `createBlurConfig()` 后成功返回 `BlurConfig` 对象,页面格式化展示该对象的 radius 和 mode 字段,无抛出异常。 | `isSupported(): boolean`<br>`createBlurConfig(radius: number, mode: BlurMode): BlurConfig` |
71
+ | 2 | BlurManager 生命周期管理 Demo | 展示 `BlurManager` 的完整生命周期:构造(传入 radius)、设置/获取 radius、最终释放资源。帮助开发者理解 BlurManager 对象的创建方式、radius 属性的读写机制,以及释放资源的时机。 | 1. 创建 Demo 页面,包含 radius 输入框、"创建 BlurManager"按钮、新 radius 输入框、"更新 radius"按钮、"获取 radius"按钮和"释放"按钮,以及状态日志区域。<br>2. 填写 radius 值(如 15),点击"创建 BlurManager",调用 `new BlurManager(15)`,在日志区域显示"BlurManager 已创建,初始 radius=15"。<br>3. 修改 radius 值(如 25),点击"更新 radius",调用 `setRadius(25)`,日志显示"radius 已更新为 25"。<br>4. 点击"获取 radius",调用 `getRadius()`,日志显示"当前 radius=25",验证与上一步设置一致。<br>5. 点击"释放",调用 `release()`,日志显示"BlurManager 已释放",此后操作按钮禁用。 | 1. `new BlurManager(radius)` 成功创建实例,无异常。<br>2. `setRadius(newValue)` 调用后,再次 `getRadius()` 返回与设置值一致,验证读写一致性。<br>3. `release()` 调用后页面日志提示释放成功,后续调用不再可用(按钮变灰)。<br>4. 整个生命周期无内存泄漏提示,无崩溃。 | `new BlurManager(radius: number)`<br>`setRadius(radius: number): void`<br>`getRadius(): number`<br>`release(): void` |
72
+ | 3 | 同步图像模糊处理 Demo | 展示使用 `blurSync()` 对 PixelMap 进行同步模糊处理的完整流程,帮助开发者理解同步调用方式、传参规范及处理后图像的获取与展示。 | 1. 创建 Demo 页面,包含"选择图片"按钮(调用图库选择器)、原图展示区域、radius 滑动条、"执行同步模糊"按钮和模糊后图片展示区域。<br>2. 点击"选择图片",从图库选取一张图片,在原图展示区域预览。<br>3. 拖动 radius 滑动条调整模糊半径(范围 1-50)。<br>4. 点击"执行同步模糊",创建 `BlurManager(radius)`,调用 `blurSync(pixelMap)`,传入原图 PixelMap。<br>5. 将返回的 PixelMap 在模糊后图片展示区域显示,并在图片下方标注"模糊半径: {radius}"。 | 1. 选图后原图在页面正常预览。<br>2. `blurSync()` 同步返回处理后的 PixelMap,页面立即更新展示模糊后图片。<br>3. 模糊后图片的尺寸(宽高像素数)与原图一致,仅视觉效果有模糊。<br>4. 调整不同 radius 值后重复操作,模糊程度随 radius 增大而加深。<br>5. 无异常抛出,UI 线程无卡顿超过 3 秒的提示。 | `new BlurManager(radius: number)`<br>`blurSync(pixelMap: PixelMap): PixelMap` |
73
+ | 4 | 异步图像模糊处理 Demo | 展示使用 `blur()` 对 PixelMap 进行异步模糊处理的完整流程,以及与同步方式的对比体验。帮助开发者理解 Promise 异步调用方式、await 使用规范,以及如何在 ArkTS 中处理异步返回结果。 | 1. 创建 Demo 页面,包含"选择图片"按钮、原图展示区域、radius 输入框、"执行异步模糊"按钮、Loading 指示器和模糊后图片展示区域。<br>2. 选取一张图片,在原图区域预览。<br>3. 输入 radius 值,点击"执行异步模糊",按钮变为禁用状态,显示 Loading 指示器。<br>4. 调用 `await blurManager.blur(pixelMap)`,等待 Promise resolve。<br>5. Promise 完成后,隐藏 Loading、启用按钮,将返回的 PixelMap 在结果区域显示,下方标注"异步模糊完成,耗时: {ms}ms"。 | 1. 点击"执行异步模糊"后,按钮立即变为禁用,Loading 指示器显示,表明异步任务已开始。<br>2. `blur()` 返回的 Promise 正常 resolve,Loading 消失,模糊后图片显示在结果区域。<br>3. 模糊后图片尺寸与原图一致,视觉上出现模糊效果。<br>4. UI 线程在等待期间不冻结(可滚动页面或切换其他控件)。<br>5. 页面正确展示异步耗时,无 Promise reject 或未捕获异常。 | `new BlurManager(radius: number)`<br>`blur(pixelMap: PixelMap): Promise<PixelMap>` |
74
+
75
+ ## 接口覆盖矩阵
76
+
77
+ | 序号 | 接口名称 | 所在 Demo | 覆盖状态 |
78
+ |-----|---------|----------|---------|
79
+ | 1 | `isSupported(): boolean` | 环境检测与配置创建 Demo | ✅ 已覆盖 |
80
+ | 2 | `createBlurConfig(radius, mode): BlurConfig` | 环境检测与配置创建 Demo | ✅ 已覆盖 |
81
+ | 3 | `new BlurManager(radius: number)` | BlurManager 生命周期管理 Demo / 同步模糊 Demo / 异步模糊 Demo | ✅ 已覆盖 |
82
+ | 4 | `setRadius(radius: number): void` | BlurManager 生命周期管理 Demo | ✅ 已覆盖 |
83
+ | 5 | `getRadius(): number` | BlurManager 生命周期管理 Demo | ✅ 已覆盖 |
84
+ | 6 | `release(): void` | BlurManager 生命周期管理 Demo | ✅ 已覆盖 |
85
+ | 7 | `blurSync(pixelMap: PixelMap): PixelMap` | 同步图像模糊处理 Demo | ✅ 已覆盖 |
86
+ | 8 | `blur(pixelMap: PixelMap): Promise<PixelMap>` | 异步图像模糊处理 Demo | ✅ 已覆盖 |
87
+
88
+ ---
89
+
90
+ ## 关键生成规则说明
91
+
92
+ 上述示例展示了以下技能规则的应用:
93
+
94
+ 1. **生命周期合并**:`constructor`、`setRadius`、`getRadius`、`release` 四个接口合并到一个 Demo,因为它们共同描述 `BlurManager` 的完整生命周期管理流程。
95
+
96
+ 2. **前置条件合并**:`isSupported()` 与 `createBlurConfig()` 合并到一个 Demo,因为它们都属于"使用前准备"阶段,且 `createBlurConfig` 的结果可作为构造函数的配置依据。
97
+
98
+ 3. **异步/同步分开**:`blur()` 和 `blurSync()` 虽然功能类似,但因调用方式(异步 vs 同步)差异明显,分别在独立 Demo 中展示,便于开发者对比。
99
+
100
+ 4. **以页面为载体**:每个步骤都明确描述了对应的 UI 组件(按钮、展示区、日志区等)和用户操作,使开发者可直接按步骤实现 Demo 页面。