@ohos-cpf/3rdloop 0.0.2 → 0.0.4

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 (393) hide show
  1. package/README.md +290 -244
  2. package/bin/3rdloop.mjs +46 -46
  3. package/lib/cli.js +781 -781
  4. package/lib/config-cmd.js +451 -451
  5. package/lib/config.js +318 -318
  6. package/lib/doctor.js +113 -113
  7. package/lib/exit-codes.js +30 -30
  8. package/lib/opencode.js +155 -155
  9. package/lib/orch.js +426 -426
  10. package/lib/queries.js +263 -263
  11. package/lib/step.js +325 -325
  12. package/lib/ui.js +222 -222
  13. package/lib/update.js +279 -279
  14. package/lib/workflow.js +308 -308
  15. package/lib/workflows.js +131 -131
  16. package/package.json +50 -50
  17. package/vendor/Server/Agent/SkillSelector/README.md +343 -343
  18. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
  19. package/vendor/Server/Agent/SkillSelector/index.js +14 -14
  20. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
  21. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
  22. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
  23. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
  24. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
  27. package/vendor/Server/Brain/Brain.js +686 -686
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -196
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -251
  31. package/vendor/Server/Brain/index.js +11 -11
  32. package/vendor/Server/CLI/cli.js +275 -275
  33. package/vendor/Server/CLI/deveco-code/index.js +71 -71
  34. package/vendor/Server/CLI/deveco-code.js +5 -5
  35. package/vendor/Server/CLI/opencode/index.js +817 -818
  36. package/vendor/Server/CLI/opencode.js +5 -5
  37. package/vendor/Server/DbUse/MessageArchive.js +61 -61
  38. package/vendor/Server/DbUse/StorageManager.js +107 -107
  39. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
  40. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
  41. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
  42. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
  43. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
  44. package/vendor/Server/DbUse/index.js +160 -160
  45. package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
  46. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
  47. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
  48. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
  49. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
  50. package/vendor/Server/FlexRunner/index.js +12 -12
  51. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
  52. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
  53. package/vendor/Server/Knowledge/index.js +33 -33
  54. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
  55. package/vendor/Server/LoopEngine/index.js +11 -11
  56. package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
  57. package/vendor/Server/Orchestrator/StepNode.js +312 -312
  58. package/vendor/Server/Orchestrator/index.js +13 -13
  59. package/vendor/Server/Routes/controllers/BrainController.js +241 -241
  60. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
  61. package/vendor/Server/Routes/controllers/HealthController.js +44 -44
  62. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
  63. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
  64. package/vendor/Server/Routes/controllers/StatsController.js +57 -57
  65. package/vendor/Server/Routes/controllers/StreamController.js +67 -67
  66. package/vendor/Server/Routes/library/logger.js +179 -179
  67. package/vendor/Server/Routes/library/zipArchive.js +172 -172
  68. package/vendor/Server/Routes/router/Router.js +204 -204
  69. package/vendor/Server/Routes/routes/brain.js +47 -47
  70. package/vendor/Server/Routes/routes/flexrunner.js +72 -72
  71. package/vendor/Server/Routes/routes/health.js +28 -28
  72. package/vendor/Server/Routes/routes/index.js +57 -57
  73. package/vendor/Server/Routes/routes/knowledge.js +55 -55
  74. package/vendor/Server/Routes/routes/loopengine.js +58 -58
  75. package/vendor/Server/Routes/routes/orchestrator.js +61 -61
  76. package/vendor/Server/Routes/routes/registry.js +97 -97
  77. package/vendor/Server/Routes/routes/stats.js +23 -23
  78. package/vendor/Server/Routes/routes/stream.js +30 -30
  79. package/vendor/Server/Routes/server.js +203 -203
  80. package/vendor/Server/Routes/sse/SseHub.js +308 -308
  81. package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
  83. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
  84. package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
  85. package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
  86. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
  87. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
  88. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
  89. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
  90. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
  93. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
  94. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
  95. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
  100. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
  101. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
  104. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
  105. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
  106. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
  108. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
  109. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
  117. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
  118. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
  119. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
  120. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
  121. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
  122. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
  123. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
  125. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
  126. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
  127. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
  131. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
  132. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
  133. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
  134. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
  139. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
  140. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
  144. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
  145. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
  146. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
  147. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
  148. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
  150. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
  151. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
  152. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
  153. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
  156. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
  157. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
  158. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
  159. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
  160. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
  161. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
  162. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
  163. package/vendor/Server/Skills/flutter-interface/README.md +75 -75
  164. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
  165. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
  166. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
  167. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
  168. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
  169. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
  171. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
  172. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
  173. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
  174. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
  175. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
  176. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
  177. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
  178. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
  182. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
  183. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
  184. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
  185. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
  186. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
  187. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
  188. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
  189. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
  190. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
  191. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
  192. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
  193. package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
  194. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
  195. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
  196. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
  197. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
  198. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
  199. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
  200. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
  201. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
  202. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
  203. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
  204. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
  207. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
  208. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
  209. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
  214. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
  215. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
  216. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
  217. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
  218. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
  224. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
  225. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
  226. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
  227. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
  235. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
  236. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
  237. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
  240. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
  241. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
  242. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
  246. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
  247. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
  248. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
  249. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
  250. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
  252. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
  253. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
  254. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
  255. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
  258. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
  259. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
  260. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
  261. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
  262. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
  263. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
  264. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
  265. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
  268. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
  269. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
  270. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
  286. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
  287. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
  288. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
  294. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
  295. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
  296. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
  299. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
  300. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
  301. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
  302. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
  303. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
  304. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
  311. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
  312. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
  313. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
  314. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
  318. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
  319. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
  320. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
  324. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
  325. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
  326. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
  327. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
  335. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
  336. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
  337. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
  338. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
  340. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
  341. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
  342. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
  343. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
  349. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
  350. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
  351. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
  352. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
  353. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
  354. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
  355. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
  356. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
  357. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
  358. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
  359. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
  360. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
  361. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
  362. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
  363. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
  364. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
  365. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
  366. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
  367. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
  368. package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
  369. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
  370. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
  371. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
  372. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
  373. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
  374. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
  375. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
  376. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
  378. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
  379. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
  380. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
  381. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
  382. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
  383. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
  384. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
  385. package/vendor/Server/TestCheck/TestCheck.js +775 -775
  386. package/vendor/Server/TestCheck/index.js +11 -11
  387. package/vendor/Server/library/McpToolGuide.js +280 -280
  388. package/vendor/Server/library/StatsService.js +126 -126
  389. package/vendor/Server/library/cstTime.js +16 -16
  390. package/vendor/VERSION +3 -3
  391. package/workflows/pr-check.mjs +105 -105
  392. package/workflows/pr-push.mjs +192 -192
  393. package/vendor/Server/Agent/SkillSelector/types.js +0 -63
@@ -1,554 +1,554 @@
1
- ---
2
- name: rnoh-lib-demo-doc
3
- description: >-
4
- 基于 RN 鸿蒙三方库的接口规格(interface-spec.json)生成 Demo 描述说明文档。
5
- 当接口规格说明书(Markdown)缺失时,自动调用 script_rn_render_spec_doc 从规格 JSON
6
- 或源码生成说明书,再结合源码补充默认值、错误码、事件名、平台差异等细节,
7
- 以函数/接口为单位生成 HarmonyOS 平台可用的测试 Demo 描述(名称、描述、步骤、预期结果、对应接口),
8
- 以表格形式汇总输出为"{库名}RN测试demo描述.md"。
9
- 自动检查是否已有 Demo 描述文档,若已存在则调用 script_rn_analyze_demo_coverage 扫描覆盖率,
10
- 仅针对未覆盖的接口生成 Demo 描述(增量模式),避免重复生成。
11
- 当需要为 RN 鸿蒙三方库规划 Demo 验证方案、生成可执行测试描述文档、
12
- 补全缺失 Demo 的描述、或仅有接口规格 JSON 而缺少人类可读说明书时使用此技能。
13
- license: Apache-2.0
14
- compatibility: 需要 MCP Gateway 运行中(script_rn_extract_interfaces、script_rn_render_spec_doc),需要文件读取与写入权限
15
- metadata:
16
- version: "1.0.0"
17
- category: rn-testing
18
- language: JavaScript/TypeScript/React Native
19
- useWhen: 基于 RN 鸿蒙三方库接口规格生成 Demo 描述文档
20
- consumed-by: rnohLibDemoCreateSkill
21
- ---
22
-
23
- # RN 鸿蒙三方库 Demo 描述文档生成
24
-
25
- 本技能基于 **RN 鸿蒙三方库的接口规格**(`interface-spec.json`),在接口规格说明书缺失时自动补全,自动扫描 Demo 覆盖率确定全量/增量模式,结合源码补充细节,生成 HarmonyOS 平台可用的测试 Demo 描述文档,输出为 `{库名}RN测试demo描述.md`。
26
-
27
- > ⚠️ **核心约束**:所有 Demo 内容必须基于接口规格与源码中真实存在的接口和功能生成,严禁凭空捏造不存在的接口、参数或行为。每个 Demo 步骤中的按钮必须有可观测的预期结果(禁止"死按钮")。
28
- >
29
- > 🎯 **两种模式(自动判定)**:
30
- > - **全量模式**:Demo 描述文档不存在时,对规格中所有 HarmonyOS 可用接口生成 Demo 描述
31
- > - **增量模式**:Demo 描述文档已存在时,扫描覆盖率,仅针对未覆盖接口生成 Demo 描述
32
-
33
- ---
34
-
35
- ## 任务参数
36
-
37
- | 参数 | 类型 | 必填 | 说明 |
38
- |------|------|------|------|
39
- | `libroot` | string | ✅* | RN 三方库鸿蒙化仓库根目录(含 `package.json`) |
40
- | `spec` | string | ✅* | 已有的 `interface-spec.json` 路径(与 `libroot` 二选一,优先使用) |
41
- | `specDoc` | string | ❌ | 接口规格说明书(Markdown)路径;缺失时自动生成 |
42
- | `coverageReport` | string | ❌ | 已有的 Demo 覆盖率报告(Markdown)路径;**提供时跳过 Phase 1 & Phase 2,直接进入 Phase 3 解析报告** |
43
- | `output` | string | ❌ | 输出文件路径,默认 `{libroot}/{库名}RN测试demo描述.md` |
44
- | `version` | string | ❌ | 上游 npm 版本号(如 `2.2.0`),未指定时自动推断 |
45
-
46
- > `libroot` 与 `spec` 至少提供一个。提供 `spec` 时直接使用;仅提供 `libroot` 时需先提取接口规格。
47
- >
48
- > **模式自动判定**:Phase 3 自动检查是否已有 Demo 描述文档并执行覆盖率扫描。文档不存在 → 全量模式;文档已存在 → 增量模式(仅未覆盖接口)。
49
- >
50
- > **覆盖率报告快捷路径**:当提供 `coverageReport` 参数(或调用方直接指定已有报告路径)时,**跳过 Phase 1(接口规格获取)和 Phase 2(接口规格说明书补全)**,直接进入 Phase 3 解析已有覆盖率报告。覆盖率报告中已包含未覆盖接口的名称、类型、参数、返回类型等详情,Phase 4 源码分析可补充精确签名,无需生成全量 `interface-spec.json` 和接口规格说明书。
51
-
52
- **派生变量**:
53
- - `skillDir`:本 SKILL 所在目录
54
- - `libName`:从 `package.json` 的 `name` 字段提取
55
- - `outputPath`:`output` 参数或默认 `{libroot}/{libName}RN测试demo描述.md`
56
- - `hasCoverageReport`:是否提供了已有覆盖率报告(`coverageReport` 参数非空),为 true 时跳过 Phase 1 & 2
57
- - `mode`:Phase 3 确定为 `full`(全量)或 `incremental`(增量)
58
- - `coveredSet`:Phase 3 构建的已覆盖接口集合
59
- - `uncoveredList`:Phase 3 构建的未覆盖接口列表
60
- - `coverageReportPath`:Phase 3 使用的覆盖率报告路径(已有报告或新生成的报告)
61
-
62
- ---
63
-
64
- ## 输入依赖
65
-
66
- - **前置SKILL**: `rnoh-lib-code-adapt`(可选;提供鸿蒙化仓库源码)
67
- - **输入文件**: 接口规格 JSON(`interface-spec.json`)或库源码目录;**可选**已有 Demo 覆盖率报告(Markdown)
68
- - **MCP工具**: `script_rn_extract_interfaces`、`script_rn_render_spec_doc`、`script_rn_analyze_demo_coverage`(提供 `coverageReport` 时前两个工具不调用)
69
- - **输出文件**: `{libName}RN测试demo描述.md`(Markdown Demo 描述文档)
70
-
71
- ---
72
-
73
- ## 工作流程概览
74
-
75
- ### 标准路径(无已有覆盖率报告)
76
-
77
- ```
78
- Phase 1: 接口规格获取(JSON 读取 / 源码提取)
79
-
80
- Phase 2: 接口规格说明书补全(缺失时调用 script_rn_render_spec_doc)
81
-
82
- Phase 3: Demo 覆盖率扫描(检查已有文档 + 调用 script_rn_analyze_demo_coverage)
83
-
84
- Phase 4: 源码补充分析(默认值、错误码、事件名、平台差异)
85
-
86
- Phase 5: 接口能力清单构建 + HarmonyOS 平台过滤 + 覆盖率增量过滤
87
-
88
- Phase 6: Demo 设计与分组(五要素 + 双计数器 + useState 规则)
89
-
90
- Phase 7: 文档生成与质量校验
91
- ```
92
-
93
- ### 快捷路径(提供已有覆盖率报告时)
94
-
95
- ```
96
- Phase 1: ⏭️ 跳过(覆盖率报告已含未覆盖接口详情)
97
-
98
- Phase 2: ⏭️ 跳过(无需全量接口规格说明书)
99
-
100
- Phase 3: 解析已有覆盖率报告(提取未覆盖接口列表 + 确定增量模式)
101
-
102
- Phase 4: 源码补充分析(从未覆盖接口的源码中提取精确签名、默认值、平台差异)
103
-
104
- Phase 5: 接口能力清单构建 + HarmonyOS 平台过滤 + 覆盖率增量过滤
105
-
106
- Phase 6: Demo 设计与分组(五要素 + 双计数器 + useState 规则)
107
-
108
- Phase 7: 文档生成与质量校验
109
- ```
110
-
111
- > **路径判定**:`hasCoverageReport` 为 true 时走快捷路径,跳过 Phase 1 & 2;否则走标准路径。
112
- >
113
- > Phase 3 在接口规格就绪后(标准路径)或直接从覆盖率报告入口(快捷路径)、源码分析前执行,确定全量/增量模式及待生成接口范围。
114
-
115
- ---
116
-
117
- ## Phase 1:接口规格获取
118
-
119
- > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true(提供了已有覆盖率报告)时,**跳过整个 Phase 1**。覆盖率报告中已包含未覆盖接口的名称、类型、参数、返回类型,Phase 4 源码分析将补充精确签名。直接进入 Phase 3。
120
-
121
- ### 1.1 判断输入来源
122
-
123
- 根据参数判断接口规格的获取路径:
124
-
125
- | 输入情况 | 获取方式 |
126
- |----------|----------|
127
- | 提供了 `spec`(JSON 路径) | 直接读取 JSON 文件 |
128
- | 仅提供 `libroot`,仓库内已有 `interface-spec.json` | 读取该文件 |
129
- | 仅提供 `libroot`,无现成 JSON | 调用 MCP 工具提取(见 1.2) |
130
-
131
- ### 1.2 调用 MCP 工具提取接口规格(必要时)
132
-
133
- 当没有现成的 `interface-spec.json` 时,调用 MCP 脚本工具:
134
-
135
- ```
136
- 调用 script_rn_extract_interfaces:
137
- - libroot: {{libroot}}
138
- - output: {{libroot}}/interface-spec.json
139
- - version: {{version}}(可选)
140
- ```
141
-
142
- 脚本自动完成:拉取上游 npm 源码(`index.js`/`index.d.ts`)、提取本地 TurboModule Spec(`Native*.ts`)、解析 JS 层导出和类型定义,输出 JSON 接口规格文件。
143
-
144
- ### 1.3 解析接口规格 JSON
145
-
146
- 读取 `interface-spec.json`,提取以下核心信息:
147
-
148
- - **库名称**:用于输出文件命名
149
- - **导出函数列表**:函数名、参数、返回值、功能描述
150
- - **导出类/对象列表**:类名(如 `NativeModules.XxxModule`)、方法列表
151
- - **React 组件列表**:组件名、Props 类型、事件回调 Props(onXxx)
152
- - **Hooks 列表**:Hook 函数名、参数、返回值
153
- - **接口/类型定义**:TypeScript interface / type alias
154
- - **枚举/常量列表**:枚举名、常量名及含义
155
- - **事件列表**:NativeEventEmitter 事件名称及回调数据格式
156
- - **TurboModule Spec**:原生模块方法签名
157
-
158
- ---
159
-
160
- ## Phase 2:接口规格说明书补全
161
-
162
- > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true 时,**跳过整个 Phase 2**。增量模式下仅需针对未覆盖接口生成 Demo 描述,覆盖率报告 + Phase 4 源码分析已提供足够信息,无需生成全量接口规格说明书。
163
-
164
- ### 2.1 判断说明书是否存在
165
-
166
- 检查 `specDoc` 参数指向的 Markdown 文件是否存在,或在 `libroot` 下搜索 `*接口规格说明*.md`、`*API文档*.md`。
167
-
168
- ### 2.2 缺失时自动生成
169
-
170
- 当接口规格说明书缺失时,调用 MCP 脚本工具从 JSON 规格或源码生成:
171
-
172
- ```
173
- 调用 script_rn_render_spec_doc:
174
- - spec: {{libroot}}/interface-spec.json
175
- - libroot: {{libroot}}(与 spec 二选一)
176
- - output: {{libroot}}/{libName}接口规格说明.md
177
- ```
178
-
179
- 脚本将 JSON 接口规格渲染为人类可读的 Markdown 说明书文档。
180
-
181
- ### 2.3 读取说明书
182
-
183
- 读取生成的或已有的接口规格说明书,作为 Demo 设计的主要依据。说明书中的平台差异标注、参数说明、示例代码将用于 Demo 步骤编写。
184
-
185
- > 接口规格说明书渲染的详细说明参见 [script_rn_render_spec_doc 文档](https://gitcode.com/OpenHarmony-RN)
186
-
187
- ---
188
-
189
- ## Phase 3:Demo 覆盖率扫描
190
-
191
- > 本阶段在接口规格就绪后(标准路径)或直接作为入口(快捷路径)、源码分析前执行,确定全量/增量模式及待生成接口范围。
192
- >
193
- > **快捷路径**:当 `hasCoverageReport` 为 true 时,跳过 3.1(文档检查可选)和 3.2(覆盖率扫描),直接执行 3.3(解析已有报告)和 3.4(确定模式)。
194
-
195
- ### 3.1 检查已有 Demo 描述文档
196
-
197
- > 快捷路径下此步骤可选,仅用于记录文档是否存在。
198
-
199
- 在 `libroot` 目录下查找是否已存在 Demo 描述文档:
200
-
201
- | 查找目标 | 文件名模式 |
202
- |----------|-----------|
203
- | Demo 描述文档 | `{libName}RN测试demo描述.md` |
204
-
205
- | 查找结果 | 后续动作 |
206
- |----------|----------|
207
- | 文档不存在 | 进入全量模式,扫描覆盖率用于记录基线(可选) |
208
- | 文档已存在 | 进入增量模式,需扫描覆盖率找出未覆盖接口 |
209
-
210
- ### 3.2 执行 Demo 覆盖率扫描
211
-
212
- > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true 时,**跳过此步骤**,直接使用 `coverageReport` 参数指向的已有报告,进入 3.3 解析。
213
-
214
- 调用 MCP 脚本工具分析现有 Demo 对接口的覆盖情况:
215
-
216
- ```
217
- 调用 script_rn_analyze_demo_coverage:
218
- - libroot: {{libroot}}
219
- - spec: {{libroot}}/interface-spec.json
220
- - output: {{libroot}}/02-{libName}-Demo覆盖率报告.md
221
- - mode: auto(可选)
222
- - version: {{version}}(可选)
223
- ```
224
-
225
- 脚本自动完成:检测 Demo 源码目录(`example/src` 等)、扫描源码文件、AST/正则匹配接口调用、生成 Markdown 覆盖率报告。
226
-
227
- > 该脚本即为 `rnoh-lib-demo-coverage` SKILL 调用的脚本,详见同目录 Skill 说明。
228
-
229
- ### 3.3 解析覆盖率报告
230
-
231
- 读取覆盖率报告(快捷路径下为 `coverageReport` 参数指向的已有报告;标准路径下为 3.2 生成的报告),提取关键信息:
232
-
233
- | 报告章节 | 提取内容 | 用途 |
234
- |----------|----------|------|
235
- | 覆盖率总览 | 总接口数 N、已覆盖数 M、未覆盖数、覆盖率百分比 | 记录基线统计 |
236
- | 已覆盖接口详情 | 接口名、类名、覆盖来源文件 | 构建 `coveredSet` |
237
- | 未覆盖接口详情 | 接口名、类名、参数、返回类型、说明 | 构建 `uncoveredList` |
238
-
239
- ### 3.4 确定模式与待生成范围
240
-
241
- 根据 3.1 的查找结果和 3.3 的解析结果确定模式:
242
-
243
- | 条件 | 模式 | 待生成范围 |
244
- |------|------|-----------|
245
- | 文档不存在 | 全量模式 | 所有 HarmonyOS 可用接口(Phase 5 过滤后) |
246
- | 文档已存在,未覆盖接口 > 0 | 增量模式 | 仅未覆盖接口(经 Phase 5 平台过滤后) |
247
- | 文档已存在,未覆盖接口 = 0 | 终止 | 输出"所有接口已覆盖,无需生成新 Demo" |
248
-
249
- **派生变量更新**:
250
- - `mode`:`full` 或 `incremental`
251
- - `coveredSet`:已覆盖接口集合(类名.方法名)
252
- - `uncoveredList`:未覆盖接口列表(含详细信息)
253
- - `coverageReportPath`:覆盖率报告路径(快捷路径下为 `coverageReport` 参数值)
254
-
255
- > 覆盖率报告解析的详细规则与边界处理参见 [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md)
256
-
257
- ---
258
-
259
- ## Phase 4:源码补充分析
260
-
261
- > **快捷路径下本阶段尤为关键**:由于跳过了 Phase 1 & 2,未覆盖接口的精确签名、默认值、回调数据格式等信息需完全从源码中提取。从覆盖率报告中获取未覆盖接口的类名和接口名后,定位到对应源码文件读取详细实现。
262
-
263
- > ⚠️ **源码分析边界(强制)**:本阶段提取的信息**仅用于完善 Demo 步骤细节**(函数签名、参数类型、默认值、事件名称、回调数据结构等)。**严禁**将源码中的平台分支判断(`Platform.OS`)、TurboModule Spec 定义情况、原生实现是否存在等作为 Phase 5 平台过滤的依据。平台过滤的唯一依据是 README 文档的「HarmonyOS Support」标注(详见 Phase 5.2)。原因:源码中缺失鸿蒙实现可能是**适配遗漏**而非官方不支持,需通过 Demo 验证来发现此类问题,而非在过滤阶段直接排除。
264
-
265
- 接口规格 JSON 和说明书可能未覆盖所有细节,需结合源码补充:
266
-
267
- ### 4.1 读取源码关键文件
268
-
269
- | 文件 | 补充内容 |
270
- |------|----------|
271
- | `src/index.ts` / `index.js` | 导出方式、默认导出、命名导出 |
272
- | `src/*.d.ts` | 类型定义、参数详细类型、可选参数 |
273
- | `harmony/xxx/TurboModule.ts` | TurboModule 方法签名、原生事件定义(仅用于补充签名,不用于判断平台支持) |
274
- | `src/constants.ts` | 常量值、枚举实际值 |
275
- | `README.md` | 使用示例、平台差异说明、已知限制 |
276
- | `.upstream-cache/*/src/*.tsx` | 上游源码(快捷路径下从覆盖率报告的接口名定位到此处的精确签名) |
277
-
278
- ### 4.2 接口名 → 源码位置定位策略
279
-
280
- 从 `uncoveredList` 中每个接口的类名 + 接口名出发,按以下优先级定位源码定义位置:
281
-
282
- | 优先级 | 搜索范围 | 搜索模式 | 适用场景 |
283
- |--------|----------|----------|----------|
284
- | 1 | `src/specs/Native*.ts` | `interface.*{接口名}` 或 `{接口名}.*:` | TurboModule/Fabric 层接口(fabric 层级) |
285
- | 2 | `.upstream-cache/*/src/*.tsx` | `export.*{接口名}` 或 `function {接口名}` 或 `const {接口名}` | JS 层导出函数/变量/Hook |
286
- | 3 | `.upstream-cache/*/src/*.ts` | `export.*{接口名}` 或 `interface {接口名}` | 类型定义/接口定义 |
287
- | 4 | `src/*.tsx` / `src/*.ts` | 同上 | 鸿蒙化仓库本地覆盖的源码 |
288
- | 5 | `lib/typescript/*.d.ts` | `{接口名}` | 编译后的类型声明文件(兜底) |
289
-
290
- **定位后提取内容**:
291
- - 完整函数签名(参数名、参数类型、可选标记、返回类型)
292
- - JSDoc 注释(`@param`、`@returns`、`@deprecated`、平台标注)
293
- - 类型注解和 interface 定义
294
- - 默认参数值(如 `timeout = 10000`)
295
-
296
- > **搜索工具**:使用 `grep` 搜索 `export (const|function|interface|type) {接口名}` 定位定义点,或直接搜索 `{接口名}` 在源码中的出现位置。覆盖率报告中的"层级"字段(js/fabric)可用于优先选择搜索范围。
297
-
298
- ### 4.3 接口别名/重复检测
299
-
300
- 未覆盖接口可能是其他接口的别名(常见于 `@deprecated` 废弃接口)。检测别名关系有助于 Demo 分组和行为一致性验证:
301
-
302
- | 别名模式 | 源码特征 | 检测方法 | 示例 |
303
- |----------|----------|----------|------|
304
- | 变量别名 | `export const A = B` | 搜索 `export const {接口名} = ` | `export const SafeAreaContext = SafeAreaInsetsContext` |
305
- | 函数别名 | `export function A() { return B() }` | 搜索 `function {接口名}` + 函数体是否仅 `return B()` | `export function useSafeArea() { return useSafeAreaInsets() }` |
306
- | 属性别名 | `export const A = B.Consumer` 或 `export const A = B.Provider` | 搜索 `= .*\.Consumer` / `= .*\.Provider` | `export const SafeAreaConsumer = SafeAreaInsetsContext.Consumer` |
307
- | 常量派生 | `export const A = B?.insets` 或 `export const A = B?.x` | 搜索 `= .*\.?.*` 模式 | `export const initialWindowSafeAreaInsets = initialWindowMetrics?.insets` |
308
- | 接口继承 | `interface A extends B` | 搜索 `interface {接口名} extends` | `interface SafeAreaProviderProps extends ViewProps` |
309
-
310
- **别名关系记录**:为每个检测到别名关系的接口记录:
311
- - `aliasTarget`:别名指向的原始接口名
312
- - `aliasType`:别名模式(变量别名/函数别名/属性别名/常量派生)
313
- - `isDeprecated`:是否标记为 `@deprecated`
314
-
315
- > **别名关系在 Phase 6 的用途**:同一底层 API 的多个别名优先合并到同一 Demo,并在 Demo 描述中说明别名关系和 `@deprecated` 状态。Demo 步骤中验证别名与原始接口行为一致性(返回值对比、`===` 引用比较等)。详见 [Demo 设计规则 §6.7 废弃别名模式](references/DEMO_DESIGN_RULES.md)。
316
-
317
- ### 4.4 提取补充信息
318
-
319
- 从源码注释和实现中提取:
320
-
321
- - **默认参数值**:函数参数的默认值(如 `timeout = 10000`)
322
- - **错误码/异常类型**:throw 语句、Promise reject 的错误对象
323
- - **事件名称**:`NativeEventEmitter` 发出的事件名字符串
324
- - **平台差异标注**:`Platform.OS === 'ios'` / `'android'` / `'harmony'` 判断
325
- - **回调数据格式**:事件回调的数据结构字段
326
- - **使用示例**:README 或注释中的代码示例
327
- - **README 接口说明表**:README.md 中若包含"HarmonyOS平台支持"列表格,提取每个接口的平台支持状态(yes/no/partially),作为 Phase 5 平台过滤的**唯一依据**(详见 Phase 5.2)。**注意**:README 中未列出的接口视为无平台标注,默认跨平台,不因源码缺失实现而排除
328
-
329
- > 源码补充信息仅用于完善 Demo 步骤细节(函数签名、参数类型、默认值、事件名称、回调数据格式等),不得引入规格中未定义的接口。
330
- >
331
- > ⚠️ **平台过滤边界**:源码中的 `Platform.OS` 分支判断、TurboModule Spec 是否定义、原生层是否实现等信息**不作为**平台过滤依据。这些信息仅用于 Demo 步骤设计(如标注"建议验证 HarmonyOS 平台实际可用性")和预期结果诊断指标设计(如"若回调未触发,可能为鸿蒙化适配遗漏")。
332
-
333
- ---
334
-
335
- ## Phase 5:接口能力清单构建 + 平台过滤 + 覆盖率增量过滤
336
-
337
- ### 5.1 构建接口能力清单
338
-
339
- 将 Phase 1-4 获取的信息整合为内部能力清单(不写入输出文件):
340
-
341
- ```
342
- 能力清单结构:
343
- ┌─────────────────────────────────────────────────┐
344
- │ HarmonyOS 平台可用接口 │
345
- │ 模块 A(NativeModules / TurboModules) │
346
- │ - methodA(param): Promise<Result> [✅ 跨平台]│
347
- │ - methodB(): void [✅ 鸿蒙支持]│
348
- │ - methodC(): void [❌ iOS 专用]│
349
- │ 模块 B(React 组件) │
350
- │ - <ComponentX prop1={} onEvent={} /> │
351
- │ 模块 C(Hook) │
352
- │ - useXxxHook(config): { value, setValue } │
353
- │ 事件:XxxModule.addListener('eventName', cb) │
354
- │ 常量:MODULE_CONSTANTS.KEY = 'value' │
355
- └─────────────────────────────────────────────────┘
356
- ```
357
-
358
- ### 5.2 HarmonyOS 平台过滤
359
-
360
- > ⚠️ **过滤依据(强制)**:平台过滤**仅依据 README 文档**的「HarmonyOS Support」列(或等效的接口说明表/平台支持表)。**禁止**通过源码(`Platform.OS` 分支判断、TurboModule Spec 定义、原生实现是否存在)进行平台过滤。原因:源码中缺失鸿蒙实现可能是**适配遗漏**而非官方不支持,需通过 Demo 验证来发现此类问题,而非在过滤阶段直接排除。
361
-
362
- #### 5.2.1 数据源
363
-
364
- | 数据源 | 用途 | 说明 |
365
- |--------|------|------|
366
- | README.md「接口说明」/「HarmonyOS Support」列 | **唯一过滤依据** | 鸿蒙化维护者在 README 中标注的平台支持状态(yes/no/partially)代表官方确认的支持情况 |
367
- | 接口规格 JSON / 说明书中的平台标注 | 辅助参考 | 标准/快捷路径下,若 README 无平台支持表但接口规格 JSON 中有平台标注,可作为辅助依据 |
368
- | 源码 `Platform.OS` 分支 | **禁止用于过滤** | 仅用于 Demo 步骤设计,标注平台行为差异 |
369
- | TurboModule Spec 定义情况 | **禁止用于过滤** | 仅用于补充签名信息 |
370
- | 原生层实现是否存在 | **禁止用于过滤** | 缺失可能是适配遗漏 |
371
-
372
- #### 5.2.2 过滤规则
373
-
374
- | README「HarmonyOS Support」标注 | 处理方式 | 说明 |
375
- |--------------------------------|----------|------|
376
- | `no` | **排除**,不生成 Demo | 鸿蒙化维护者明确标注不支持 |
377
- | `yes` | **优先生成** Demo | 鸿蒙化维护者明确标注支持 |
378
- | `partially` | **生成 Demo**,步骤中标注部分支持 | 需在 Demo 步骤中说明哪些子功能可用 |
379
- | 接口在 README 接口表中**未列出** | **视为无平台标注**,默认跨平台,生成 Demo | 上游新增接口但鸿蒙化 README 未及时收录;可能是适配遗漏,需通过 Demo 验证发现 |
380
- | 无平台标注(README 有接口但无 Support 列) | 默认视为跨平台,生成 Demo 但建议验证 | 标准/快捷路径下 README 无平台支持表时的默认行为 |
381
-
382
- #### 5.2.3 排除接口记录
383
-
384
- 对每个排除的接口,记录以下信息用于输出文档:
385
-
386
- | 字段 | 说明 |
387
- |------|------|
388
- | 接口名称 | 被排除的接口签名 |
389
- | README 标注 | README「HarmonyOS Support」列的值(`no`) |
390
- | README 行号 | 标注所在行号(便于追溯) |
391
- | 排除原因 | 基于 README 文档标注排除 |
392
-
393
- > 排除接口清单需在输出文档中以独立章节呈现,明确标注排除依据为 README 文档标注(非源码分析)。
394
-
395
- #### 5.2.4 保留接口的 Demo 设计要求
396
-
397
- 对于 README 未列出或无平台标注而保留的接口,在 Demo 设计中须:
398
-
399
- 1. **Demo 描述中标注**:"README 中未列出此接口,建议验证 HarmonyOS 平台实际可用性"
400
- 2. **预期结果中设计诊断指标**:如"若回调未触发(callbackCount 保持 0),可能为鸿蒙化适配遗漏,需进一步排查"
401
- 3. **双计数器模式**:通过 callCount 与 callbackCount 的对比,诊断接口在 HarmonyOS 平台是否实际可用
402
-
403
- ### 5.3 覆盖率增量过滤(仅增量模式)
404
-
405
- 当 Phase 3 确定为增量模式时,在平台过滤之后额外执行覆盖率过滤:
406
-
407
- 将 5.2 平台过滤后的接口清单与 Phase 3 构建的 `coveredSet` 取差集,仅保留**未覆盖**的接口:
408
-
409
- ```
410
- 待生成接口 = (HarmonyOS 可用接口) - (coveredSet 中已覆盖接口)
411
- ```
412
-
413
- 记录以下信息用于输出文档的概述章节:
414
- - 增量模式标识
415
- - 覆盖率报告来源路径
416
- - 总接口数 / 已覆盖数 / 本次待生成数
417
- - 已排除的已覆盖接口列表(简要)
418
-
419
- > 当增量模式下未覆盖接口为空时,输出文档标注"所有 HarmonyOS 可用接口均已由现有 Demo 覆盖,无需生成新 Demo"。
420
- >
421
- > 覆盖率过滤的详细规则参见 [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md)
422
-
423
- ### 5.4 过滤结果汇总
424
-
425
- 经过 5.2(平台过滤)和 5.3(覆盖率过滤,如有)后,得到最终的**待生成 Demo 接口清单**:
426
-
427
- | 模式 | 过滤链 | 待生成范围 |
428
- |------|--------|-----------|
429
- | 全量模式 | 平台过滤 | 所有 HarmonyOS 可用接口 |
430
- | 增量模式 | 平台过滤 → 覆盖率过滤 | 仅 HarmonyOS 可用且未被现有 Demo 覆盖的接口 |
431
-
432
- ---
433
-
434
- ## Phase 6:Demo 设计与分组
435
-
436
- ### 6.1 Demo 分组原则
437
-
438
- **原则一**:每个待生成接口(Phase 5 过滤后)至少被一个 Demo 覆盖。
439
-
440
- > 全量模式下覆盖所有 HarmonyOS 可用接口;增量模式下仅覆盖未覆盖接口。
441
-
442
- **原则二**:关联接口可合并到同一 Demo(调用依赖、完整业务场景、同主题功能簇、事件配对)。
443
-
444
- > 增量模式下,若未覆盖接口与已覆盖接口存在调用依赖,可将未覆盖接口合并到新 Demo 中独立描述,不依赖已覆盖接口的 Demo 步骤。
445
-
446
- **原则三**:禁止无关合并,不同功能方向的接口不得强行合并。
447
-
448
- > 分组规则的完整说明与示例参见 [Demo 设计规则](references/DEMO_DESIGN_RULES.md)
449
-
450
- ### 6.2 Demo 五要素
451
-
452
- 每个 Demo 包含五个要素:
453
-
454
- | 要素 | 说明 |
455
- |------|------|
456
- | ① 名称 | `[功能动词/名词][操作对象][场景]Demo`,≤20字 |
457
- | ② 描述 | 2-4句话,说明功能、目的、覆盖接口,标注 HarmonyOS 特性 |
458
- | ③ 步骤 | 编号列表,以 RN 函数式组件为载体,含 useState/useEffect/接口调用/setXxx()更新 |
459
- | ④ 预期结果 | 编号列表,具体可观测指标,标注 HarmonyOS 平台预期行为 |
460
- | ⑤ 对应函数接口 | 列出该 Demo 涉及的所有函数签名 |
461
-
462
- ### 6.3 强制规则
463
-
464
- - **禁止死按钮**:每个按钮(触发接口调用的步骤)必须对应至少一条 UI 可观测的预期结果
465
- - **useState 强制更新**:所有计数器、状态标志变量必须通过 `setXxx()` 更新,否则 RN 不触发重新渲染
466
- - **异步回调双计数器**:涉及 Promise/事件回调的 Demo 必须设计双计数器(`callCount` + `callbackCount`),两者都须在验证区域展示并用 `useState` setter 更新
467
-
468
- > 双计数器模式与 useState 规则的详细说明参见 [Demo 设计规则](references/DEMO_DESIGN_RULES.md)
469
-
470
- ### 6.4 生成策略优先级
471
-
472
- 1. **核心功能 Demo**(P0):覆盖最主要的跨平台功能接口
473
- 2. **完整流程 Demo**(P1):展示"初始化 → 核心操作 → 释放"完整生命周期
474
- 3. **HarmonyOS 权限配置 Demo**(P1):若涉及权限需求
475
- 4. **组合能力 Demo**(P1):关联接口合并,展示完整使用链路
476
- 5. **参数变体 Demo**(P2):同一接口的不同参数组合(可选)
477
-
478
- ---
479
-
480
- ## Phase 7:文档生成与质量校验
481
-
482
- ### 7.1 生成输出文档
483
-
484
- 使用输出模板生成 `{libName}RN测试demo描述.md`,文档包含以下章节:
485
-
486
- 1. **概述**:文档目的、**来源声明**(根据路径动态生成)、平台说明、**模式标识**(全量/增量)
487
- 2. **Demo 总览**:Demo 数量、覆盖接口数量、生成日期
488
- 3. **测试 Demo 描述列表**:五列表格(序号、名称、描述、步骤、预期结果、对应接口)
489
- 4. **接口覆盖矩阵**:接口名称、所在 Demo、覆盖状态
490
-
491
- **概述章节来源声明规则**:
492
-
493
- | 路径 | 来源声明内容 |
494
- |------|------------|
495
- | 标准路径(全量模式) | "本文档基于 `{库名}` 库的接口规格(`interface-spec.json`)和接口规格说明书(`{libName}接口规格说明.md`)生成" |
496
- | 标准路径(增量模式) | "本文档基于 `{库名}` 库的接口规格和 Demo 覆盖率报告生成" |
497
- | 快捷路径(增量模式) | "本文档基于 `{库名}` 库的 Demo 覆盖率报告(`{coverageReport}`)和源码分析生成" |
498
-
499
- > ⚠️ 快捷路径下**不得**在概述中声称"基于接口规格(interface-spec.json)"或"基于接口规格说明书",因为这两个文件未生成。来源声明必须与实际使用的数据源一致。
500
-
501
- > 增量模式下,概述章节额外说明覆盖率报告来源、总接口数/已覆盖数/本次生成数。
502
-
503
- > 输出文档结构与字段规范参见 [输出格式规范](references/OUTPUT_FORMAT.md)
504
- > 可直接复制的输出模板参见 [Demo 文档模板](assets/DEMO_DOC_TEMPLATE.md)
505
-
506
- ### 7.2 质量校验
507
-
508
- 生成文档前完成以下检查:
509
-
510
- | 检查项 | 标准 |
511
- |--------|------|
512
- | 接口覆盖完整性 | 所有**待生成**接口(Phase 5 过滤后)至少被一个 Demo 覆盖 |
513
- | 增量模式一致性 | 增量模式下,输出文档中不包含已覆盖接口的 Demo(与覆盖率报告一致) |
514
- | 来源声明准确性 | 概述章节的来源声明与实际路径一致;快捷路径下不得提及 interface-spec.json 或接口规格说明书 |
515
- | 内容真实性 | 接口名称、参数类型、返回值与源码/规格严格一致 |
516
- | 步骤可执行性 | 步骤具体可执行,开发者可按步骤实现 Demo 页面 |
517
- | 预期结果可验证 | 每条预期结果可观测、可判断 |
518
- | 无死按钮 | 每个按钮有可观测预期结果;iOS/Android 专用接口不作为主步骤 |
519
- | useState 完整性 | 所有计数器/状态标志注明 `setXxx()` 更新;异步链路有双计数器(Hook/Context/常量模式无需双计数器,参见 Demo 设计规则 §6.1) |
520
- | 接口模式适配 | Demo 步骤与接口模式匹配(Hook 顶层调用、Consumer render props、HOC 包装等,参见 Demo 设计规则 §6) |
521
- | 平台差异标注 | HarmonyOS 平台差异在步骤中明确标注 |
522
- | iOS/Android 排除 | 已移除所有 README 标注 `no` 的接口的 Demo |
523
- | 平台过滤依据 | 平台过滤仅依据 README 文档标注,未使用源码(`Platform.OS` 分支、TurboModule Spec、原生实现)作为过滤依据;README 未列出的接口已保留并生成 Demo |
524
- | 未列出接口处理 | README 中未列出的接口已生成 Demo,Demo 描述中标注"建议验证",预期结果中设计诊断指标(回调未触发等) |
525
-
526
- > 完整质量检查清单参见 [质量检查清单](references/QUALITY_CHECKLIST.md)
527
-
528
- ### 7.3 输出产物
529
-
530
- 最终输出文件:
531
-
532
- - **`{outputPath}`** — `{libName}RN测试demo描述.md`,Demo 描述文档(**始终生成**)
533
-
534
- 标准路径额外产物(无已有覆盖率报告时):
535
-
536
- - **`{libroot}/interface-spec.json`** — 接口规格 JSON(若 Phase 1 生成了)
537
- - **`{libroot}/{libName}接口规格说明.md`** — 接口规格说明书(若 Phase 2 生成了)
538
- - **`{libroot}/02-{libName}-Demo覆盖率报告.md`** — Demo 覆盖率报告(若 Phase 3 生成了)
539
-
540
- > **快捷路径**(提供 `coverageReport` 时):仅生成 Demo 描述文档,不生成 `interface-spec.json`、接口规格说明书和覆盖率报告,避免冗余全量产物。
541
-
542
- 输出确认信息包含:生成的文件列表、**模式**(全量/增量)、**路径**(标准/快捷)、Demo 数量、覆盖接口数量、排除的 iOS/Android 接口列表。增量模式下额外输出:覆盖率报告来源、总接口数、已覆盖数、本次生成数。
543
-
544
- ---
545
-
546
- ## 参考资料
547
-
548
- - [Demo 设计规则](references/DEMO_DESIGN_RULES.md) — 分组原则、五要素、双计数器、useState 规则
549
- - [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md) — 覆盖率报告解析、已覆盖接口提取、增量过滤规则
550
- - [输出格式规范](references/OUTPUT_FORMAT.md) — 文档结构、表格格式、字段填写规范
551
- - [质量检查清单](references/QUALITY_CHECKLIST.md) — 完整质量校验项
552
- - [Demo 文档模板](assets/DEMO_DOC_TEMPLATE.md) — 可直接复制的输出模板
553
- - React Native 官方文档:https://reactnative.dev
554
- - RNOH 官方文档:https://gitcode.com/OpenHarmony-RN/usage-docs/tree/master/zh-cn
1
+ ---
2
+ name: rnoh-lib-demo-doc
3
+ description: >-
4
+ 基于 RN 鸿蒙三方库的接口规格(interface-spec.json)生成 Demo 描述说明文档。
5
+ 当接口规格说明书(Markdown)缺失时,自动调用 script_rn_render_spec_doc 从规格 JSON
6
+ 或源码生成说明书,再结合源码补充默认值、错误码、事件名、平台差异等细节,
7
+ 以函数/接口为单位生成 HarmonyOS 平台可用的测试 Demo 描述(名称、描述、步骤、预期结果、对应接口),
8
+ 以表格形式汇总输出为"{库名}RN测试demo描述.md"。
9
+ 自动检查是否已有 Demo 描述文档,若已存在则调用 script_rn_analyze_demo_coverage 扫描覆盖率,
10
+ 仅针对未覆盖的接口生成 Demo 描述(增量模式),避免重复生成。
11
+ 当需要为 RN 鸿蒙三方库规划 Demo 验证方案、生成可执行测试描述文档、
12
+ 补全缺失 Demo 的描述、或仅有接口规格 JSON 而缺少人类可读说明书时使用此技能。
13
+ license: Apache-2.0
14
+ compatibility: 需要 MCP Gateway 运行中(script_rn_extract_interfaces、script_rn_render_spec_doc),需要文件读取与写入权限
15
+ metadata:
16
+ version: "1.0.0"
17
+ category: rn-testing
18
+ language: JavaScript/TypeScript/React Native
19
+ useWhen: 基于 RN 鸿蒙三方库接口规格生成 Demo 描述文档
20
+ consumed-by: rnohLibDemoCreateSkill
21
+ ---
22
+
23
+ # RN 鸿蒙三方库 Demo 描述文档生成
24
+
25
+ 本技能基于 **RN 鸿蒙三方库的接口规格**(`interface-spec.json`),在接口规格说明书缺失时自动补全,自动扫描 Demo 覆盖率确定全量/增量模式,结合源码补充细节,生成 HarmonyOS 平台可用的测试 Demo 描述文档,输出为 `{库名}RN测试demo描述.md`。
26
+
27
+ > ⚠️ **核心约束**:所有 Demo 内容必须基于接口规格与源码中真实存在的接口和功能生成,严禁凭空捏造不存在的接口、参数或行为。每个 Demo 步骤中的按钮必须有可观测的预期结果(禁止"死按钮")。
28
+ >
29
+ > 🎯 **两种模式(自动判定)**:
30
+ > - **全量模式**:Demo 描述文档不存在时,对规格中所有 HarmonyOS 可用接口生成 Demo 描述
31
+ > - **增量模式**:Demo 描述文档已存在时,扫描覆盖率,仅针对未覆盖接口生成 Demo 描述
32
+
33
+ ---
34
+
35
+ ## 任务参数
36
+
37
+ | 参数 | 类型 | 必填 | 说明 |
38
+ |------|------|------|------|
39
+ | `libroot` | string | ✅* | RN 三方库鸿蒙化仓库根目录(含 `package.json`) |
40
+ | `spec` | string | ✅* | 已有的 `interface-spec.json` 路径(与 `libroot` 二选一,优先使用) |
41
+ | `specDoc` | string | ❌ | 接口规格说明书(Markdown)路径;缺失时自动生成 |
42
+ | `coverageReport` | string | ❌ | 已有的 Demo 覆盖率报告(Markdown)路径;**提供时跳过 Phase 1 & Phase 2,直接进入 Phase 3 解析报告** |
43
+ | `output` | string | ❌ | 输出文件路径,默认 `{libroot}/{库名}RN测试demo描述.md` |
44
+ | `version` | string | ❌ | 上游 npm 版本号(如 `2.2.0`),未指定时自动推断 |
45
+
46
+ > `libroot` 与 `spec` 至少提供一个。提供 `spec` 时直接使用;仅提供 `libroot` 时需先提取接口规格。
47
+ >
48
+ > **模式自动判定**:Phase 3 自动检查是否已有 Demo 描述文档并执行覆盖率扫描。文档不存在 → 全量模式;文档已存在 → 增量模式(仅未覆盖接口)。
49
+ >
50
+ > **覆盖率报告快捷路径**:当提供 `coverageReport` 参数(或调用方直接指定已有报告路径)时,**跳过 Phase 1(接口规格获取)和 Phase 2(接口规格说明书补全)**,直接进入 Phase 3 解析已有覆盖率报告。覆盖率报告中已包含未覆盖接口的名称、类型、参数、返回类型等详情,Phase 4 源码分析可补充精确签名,无需生成全量 `interface-spec.json` 和接口规格说明书。
51
+
52
+ **派生变量**:
53
+ - `skillDir`:本 SKILL 所在目录
54
+ - `libName`:从 `package.json` 的 `name` 字段提取
55
+ - `outputPath`:`output` 参数或默认 `{libroot}/{libName}RN测试demo描述.md`
56
+ - `hasCoverageReport`:是否提供了已有覆盖率报告(`coverageReport` 参数非空),为 true 时跳过 Phase 1 & 2
57
+ - `mode`:Phase 3 确定为 `full`(全量)或 `incremental`(增量)
58
+ - `coveredSet`:Phase 3 构建的已覆盖接口集合
59
+ - `uncoveredList`:Phase 3 构建的未覆盖接口列表
60
+ - `coverageReportPath`:Phase 3 使用的覆盖率报告路径(已有报告或新生成的报告)
61
+
62
+ ---
63
+
64
+ ## 输入依赖
65
+
66
+ - **前置SKILL**: `rnoh-lib-code-adapt`(可选;提供鸿蒙化仓库源码)
67
+ - **输入文件**: 接口规格 JSON(`interface-spec.json`)或库源码目录;**可选**已有 Demo 覆盖率报告(Markdown)
68
+ - **MCP工具**: `script_rn_extract_interfaces`、`script_rn_render_spec_doc`、`script_rn_analyze_demo_coverage`(提供 `coverageReport` 时前两个工具不调用)
69
+ - **输出文件**: `{libName}RN测试demo描述.md`(Markdown Demo 描述文档)
70
+
71
+ ---
72
+
73
+ ## 工作流程概览
74
+
75
+ ### 标准路径(无已有覆盖率报告)
76
+
77
+ ```
78
+ Phase 1: 接口规格获取(JSON 读取 / 源码提取)
79
+
80
+ Phase 2: 接口规格说明书补全(缺失时调用 script_rn_render_spec_doc)
81
+
82
+ Phase 3: Demo 覆盖率扫描(检查已有文档 + 调用 script_rn_analyze_demo_coverage)
83
+
84
+ Phase 4: 源码补充分析(默认值、错误码、事件名、平台差异)
85
+
86
+ Phase 5: 接口能力清单构建 + HarmonyOS 平台过滤 + 覆盖率增量过滤
87
+
88
+ Phase 6: Demo 设计与分组(五要素 + 双计数器 + useState 规则)
89
+
90
+ Phase 7: 文档生成与质量校验
91
+ ```
92
+
93
+ ### 快捷路径(提供已有覆盖率报告时)
94
+
95
+ ```
96
+ Phase 1: ⏭️ 跳过(覆盖率报告已含未覆盖接口详情)
97
+
98
+ Phase 2: ⏭️ 跳过(无需全量接口规格说明书)
99
+
100
+ Phase 3: 解析已有覆盖率报告(提取未覆盖接口列表 + 确定增量模式)
101
+
102
+ Phase 4: 源码补充分析(从未覆盖接口的源码中提取精确签名、默认值、平台差异)
103
+
104
+ Phase 5: 接口能力清单构建 + HarmonyOS 平台过滤 + 覆盖率增量过滤
105
+
106
+ Phase 6: Demo 设计与分组(五要素 + 双计数器 + useState 规则)
107
+
108
+ Phase 7: 文档生成与质量校验
109
+ ```
110
+
111
+ > **路径判定**:`hasCoverageReport` 为 true 时走快捷路径,跳过 Phase 1 & 2;否则走标准路径。
112
+ >
113
+ > Phase 3 在接口规格就绪后(标准路径)或直接从覆盖率报告入口(快捷路径)、源码分析前执行,确定全量/增量模式及待生成接口范围。
114
+
115
+ ---
116
+
117
+ ## Phase 1:接口规格获取
118
+
119
+ > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true(提供了已有覆盖率报告)时,**跳过整个 Phase 1**。覆盖率报告中已包含未覆盖接口的名称、类型、参数、返回类型,Phase 4 源码分析将补充精确签名。直接进入 Phase 3。
120
+
121
+ ### 1.1 判断输入来源
122
+
123
+ 根据参数判断接口规格的获取路径:
124
+
125
+ | 输入情况 | 获取方式 |
126
+ |----------|----------|
127
+ | 提供了 `spec`(JSON 路径) | 直接读取 JSON 文件 |
128
+ | 仅提供 `libroot`,仓库内已有 `interface-spec.json` | 读取该文件 |
129
+ | 仅提供 `libroot`,无现成 JSON | 调用 MCP 工具提取(见 1.2) |
130
+
131
+ ### 1.2 调用 MCP 工具提取接口规格(必要时)
132
+
133
+ 当没有现成的 `interface-spec.json` 时,调用 MCP 脚本工具:
134
+
135
+ ```
136
+ 调用 script_rn_extract_interfaces:
137
+ - libroot: {{libroot}}
138
+ - output: {{libroot}}/interface-spec.json
139
+ - version: {{version}}(可选)
140
+ ```
141
+
142
+ 脚本自动完成:拉取上游 npm 源码(`index.js`/`index.d.ts`)、提取本地 TurboModule Spec(`Native*.ts`)、解析 JS 层导出和类型定义,输出 JSON 接口规格文件。
143
+
144
+ ### 1.3 解析接口规格 JSON
145
+
146
+ 读取 `interface-spec.json`,提取以下核心信息:
147
+
148
+ - **库名称**:用于输出文件命名
149
+ - **导出函数列表**:函数名、参数、返回值、功能描述
150
+ - **导出类/对象列表**:类名(如 `NativeModules.XxxModule`)、方法列表
151
+ - **React 组件列表**:组件名、Props 类型、事件回调 Props(onXxx)
152
+ - **Hooks 列表**:Hook 函数名、参数、返回值
153
+ - **接口/类型定义**:TypeScript interface / type alias
154
+ - **枚举/常量列表**:枚举名、常量名及含义
155
+ - **事件列表**:NativeEventEmitter 事件名称及回调数据格式
156
+ - **TurboModule Spec**:原生模块方法签名
157
+
158
+ ---
159
+
160
+ ## Phase 2:接口规格说明书补全
161
+
162
+ > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true 时,**跳过整个 Phase 2**。增量模式下仅需针对未覆盖接口生成 Demo 描述,覆盖率报告 + Phase 4 源码分析已提供足够信息,无需生成全量接口规格说明书。
163
+
164
+ ### 2.1 判断说明书是否存在
165
+
166
+ 检查 `specDoc` 参数指向的 Markdown 文件是否存在,或在 `libroot` 下搜索 `*接口规格说明*.md`、`*API文档*.md`。
167
+
168
+ ### 2.2 缺失时自动生成
169
+
170
+ 当接口规格说明书缺失时,调用 MCP 脚本工具从 JSON 规格或源码生成:
171
+
172
+ ```
173
+ 调用 script_rn_render_spec_doc:
174
+ - spec: {{libroot}}/interface-spec.json
175
+ - libroot: {{libroot}}(与 spec 二选一)
176
+ - output: {{libroot}}/{libName}接口规格说明.md
177
+ ```
178
+
179
+ 脚本将 JSON 接口规格渲染为人类可读的 Markdown 说明书文档。
180
+
181
+ ### 2.3 读取说明书
182
+
183
+ 读取生成的或已有的接口规格说明书,作为 Demo 设计的主要依据。说明书中的平台差异标注、参数说明、示例代码将用于 Demo 步骤编写。
184
+
185
+ > 接口规格说明书渲染的详细说明参见 [script_rn_render_spec_doc 文档](https://gitcode.com/OpenHarmony-RN)
186
+
187
+ ---
188
+
189
+ ## Phase 3:Demo 覆盖率扫描
190
+
191
+ > 本阶段在接口规格就绪后(标准路径)或直接作为入口(快捷路径)、源码分析前执行,确定全量/增量模式及待生成接口范围。
192
+ >
193
+ > **快捷路径**:当 `hasCoverageReport` 为 true 时,跳过 3.1(文档检查可选)和 3.2(覆盖率扫描),直接执行 3.3(解析已有报告)和 3.4(确定模式)。
194
+
195
+ ### 3.1 检查已有 Demo 描述文档
196
+
197
+ > 快捷路径下此步骤可选,仅用于记录文档是否存在。
198
+
199
+ 在 `libroot` 目录下查找是否已存在 Demo 描述文档:
200
+
201
+ | 查找目标 | 文件名模式 |
202
+ |----------|-----------|
203
+ | Demo 描述文档 | `{libName}RN测试demo描述.md` |
204
+
205
+ | 查找结果 | 后续动作 |
206
+ |----------|----------|
207
+ | 文档不存在 | 进入全量模式,扫描覆盖率用于记录基线(可选) |
208
+ | 文档已存在 | 进入增量模式,需扫描覆盖率找出未覆盖接口 |
209
+
210
+ ### 3.2 执行 Demo 覆盖率扫描
211
+
212
+ > ⏭️ **快捷路径跳过**:当 `hasCoverageReport` 为 true 时,**跳过此步骤**,直接使用 `coverageReport` 参数指向的已有报告,进入 3.3 解析。
213
+
214
+ 调用 MCP 脚本工具分析现有 Demo 对接口的覆盖情况:
215
+
216
+ ```
217
+ 调用 script_rn_analyze_demo_coverage:
218
+ - libroot: {{libroot}}
219
+ - spec: {{libroot}}/interface-spec.json
220
+ - output: {{libroot}}/02-{libName}-Demo覆盖率报告.md
221
+ - mode: auto(可选)
222
+ - version: {{version}}(可选)
223
+ ```
224
+
225
+ 脚本自动完成:检测 Demo 源码目录(`example/src` 等)、扫描源码文件、AST/正则匹配接口调用、生成 Markdown 覆盖率报告。
226
+
227
+ > 该脚本即为 `rnoh-lib-demo-coverage` SKILL 调用的脚本,详见同目录 Skill 说明。
228
+
229
+ ### 3.3 解析覆盖率报告
230
+
231
+ 读取覆盖率报告(快捷路径下为 `coverageReport` 参数指向的已有报告;标准路径下为 3.2 生成的报告),提取关键信息:
232
+
233
+ | 报告章节 | 提取内容 | 用途 |
234
+ |----------|----------|------|
235
+ | 覆盖率总览 | 总接口数 N、已覆盖数 M、未覆盖数、覆盖率百分比 | 记录基线统计 |
236
+ | 已覆盖接口详情 | 接口名、类名、覆盖来源文件 | 构建 `coveredSet` |
237
+ | 未覆盖接口详情 | 接口名、类名、参数、返回类型、说明 | 构建 `uncoveredList` |
238
+
239
+ ### 3.4 确定模式与待生成范围
240
+
241
+ 根据 3.1 的查找结果和 3.3 的解析结果确定模式:
242
+
243
+ | 条件 | 模式 | 待生成范围 |
244
+ |------|------|-----------|
245
+ | 文档不存在 | 全量模式 | 所有 HarmonyOS 可用接口(Phase 5 过滤后) |
246
+ | 文档已存在,未覆盖接口 > 0 | 增量模式 | 仅未覆盖接口(经 Phase 5 平台过滤后) |
247
+ | 文档已存在,未覆盖接口 = 0 | 终止 | 输出"所有接口已覆盖,无需生成新 Demo" |
248
+
249
+ **派生变量更新**:
250
+ - `mode`:`full` 或 `incremental`
251
+ - `coveredSet`:已覆盖接口集合(类名.方法名)
252
+ - `uncoveredList`:未覆盖接口列表(含详细信息)
253
+ - `coverageReportPath`:覆盖率报告路径(快捷路径下为 `coverageReport` 参数值)
254
+
255
+ > 覆盖率报告解析的详细规则与边界处理参见 [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md)
256
+
257
+ ---
258
+
259
+ ## Phase 4:源码补充分析
260
+
261
+ > **快捷路径下本阶段尤为关键**:由于跳过了 Phase 1 & 2,未覆盖接口的精确签名、默认值、回调数据格式等信息需完全从源码中提取。从覆盖率报告中获取未覆盖接口的类名和接口名后,定位到对应源码文件读取详细实现。
262
+
263
+ > ⚠️ **源码分析边界(强制)**:本阶段提取的信息**仅用于完善 Demo 步骤细节**(函数签名、参数类型、默认值、事件名称、回调数据结构等)。**严禁**将源码中的平台分支判断(`Platform.OS`)、TurboModule Spec 定义情况、原生实现是否存在等作为 Phase 5 平台过滤的依据。平台过滤的唯一依据是 README 文档的「HarmonyOS Support」标注(详见 Phase 5.2)。原因:源码中缺失鸿蒙实现可能是**适配遗漏**而非官方不支持,需通过 Demo 验证来发现此类问题,而非在过滤阶段直接排除。
264
+
265
+ 接口规格 JSON 和说明书可能未覆盖所有细节,需结合源码补充:
266
+
267
+ ### 4.1 读取源码关键文件
268
+
269
+ | 文件 | 补充内容 |
270
+ |------|----------|
271
+ | `src/index.ts` / `index.js` | 导出方式、默认导出、命名导出 |
272
+ | `src/*.d.ts` | 类型定义、参数详细类型、可选参数 |
273
+ | `harmony/xxx/TurboModule.ts` | TurboModule 方法签名、原生事件定义(仅用于补充签名,不用于判断平台支持) |
274
+ | `src/constants.ts` | 常量值、枚举实际值 |
275
+ | `README.md` | 使用示例、平台差异说明、已知限制 |
276
+ | `.upstream-cache/*/src/*.tsx` | 上游源码(快捷路径下从覆盖率报告的接口名定位到此处的精确签名) |
277
+
278
+ ### 4.2 接口名 → 源码位置定位策略
279
+
280
+ 从 `uncoveredList` 中每个接口的类名 + 接口名出发,按以下优先级定位源码定义位置:
281
+
282
+ | 优先级 | 搜索范围 | 搜索模式 | 适用场景 |
283
+ |--------|----------|----------|----------|
284
+ | 1 | `src/specs/Native*.ts` | `interface.*{接口名}` 或 `{接口名}.*:` | TurboModule/Fabric 层接口(fabric 层级) |
285
+ | 2 | `.upstream-cache/*/src/*.tsx` | `export.*{接口名}` 或 `function {接口名}` 或 `const {接口名}` | JS 层导出函数/变量/Hook |
286
+ | 3 | `.upstream-cache/*/src/*.ts` | `export.*{接口名}` 或 `interface {接口名}` | 类型定义/接口定义 |
287
+ | 4 | `src/*.tsx` / `src/*.ts` | 同上 | 鸿蒙化仓库本地覆盖的源码 |
288
+ | 5 | `lib/typescript/*.d.ts` | `{接口名}` | 编译后的类型声明文件(兜底) |
289
+
290
+ **定位后提取内容**:
291
+ - 完整函数签名(参数名、参数类型、可选标记、返回类型)
292
+ - JSDoc 注释(`@param`、`@returns`、`@deprecated`、平台标注)
293
+ - 类型注解和 interface 定义
294
+ - 默认参数值(如 `timeout = 10000`)
295
+
296
+ > **搜索工具**:使用 `grep` 搜索 `export (const|function|interface|type) {接口名}` 定位定义点,或直接搜索 `{接口名}` 在源码中的出现位置。覆盖率报告中的"层级"字段(js/fabric)可用于优先选择搜索范围。
297
+
298
+ ### 4.3 接口别名/重复检测
299
+
300
+ 未覆盖接口可能是其他接口的别名(常见于 `@deprecated` 废弃接口)。检测别名关系有助于 Demo 分组和行为一致性验证:
301
+
302
+ | 别名模式 | 源码特征 | 检测方法 | 示例 |
303
+ |----------|----------|----------|------|
304
+ | 变量别名 | `export const A = B` | 搜索 `export const {接口名} = ` | `export const SafeAreaContext = SafeAreaInsetsContext` |
305
+ | 函数别名 | `export function A() { return B() }` | 搜索 `function {接口名}` + 函数体是否仅 `return B()` | `export function useSafeArea() { return useSafeAreaInsets() }` |
306
+ | 属性别名 | `export const A = B.Consumer` 或 `export const A = B.Provider` | 搜索 `= .*\.Consumer` / `= .*\.Provider` | `export const SafeAreaConsumer = SafeAreaInsetsContext.Consumer` |
307
+ | 常量派生 | `export const A = B?.insets` 或 `export const A = B?.x` | 搜索 `= .*\.?.*` 模式 | `export const initialWindowSafeAreaInsets = initialWindowMetrics?.insets` |
308
+ | 接口继承 | `interface A extends B` | 搜索 `interface {接口名} extends` | `interface SafeAreaProviderProps extends ViewProps` |
309
+
310
+ **别名关系记录**:为每个检测到别名关系的接口记录:
311
+ - `aliasTarget`:别名指向的原始接口名
312
+ - `aliasType`:别名模式(变量别名/函数别名/属性别名/常量派生)
313
+ - `isDeprecated`:是否标记为 `@deprecated`
314
+
315
+ > **别名关系在 Phase 6 的用途**:同一底层 API 的多个别名优先合并到同一 Demo,并在 Demo 描述中说明别名关系和 `@deprecated` 状态。Demo 步骤中验证别名与原始接口行为一致性(返回值对比、`===` 引用比较等)。详见 [Demo 设计规则 §6.7 废弃别名模式](references/DEMO_DESIGN_RULES.md)。
316
+
317
+ ### 4.4 提取补充信息
318
+
319
+ 从源码注释和实现中提取:
320
+
321
+ - **默认参数值**:函数参数的默认值(如 `timeout = 10000`)
322
+ - **错误码/异常类型**:throw 语句、Promise reject 的错误对象
323
+ - **事件名称**:`NativeEventEmitter` 发出的事件名字符串
324
+ - **平台差异标注**:`Platform.OS === 'ios'` / `'android'` / `'harmony'` 判断
325
+ - **回调数据格式**:事件回调的数据结构字段
326
+ - **使用示例**:README 或注释中的代码示例
327
+ - **README 接口说明表**:README.md 中若包含"HarmonyOS平台支持"列表格,提取每个接口的平台支持状态(yes/no/partially),作为 Phase 5 平台过滤的**唯一依据**(详见 Phase 5.2)。**注意**:README 中未列出的接口视为无平台标注,默认跨平台,不因源码缺失实现而排除
328
+
329
+ > 源码补充信息仅用于完善 Demo 步骤细节(函数签名、参数类型、默认值、事件名称、回调数据格式等),不得引入规格中未定义的接口。
330
+ >
331
+ > ⚠️ **平台过滤边界**:源码中的 `Platform.OS` 分支判断、TurboModule Spec 是否定义、原生层是否实现等信息**不作为**平台过滤依据。这些信息仅用于 Demo 步骤设计(如标注"建议验证 HarmonyOS 平台实际可用性")和预期结果诊断指标设计(如"若回调未触发,可能为鸿蒙化适配遗漏")。
332
+
333
+ ---
334
+
335
+ ## Phase 5:接口能力清单构建 + 平台过滤 + 覆盖率增量过滤
336
+
337
+ ### 5.1 构建接口能力清单
338
+
339
+ 将 Phase 1-4 获取的信息整合为内部能力清单(不写入输出文件):
340
+
341
+ ```
342
+ 能力清单结构:
343
+ ┌─────────────────────────────────────────────────┐
344
+ │ HarmonyOS 平台可用接口 │
345
+ │ 模块 A(NativeModules / TurboModules) │
346
+ │ - methodA(param): Promise<Result> [✅ 跨平台]│
347
+ │ - methodB(): void [✅ 鸿蒙支持]│
348
+ │ - methodC(): void [❌ iOS 专用]│
349
+ │ 模块 B(React 组件) │
350
+ │ - <ComponentX prop1={} onEvent={} /> │
351
+ │ 模块 C(Hook) │
352
+ │ - useXxxHook(config): { value, setValue } │
353
+ │ 事件:XxxModule.addListener('eventName', cb) │
354
+ │ 常量:MODULE_CONSTANTS.KEY = 'value' │
355
+ └─────────────────────────────────────────────────┘
356
+ ```
357
+
358
+ ### 5.2 HarmonyOS 平台过滤
359
+
360
+ > ⚠️ **过滤依据(强制)**:平台过滤**仅依据 README 文档**的「HarmonyOS Support」列(或等效的接口说明表/平台支持表)。**禁止**通过源码(`Platform.OS` 分支判断、TurboModule Spec 定义、原生实现是否存在)进行平台过滤。原因:源码中缺失鸿蒙实现可能是**适配遗漏**而非官方不支持,需通过 Demo 验证来发现此类问题,而非在过滤阶段直接排除。
361
+
362
+ #### 5.2.1 数据源
363
+
364
+ | 数据源 | 用途 | 说明 |
365
+ |--------|------|------|
366
+ | README.md「接口说明」/「HarmonyOS Support」列 | **唯一过滤依据** | 鸿蒙化维护者在 README 中标注的平台支持状态(yes/no/partially)代表官方确认的支持情况 |
367
+ | 接口规格 JSON / 说明书中的平台标注 | 辅助参考 | 标准/快捷路径下,若 README 无平台支持表但接口规格 JSON 中有平台标注,可作为辅助依据 |
368
+ | 源码 `Platform.OS` 分支 | **禁止用于过滤** | 仅用于 Demo 步骤设计,标注平台行为差异 |
369
+ | TurboModule Spec 定义情况 | **禁止用于过滤** | 仅用于补充签名信息 |
370
+ | 原生层实现是否存在 | **禁止用于过滤** | 缺失可能是适配遗漏 |
371
+
372
+ #### 5.2.2 过滤规则
373
+
374
+ | README「HarmonyOS Support」标注 | 处理方式 | 说明 |
375
+ |--------------------------------|----------|------|
376
+ | `no` | **排除**,不生成 Demo | 鸿蒙化维护者明确标注不支持 |
377
+ | `yes` | **优先生成** Demo | 鸿蒙化维护者明确标注支持 |
378
+ | `partially` | **生成 Demo**,步骤中标注部分支持 | 需在 Demo 步骤中说明哪些子功能可用 |
379
+ | 接口在 README 接口表中**未列出** | **视为无平台标注**,默认跨平台,生成 Demo | 上游新增接口但鸿蒙化 README 未及时收录;可能是适配遗漏,需通过 Demo 验证发现 |
380
+ | 无平台标注(README 有接口但无 Support 列) | 默认视为跨平台,生成 Demo 但建议验证 | 标准/快捷路径下 README 无平台支持表时的默认行为 |
381
+
382
+ #### 5.2.3 排除接口记录
383
+
384
+ 对每个排除的接口,记录以下信息用于输出文档:
385
+
386
+ | 字段 | 说明 |
387
+ |------|------|
388
+ | 接口名称 | 被排除的接口签名 |
389
+ | README 标注 | README「HarmonyOS Support」列的值(`no`) |
390
+ | README 行号 | 标注所在行号(便于追溯) |
391
+ | 排除原因 | 基于 README 文档标注排除 |
392
+
393
+ > 排除接口清单需在输出文档中以独立章节呈现,明确标注排除依据为 README 文档标注(非源码分析)。
394
+
395
+ #### 5.2.4 保留接口的 Demo 设计要求
396
+
397
+ 对于 README 未列出或无平台标注而保留的接口,在 Demo 设计中须:
398
+
399
+ 1. **Demo 描述中标注**:"README 中未列出此接口,建议验证 HarmonyOS 平台实际可用性"
400
+ 2. **预期结果中设计诊断指标**:如"若回调未触发(callbackCount 保持 0),可能为鸿蒙化适配遗漏,需进一步排查"
401
+ 3. **双计数器模式**:通过 callCount 与 callbackCount 的对比,诊断接口在 HarmonyOS 平台是否实际可用
402
+
403
+ ### 5.3 覆盖率增量过滤(仅增量模式)
404
+
405
+ 当 Phase 3 确定为增量模式时,在平台过滤之后额外执行覆盖率过滤:
406
+
407
+ 将 5.2 平台过滤后的接口清单与 Phase 3 构建的 `coveredSet` 取差集,仅保留**未覆盖**的接口:
408
+
409
+ ```
410
+ 待生成接口 = (HarmonyOS 可用接口) - (coveredSet 中已覆盖接口)
411
+ ```
412
+
413
+ 记录以下信息用于输出文档的概述章节:
414
+ - 增量模式标识
415
+ - 覆盖率报告来源路径
416
+ - 总接口数 / 已覆盖数 / 本次待生成数
417
+ - 已排除的已覆盖接口列表(简要)
418
+
419
+ > 当增量模式下未覆盖接口为空时,输出文档标注"所有 HarmonyOS 可用接口均已由现有 Demo 覆盖,无需生成新 Demo"。
420
+ >
421
+ > 覆盖率过滤的详细规则参见 [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md)
422
+
423
+ ### 5.4 过滤结果汇总
424
+
425
+ 经过 5.2(平台过滤)和 5.3(覆盖率过滤,如有)后,得到最终的**待生成 Demo 接口清单**:
426
+
427
+ | 模式 | 过滤链 | 待生成范围 |
428
+ |------|--------|-----------|
429
+ | 全量模式 | 平台过滤 | 所有 HarmonyOS 可用接口 |
430
+ | 增量模式 | 平台过滤 → 覆盖率过滤 | 仅 HarmonyOS 可用且未被现有 Demo 覆盖的接口 |
431
+
432
+ ---
433
+
434
+ ## Phase 6:Demo 设计与分组
435
+
436
+ ### 6.1 Demo 分组原则
437
+
438
+ **原则一**:每个待生成接口(Phase 5 过滤后)至少被一个 Demo 覆盖。
439
+
440
+ > 全量模式下覆盖所有 HarmonyOS 可用接口;增量模式下仅覆盖未覆盖接口。
441
+
442
+ **原则二**:关联接口可合并到同一 Demo(调用依赖、完整业务场景、同主题功能簇、事件配对)。
443
+
444
+ > 增量模式下,若未覆盖接口与已覆盖接口存在调用依赖,可将未覆盖接口合并到新 Demo 中独立描述,不依赖已覆盖接口的 Demo 步骤。
445
+
446
+ **原则三**:禁止无关合并,不同功能方向的接口不得强行合并。
447
+
448
+ > 分组规则的完整说明与示例参见 [Demo 设计规则](references/DEMO_DESIGN_RULES.md)
449
+
450
+ ### 6.2 Demo 五要素
451
+
452
+ 每个 Demo 包含五个要素:
453
+
454
+ | 要素 | 说明 |
455
+ |------|------|
456
+ | ① 名称 | `[功能动词/名词][操作对象][场景]Demo`,≤20字 |
457
+ | ② 描述 | 2-4句话,说明功能、目的、覆盖接口,标注 HarmonyOS 特性 |
458
+ | ③ 步骤 | 编号列表,以 RN 函数式组件为载体,含 useState/useEffect/接口调用/setXxx()更新 |
459
+ | ④ 预期结果 | 编号列表,具体可观测指标,标注 HarmonyOS 平台预期行为 |
460
+ | ⑤ 对应函数接口 | 列出该 Demo 涉及的所有函数签名 |
461
+
462
+ ### 6.3 强制规则
463
+
464
+ - **禁止死按钮**:每个按钮(触发接口调用的步骤)必须对应至少一条 UI 可观测的预期结果
465
+ - **useState 强制更新**:所有计数器、状态标志变量必须通过 `setXxx()` 更新,否则 RN 不触发重新渲染
466
+ - **异步回调双计数器**:涉及 Promise/事件回调的 Demo 必须设计双计数器(`callCount` + `callbackCount`),两者都须在验证区域展示并用 `useState` setter 更新
467
+
468
+ > 双计数器模式与 useState 规则的详细说明参见 [Demo 设计规则](references/DEMO_DESIGN_RULES.md)
469
+
470
+ ### 6.4 生成策略优先级
471
+
472
+ 1. **核心功能 Demo**(P0):覆盖最主要的跨平台功能接口
473
+ 2. **完整流程 Demo**(P1):展示"初始化 → 核心操作 → 释放"完整生命周期
474
+ 3. **HarmonyOS 权限配置 Demo**(P1):若涉及权限需求
475
+ 4. **组合能力 Demo**(P1):关联接口合并,展示完整使用链路
476
+ 5. **参数变体 Demo**(P2):同一接口的不同参数组合(可选)
477
+
478
+ ---
479
+
480
+ ## Phase 7:文档生成与质量校验
481
+
482
+ ### 7.1 生成输出文档
483
+
484
+ 使用输出模板生成 `{libName}RN测试demo描述.md`,文档包含以下章节:
485
+
486
+ 1. **概述**:文档目的、**来源声明**(根据路径动态生成)、平台说明、**模式标识**(全量/增量)
487
+ 2. **Demo 总览**:Demo 数量、覆盖接口数量、生成日期
488
+ 3. **测试 Demo 描述列表**:五列表格(序号、名称、描述、步骤、预期结果、对应接口)
489
+ 4. **接口覆盖矩阵**:接口名称、所在 Demo、覆盖状态
490
+
491
+ **概述章节来源声明规则**:
492
+
493
+ | 路径 | 来源声明内容 |
494
+ |------|------------|
495
+ | 标准路径(全量模式) | "本文档基于 `{库名}` 库的接口规格(`interface-spec.json`)和接口规格说明书(`{libName}接口规格说明.md`)生成" |
496
+ | 标准路径(增量模式) | "本文档基于 `{库名}` 库的接口规格和 Demo 覆盖率报告生成" |
497
+ | 快捷路径(增量模式) | "本文档基于 `{库名}` 库的 Demo 覆盖率报告(`{coverageReport}`)和源码分析生成" |
498
+
499
+ > ⚠️ 快捷路径下**不得**在概述中声称"基于接口规格(interface-spec.json)"或"基于接口规格说明书",因为这两个文件未生成。来源声明必须与实际使用的数据源一致。
500
+
501
+ > 增量模式下,概述章节额外说明覆盖率报告来源、总接口数/已覆盖数/本次生成数。
502
+
503
+ > 输出文档结构与字段规范参见 [输出格式规范](references/OUTPUT_FORMAT.md)
504
+ > 可直接复制的输出模板参见 [Demo 文档模板](assets/DEMO_DOC_TEMPLATE.md)
505
+
506
+ ### 7.2 质量校验
507
+
508
+ 生成文档前完成以下检查:
509
+
510
+ | 检查项 | 标准 |
511
+ |--------|------|
512
+ | 接口覆盖完整性 | 所有**待生成**接口(Phase 5 过滤后)至少被一个 Demo 覆盖 |
513
+ | 增量模式一致性 | 增量模式下,输出文档中不包含已覆盖接口的 Demo(与覆盖率报告一致) |
514
+ | 来源声明准确性 | 概述章节的来源声明与实际路径一致;快捷路径下不得提及 interface-spec.json 或接口规格说明书 |
515
+ | 内容真实性 | 接口名称、参数类型、返回值与源码/规格严格一致 |
516
+ | 步骤可执行性 | 步骤具体可执行,开发者可按步骤实现 Demo 页面 |
517
+ | 预期结果可验证 | 每条预期结果可观测、可判断 |
518
+ | 无死按钮 | 每个按钮有可观测预期结果;iOS/Android 专用接口不作为主步骤 |
519
+ | useState 完整性 | 所有计数器/状态标志注明 `setXxx()` 更新;异步链路有双计数器(Hook/Context/常量模式无需双计数器,参见 Demo 设计规则 §6.1) |
520
+ | 接口模式适配 | Demo 步骤与接口模式匹配(Hook 顶层调用、Consumer render props、HOC 包装等,参见 Demo 设计规则 §6) |
521
+ | 平台差异标注 | HarmonyOS 平台差异在步骤中明确标注 |
522
+ | iOS/Android 排除 | 已移除所有 README 标注 `no` 的接口的 Demo |
523
+ | 平台过滤依据 | 平台过滤仅依据 README 文档标注,未使用源码(`Platform.OS` 分支、TurboModule Spec、原生实现)作为过滤依据;README 未列出的接口已保留并生成 Demo |
524
+ | 未列出接口处理 | README 中未列出的接口已生成 Demo,Demo 描述中标注"建议验证",预期结果中设计诊断指标(回调未触发等) |
525
+
526
+ > 完整质量检查清单参见 [质量检查清单](references/QUALITY_CHECKLIST.md)
527
+
528
+ ### 7.3 输出产物
529
+
530
+ 最终输出文件:
531
+
532
+ - **`{outputPath}`** — `{libName}RN测试demo描述.md`,Demo 描述文档(**始终生成**)
533
+
534
+ 标准路径额外产物(无已有覆盖率报告时):
535
+
536
+ - **`{libroot}/interface-spec.json`** — 接口规格 JSON(若 Phase 1 生成了)
537
+ - **`{libroot}/{libName}接口规格说明.md`** — 接口规格说明书(若 Phase 2 生成了)
538
+ - **`{libroot}/02-{libName}-Demo覆盖率报告.md`** — Demo 覆盖率报告(若 Phase 3 生成了)
539
+
540
+ > **快捷路径**(提供 `coverageReport` 时):仅生成 Demo 描述文档,不生成 `interface-spec.json`、接口规格说明书和覆盖率报告,避免冗余全量产物。
541
+
542
+ 输出确认信息包含:生成的文件列表、**模式**(全量/增量)、**路径**(标准/快捷)、Demo 数量、覆盖接口数量、排除的 iOS/Android 接口列表。增量模式下额外输出:覆盖率报告来源、总接口数、已覆盖数、本次生成数。
543
+
544
+ ---
545
+
546
+ ## 参考资料
547
+
548
+ - [Demo 设计规则](references/DEMO_DESIGN_RULES.md) — 分组原则、五要素、双计数器、useState 规则
549
+ - [覆盖率增量过滤指南](references/COVERAGE_INCREMENTAL.md) — 覆盖率报告解析、已覆盖接口提取、增量过滤规则
550
+ - [输出格式规范](references/OUTPUT_FORMAT.md) — 文档结构、表格格式、字段填写规范
551
+ - [质量检查清单](references/QUALITY_CHECKLIST.md) — 完整质量校验项
552
+ - [Demo 文档模板](assets/DEMO_DOC_TEMPLATE.md) — 可直接复制的输出模板
553
+ - React Native 官方文档:https://reactnative.dev
554
+ - RNOH 官方文档:https://gitcode.com/OpenHarmony-RN/usage-docs/tree/master/zh-cn