@ohos-cpf/3rdloop 0.0.2 → 0.0.3
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.
- package/README.md +244 -244
- package/bin/3rdloop.mjs +46 -46
- package/lib/cli.js +781 -781
- package/lib/config-cmd.js +451 -451
- package/lib/config.js +318 -318
- package/lib/doctor.js +113 -113
- package/lib/exit-codes.js +30 -30
- package/lib/opencode.js +155 -155
- package/lib/orch.js +426 -426
- package/lib/queries.js +263 -263
- package/lib/step.js +325 -325
- package/lib/ui.js +222 -222
- package/lib/update.js +279 -279
- package/lib/workflow.js +308 -308
- package/lib/workflows.js +131 -131
- package/package.json +50 -50
- package/vendor/Server/Agent/SkillSelector/README.md +343 -343
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
- package/vendor/Server/Agent/SkillSelector/index.js +14 -14
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
- package/vendor/Server/Brain/Brain.js +686 -686
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
- package/vendor/Server/Brain/PlanPersistence.js +196 -196
- package/vendor/Server/Brain/SkillExecutor.js +251 -251
- package/vendor/Server/Brain/index.js +11 -11
- package/vendor/Server/CLI/cli.js +275 -275
- package/vendor/Server/CLI/deveco-code/index.js +71 -71
- package/vendor/Server/CLI/deveco-code.js +5 -5
- package/vendor/Server/CLI/opencode/index.js +817 -818
- package/vendor/Server/CLI/opencode.js +5 -5
- package/vendor/Server/DbUse/MessageArchive.js +61 -61
- package/vendor/Server/DbUse/StorageManager.js +107 -107
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
- package/vendor/Server/DbUse/index.js +160 -160
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
- package/vendor/Server/FlexRunner/index.js +12 -12
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
- package/vendor/Server/Knowledge/index.js +33 -33
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
- package/vendor/Server/LoopEngine/index.js +11 -11
- package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
- package/vendor/Server/Orchestrator/StepNode.js +312 -312
- package/vendor/Server/Orchestrator/index.js +13 -13
- package/vendor/Server/Routes/controllers/BrainController.js +241 -241
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
- package/vendor/Server/Routes/controllers/HealthController.js +44 -44
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
- package/vendor/Server/Routes/controllers/StatsController.js +57 -57
- package/vendor/Server/Routes/controllers/StreamController.js +67 -67
- package/vendor/Server/Routes/library/logger.js +179 -179
- package/vendor/Server/Routes/library/zipArchive.js +172 -172
- package/vendor/Server/Routes/router/Router.js +204 -204
- package/vendor/Server/Routes/routes/brain.js +47 -47
- package/vendor/Server/Routes/routes/flexrunner.js +72 -72
- package/vendor/Server/Routes/routes/health.js +28 -28
- package/vendor/Server/Routes/routes/index.js +57 -57
- package/vendor/Server/Routes/routes/knowledge.js +55 -55
- package/vendor/Server/Routes/routes/loopengine.js +58 -58
- package/vendor/Server/Routes/routes/orchestrator.js +61 -61
- package/vendor/Server/Routes/routes/registry.js +97 -97
- package/vendor/Server/Routes/routes/stats.js +23 -23
- package/vendor/Server/Routes/routes/stream.js +30 -30
- package/vendor/Server/Routes/server.js +203 -203
- package/vendor/Server/Routes/sse/SseHub.js +308 -308
- package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/flutter-interface/README.md +75 -75
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
- package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
- package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
- package/vendor/Server/TestCheck/TestCheck.js +775 -775
- package/vendor/Server/TestCheck/index.js +11 -11
- package/vendor/Server/library/McpToolGuide.js +280 -280
- package/vendor/Server/library/StatsService.js +126 -126
- package/vendor/Server/library/cstTime.js +16 -16
- package/vendor/VERSION +3 -3
- package/workflows/pr-check.mjs +105 -105
- package/workflows/pr-push.mjs +192 -192
- package/vendor/Server/Agent/SkillSelector/types.js +0 -63
|
@@ -1,306 +1,306 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: rnoh-lib-demo-create
|
|
3
|
-
description: >-
|
|
4
|
-
根据 Demo 描述文档({库名}RN测试demo描述.md)为 RN 工程生成完整的 Tester 框架 Demo 代码。
|
|
5
|
-
解析描述文档中的 Demo 五要素(名称、描述、步骤、预期结果、对应接口),探查三方库 JS 层
|
|
6
|
-
导出接口与平台兼容性(Platform.OS === 'harmony' 分支可用 API),生成 Demo 页面代码、
|
|
7
|
-
主入口文件(index.tsx)、RNTesterList 注册。仅关注 RN 工程的 Demo 代码补充,
|
|
8
|
-
不涉及鸿蒙原生侧配置(oh-package/CMake/PackageProvider 等由其他流程处理)。
|
|
9
|
-
当已有 Demo 描述文档需要落地为可运行 Demo 代码时使用。
|
|
10
|
-
license: Apache-2.0
|
|
11
|
-
compatibility: 需要 MCP Gateway 运行中(script_rn_extract_interfaces、kb_search),需要文件读取与写入权限,需要 RN 工程(含 example/demo 目录和 Tester 框架)
|
|
12
|
-
metadata:
|
|
13
|
-
version: "1.0.0"
|
|
14
|
-
category: rn-testing
|
|
15
|
-
language: JavaScript/TypeScript/React Native
|
|
16
|
-
useWhen: 基于 Demo 描述文档生成 RN Tester 框架 Demo 代码
|
|
17
|
-
consumes: rnohLibDemoDocSkill
|
|
18
|
-
consumed-by: rnohLibDemoCoverageSkill
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# RN 鸿蒙三方库 Demo 代码生成
|
|
22
|
-
|
|
23
|
-
本技能根据 **Demo 描述文档**(由 `rnoh-lib-demo-doc` 生成的 `{库名}RN测试demo描述.md`),探查三方库 JS 层导出接口与平台兼容性后,自动探查当前工程的 example/demo 目录结构和 Demo 注册入口,生成 Tester 框架的 Demo 页面代码、主入口文件并注册到工程中。
|
|
24
|
-
|
|
25
|
-
> ⚠️ **核心约束**:本技能仅关注 RN 工程的 Demo 代码生成,不涉及鸿蒙原生侧配置(oh-package.json5、CMakeLists.txt、PackageProvider.cpp、RNPackagesFactory.ets、buildCustomRNComponent 等由工程集成流程处理)。Demo 代码只使用 `Platform.OS === 'harmony'` 分支中定义的 API,禁止照搬 iOS/Android 示例。不硬编码工程路径,所有目录和注册入口通过探查确定。
|
|
26
|
-
|
|
27
|
-
> ⚠️ **无平台分支库**:部分库(如 `react-native-safe-area-context`)没有 `Platform.OS === 'harmony'` 分支,而是通过 TurboModule 原生适配,JS 层所有导出在 HarmonyOS 上全部可用。探查时需区分此类库,无需过滤 iOS/Android 专属属性。
|
|
28
|
-
|
|
29
|
-
> ⚠️ **废弃接口**:部分库包含 `@deprecated` 废弃别名接口(如 `useSafeArea` → `useSafeAreaInsets`、`SafeAreaContext` → `SafeAreaInsetsContext`)。废弃接口在 HarmonyOS 平台仍正常可用,需生成 Demo 验证其兼容性,并使用引用相等性比较(`===`)验证别名关系。
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 任务参数
|
|
34
|
-
|
|
35
|
-
| 参数 | 类型 | 必填 | 说明 |
|
|
36
|
-
|------|------|------|------|
|
|
37
|
-
| `demoDoc` | string | ✅ | Demo 描述文档路径(`{库名}RN测试demo描述.md`) |
|
|
38
|
-
| `projectRoot` | string | ✅ | RN 工程根目录(含 example/demo 目录) |
|
|
39
|
-
| `libName` | string | ✅ | 三方库名(如 `react-native-audio`),用于目录命名 |
|
|
40
|
-
| `harmonyPkgName` | string | ✅ | 鸿蒙包名(如 `@react-native-ohos/react-native-audio`),用于 import 语句 |
|
|
41
|
-
| `category` | string | ❌ | Demo 分类,默认 `UI`(可选 `API`/`Media`/`Basic`/`Component`) |
|
|
42
|
-
|
|
43
|
-
**派生变量**(Phase 1 探查后确定):
|
|
44
|
-
- `skillDir`:本 SKILL 所在目录
|
|
45
|
-
- `exampleDir`:探查到的 example/demo 目录绝对路径(见 Phase 1.2)
|
|
46
|
-
- `demoDir`:`{exampleDir}/{libName}/demo/`
|
|
47
|
-
- `indexFile`:`{exampleDir}/{libName}/index.tsx`
|
|
48
|
-
- `registerFile`:探查到的 Demo 注册入口文件路径(见 Phase 1.2)
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 输入依赖
|
|
53
|
-
|
|
54
|
-
- **前置SKILL**: `rnoh-lib-demo-doc`(提供 Demo 描述文档)
|
|
55
|
-
- **输入文件**: Demo 描述文档(Markdown,含五要素表格)
|
|
56
|
-
- **MCP工具**: `script_rn_extract_interfaces`(提取接口规格辅助验证)、`kb_search`(鸿蒙知识查询)
|
|
57
|
-
- **项目结构**: RN 工程(含 example/demo 目录和 Tester 框架)
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## 工作流程概览
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
Phase 1: 描述文档解析与项目分析
|
|
65
|
-
↓
|
|
66
|
-
Phase 2: 三方库 JS 层接口与平台兼容性探查
|
|
67
|
-
↓
|
|
68
|
-
Phase 3: Demo 代码生成(页面/入口/RNTester注册)
|
|
69
|
-
↓
|
|
70
|
-
Phase 4: 质量校验与输出报告
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## Phase 1:描述文档解析与项目分析
|
|
76
|
-
|
|
77
|
-
### 1.1 解析 Demo 描述文档
|
|
78
|
-
|
|
79
|
-
读取 `demoDoc`,提取 Demo 五要素表格:
|
|
80
|
-
|
|
81
|
-
| 要素 | 提取内容 |
|
|
82
|
-
|------|----------|
|
|
83
|
-
| 名称 | Demo 名称,用于文件命名(转 kebab-case) |
|
|
84
|
-
| 描述 | 功能说明,用于 TestCase `itShould` |
|
|
85
|
-
| 步骤 | 编号列表,含 useState/useEffect/接口调用/setXxx() |
|
|
86
|
-
| 预期结果 | 可观测指标,用于验证 |
|
|
87
|
-
| 对应接口 | 函数签名列表,用于代码生成依据 |
|
|
88
|
-
|
|
89
|
-
### 1.2 探查工程目录结构与注册入口
|
|
90
|
-
|
|
91
|
-
> ⚠️ 不硬编码工程路径,通过探查确定 example/demo 目录和 Demo 注册文件。
|
|
92
|
-
|
|
93
|
-
#### 1.2.1 探查 example/demo 目录
|
|
94
|
-
|
|
95
|
-
在 `projectRoot` 下按优先级搜索 example/demo 目录(取第一个存在的):
|
|
96
|
-
|
|
97
|
-
| 优先级 | 搜索路径 | 说明 |
|
|
98
|
-
|--------|----------|------|
|
|
99
|
-
| 1 | `{projectRoot}/rn-tester/examples/` | RNTester 框架标准目录 |
|
|
100
|
-
| 2 | `{projectRoot}/example/src/` | 常见 example 工程 |
|
|
101
|
-
| 3 | `{projectRoot}/examples/src/` | 多 example 工程 |
|
|
102
|
-
| 4 | `{projectRoot}/example/` | 简单 example |
|
|
103
|
-
| 5 | `{projectRoot}/demo/src/` | demo 目录 |
|
|
104
|
-
| 6 | `{projectRoot}/demo/` | 简单 demo |
|
|
105
|
-
|
|
106
|
-
探查到的目录赋值给 `exampleDir`。Demo 页面文件将生成在 `{exampleDir}/{libName}/demo/` 下。
|
|
107
|
-
|
|
108
|
-
#### 1.2.2 探查 Demo 注册入口文件
|
|
109
|
-
|
|
110
|
-
在 `projectRoot` 下搜索 Demo 注册入口(即已有 Demo 列表被注册的文件),按优先级:
|
|
111
|
-
|
|
112
|
-
| 优先级 | 搜索路径 | 说明 |
|
|
113
|
-
|--------|----------|------|
|
|
114
|
-
| 1 | `{projectRoot}/**/RNTesterList.ts` | RNTester 框架注册文件 |
|
|
115
|
-
| 2 | `{projectRoot}/**/TesterList.*` | Tester 列表变体 |
|
|
116
|
-
| 3 | `{projectRoot}/example/src/App.tsx` 或 `App.ts` | example 工程入口 |
|
|
117
|
-
| 4 | `{projectRoot}/**/navigation*` 或 `routes*` | 导航/路由配置 |
|
|
118
|
-
|
|
119
|
-
探查到的文件赋值给 `registerFile`。读取其内容,分析现有 Demo 的注册模式(require/import 方式、数组结构),后续按相同模式注册新 Demo。
|
|
120
|
-
|
|
121
|
-
> ⚠️ **注册模式识别**:不同工程使用不同的注册模式,必须读取 `registerFile` 内容后分析其数组结构、import 方式和对象字段,按相同模式追加。常见模式见 Phase 3.4。
|
|
122
|
-
|
|
123
|
-
#### 1.2.3 缺失处理
|
|
124
|
-
|
|
125
|
-
| 探查项 | 缺失处理 |
|
|
126
|
-
|--------|----------|
|
|
127
|
-
| `package.json` | ⚠️ 停止,提示非 RN 工程 |
|
|
128
|
-
| example/demo 目录 | ⚠️ 停止,提示用户指定 Demo 目录 |
|
|
129
|
-
| 注册入口文件 | ⚠️ 停止,提示用户指定注册文件,或手动注册 |
|
|
130
|
-
|
|
131
|
-
### 1.3 验证依赖存在
|
|
132
|
-
|
|
133
|
-
检查 `package.json` 中 `dependencies` 是否包含目标库。**依赖不存在时必须停止**,不得继续代码生成。
|
|
134
|
-
|
|
135
|
-
> 描述文档解析与项目分析的详细步骤参见 [Demo 代码规则](references/DEMO_CODE_RULES.md)
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Phase 2:三方库 JS 层接口与平台兼容性探查
|
|
140
|
-
|
|
141
|
-
> ⚠️ **关键步骤**:生成 Demo 代码前,必须探查三方库 JS 层实际导出的接口和平台兼容性,确保 Demo 代码只使用 HarmonyOS 平台实际支持的 API。详细探查方法参见 [源码探查指南](references/SOURCE_EXPLORATION.md)
|
|
142
|
-
|
|
143
|
-
### 2.1 探查清单
|
|
144
|
-
|
|
145
|
-
| # | 探查项 | 探查路径 | 提取信息 |
|
|
146
|
-
|---|--------|----------|----------|
|
|
147
|
-
| 2.1 | JS 层导出接口 | `node_modules/{harmonyPkgName}/index.js` 或 `index.ts` | 导出的函数、类、组件、Hooks、常量、枚举 |
|
|
148
|
-
| 2.2 | 平台兼容性 API | 同上,查找 `Platform.OS === 'harmony'` 分支 | harmony 分支下可用属性/常量/方法、不可用 API |
|
|
149
|
-
| 2.3 | TurboModule Spec | `node_modules/{harmonyPkgName}/src/**/Native*.ts` | 方法签名、Promise vs 同步、事件名 |
|
|
150
|
-
| 2.4 | 类型定义 | `node_modules/{harmonyPkgName}/**/*.d.ts` | 参数类型、可选参数、返回值类型 |
|
|
151
|
-
|
|
152
|
-
### 2.2 探查结果汇总
|
|
153
|
-
|
|
154
|
-
探查完成后汇总为接口能力清单:
|
|
155
|
-
|
|
156
|
-
| 信息 | 说明 | 示例 |
|
|
157
|
-
|------|------|------|
|
|
158
|
-
| HarmonyOS 可用导出 | harmony 分支中定义的属性和 API | `FilesDirectoryPath`、`startRecording()` |
|
|
159
|
-
| HarmonyOS 不可用 API | 仅 iOS/Android 分支存在的属性 | `DocumentDirectoryPath`、`MainBundlePath` |
|
|
160
|
-
| 方法调用方式 | Promise vs 同步 | `startRecording()` 返回 Promise |
|
|
161
|
-
| 事件名称 | DeviceEventEmitter 监听的事件名 | `recordingProgress`、`recordingFinished` |
|
|
162
|
-
|
|
163
|
-
### 2.3 MCP 工具辅助
|
|
164
|
-
|
|
165
|
-
可调用 `script_rn_extract_interfaces` 提取接口规格 JSON,用于交叉验证描述文档中的接口签名是否与源码一致。
|
|
166
|
-
|
|
167
|
-
调用 `kb_search` 查询鸿蒙平台特定约束(如权限要求、ArkTS 限制)。
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Phase 3:Demo 代码生成
|
|
172
|
-
|
|
173
|
-
> 详细的代码规范、禁止事项、模板参见 [Demo 代码规则](references/DEMO_CODE_RULES.md) 和 [代码模板](assets/DEMO_PAGE_TEMPLATE.md)
|
|
174
|
-
|
|
175
|
-
### 3.1 创建目录结构
|
|
176
|
-
|
|
177
|
-
在 Phase 1.2 探查到的 `exampleDir` 下创建:
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
{exampleDir}/{libName}/
|
|
181
|
-
├── index.tsx # 主入口(Tester 框架 + 元数据导出)
|
|
182
|
-
└── demo/
|
|
183
|
-
├── 001_{描述1}Page.tsx
|
|
184
|
-
├── 002_{描述2}Page.tsx
|
|
185
|
-
└── ...
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### 3.2 生成 Demo 页面代码
|
|
189
|
-
|
|
190
|
-
每个 Demo 页面基于描述文档五要素生成,必须遵循以下核心规则:
|
|
191
|
-
|
|
192
|
-
| 规则 | 说明 |
|
|
193
|
-
|------|------|
|
|
194
|
-
| 根组件用 `View` | ❌ 禁止 `ScrollView` 作为根(Tester 已有 ScrollView,嵌套导致高度塌陷) |
|
|
195
|
-
| 不用 `SafeAreaView`/`StatusBar` | Tester 框架不需要 |
|
|
196
|
-
| 不用 `Slider` | HarmonyOS 不支持,用按钮组替代 |
|
|
197
|
-
| 不用 `console.error()` | 会触发系统弹窗,用 `console.warn()` 替代 |
|
|
198
|
-
| 平台兼容性 | 只用 `Platform.OS === 'harmony'` 分支的属性(基于 Phase 2.2);无平台分支的库全部可用 |
|
|
199
|
-
| 权限请求 | 涉及麦克风/相机/定位等操作前必须请求权限 |
|
|
200
|
-
| 计时器兜底 | 原生事件不可靠时用 JS `setInterval` 兜底,停止时只清计时器不重置值 |
|
|
201
|
-
| 异步处理 | 用 `async/await` + `try/catch`,不用 `.then()/.catch()` 链 |
|
|
202
|
-
| 无注释 | 代码中不使用 `//` 或 `/* */` |
|
|
203
|
-
| Hook 调用位置 | Hook 必须在组件顶层调用,不可在事件回调中调用;依赖 Context 的 Hook 须放在 Provider 子组件中 |
|
|
204
|
-
| 废弃接口验证 | 使用引用相等性比较(`===`)验证别名关系,比功能对比更可靠 |
|
|
205
|
-
| type 导入 | 使用 `import { type EdgeInsets }` inline type 语法,与运行时导出混写,避免类型进入打包 |
|
|
206
|
-
| Provider 子组件拆分 | 依赖 Context 值的 Hook/组件须拆分到 Provider 子组件中,确保 Context 有值 |
|
|
207
|
-
|
|
208
|
-
### 3.3 生成主入口文件
|
|
209
|
-
|
|
210
|
-
`index.tsx` 包含:
|
|
211
|
-
1. Tester 框架集成(`Tester` + `TestSuite` + `TestCase`)
|
|
212
|
-
2. 元数据导出(`displayName`、`framework`、`category`、`title`、`description`、`examples`)
|
|
213
|
-
|
|
214
|
-
> 入口文件模板参见 [入口模板](assets/INDEX_TEMPLATE.md)
|
|
215
|
-
|
|
216
|
-
### 3.4 更新 Demo 注册入口
|
|
217
|
-
|
|
218
|
-
在 Phase 1.2 探查到的 `registerFile` 中注册新模块。**按该文件现有的注册模式追加**,不破坏已有结构。必须先读取 `registerFile` 内容分析其注册模式,按相同模式追加。
|
|
219
|
-
|
|
220
|
-
**模式 A:RNTesterList.ts 数组注册**(常见于 RNTester 框架):
|
|
221
|
-
```typescript
|
|
222
|
-
{
|
|
223
|
-
key: '{libName}',
|
|
224
|
-
category: '{category}',
|
|
225
|
-
module: require('{相对于registerFile的路径到index}'),
|
|
226
|
-
}
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
**模式 B:App.tsx 导入注册**(常见于 example 工程):
|
|
230
|
-
```typescript
|
|
231
|
-
import {libNamePascalCase}Tester from './{相对于App.tsx的路径到index}';
|
|
232
|
-
// 在导航/路由配置中添加该 Demo 页面
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
**模式 C:自定义 demos 数组注册**(常见于工程自带的自定义 Tester 入口,如 `example/src/index.tsx`):
|
|
236
|
-
```typescript
|
|
237
|
-
import {libNamePascalCase}Tester from './{相对于registerFile的路径到index}';
|
|
238
|
-
// 追加到 demos 数组
|
|
239
|
-
const demos: IDemoItem[] = [
|
|
240
|
-
// ...已有条目
|
|
241
|
-
{ Component: {libNamePascalCase}Tester, name: '{Demo显示名}', key: '{libNamePascalCase}' }
|
|
242
|
-
];
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
> ⚠️ `require`/`import` 的路径必须是从 `registerFile` 到 `indexFile` 的**相对路径**,根据实际目录层级计算,不硬编码固定路径。
|
|
246
|
-
|
|
247
|
-
> ⚠️ **模式选择策略**:读取 `registerFile` 后,按以下优先级匹配注册模式:
|
|
248
|
-
> 1. 文件含 `require(...)` + 数组对象含 `module` 字段 → 模式 A
|
|
249
|
-
> 2. 文件含 `import ... from ...` + 导航/路由配置 → 模式 B
|
|
250
|
-
> 3. 文件含 `demos`/`items` 数组 + `Component` 字段 → 模式 C
|
|
251
|
-
> 4. 以上均不匹配 → 停止,提示用户指定注册方式
|
|
252
|
-
|
|
253
|
-
> 注册模式与路径计算的详细说明参见 [入口模板](assets/INDEX_TEMPLATE.md)
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## Phase 4:质量校验与输出报告
|
|
258
|
-
|
|
259
|
-
### 4.1 质量校验
|
|
260
|
-
|
|
261
|
-
生成完成后执行校验:
|
|
262
|
-
|
|
263
|
-
> 完整检查清单参见 [质量检查清单](references/QUALITY_CHECKLIST.md)
|
|
264
|
-
|
|
265
|
-
| 校验维度 | 关键检查项 |
|
|
266
|
-
|----------|-----------|
|
|
267
|
-
| 接口探查完整性 | JS 导出接口、平台兼容性 API、TurboModule Spec、类型定义 全部探查 |
|
|
268
|
-
| 工程结构探查 | example/demo 目录已探查、注册入口文件已探查 |
|
|
269
|
-
| 代码规范 | 无 ScrollView 根组件、无 Slider、无 console.error、无注释 |
|
|
270
|
-
| 平台兼容性 | 未使用 iOS/Android 专属属性(基于 Phase 2.2);无平台分支库全部可用 |
|
|
271
|
-
| 权限处理 | 敏感权限操作前有权限请求 |
|
|
272
|
-
| Tester 集成 | 注册入口已更新、index.tsx 含元数据导出 |
|
|
273
|
-
| 注册模式适配 | 注册模式(A/B/C)与 registerFile 现有模式一致,未破坏已有结构 |
|
|
274
|
-
| Hook 约束 | Hook 在组件顶层调用,依赖 Context 的 Hook 在 Provider 子组件中 |
|
|
275
|
-
| 废弃接口验证 | 使用引用相等性比较(`===`)验证别名关系 |
|
|
276
|
-
|
|
277
|
-
### 4.2 输出产物
|
|
278
|
-
|
|
279
|
-
| 产物 | 路径 | 说明 |
|
|
280
|
-
|------|------|------|
|
|
281
|
-
| Demo 页面文件 | `{exampleDir}/{libName}/demo/00X_*.tsx` | 每个 Demo 一个文件 |
|
|
282
|
-
| 主入口文件 | `{exampleDir}/{libName}/index.tsx` | Tester 框架 + 元数据 |
|
|
283
|
-
| 注册入口文件 | `{registerFile}` | 已追加新 Demo 注册 |
|
|
284
|
-
|
|
285
|
-
### 4.3 输出报告
|
|
286
|
-
|
|
287
|
-
生成完成后输出确认信息,包含:
|
|
288
|
-
- 生成的文件列表
|
|
289
|
-
- 探查到的工程结构(exampleDir、registerFile)
|
|
290
|
-
- 接口探查结果汇总(JS 导出接口、harmony 可用/不可用 API)
|
|
291
|
-
- Demo 数量与覆盖接口数
|
|
292
|
-
- 注册模式(模式 A/B/C)及注册路径
|
|
293
|
-
- 废弃接口验证结果(如涉及)
|
|
294
|
-
- 需用户后续确认的事项(如需手动验证的项)
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## 参考资料
|
|
299
|
-
|
|
300
|
-
- [源码探查指南](references/SOURCE_EXPLORATION.md) — JS 层导出接口、平台兼容性 API 探查方法与示例
|
|
301
|
-
- [Demo 代码规则](references/DEMO_CODE_RULES.md) — 目录规范、页面代码规范、禁止事项、常见陷阱
|
|
302
|
-
- [质量检查清单](references/QUALITY_CHECKLIST.md) — 完整校验项
|
|
303
|
-
- [Demo 页面模板](assets/DEMO_PAGE_TEMPLATE.md) — 可复制的页面代码模板
|
|
304
|
-
- [入口文件模板](assets/INDEX_TEMPLATE.md) — 可复制的 index.tsx 模板
|
|
305
|
-
- React Native 官方文档:https://reactnative.dev
|
|
306
|
-
- RNOH 官方文档:https://gitcode.com/OpenHarmony-RN/usage-docs/tree/master/zh-cn
|
|
1
|
+
---
|
|
2
|
+
name: rnoh-lib-demo-create
|
|
3
|
+
description: >-
|
|
4
|
+
根据 Demo 描述文档({库名}RN测试demo描述.md)为 RN 工程生成完整的 Tester 框架 Demo 代码。
|
|
5
|
+
解析描述文档中的 Demo 五要素(名称、描述、步骤、预期结果、对应接口),探查三方库 JS 层
|
|
6
|
+
导出接口与平台兼容性(Platform.OS === 'harmony' 分支可用 API),生成 Demo 页面代码、
|
|
7
|
+
主入口文件(index.tsx)、RNTesterList 注册。仅关注 RN 工程的 Demo 代码补充,
|
|
8
|
+
不涉及鸿蒙原生侧配置(oh-package/CMake/PackageProvider 等由其他流程处理)。
|
|
9
|
+
当已有 Demo 描述文档需要落地为可运行 Demo 代码时使用。
|
|
10
|
+
license: Apache-2.0
|
|
11
|
+
compatibility: 需要 MCP Gateway 运行中(script_rn_extract_interfaces、kb_search),需要文件读取与写入权限,需要 RN 工程(含 example/demo 目录和 Tester 框架)
|
|
12
|
+
metadata:
|
|
13
|
+
version: "1.0.0"
|
|
14
|
+
category: rn-testing
|
|
15
|
+
language: JavaScript/TypeScript/React Native
|
|
16
|
+
useWhen: 基于 Demo 描述文档生成 RN Tester 框架 Demo 代码
|
|
17
|
+
consumes: rnohLibDemoDocSkill
|
|
18
|
+
consumed-by: rnohLibDemoCoverageSkill
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# RN 鸿蒙三方库 Demo 代码生成
|
|
22
|
+
|
|
23
|
+
本技能根据 **Demo 描述文档**(由 `rnoh-lib-demo-doc` 生成的 `{库名}RN测试demo描述.md`),探查三方库 JS 层导出接口与平台兼容性后,自动探查当前工程的 example/demo 目录结构和 Demo 注册入口,生成 Tester 框架的 Demo 页面代码、主入口文件并注册到工程中。
|
|
24
|
+
|
|
25
|
+
> ⚠️ **核心约束**:本技能仅关注 RN 工程的 Demo 代码生成,不涉及鸿蒙原生侧配置(oh-package.json5、CMakeLists.txt、PackageProvider.cpp、RNPackagesFactory.ets、buildCustomRNComponent 等由工程集成流程处理)。Demo 代码只使用 `Platform.OS === 'harmony'` 分支中定义的 API,禁止照搬 iOS/Android 示例。不硬编码工程路径,所有目录和注册入口通过探查确定。
|
|
26
|
+
|
|
27
|
+
> ⚠️ **无平台分支库**:部分库(如 `react-native-safe-area-context`)没有 `Platform.OS === 'harmony'` 分支,而是通过 TurboModule 原生适配,JS 层所有导出在 HarmonyOS 上全部可用。探查时需区分此类库,无需过滤 iOS/Android 专属属性。
|
|
28
|
+
|
|
29
|
+
> ⚠️ **废弃接口**:部分库包含 `@deprecated` 废弃别名接口(如 `useSafeArea` → `useSafeAreaInsets`、`SafeAreaContext` → `SafeAreaInsetsContext`)。废弃接口在 HarmonyOS 平台仍正常可用,需生成 Demo 验证其兼容性,并使用引用相等性比较(`===`)验证别名关系。
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 任务参数
|
|
34
|
+
|
|
35
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
36
|
+
|------|------|------|------|
|
|
37
|
+
| `demoDoc` | string | ✅ | Demo 描述文档路径(`{库名}RN测试demo描述.md`) |
|
|
38
|
+
| `projectRoot` | string | ✅ | RN 工程根目录(含 example/demo 目录) |
|
|
39
|
+
| `libName` | string | ✅ | 三方库名(如 `react-native-audio`),用于目录命名 |
|
|
40
|
+
| `harmonyPkgName` | string | ✅ | 鸿蒙包名(如 `@react-native-ohos/react-native-audio`),用于 import 语句 |
|
|
41
|
+
| `category` | string | ❌ | Demo 分类,默认 `UI`(可选 `API`/`Media`/`Basic`/`Component`) |
|
|
42
|
+
|
|
43
|
+
**派生变量**(Phase 1 探查后确定):
|
|
44
|
+
- `skillDir`:本 SKILL 所在目录
|
|
45
|
+
- `exampleDir`:探查到的 example/demo 目录绝对路径(见 Phase 1.2)
|
|
46
|
+
- `demoDir`:`{exampleDir}/{libName}/demo/`
|
|
47
|
+
- `indexFile`:`{exampleDir}/{libName}/index.tsx`
|
|
48
|
+
- `registerFile`:探查到的 Demo 注册入口文件路径(见 Phase 1.2)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 输入依赖
|
|
53
|
+
|
|
54
|
+
- **前置SKILL**: `rnoh-lib-demo-doc`(提供 Demo 描述文档)
|
|
55
|
+
- **输入文件**: Demo 描述文档(Markdown,含五要素表格)
|
|
56
|
+
- **MCP工具**: `script_rn_extract_interfaces`(提取接口规格辅助验证)、`kb_search`(鸿蒙知识查询)
|
|
57
|
+
- **项目结构**: RN 工程(含 example/demo 目录和 Tester 框架)
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 工作流程概览
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Phase 1: 描述文档解析与项目分析
|
|
65
|
+
↓
|
|
66
|
+
Phase 2: 三方库 JS 层接口与平台兼容性探查
|
|
67
|
+
↓
|
|
68
|
+
Phase 3: Demo 代码生成(页面/入口/RNTester注册)
|
|
69
|
+
↓
|
|
70
|
+
Phase 4: 质量校验与输出报告
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Phase 1:描述文档解析与项目分析
|
|
76
|
+
|
|
77
|
+
### 1.1 解析 Demo 描述文档
|
|
78
|
+
|
|
79
|
+
读取 `demoDoc`,提取 Demo 五要素表格:
|
|
80
|
+
|
|
81
|
+
| 要素 | 提取内容 |
|
|
82
|
+
|------|----------|
|
|
83
|
+
| 名称 | Demo 名称,用于文件命名(转 kebab-case) |
|
|
84
|
+
| 描述 | 功能说明,用于 TestCase `itShould` |
|
|
85
|
+
| 步骤 | 编号列表,含 useState/useEffect/接口调用/setXxx() |
|
|
86
|
+
| 预期结果 | 可观测指标,用于验证 |
|
|
87
|
+
| 对应接口 | 函数签名列表,用于代码生成依据 |
|
|
88
|
+
|
|
89
|
+
### 1.2 探查工程目录结构与注册入口
|
|
90
|
+
|
|
91
|
+
> ⚠️ 不硬编码工程路径,通过探查确定 example/demo 目录和 Demo 注册文件。
|
|
92
|
+
|
|
93
|
+
#### 1.2.1 探查 example/demo 目录
|
|
94
|
+
|
|
95
|
+
在 `projectRoot` 下按优先级搜索 example/demo 目录(取第一个存在的):
|
|
96
|
+
|
|
97
|
+
| 优先级 | 搜索路径 | 说明 |
|
|
98
|
+
|--------|----------|------|
|
|
99
|
+
| 1 | `{projectRoot}/rn-tester/examples/` | RNTester 框架标准目录 |
|
|
100
|
+
| 2 | `{projectRoot}/example/src/` | 常见 example 工程 |
|
|
101
|
+
| 3 | `{projectRoot}/examples/src/` | 多 example 工程 |
|
|
102
|
+
| 4 | `{projectRoot}/example/` | 简单 example |
|
|
103
|
+
| 5 | `{projectRoot}/demo/src/` | demo 目录 |
|
|
104
|
+
| 6 | `{projectRoot}/demo/` | 简单 demo |
|
|
105
|
+
|
|
106
|
+
探查到的目录赋值给 `exampleDir`。Demo 页面文件将生成在 `{exampleDir}/{libName}/demo/` 下。
|
|
107
|
+
|
|
108
|
+
#### 1.2.2 探查 Demo 注册入口文件
|
|
109
|
+
|
|
110
|
+
在 `projectRoot` 下搜索 Demo 注册入口(即已有 Demo 列表被注册的文件),按优先级:
|
|
111
|
+
|
|
112
|
+
| 优先级 | 搜索路径 | 说明 |
|
|
113
|
+
|--------|----------|------|
|
|
114
|
+
| 1 | `{projectRoot}/**/RNTesterList.ts` | RNTester 框架注册文件 |
|
|
115
|
+
| 2 | `{projectRoot}/**/TesterList.*` | Tester 列表变体 |
|
|
116
|
+
| 3 | `{projectRoot}/example/src/App.tsx` 或 `App.ts` | example 工程入口 |
|
|
117
|
+
| 4 | `{projectRoot}/**/navigation*` 或 `routes*` | 导航/路由配置 |
|
|
118
|
+
|
|
119
|
+
探查到的文件赋值给 `registerFile`。读取其内容,分析现有 Demo 的注册模式(require/import 方式、数组结构),后续按相同模式注册新 Demo。
|
|
120
|
+
|
|
121
|
+
> ⚠️ **注册模式识别**:不同工程使用不同的注册模式,必须读取 `registerFile` 内容后分析其数组结构、import 方式和对象字段,按相同模式追加。常见模式见 Phase 3.4。
|
|
122
|
+
|
|
123
|
+
#### 1.2.3 缺失处理
|
|
124
|
+
|
|
125
|
+
| 探查项 | 缺失处理 |
|
|
126
|
+
|--------|----------|
|
|
127
|
+
| `package.json` | ⚠️ 停止,提示非 RN 工程 |
|
|
128
|
+
| example/demo 目录 | ⚠️ 停止,提示用户指定 Demo 目录 |
|
|
129
|
+
| 注册入口文件 | ⚠️ 停止,提示用户指定注册文件,或手动注册 |
|
|
130
|
+
|
|
131
|
+
### 1.3 验证依赖存在
|
|
132
|
+
|
|
133
|
+
检查 `package.json` 中 `dependencies` 是否包含目标库。**依赖不存在时必须停止**,不得继续代码生成。
|
|
134
|
+
|
|
135
|
+
> 描述文档解析与项目分析的详细步骤参见 [Demo 代码规则](references/DEMO_CODE_RULES.md)
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Phase 2:三方库 JS 层接口与平台兼容性探查
|
|
140
|
+
|
|
141
|
+
> ⚠️ **关键步骤**:生成 Demo 代码前,必须探查三方库 JS 层实际导出的接口和平台兼容性,确保 Demo 代码只使用 HarmonyOS 平台实际支持的 API。详细探查方法参见 [源码探查指南](references/SOURCE_EXPLORATION.md)
|
|
142
|
+
|
|
143
|
+
### 2.1 探查清单
|
|
144
|
+
|
|
145
|
+
| # | 探查项 | 探查路径 | 提取信息 |
|
|
146
|
+
|---|--------|----------|----------|
|
|
147
|
+
| 2.1 | JS 层导出接口 | `node_modules/{harmonyPkgName}/index.js` 或 `index.ts` | 导出的函数、类、组件、Hooks、常量、枚举 |
|
|
148
|
+
| 2.2 | 平台兼容性 API | 同上,查找 `Platform.OS === 'harmony'` 分支 | harmony 分支下可用属性/常量/方法、不可用 API |
|
|
149
|
+
| 2.3 | TurboModule Spec | `node_modules/{harmonyPkgName}/src/**/Native*.ts` | 方法签名、Promise vs 同步、事件名 |
|
|
150
|
+
| 2.4 | 类型定义 | `node_modules/{harmonyPkgName}/**/*.d.ts` | 参数类型、可选参数、返回值类型 |
|
|
151
|
+
|
|
152
|
+
### 2.2 探查结果汇总
|
|
153
|
+
|
|
154
|
+
探查完成后汇总为接口能力清单:
|
|
155
|
+
|
|
156
|
+
| 信息 | 说明 | 示例 |
|
|
157
|
+
|------|------|------|
|
|
158
|
+
| HarmonyOS 可用导出 | harmony 分支中定义的属性和 API | `FilesDirectoryPath`、`startRecording()` |
|
|
159
|
+
| HarmonyOS 不可用 API | 仅 iOS/Android 分支存在的属性 | `DocumentDirectoryPath`、`MainBundlePath` |
|
|
160
|
+
| 方法调用方式 | Promise vs 同步 | `startRecording()` 返回 Promise |
|
|
161
|
+
| 事件名称 | DeviceEventEmitter 监听的事件名 | `recordingProgress`、`recordingFinished` |
|
|
162
|
+
|
|
163
|
+
### 2.3 MCP 工具辅助
|
|
164
|
+
|
|
165
|
+
可调用 `script_rn_extract_interfaces` 提取接口规格 JSON,用于交叉验证描述文档中的接口签名是否与源码一致。
|
|
166
|
+
|
|
167
|
+
调用 `kb_search` 查询鸿蒙平台特定约束(如权限要求、ArkTS 限制)。
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Phase 3:Demo 代码生成
|
|
172
|
+
|
|
173
|
+
> 详细的代码规范、禁止事项、模板参见 [Demo 代码规则](references/DEMO_CODE_RULES.md) 和 [代码模板](assets/DEMO_PAGE_TEMPLATE.md)
|
|
174
|
+
|
|
175
|
+
### 3.1 创建目录结构
|
|
176
|
+
|
|
177
|
+
在 Phase 1.2 探查到的 `exampleDir` 下创建:
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
{exampleDir}/{libName}/
|
|
181
|
+
├── index.tsx # 主入口(Tester 框架 + 元数据导出)
|
|
182
|
+
└── demo/
|
|
183
|
+
├── 001_{描述1}Page.tsx
|
|
184
|
+
├── 002_{描述2}Page.tsx
|
|
185
|
+
└── ...
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 3.2 生成 Demo 页面代码
|
|
189
|
+
|
|
190
|
+
每个 Demo 页面基于描述文档五要素生成,必须遵循以下核心规则:
|
|
191
|
+
|
|
192
|
+
| 规则 | 说明 |
|
|
193
|
+
|------|------|
|
|
194
|
+
| 根组件用 `View` | ❌ 禁止 `ScrollView` 作为根(Tester 已有 ScrollView,嵌套导致高度塌陷) |
|
|
195
|
+
| 不用 `SafeAreaView`/`StatusBar` | Tester 框架不需要 |
|
|
196
|
+
| 不用 `Slider` | HarmonyOS 不支持,用按钮组替代 |
|
|
197
|
+
| 不用 `console.error()` | 会触发系统弹窗,用 `console.warn()` 替代 |
|
|
198
|
+
| 平台兼容性 | 只用 `Platform.OS === 'harmony'` 分支的属性(基于 Phase 2.2);无平台分支的库全部可用 |
|
|
199
|
+
| 权限请求 | 涉及麦克风/相机/定位等操作前必须请求权限 |
|
|
200
|
+
| 计时器兜底 | 原生事件不可靠时用 JS `setInterval` 兜底,停止时只清计时器不重置值 |
|
|
201
|
+
| 异步处理 | 用 `async/await` + `try/catch`,不用 `.then()/.catch()` 链 |
|
|
202
|
+
| 无注释 | 代码中不使用 `//` 或 `/* */` |
|
|
203
|
+
| Hook 调用位置 | Hook 必须在组件顶层调用,不可在事件回调中调用;依赖 Context 的 Hook 须放在 Provider 子组件中 |
|
|
204
|
+
| 废弃接口验证 | 使用引用相等性比较(`===`)验证别名关系,比功能对比更可靠 |
|
|
205
|
+
| type 导入 | 使用 `import { type EdgeInsets }` inline type 语法,与运行时导出混写,避免类型进入打包 |
|
|
206
|
+
| Provider 子组件拆分 | 依赖 Context 值的 Hook/组件须拆分到 Provider 子组件中,确保 Context 有值 |
|
|
207
|
+
|
|
208
|
+
### 3.3 生成主入口文件
|
|
209
|
+
|
|
210
|
+
`index.tsx` 包含:
|
|
211
|
+
1. Tester 框架集成(`Tester` + `TestSuite` + `TestCase`)
|
|
212
|
+
2. 元数据导出(`displayName`、`framework`、`category`、`title`、`description`、`examples`)
|
|
213
|
+
|
|
214
|
+
> 入口文件模板参见 [入口模板](assets/INDEX_TEMPLATE.md)
|
|
215
|
+
|
|
216
|
+
### 3.4 更新 Demo 注册入口
|
|
217
|
+
|
|
218
|
+
在 Phase 1.2 探查到的 `registerFile` 中注册新模块。**按该文件现有的注册模式追加**,不破坏已有结构。必须先读取 `registerFile` 内容分析其注册模式,按相同模式追加。
|
|
219
|
+
|
|
220
|
+
**模式 A:RNTesterList.ts 数组注册**(常见于 RNTester 框架):
|
|
221
|
+
```typescript
|
|
222
|
+
{
|
|
223
|
+
key: '{libName}',
|
|
224
|
+
category: '{category}',
|
|
225
|
+
module: require('{相对于registerFile的路径到index}'),
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**模式 B:App.tsx 导入注册**(常见于 example 工程):
|
|
230
|
+
```typescript
|
|
231
|
+
import {libNamePascalCase}Tester from './{相对于App.tsx的路径到index}';
|
|
232
|
+
// 在导航/路由配置中添加该 Demo 页面
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**模式 C:自定义 demos 数组注册**(常见于工程自带的自定义 Tester 入口,如 `example/src/index.tsx`):
|
|
236
|
+
```typescript
|
|
237
|
+
import {libNamePascalCase}Tester from './{相对于registerFile的路径到index}';
|
|
238
|
+
// 追加到 demos 数组
|
|
239
|
+
const demos: IDemoItem[] = [
|
|
240
|
+
// ...已有条目
|
|
241
|
+
{ Component: {libNamePascalCase}Tester, name: '{Demo显示名}', key: '{libNamePascalCase}' }
|
|
242
|
+
];
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
> ⚠️ `require`/`import` 的路径必须是从 `registerFile` 到 `indexFile` 的**相对路径**,根据实际目录层级计算,不硬编码固定路径。
|
|
246
|
+
|
|
247
|
+
> ⚠️ **模式选择策略**:读取 `registerFile` 后,按以下优先级匹配注册模式:
|
|
248
|
+
> 1. 文件含 `require(...)` + 数组对象含 `module` 字段 → 模式 A
|
|
249
|
+
> 2. 文件含 `import ... from ...` + 导航/路由配置 → 模式 B
|
|
250
|
+
> 3. 文件含 `demos`/`items` 数组 + `Component` 字段 → 模式 C
|
|
251
|
+
> 4. 以上均不匹配 → 停止,提示用户指定注册方式
|
|
252
|
+
|
|
253
|
+
> 注册模式与路径计算的详细说明参见 [入口模板](assets/INDEX_TEMPLATE.md)
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Phase 4:质量校验与输出报告
|
|
258
|
+
|
|
259
|
+
### 4.1 质量校验
|
|
260
|
+
|
|
261
|
+
生成完成后执行校验:
|
|
262
|
+
|
|
263
|
+
> 完整检查清单参见 [质量检查清单](references/QUALITY_CHECKLIST.md)
|
|
264
|
+
|
|
265
|
+
| 校验维度 | 关键检查项 |
|
|
266
|
+
|----------|-----------|
|
|
267
|
+
| 接口探查完整性 | JS 导出接口、平台兼容性 API、TurboModule Spec、类型定义 全部探查 |
|
|
268
|
+
| 工程结构探查 | example/demo 目录已探查、注册入口文件已探查 |
|
|
269
|
+
| 代码规范 | 无 ScrollView 根组件、无 Slider、无 console.error、无注释 |
|
|
270
|
+
| 平台兼容性 | 未使用 iOS/Android 专属属性(基于 Phase 2.2);无平台分支库全部可用 |
|
|
271
|
+
| 权限处理 | 敏感权限操作前有权限请求 |
|
|
272
|
+
| Tester 集成 | 注册入口已更新、index.tsx 含元数据导出 |
|
|
273
|
+
| 注册模式适配 | 注册模式(A/B/C)与 registerFile 现有模式一致,未破坏已有结构 |
|
|
274
|
+
| Hook 约束 | Hook 在组件顶层调用,依赖 Context 的 Hook 在 Provider 子组件中 |
|
|
275
|
+
| 废弃接口验证 | 使用引用相等性比较(`===`)验证别名关系 |
|
|
276
|
+
|
|
277
|
+
### 4.2 输出产物
|
|
278
|
+
|
|
279
|
+
| 产物 | 路径 | 说明 |
|
|
280
|
+
|------|------|------|
|
|
281
|
+
| Demo 页面文件 | `{exampleDir}/{libName}/demo/00X_*.tsx` | 每个 Demo 一个文件 |
|
|
282
|
+
| 主入口文件 | `{exampleDir}/{libName}/index.tsx` | Tester 框架 + 元数据 |
|
|
283
|
+
| 注册入口文件 | `{registerFile}` | 已追加新 Demo 注册 |
|
|
284
|
+
|
|
285
|
+
### 4.3 输出报告
|
|
286
|
+
|
|
287
|
+
生成完成后输出确认信息,包含:
|
|
288
|
+
- 生成的文件列表
|
|
289
|
+
- 探查到的工程结构(exampleDir、registerFile)
|
|
290
|
+
- 接口探查结果汇总(JS 导出接口、harmony 可用/不可用 API)
|
|
291
|
+
- Demo 数量与覆盖接口数
|
|
292
|
+
- 注册模式(模式 A/B/C)及注册路径
|
|
293
|
+
- 废弃接口验证结果(如涉及)
|
|
294
|
+
- 需用户后续确认的事项(如需手动验证的项)
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## 参考资料
|
|
299
|
+
|
|
300
|
+
- [源码探查指南](references/SOURCE_EXPLORATION.md) — JS 层导出接口、平台兼容性 API 探查方法与示例
|
|
301
|
+
- [Demo 代码规则](references/DEMO_CODE_RULES.md) — 目录规范、页面代码规范、禁止事项、常见陷阱
|
|
302
|
+
- [质量检查清单](references/QUALITY_CHECKLIST.md) — 完整校验项
|
|
303
|
+
- [Demo 页面模板](assets/DEMO_PAGE_TEMPLATE.md) — 可复制的页面代码模板
|
|
304
|
+
- [入口文件模板](assets/INDEX_TEMPLATE.md) — 可复制的 index.tsx 模板
|
|
305
|
+
- React Native 官方文档:https://reactnative.dev
|
|
306
|
+
- RNOH 官方文档:https://gitcode.com/OpenHarmony-RN/usage-docs/tree/master/zh-cn
|