@ccoalm/ccl-skills 0.1.0
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/LICENSE +201 -0
- package/README.md +49 -0
- package/dist/assets/marketplace/.agents/plugins/marketplace.json +12 -0
- package/dist/assets/marketplace/.claude-plugin/marketplace.json +13 -0
- package/dist/assets/marketplace/marketplace-manifest.json +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/marketplace.json +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.claude-plugin/plugin.json +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.codex-plugin/plugin.json +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/.worktree-only +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/agent-context/session-start.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/agent-context/subagent-start.md +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/AGENTS.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-delegation-owner.sh +125 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-edit-isolation.sh +102 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/guard-merge-authorization.sh +1156 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/hooks.json +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/merge-authorization-prompt.sh +142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-guard.sh +12 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/owner-dispatch-stop.sh +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/remind-post-merge-cleanup.sh +144 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-context.sh +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/session-start.sh +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/skill-extraction-gate-stop.sh +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/subagent-start.sh +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_delegation_owner.sh +329 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_edit_isolation.sh +322 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_guard_merge_authorization.sh +902 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_merge_authorization_prompt.sh +178 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_remind_post_merge_cleanup.sh +121 -0
- package/dist/assets/marketplace/plugins/ccl-skills/hooks/test_session_start.sh +170 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/AGENTS.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/ccl-skills.ts +564 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-install-skills.md +14 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-update-skills.md +44 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-verify-skills.md +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/packages/opencode-plugin/commands/ccl-worktree-check.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/AGENTS.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/README.md +276 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.example.json +10 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/owner-dispatch.sh +1307 -0
- package/dist/assets/marketplace/plugins/ccl-skills/scripts/owner-dispatch/test.sh +941 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/SKILL.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/agents-file-coverage-gate/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/SKILL.md +188 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/android-dev.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/flutter-dev.md +80 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/ios-dev.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/kotlin-multiplatform.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-platform-boundaries.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/mobile-quality-release.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/app-cross-platform-dev/references/source-evidence-map.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/SKILL.md +353 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/client-routing.md +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/manual-invocation-and-prompts.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/staged-review-contract.md +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/references/timeout-auth-and-capabilities.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/AGENTS.md +98 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_envelope.py +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/classify_timeout_exit.sh +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/claude_review.sh +1438 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/codex_review.sh +324 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/concern_excerpt.py +295 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/egress_schema.py +214 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/init_policy_matrix.py +642 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_packet_mcp.py +181 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/kimi_review.sh +1165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/opencode_review.sh +1190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_cli_review.py +946 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_opencode_review.py +474 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_probe_result.py +1899 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/parse_review_json.py +200 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.py +2845 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/review_gate.sh +6 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/run_claude_capture.py +71 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/runtime-surface-verification-design.md +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_classify_envelope.sh +68 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_claude_review_probe.sh +2311 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_cli_review_wrappers.sh +1832 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_code_review_identity.sh +73 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_concern_excerpt.sh +245 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_egress_schema.sh +177 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_init_policy_matrix.sh +272 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_kimi_packet_mcp.py +195 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_concurrency.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_opencode_review_retry.sh +1005 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_opencode_review.sh +258 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_probe_result.sh +574 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_parse_review_json.sh +349 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_compat.py +434 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_client_order.sh +264 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/test_review_gate.sh +2412 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/code-review/scripts/verify_native_skill_binding.py +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/SKILL.md +153 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/diagnosis-playbook.md +54 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/defect-diagnosis/references/prevention-routing.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/SKILL.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/feature-risk-router/references/security-review-gate.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/SKILL.md +165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/api-security-boundaries.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/architecture-playbook.md +160 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/artifact-generation-architecture.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/audit-history-architecture.md +29 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/bulk-workflow-architecture.md +33 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/config-rule-routing-architecture.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/cross-cutting-concerns.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-modeling-and-migrations.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/data-platform-architecture.md +210 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/dependency-platform.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/developer-tooling-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/error-contract-architecture.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/event-driven-architecture.md +260 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/http-gateway-architecture.md +74 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/mq-consumer-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/multi-tenant-isolation.md +275 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/notification-architecture.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/ops-checklist.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/performance-capacity-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/protobuf-contract-architecture.md +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/redis-cache-coordination.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/release-runtime-readiness.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/replay-comparison-architecture.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/runtime-observability.md +94 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/service-scaffold.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/source-evidence-map.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-architecture/references/workflow-state-architecture.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/SKILL.md +159 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/artifact-generation-patterns.md +37 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/audit-history-patterns.md +28 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/bulk-import-export-patterns.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/config-rule-routing-patterns.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/data-access-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/db-schema-and-dal-patterns.md +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/dependency-client-patterns.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/developer-tooling-patterns.md +70 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/domain-feature-patterns.md +78 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/engineering-patterns.md +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/error-contract-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/feature-playbook.md +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/http-gateway-client-patterns.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/mq-consumer-patterns.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/notification-patterns.md +42 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/observability-implementation-patterns.md +101 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/performance-capacity-patterns.md +44 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/protobuf-contract-patterns.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/public-api-integration-patterns.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/quality-and-testing-patterns.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/redis-cache-lock-patterns.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/release-ops-patterns.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/reliability-patterns.md +83 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/replay-comparison-patterns.md +32 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/scaffold-and-codegen.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/source-evidence-map.md +54 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/go-microservice-dev/references/state-machine-task-patterns.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/SKILL.md +80 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/grill-me/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/SKILL.md +117 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-approval-auto-reviewer.md +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-command-sandbox.md +441 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-context-freshness.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-credentials-auth.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-extensions-skills.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-file-edit-protocol.md +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-ide-integration.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-input-ingestion.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-instruction-composition.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-lifecycle-hooks.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-messaging.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-runtime-bootstrap.md +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-session-persistence.md +448 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-task-orchestration.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-tool-dispatch.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/agent-turn-lifecycle.md +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/inference-capacity-operations.md +162 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/llm-client-gateway.md +156 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/model-prompt-evaluation.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/llm-inference-integration/references/retrieval-agent-safety.md +273 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/SKILL.md +202 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/contracts-and-state.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/cross-stack-alignment.md +94 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/framework-choice.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/online-practice-uptake.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/platform-capabilities.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/product-page-checklist.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/qa-release.md +72 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/miniapp-product-dev/references/source-evidence-map.md +82 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/SKILL.md +103 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/agents/openai.yaml +5 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-agent-delegation/references/multi-agent-delegation-playbook.md +100 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/SKILL.md +70 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-data-acquisition.md +549 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/public-disclosure-channels.md +97 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/references/research-prompts.md +66 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/AGENTS.md +32 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/multi-perspective-research/scripts/test-public-data-acquisition-recipes.sh +379 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/SKILL.md +244 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/alerting-and-on-call.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/framework-middleware-checklist.md +142 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/infra-component-deployment.md +268 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-correlation-recipe.md +124 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/log-schema-canonical.md +208 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/metrics-conventions.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/obs-stack-architecture.md +107 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/sli-slo-design.md +95 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-observability/references/source-register.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/SKILL.md +303 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/canary-and-rollout-strategy.md +163 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/config-center-via-etcd.md +245 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/custom-control-plane-boundary.md +298 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-cli-concrete-recipe.md +312 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/deploy-pipeline.md +165 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/env-and-lane-matrix.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/lane-orchestration-control-plane.md +383 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/multi-region-and-cluster.md +135 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/promotion-gate-and-review.md +149 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/python-package-registry-release.md +462 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/rollback-playbook.md +123 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/secret-and-config-management.md +231 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-release-engineering/references/version-authority-and-deprecation.md +21 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/SKILL.md +276 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/dual-sidecar-and-traffic-config-center.md +127 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/framework-middleware.md +143 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/grpc-authority-workaround.md +90 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/http-response-envelope-contract.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/mesh-architecture.md +127 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/multi-env-routing.md +192 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/protobuf-http-contract-signals.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/retry-timeout-circuit-breaker.md +124 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/rpc-framework-recipe.md +494 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-choice.md +113 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-migration-playbook.md +231 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/platform-service-connectivity/references/service-discovery-recipe.md +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/SKILL.md +235 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/adr-convention.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-checklist.md +30 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-evaluation-report-template.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-execution-spec.md +108 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-sop.md +457 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/algorithm-launch-templates.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/artifact-egress-confidentiality.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/code-review-checklist.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/cross-repo-coordination.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/delivery-lifecycle.md +192 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-review-gate-mechanics.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/design-routing-and-readiness.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/diagnostic-spec-match-gate.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dispatch-owner-skills.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/dormant-code-activation.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/existing-project-assessment-report.md +223 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/external-skill-augmentation.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/feature-deprecation-cascade.md +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/high-risk-resilience-gates.md +73 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-completeness-and-minimality.md +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/implementation-entry-reentry-gate.md +122 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/modular-monolith-heuristic.md +105 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/pre-final-continuation-gate.md +115 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/problem-resolution-and-learning.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-attributes.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/quality-remediation-program.md +88 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/rd-standards-doc-family-checklist.md +27 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/refactoring-discipline.md +52 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/review-reception.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/shared-gate-artifact-classification.md +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/source-evidence-map.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/status-tracker-sync.md +77 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/sync-spec-repo-contract.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/verify-developer-experience.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/references/worktree-mechanics.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-rd-workflow/scripts/check-agent-contract-coverage.sh +213 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/SKILL.md +136 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/agents/openai.yaml +9 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/analytics-visualization-interactions.md +206 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/behavioral-aesthetic-logic.md +108 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/complex-creation-interactions.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-execution-checklist.md +214 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-impl-naming-and-versioning.md +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-intake-and-acceptance.md +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/design-system-source-of-truth.md +97 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/external-ui-ux-quality-benchmarks.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/frontend-code-evidence-map.md +63 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/interaction-design-patterns.md +146 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/layout-recipes-and-screenshot-acceptance.md +250 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-project-token-consistency.md +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/multi-stack-strategy.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/operational-processing-workflows.md +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-mobile-patterns.md +324 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/platform-web-desktop-patterns.md +456 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-lifecycle-acceptance-and-iteration.md +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/product-surface-patterns.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/resource-management-interactions.md +113 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/scenario-community-patterns.md +133 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/source-map.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/tokens-and-components.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/trust-sensitive-ai-and-data-patterns.md +96 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-audit.md +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/ui-ux-design-development.md +176 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/product-ui-ux-design/references/visual-craft.md +111 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/SKILL.md +157 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/ai-service-integration-boundaries.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-contract-and-schema.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/api-security-boundaries.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/architecture-playbook.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/async-execution-model.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/background-jobs-and-scheduling.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/batch-and-pipeline-architecture.md +11 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/config-secrets-runtime.md +22 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-modeling-and-migrations.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/data-platform-architecture.md +211 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/event-driven-architecture.md +263 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/multi-tenant-isolation.md +281 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/observability-and-ops.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/packaging-runtime-readiness.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/redis-cache-coordination.md +41 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/reliability-and-error-contract.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/source-evidence-map.md +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-architecture/references/web-framework-boundaries.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/SKILL.md +143 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/ai-service-wiring-patterns.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/async-and-worker-patterns.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/background-job-patterns.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/batch-and-artifact-patterns.md +13 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/dependency-client-patterns.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/error-handling-patterns.md +26 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/feature-playbook.md +43 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/observability-implementation-patterns.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/project-structure-and-tooling.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/public-api-security-patterns.md +52 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/redis-cache-lock-patterns.md +78 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/schema-and-validation-patterns.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/source-evidence-map.md +56 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/sqlalchemy-and-migrations-patterns.md +99 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/testing-and-quality-patterns.md +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/python-service-dev/references/web-framework-patterns.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/SKILL.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/config-runtime-readback.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/mr-merge-authorization.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/post-release-env-reset.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-closeout-evidence.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/release-scope-confirmation.md +21 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/tag-and-prod-pipeline-gate.md +20 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/test-scope-prompt.md +24 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-coordination/references/watcher-discipline.md +14 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/SKILL.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/comment-safe-release-doc.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-evidence-workflow.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/release-doc-writer/references/release-testing-scope-section.md +15 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/SKILL.md +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-baseline/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/SKILL.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/prd-composition-contract.md +35 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/requirement-closure-contract.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-doc-writer/references/security-four-questions.md +38 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/SKILL.md +91 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-intent/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/SKILL.md +88 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/requirement-scope/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/SKILL.md +337 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/analysis-parse-fix-test-challenge-replay.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/attribution-verification.md +69 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/bootstrap-slim-c3-obligation-table.md +112 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/coverage-exhaustion-traps.md +45 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/description-authoring.md +162 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/dual-track-review-gate.md +507 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/eval-routing.md +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/evidence-card-template.md +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/example-domain-preselect.md +79 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/external-practice-controls.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-lifecycle-handoff.md +65 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/extraction-quickstart.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/firing-point-placement.md +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/harness-patterns-and-eval.md +286 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/incident-postmortem-extraction.md +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/l0-l1-l2-routing.md +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/online-skill-review.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/parallel-stack-references-pattern.md +164 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/r0-leakage-audit.md +90 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/recurring-anti-patterns-checklist.md +320 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/resume-paused-delivery.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-feedback-mining.md +33 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-finding-standards.md +57 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/review-rubric.md +40 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/rule-consolidation.md +118 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/skill-listing-budget.md +19 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-register.md +254 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/source-to-skill-extraction.md +658 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/two-source-extraction-pattern.md +167 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-judgment-extraction.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/uiux-routing-map.md +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/references/validation-and-landing.md +180 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-ccl-skills.sh +1452 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-evidence-card-leak.sh +491 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-mr-target-freshness.sh +173 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-size-budget.sh +488 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/check-sync-pointers.sh +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-golden-trace.rb +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-health.rb +327 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing-bank.rb +401 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/eval-routing.rb +248 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/generic-r0-leak-scan.sh +282 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/governing-chain-diff.py +321 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/impact-chain-gate.rb +964 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/register-firing-path-resolution.rb +708 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/skill-behavior-eval.py +540 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-lifecycle.rb +51 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/source-register-pending-status.rb +55 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_ai_coding_implementation_gates.sh +829 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_impact_chain_refscripts.sh +1203 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_r0_status.sh +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_register_pending_exclusion.sh +137 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_regressions.sh +173 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_route_drift.sh +377 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_size_budget.sh +833 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_skill_catalog.sh +491 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_ccl_source_register_lifecycle.sh +114 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_mr_target_freshness.sh +261 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_check_sync_pointers.sh +538 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_controlled_escalation_pins.sh +154 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_grader_diagnostics.sh +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_bank_surface_binding.sh +178 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_eval_routing_prose_target.sh +86 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_generic_r0_leak_scan.sh +131 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_git_identity_predicate_gate.sh +243 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_governing_chain_diff.sh +419 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_impact_chain_gate_dateless_host.sh +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_resolution.sh +724 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_register_firing_path_wiring.sh +414 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_regression_runner_registration.sh +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_bank_integrity.sh +205 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_routing_pointer_integrity.sh +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_credential_cwd.sh +61 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_cross_refs.sh +111 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/test_validate_skill_root_depth.sh +53 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/skill-extraction-workflow/scripts/validate-skill.sh +257 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/SKILL.md +98 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/input-state-machines.md +36 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/streaming-rich-output.md +130 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/terminal-cli-dev/references/terminal-side-channels.md +96 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/SKILL.md +408 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/AGENTS.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/bitable-setup.md +573 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/README.md +120 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/github-actions.yml +119 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/gitlab-ci.yml +76 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/ci_templates/jenkins.Jenkinsfile +106 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/classical-test-design-techniques.md +279 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/gen_report.py +2807 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/makefile-template.md +200 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/report-config-schema.md +272 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/run_pytestless.py +475 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/source-to-case-workflows.md +258 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-marker-conventions.md +316 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc-review-and-prioritization.md +145 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/AGENTS.md +16 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.dart +129 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.go +197 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.py +135 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/tc_helpers/tc.ts +285 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/test_gen_report.py +2144 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/test-artifact-management/references/update-lifecycle.md +62 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/SKILL.md +212 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/ci-fixtures-and-flake-control.md +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/client-runtime-test-matrices.md +50 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/data-and-workflow-testing.md +34 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/design-closed-contract-oracles.md +31 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/e2e-real-flow-testing.md +71 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/fitness-functions.md +240 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/integration-contract-testing.md +235 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/non-functional-specialized-scenarios.md +296 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/rd-testing-standard-template.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/run-killing-mutation-walk.md +43 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/scenario-testing.md +136 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/source-evidence-map.md +59 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/structured-tc-input-translation.md +67 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-code-authoring-patterns.md +392 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-data-and-determinism.md +39 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/test-topology-and-commands.md +92 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/unit-testing.md +46 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/vendored-contract-drift-checklist.md +64 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/references/verify-enforcement-mechanisms.md +18 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/AGENTS.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.py +140 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/client-terminal-ansi-check.test.sh +75 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.py +170 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-ast-check.test.sh +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.go +198 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/lang-basics-go-check.test.sh +109 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/testing-strategy/scripts/test_mutation_backup_recipe.sh +237 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/SKILL.md +184 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/comment-safe-feishu.md +93 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/cross-model-co-review.md +3 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/delivery-face-closeout.md +60 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/doc-charter-first.md +17 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/tighten-doc/references/session-vantage-leakage.md +58 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/SKILL.md +126 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/complex-workspace-patterns.md +47 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/embedded-h5-in-host.md +87 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/react-architecture.md +194 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/source-evidence-map.md +60 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-quality-release.md +190 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/web-react-dev/references/web-ui-quality.md +83 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/SKILL.md +179 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/agents/openai.yaml +4 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/references/shared-branch-rebase.md +25 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/AGENTS.md +23 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_status.sh +207 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/test_worktree_sweep.sh +481 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-status.sh +325 -0
- package/dist/assets/marketplace/plugins/ccl-skills/skills/worktree-isolation/scripts/worktree-sweep.sh +245 -0
- package/dist/assets/release.json +2797 -0
- package/dist/claude-adapter.d.ts +9 -0
- package/dist/claude-adapter.js +240 -0
- package/dist/cli-worker.d.ts +1 -0
- package/dist/cli-worker.js +32 -0
- package/dist/cli.d.ts +22 -0
- package/dist/cli.js +214 -0
- package/dist/codex-host.d.ts +30 -0
- package/dist/codex-host.js +162 -0
- package/dist/fs-safe.d.ts +21 -0
- package/dist/fs-safe.js +241 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/manifest.d.ts +8 -0
- package/dist/manifest.js +135 -0
- package/dist/opencode-adapter.d.ts +10 -0
- package/dist/opencode-adapter.js +416 -0
- package/dist/operations.d.ts +3 -0
- package/dist/operations.js +956 -0
- package/dist/paths.d.ts +20 -0
- package/dist/paths.js +4 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.js +1 -0
- package/dist/unified.d.ts +4 -0
- package/dist/unified.js +64 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +5 -0
- package/package.json +35 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: miniapp-product-dev
|
|
3
|
+
description: "小程序 / Taro / 微信小程序 / 支付宝小程序 / 抖音小程序 / 小程序上线审核 → implement, debug, test, and ship mini-program client features: pages, state, API integration, auth, sharing, platform capabilities, review, and device verification. Triggers also include \"重构这个小程序页面/组件(局部)\", \"refactor a mini-program page/component\"."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Miniapp Product Dev
|
|
7
|
+
|
|
8
|
+
Use this skill for mini-program client engineering and platform delivery. It covers product-facing miniapp work across WeChat, Alipay, Douyin/TikTok, Baidu, and similar host platforms. It does not own general product strategy, backend service architecture, or visual design rules.
|
|
9
|
+
|
|
10
|
+
## Framework Scope
|
|
11
|
+
|
|
12
|
+
Primary framework target: **Taro** (React-based multi-platform mini-program framework). Apply this skill's recipes assuming Taro unless the task states otherwise.
|
|
13
|
+
|
|
14
|
+
Adjacent frameworks recognized but not the default target:
|
|
15
|
+
|
|
16
|
+
- **uni-app / Remax / kbone / mpvue**: recipes here usually apply with framework-equivalent substitutions; verify before assuming behavior.
|
|
17
|
+
- **Native WeChat / Alipay / Douyin / Baidu mini-program**: host-platform contracts (config, capabilities, review, release) carry over; framework-specific code mechanics (JSX/hooks vs WXML/WXSS, lifecycle hooks, runtime APIs) require native-platform substitution.
|
|
18
|
+
- **Embedded H5 inside a mini-program webview**: this skill owns the mini-program shell, bridge contract, host capabilities, and review/release evidence; the H5 React/Vue page belongs to `web-react-dev` (or the relevant web skill).
|
|
19
|
+
|
|
20
|
+
If the team adopts a non-Taro framework as a new primary, the skill scope must be re-declared rather than letting Taro recipes silently apply to mismatched runtimes.
|
|
21
|
+
|
|
22
|
+
For evaluating whether Taro is the right choice for a given project (vs native, uni-app, Remax/kbone, or splitting per-platform), read `references/framework-choice.md`. Taro is the current default but not a permanent decision — re-evaluate when the project's target-platform set, design-system divergence, or maintenance signals change materially.
|
|
23
|
+
|
|
24
|
+
## Maturity Baseline
|
|
25
|
+
|
|
26
|
+
The current rule set is **vendor-spec + framework-canonical**, not `mature confirmed`. It is grounded in: host-platform official guidelines (WeChat/Alipay/Douyin/Baidu), Taro official documentation and examples, and canonical Taro-ecosystem UI component libraries (taroify, NutUI-Taro, tdesign React mapping). It is not yet confirmed against a production-quality miniapp portfolio observed end-to-end. Treat positive rules as defaults to apply, anti-patterns as guardrails, and upgrade rules to `confirmed` only after they pass a real feature delivery without correction.
|
|
27
|
+
|
|
28
|
+
**On existing team mini-program codebases**: a team already running a Taro (or other) mini-program codebase does NOT automatically supply positive rules. Production use is evidence of distribution, not of quality. Until that codebase has been audited end-to-end against this skill's rules — or piloted through one real feature delivery cycle with retrospect captured via `skill-extraction-workflow` — it carries the `quality-unverified` label from `references/source-evidence-map.md`. Forward work uses this skill from the start; lessons from the existing code flow back through the extraction workflow, not by silently lifting patterns.
|
|
29
|
+
|
|
30
|
+
## Runtime Compatibility
|
|
31
|
+
|
|
32
|
+
This skill is shared by OpenCode, Codex, and Claude Code. Keep instructions tool-agnostic: prefer repository-local scripts, platform developer tools, CLI commands, simulator evidence, screenshots, and explicit manual checks over host-specific features. When a tool is unavailable, record the missing evidence and use the closest deterministic check instead of pretending the platform was verified.
|
|
33
|
+
|
|
34
|
+
## Routing
|
|
35
|
+
|
|
36
|
+
- Use `product-rd-workflow` first when the work spans product intent, design, service contracts, implementation, test, review, release, and follow-up.
|
|
37
|
+
- Use `product-ui-ux-design` before or alongside coding for visible page structure, interaction model, density, empty/error/loading states, trust copy, accessibility, and launch acceptance.
|
|
38
|
+
- Use `../product-ui-ux-design/references/multi-stack-strategy.md` and `../product-ui-ux-design/references/multi-project-token-consistency.md` when the mini-program is one of several client stacks under one brand (web desktop + H5 + native app + mini-program). Cross-end brand alignment (color tokens, typography, voice/tone, terminology, navigation labels, trust copy) is owned there, not here. This skill enforces the host-platform constraints on top of those tokens. For the **scope** of what must align across web + app + mini-program (beyond just theme and logo — including auth/onboarding copy, error vocabulary, payment confirmations, privacy disclosures, share/QR payload schema, deep-link routes), read `references/cross-stack-alignment.md`.
|
|
39
|
+
- Use `web-react-dev` for the React layer when Taro shares code with a React web project (see Sibling Boundary below).
|
|
40
|
+
- Use backend architecture/dev skills for API contracts, auth services, payment callbacks, subscriptions, persistence, async jobs, and admin/ops surfaces.
|
|
41
|
+
- For backend HTTP integrations, preserve current client wire behavior unless an explicit consumer-migration decision exists. Classify JSON vs protobuf-backed HTTP using `../platform-service-connectivity/references/protobuf-http-contract-signals.md`.
|
|
42
|
+
- First decide whether the client diff touches the HTTP contract or wire behavior. Wire-unchanged page/component/state work does not need a backend owner round-trip and must not claim backend contract conformance.
|
|
43
|
+
- For unrelated client work, classify the diff with the canonical gate. If the surface is out of scope, client work may continue without claiming backend contract conformance.
|
|
44
|
+
- If the canonical gate classifies the diff as in scope, confirm the backend's recorded wire format or route back to the backend contract owner.
|
|
45
|
+
- Routine JSON/OpenAPI changes use the existing API contract record and do not require backend wire-format confirmation when the canonical reference classifies the surface as out of the protobuf wire-format gate.
|
|
46
|
+
- Mini-program request wrappers must consume the backend contract's recorded response envelope per `../platform-service-connectivity/references/http-response-envelope-contract.md`: for surfaces on the canonical `code`/`message`/`data` envelope, page/component state reads typed business data from `data`; other shipped or non-JSON envelopes are consumed per their recorded contract. Read only fields present in the recorded contract — do not infer business fields from unrecorded top-level or fallback shapes — and scatter no duplicate envelope parsing across the client.
|
|
47
|
+
- If backend wire-format evidence is unreachable for an in-scope surface, stop at `pending-contract-owner`, name the backend owner or owning repo, record the attempted lookup, and set the next escalation path. An assumed-wire-format note never unblocks merge. The blocker clears only when a checkable owner record, quoted prior backend record, or explicit migration decision is available; if no owner responds within the team's review SLA, keep the client change blocked or downscope the touched wire-format surface and record the dropped surface as an open owner-routed gap. Do not claim backend contract conformance or completion for the removed slice.
|
|
48
|
+
- Do not fork IDL or hand-maintain duplicated DTOs in the mini-program repo.
|
|
49
|
+
- Use `testing-strategy` to choose unit, component, integration, miniprogram automation, E2E, manual device, and release verification layers.
|
|
50
|
+
- Use `test-artifact-management` when the ask is about generating structured test cases from a Feishu requirements doc or codebase and tracking them in Feishu Bitable before implementation begins.
|
|
51
|
+
- Use `defect-diagnosis` first for crashes, failed builds, platform review rejection, flaky device behavior, auth/payment/share failures, or production symptoms.
|
|
52
|
+
- Use `feature-risk-router` when the slice touches money, login/identity, user data, permissions, generated/AI content, write finality, platform review policy, or release risk.
|
|
53
|
+
- Use `skill-extraction-workflow` to feed learnings from real mini-program work back into this skill (or a sibling) — corrections, repeated defects, online-practice uptake, pilot retrospectives. New mini-program work runs through this skill from the start. Recorded extraction passes are necessary evidence for upgrading the maturity baseline, but the full upgrade-path criteria (real feature delivery cycle, host-platform review pass, cross-stack alignment confirmation, correction RCA per defect — see `references/source-evidence-map.md` → "Upgrade Path to `mature confirmed`") all apply; implementation hours alone do not move the baseline. Do not silently mine an older, quality-unverified team codebase for positive rules; route observations through the extraction workflow with the right evidence label (see `references/source-evidence-map.md` → "Team-owned mini-program portfolio").
|
|
54
|
+
|
|
55
|
+
## Lifecycle and Neighboring Skills
|
|
56
|
+
|
|
57
|
+
How this skill sits inside the broader delivery loop for a mini-program feature. Each stage names its **owning skill** and what this skill receives from / hands off to it.
|
|
58
|
+
|
|
59
|
+
| Stage | Owner | What flows into this skill | What this skill hands back |
|
|
60
|
+
|---|---|---|---|
|
|
61
|
+
| Risk classification | `feature-risk-router` | Risk tags (money / identity / privacy / write finality / generated content / host capability), required gates | Confirmation that the gate set covers mini-program-specific risks (review policy, host capability, finality across host pay) |
|
|
62
|
+
| Product / cross-stage delivery | `product-rd-workflow` | Product intent, scope, service contract, release plan | Mini-program-specific delivery considerations (multi-target shipping set, host review timeline, gray release lever choice) |
|
|
63
|
+
| Design (visual, interaction, copy, states) | `product-ui-ux-design` | Design source (Figma), tokens, state enumeration, copy / voice, accessibility criteria; cross-stack alignment is owned in `../product-ui-ux-design/references/multi-stack-strategy.md` + `../product-ui-ux-design/references/multi-project-token-consistency.md` | Mini-program platform constraints on top of the design (safe-area, host gesture, capability denial states, host-native affordance), screenshot acceptance per shipped host |
|
|
64
|
+
| Implementation — React layer + pure shared | `web-react-dev` | Component decomposition, hooks, state ownership, effect discipline, pure shared DTOs / validators / mapping | Mini-program contract on co-owned runtime adapters (auth epoch tuple, request cancellation, storage manifest, finality / idempotency, kill-switch, trace propagation) — enforced via the named co-owned-adapter owner + miniapp-contract tests (see "Sibling Boundary With web-react-dev" → shared-runtime-adapter row for the full gate) |
|
|
65
|
+
| Implementation — mini-program runtime | **This skill** | Taro lifecycle, host APIs, platform branching, subpackage, capability adapters, multi-target build, review-safe copy | — |
|
|
66
|
+
| Implementation — backend services | Go / Python service skills + `llm-inference-integration` | API contracts, server idempotency by `(principal, tenant, action, business-key, fingerprint)`, payment reconciliation, share-token issuance, signed capability grants, server-side feature flags | This skill consumes those contracts. If the backend cannot supply a contract that a **specific** mini-program flow needs (server-business-key idempotency / bounded reconciliation / signed grants / fail-closed flag), route the **block-or-downscope** decision through `feature-risk-router` + `product-rd-workflow` with backend owner evidence — the legitimate exits are remove the risky capability, ship a read-only or non-finality subset, record a deferred-gate row with a tracking ticket, or block. Do not strand the work without an owner. |
|
|
67
|
+
| Implementation — native / cross-platform app | `app-cross-platform-dev` | App-side equivalent surfaces (when the same product also ships native); used for cross-stack alignment cross-checks | — (mini-program is a separate host) |
|
|
68
|
+
| Test strategy | `testing-strategy` | Layer choice (unit / component / API contract / mini-program automation / E2E / manual device / release smoke), scenario matrix | Mini-program-specific evidence requirements (one host compile is not multi-host pass; developer-tool compile is structural only; per-shipped-target real-device evidence is blocking) |
|
|
69
|
+
| Debugging / production symptom | `defect-diagnosis` | Reproduction discipline, 5-Why root cause, regression closure | Mini-program-specific repro paths (developer tool, real device, host version matrix, share/scene param) |
|
|
70
|
+
| Release / review submission / rollback | **This skill** (`references/qa-release.md`) | Per-host evidence matrix, server-flag kill-switch runbook, current platform-policy doc URL + date | — |
|
|
71
|
+
| Post-ship learning capture | `skill-extraction-workflow` | RCA framing, source-evidence labels, dual-track review/challenge gates, sibling-skill mini-map | Updates to this skill's rules, `Do Not` list, references; upgrade-path progress toward `mature confirmed`; recurring anti-pattern entries |
|
|
72
|
+
|
|
73
|
+
Treat the loop as: **risk-route → product/design → develop (this skill + web/backend) → test → release → debug → extract back**. Skipping the extract-back step is how a team accumulates implementation hours without the skill ever maturing.
|
|
74
|
+
|
|
75
|
+
Repo-local agent contracts (`AGENTS.md` at the repo root and in source directories) are part of the delivery contract: when a change moves a stable boundary, generated surface, workflow, or directory-local rule, update the nearest contract in the same MR and keep coverage in sync per `product-rd-workflow`'s spec / repo-contract sync gate.
|
|
76
|
+
|
|
77
|
+
When checking a mini-program project against team standards, split conformance into deterministic and agent review evidence. Deterministic checks cover project config, target/platform build commands, subpackage config, generated API/IDL client usage, environment/lane config, TC traceability, CI gates, and required request/trace identifiers in central request wrappers. Agent review checks cover page/component boundaries, host capability contracts, shared adapter safety, finite-value mapping, multi-target release risk, and whether tests/device evidence cover the shipped targets. For the deterministic executor list (ecosystem ESLint/`@typescript-eslint`/dep-cruiser rules + tsconfig flags) and the mini-program-specific ESLint config that enforces the two host-boundary invariants — `no-restricted-imports` banning `react-dom`/`react-dom/*` (the logic layer has no DOM), and a `no-restricted-syntax` selector confining `process.env.TARO_ENV` branching to the adapter/platform layer (use ESLint, which runs on the AST, not a regex source-scan) — see `testing-strategy/references/fitness-functions.md` §4.1.3 (client language-basics; spec 006).
|
|
78
|
+
|
|
79
|
+
## Sibling Boundary With web-react-dev
|
|
80
|
+
|
|
81
|
+
Taro is React syntax compiled to mini-program runtime; a Taro project typically shares a substantial portion of code with a React web project in the same monorepo. Without an explicit boundary, ownership of state hooks, API clients, and shared components drifts.
|
|
82
|
+
|
|
83
|
+
| Layer | Owner | Notes |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| React component structure, hooks, JSX, TSX types | `web-react-dev` | Component decomposition, state lifting, effect discipline are the same rules. |
|
|
86
|
+
| Pure shared layer (DTOs, types, validators, pure mapping) | `web-react-dev` (monorepo pkg-shared) | No platform branches; no I/O. |
|
|
87
|
+
| Shared runtime adapters consumed by mini-program targets (request client, auth state machine, storage namespace, finality/idempotency wrapper, observability transport) | **Co-owned with a named final-decision owner** (one engineer per adapter, recorded in repo). `web-react-dev` sets browser semantics; this skill's contract — full session-epoch tuple fencing, request cancellation across route switch, storage namespacing + manifest + historical-prefix purge, sensitive-field handling, late-callback fencing, server-business-key idempotency, pending-reconciliation with bounded timeout on cold start / page-show / re-login, support-id propagation, kill-switch dimensions, trace propagation — is a **blocking acceptance gate** before mini-program targets import the adapter. Web may not merge an adapter change that is browser-safe but mini-program-unsafe; the gate's miniapp-contract tests must pass first — the merge record must carry the fixed token `gate: miniapp-product-dev SKILL.md Sibling Boundary → shared runtime adapters row` plus a passing miniapp-contract run recorded on the change under merge. |
|
|
88
|
+
| Shared design tokens / theme | `product-ui-ux-design` + per-stack injection | Tokens flow from the design source; injection mechanics per `multi-project-token-consistency.md`. |
|
|
89
|
+
| Component library choice (Taroify, NutUI-Taro, tdesign-miniprogram) | **Co-owned** with `product-ui-ux-design`: design owns UX / token / accessibility / brand-fit criteria; this skill owns runtime fit (package size, host-platform compatibility, framework version compatibility, build pipeline integration). Both signoffs required. See `references/framework-choice.md` → "What this skill does NOT decide" and `../product-ui-ux-design/references/multi-stack-strategy.md` for the design source of truth check. |
|
|
90
|
+
| Taro lifecycle (`useReady`, `useLoad`, `useDidShow`, `useDidHide`) | This skill | Page lifecycle differs from React DOM lifecycle. |
|
|
91
|
+
| `Taro.*` runtime APIs (`Taro.request`, `Taro.login`, `Taro.navigateTo`, `Taro.getStorage`, etc.) | This skill | Use the repo's existing adapter when one exists; introduce an adapter for shared or high-risk surfaces (request, auth, payment, storage, host capability). Do not call host APIs ad hoc from arbitrary components. |
|
|
92
|
+
| Platform branching (`process.env.TARO_ENV`, conditional compilation, platform-specific files) | This skill | Branching at the adapter/wrapper layer, not sprinkled in render code. |
|
|
93
|
+
| Subpackage config, preloading, package size budget | This skill | Mini-program-only concept. |
|
|
94
|
+
| Host capabilities (login, pay, share, subscribe message, scan, location, file, scope) | This skill | Capability detection, denial/cancel/timeout/recovery states. |
|
|
95
|
+
| Mini-program app/page config files (`app.config.ts`, `page.config.ts`, platform-specific `project.config.json`) | This skill | Versioning, route registration, tab/subpackage layout, permissions declaration. |
|
|
96
|
+
| Build target, `taro build --type weapp/alipay/tt/swan`, CI matrix | This skill | One target compiling does not prove other targets pass. |
|
|
97
|
+
| Host-platform review submission, gray release, real-device evidence | This skill | Not a web concern. |
|
|
98
|
+
| H5 build target inside a Taro multi-target project | `web-react-dev` for the H5 output's React/browser concerns; this skill stays out unless the H5 is embedded back inside a mini-program webview. |
|
|
99
|
+
|
|
100
|
+
Cross-checking rule: when editing code shared with a React web project, also check the relevant React rule in `web-react-dev` (state ownership, effects, accessibility, observability). When the code is mini-program-only (config, host API, platform branch), this skill is authoritative.
|
|
101
|
+
|
|
102
|
+
## Core Workflow
|
|
103
|
+
|
|
104
|
+
Before editing Taro/native mini-program code, page config, host capability adapters, platform project files, styles, assets, or tests, complete enough analysis and planning for the change to be reviewable. Scale the plan to risk: a simple low-risk single-page change can use a short inline plan; multi-target, user-visible, API-visible, host-capability, platform-review/release, bug-fix, branch/MR, unclear-risk, or high-risk work needs explicit task split, design checkpoint, host/target verification matrix, acceptance checks, verification commands, rollback or stop conditions, and named handoffs to design, testing, web/app, backend, release, or diagnosis skills before edits.
|
|
105
|
+
|
|
106
|
+
1. Resolve the miniapp platform and delivery shape.
|
|
107
|
+
- Host platform target(s): WeChat, Alipay, Douyin/TikTok, Baidu, or several at once. Multi-target = a separate verification matrix; one target compiling is not proof another target passes.
|
|
108
|
+
- Framework: confirm Taro as the project's framework (default for this skill). If the repo is native, uni-app, Remax, kbone, or mpvue, apply this skill's recipes with framework-equivalent substitutions and call out the substitution in the change description.
|
|
109
|
+
- For Taro: confirm Taro major version, React version, build target list (`taro build --type weapp/alipay/tt/swan/h5/rn`), and which targets are actually shipped vs. listed-but-unverified.
|
|
110
|
+
- Target: new page, tab, component, package/subpackage, plugin, webview bridge, or platform capability.
|
|
111
|
+
- Release channel: developer tools preview, experience build, gray release, full release, or platform review submission.
|
|
112
|
+
|
|
113
|
+
2. Analyze the existing client surface before editing.
|
|
114
|
+
- Locate page ownership, route registration, tab/subpackage config, app/global state, API client, storage wrapper, auth/session owner, analytics wrapper, and tests.
|
|
115
|
+
- For Taro: locate `app.config.ts` / `app.config.js` (route + tab + subpackage + permission registration), per-page `*.config.ts`, `config/index.ts` (build config), `project.config.json` / `project.private.config.json` (WeChat target), `project.alipay.json` (Alipay target), `project.tt.json` (Douyin target) and similar per-target project config files, and the Taro plugin pipeline. `mini.project.json` is the native-Alipay project config, not the Taro Alipay project config.
|
|
116
|
+
- For native miniapp: WeChat uses `app.json` + `project.config.json` + `sitemap.json` + `ext.json` (plugin/extension); Alipay uses `app.json` + `mini.project.json`; Douyin/Baidu use their own platform project files. `manifest.json` + `pages.json` is uni-app shape, not native; only include it when the repo is uni-app. Also inspect package config, build scripts, and CI jobs as applicable.
|
|
117
|
+
- Identify platform-branching code paths: `process.env.TARO_ENV` checks in Taro, conditional compilation blocks, or platform-specific files (`*.weapp.tsx`, `*.alipay.tsx`). Confirm branching lives at the adapter/wrapper layer, not in render code.
|
|
118
|
+
- Identify whether the change must be shared, forked, or guarded by capability detection.
|
|
119
|
+
- For visible changes, map the design checkpoint to page states, navigation/back behavior, permission prompts, loading geometry, error recovery, and screenshot acceptance. Also record `product-ui-ux-design`'s implementation-owner checkpoint before the first edit — its field list (design/stack/test owners, entry-rule evidence, rendered/device evidence status) and copy-only path are authoritative there; load the named owner skills rather than only naming them, and treat a completion claim without `captured/verified` rendered evidence as incomplete — an explicitly accepted gap closes the slice only as `pre-runtime-test ready` / handoff, never as complete/done.
|
|
120
|
+
- For UI/UX redesign slices meeting `product-ui-ux-design`'s page-slice trigger conditions — that gate's trigger list is authoritative and must be checked, not paraphrased, whenever a screen/surface change could be a redesign, restyle, new-style declaration, structural/visual-system change, continuation, or redesigned-surface reference — apply its cross-stack page-slice gate before Taro or host-platform mechanics: RED-first focused assertion, IA regrouping by user intent/consequence, behavior-contract preservation, state matrix, rendered evidence, and the design verdict (`accepted` / `rejected` / `pending`; missing = `pending`, and `design-rejected` blocks complete/MR-ready/normal/draft MR per the **Rejected-surface rule**). Translate Web/App examples into host developer-tool or real-device proof; a browser/H5-only preview does not satisfy mini-program UI/UX evidence.
|
|
121
|
+
|
|
122
|
+
3. Define the miniapp contract before coding.
|
|
123
|
+
- Pages, route params, tab ownership, back behavior, deep links, scene/query entry, and share/open-from-chat behavior. Treat every scene/share/QR param as untrusted input: schema-parse it, server-authorize the referenced target against the current identity, and require backend-issued, TTL-bounded, replay-protected share tokens for attribution or unlock flows. Client-side attribution is never the final source of truth.
|
|
124
|
+
- API request contract, auth/session renewal, request cancellation or de-dupe, error envelope mapping, retry policy, and trace/request id propagation. Auth must run through a single state machine with single-flight token refresh, a session/user-identity epoch, and stale-callback fencing — concurrent pages must not both silently re-login and overwrite each other's session.
|
|
125
|
+
- Finite-value boundary: generated API enums, backend string codes, scene/share/QR params, storage values, analytics dimensions, and host bridge payload codes should flow through one typed client/domain mapping module. Pages/components should use mapped symbols and label tables instead of scattering raw values such as `"US"`, `"CN"`, `"active"`, or `"default"` across render, storage, routing, or tracking code. If shared client-domain ownership is unclear, keep a local mapper for the slice, mark temporary duplicate/raw uses with `finite-value-debt: <task-ref> <owner> <deadline> <reason>`, and record the consolidation owner. Architecture owns the cross-stack semantic decision when the same value must align across mini-program, web, app, backend, storage, and analytics.
|
|
126
|
+
- Storage scope: local storage keys, TTL, sensitive data handling, migration, logout/account-delete cleanup, and stale-cache recovery.
|
|
127
|
+
- Capability contracts: login, user profile, phone number, location, camera, album, file, scan, payment, subscribe message, share, webview, Bluetooth/NFC, clipboard, and open settings.
|
|
128
|
+
- Analytics: page exposure, entry scene, click/submit, funnel, error, performance, and release version dimensions.
|
|
129
|
+
- High-risk finality: **server-enforced** idempotency (business-key dedupe on the backend) is the primary defense; UI duplicate-submit lock is secondary, never the only line. Persist pending order/request id **before** invoking the host-platform action (pay, scan, submit). On cold start / page show / re-login, reconcile pending state against the backend **before** enabling a new attempt. Treat local `cancel` as non-final until the backend reconciliation confirms it — async callbacks can flip cancel → success after the user moved on.
|
|
130
|
+
|
|
131
|
+
4. Implement with platform constraints visible.
|
|
132
|
+
- Keep page render code thin; isolate data loading, command handling, mapping, validation, and platform adapters.
|
|
133
|
+
- Keep platform APIs behind local wrappers when the repo already has them. Do not call host APIs (`Taro.request`, `Taro.login`, `Taro.requestPayment`, `wx.*`, `my.*`, etc.) ad hoc from arbitrary components.
|
|
134
|
+
- For Taro: confine `process.env.TARO_ENV` and conditional-compilation branches to adapter/wrapper modules. Render components should consume capability-flags or platform-specific files (`*.weapp.tsx`, `*.alipay.tsx`), not branch on `TARO_ENV` inline.
|
|
135
|
+
- For Taro: do not import `react-dom` or call real browser-only APIs (`document.*` mutation, `window.*` mutation, `requestAnimationFrame`, `IntersectionObserver`/`ResizeObserver`/`MutationObserver`, browser layout APIs) into code that compiles to a mini-program target. Use Taro's cross-platform equivalents (`Taro.createSelectorQuery`, `Taro.nextTick`, lifecycle hooks). Taro 3 ships an emulated DOM that tolerates some neutral usage, but treat real-browser-only APIs as H5-only and isolate them behind the `h5` target (`*.h5.tsx`, capability adapter, or `process.env.TARO_ENV === 'h5'` in adapter code).
|
|
136
|
+
- For Taro: own durable page/component state in the repo's chosen state owner (Zustand, Jotai, MobX, Redux Toolkit, React Context, TanStack Query, or an existing custom store as appropriate) rather than `Taro.eventCenter`. `eventCenter` is fine for navigation handoff payloads and simple lifecycle events between sibling pages; do not use it as the canonical store for durable, multi-page state. Always register listeners with cleanup in `useDidHide` / `useUnload` / effect teardown.
|
|
137
|
+
- Respect miniapp package limits, subpackage loading, preloading, image/font budgets, cold-start performance, and first-screen loading. For Taro, every subpackage page must be declared in `app.config.ts` `subPackages`; otherwise `Taro.navigateTo` / `Taro.switchTab` to it fails at runtime. Subpackage preload (`preloadRule` / `Taro.preloadSubpackage`) is a performance optimization, not a navigation prerequisite — verify routing works without preload and that the loading/transition state is acceptable, then add preload as needed.
|
|
138
|
+
- Route-API correctness is a static rule, not a runtime hope: `tabBar.list` pages must live in the main package and only `Taro.switchTab` may target them; subpackage pages are reached via `Taro.navigateTo` / `redirectTo` / `reLaunch`; `switchTab` to a non-tab page or `navigateTo` to a tab page fails silently or at runtime. Wrap routing in a typed helper that knows each page's route class. Model the cold subpackage-download path (network slow / failed): show loading, handle `fail` callback, allow retry and back fallback — do not let the user stare at a frozen tap.
|
|
139
|
+
- Model permission denial, permanent denial, settings handoff (`Taro.openSetting` / native equivalent), capability unavailable, offline/weak network, background/foreground restore, and host-version incompatibility.
|
|
140
|
+
- Keep copy and UI states review-safe for platform policy: privacy prompts, user authorization, payments, ads, medical/financial/legal-sensitive wording, generated content, and UGC moderation where relevant.
|
|
141
|
+
- Treat webview bridges and plugin APIs as security boundaries, not just contracts.
|
|
142
|
+
- **Initial allowlist is not enough** — once a webview navigates or executes redirect/XSS, an allowed page can still try to invoke capabilities.
|
|
143
|
+
- The contract: strict HTTPS origin + path allowlist (an allowed domain with an open redirect is not safe — pin path or use signed routes), nonce/handshake **bound to `(webview-instance, current-route, session-epoch)`** and re-issued on every navigation, **origin/path revalidated on every message** (not only at handshake), **per-message capability invocation requires a server-signed capability grant scoped to the full identity + session tuple `(route, action, session-incarnation, user, tenant, bound-account, permission-scope-hash, webview-instance, short-expiry)`** — route-level opt-in alone lets a compromised allowed page reuse the opt-in across actions, and an incomplete identity binding lets a grant survive a permission downgrade or bound-account switch; the signing dependency has an **offline contract** (pre-mint a short-lived bundle for the route's first interaction; on outage additional capabilities fail closed with explicit unavailable UX — never bypass signing because the backend is slow), schema validation on every payload, timeout, and cleanup on `useDidHide` / `useUnload`.
|
|
144
|
+
- Treat the embedded page as adversarial input even when it is "your own" H5.
|
|
145
|
+
- Per-page command/async-work ownership: every long-running operation (request, upload, scan, polling, subpackage download, host capability call) is owned by a per-page controller with abort/cancel, a lifecycle epoch (incremented on page unload, route switch, logout/account-switch), and a late-result-ignore rule — callbacks arriving after the epoch advances are dropped, not applied to a destroyed page or the next user's state. For operations that cannot be canceled (server-side payment, irrevocable upload), reconcile final state via backend on next entry instead of mutating UI from a stale callback.
|
|
146
|
+
|
|
147
|
+
5. Verify in the right environment.
|
|
148
|
+
- Run repo formatter, typecheck/build, focused tests, and platform compile commands. For Taro, run `taro build --type <target>` for every target the change touches; one target's success is not the others' success.
|
|
149
|
+
- **TC traceability**: link tests via the `createTcSuite(test, describe)` factory wrapper. Registers at collection time so `.skip` / `.skipIf` / `.todo` still map to Bitable status. Full overloads supported: `.concurrent` / `.each` / `(name, options, fn)`. Helper from `test-artifact-management/references/tc_helpers/tc.ts`, installed under `test/tc.ts`. See `test-artifact-management/references/tc-marker-conventions.md`. Before adding tests, `grep -rn 'tcTest\|tcDescribe' src/ __tests__/` plus the sidecar `test/results/tc-map.jsonl` to check for existing coverage — extend rather than duplicate. When a TC is marked 废弃, grep both source and sidecar; follow deprecation cascade in `testing-strategy`. Tests without any TC link: prompt user only when the underlying code is also removed.
|
|
150
|
+
- **废弃级联:业务代码是否仍在用** — 小程序栈混合多种引用机制,单一 grep 不够:
|
|
151
|
+
1. TS/JS 模块:`npx madge --dependents src/<path>` 或 `grep -rEn "from ['\"][./]*<path>"`
|
|
152
|
+
2. 页面注册:检查 `app.json` / `app.config.ts` 的 `pages` 数组;若页面 path 不在数组里,整个页面文件可删
|
|
153
|
+
3. 组件/模板:`grep -rn "<custom-tag>" src/`(usingComponents 在父 json 里声明 + wxml 里使用);`grep -rn "<wxs.*src=\"<wxs-file>" src/`
|
|
154
|
+
4. 静态资源:图片/字体被 wxml/wxss 引用 → `grep -rn "<filename>" src/`;分包资源 → 查每个分包 `pages` 列表
|
|
155
|
+
5. 平台条件编译(Taro 多端):`#ifdef WEAPP / ALIPAY` 内的 import 在另一端不存在;按目标平台跑 build 看 warning
|
|
156
|
+
- For visible changes, inspect the rendered page in the relevant developer tool (WeChat DevTools, Alipay IDE, Douyin DevTools, Baidu DevTools), simulator, preview build, or real device and capture evidence where feasible.
|
|
157
|
+
- For systemic UI/UX redesign slices, diff the declared host target list against repo-configured build targets; every configured target must be classified as shipped (needs rendered evidence), product-level permanently excluded (can complete) — valid only when the authoritative build/release target source already stopped shipping that target before this slice; removing or disabling a target within the slice is a separate product/release scope change that routes through its product/risk/release owners and cannot satisfy this gate's evidence for the same slice; explanatory docs or an MR comment alone are temporary-skip authority, never permanent exclusion — or temporary slice-skip for a shipped target (leaves that host `pre-runtime-test ready` / `blocked`), and any unclassified target blocks completion.
|
|
158
|
+
- For UI/UX redesign evidence, include declared host targets, host developer-tool or real-device channel, loading/empty/error/final states, long text or text-scale behavior where supported, permission/capability prompts, route/share/scene entry when relevant, and screenshot or equivalent host-rendered artifact. Mark each dimension covered or `N/A` with a one-line reason; `N/A` is valid only when the reason names a verifiable structural fact, explains why that fact makes the dimension unreachable or unchanged for this slice, and includes a checkable pointer such as a file path, config key, or commit that resolves at review time. Persist evidence artifacts where reviewers can access them using sanitized/test accounts and redacting tokens, PII, credentials, private paths, and raw personal data; remove temporary smoke files or generated preview helpers before commit unless the repo intentionally owns them.
|
|
159
|
+
- For mini-program runtime changes, developer-tool or real-device smoke is a completion gate, not optional evidence. This includes changes to `Taro.*` or host APIs, `wx.*`/`my.*` calls, chunked/streaming transport, foreground/background recovery, route/share/scene behavior, storage/session restore, permissions/capabilities, and host-rendered loading/error/final states. If the tool or device is missing, first attempt discovery and normal setup; if still unavailable, stop at `pre-runtime-test ready` or `blocked` and name the owner, attempted commands, residual risk, and next unblock action. `pre-runtime-test ready` is a handoff-only label; it is not merge-ready, release-ready, or complete.
|
|
160
|
+
- If an automation, remote-control, or screenshot channel reports a blank or stale mini-program surface while a human operator can see the real host page rendering, treat it as an observation-channel conflict before treating it as an app defect. Re-check focus/window/permission state, capture the human-visible state through another channel when possible, label which evidence came from the automation channel versus the human-visible host, and only mark "blank screen" as a product defect after at least one host-visible channel reproduces it.
|
|
161
|
+
- When a human operator's already-authenticated host client or device is used as the runtime test surface, treat it as a human-assisted host test: record observer role/source class, sanitized account class, host client/device, entry path, actions performed, redacted artifacts, state changes such as login/logout or permission prompts, and restoration outcome in the project evidence. Label it as manual, scenario-scoped evidence; it does not replace required automated assertions or other host checks. If requested logout/account-switch/storage/permission restoration is not confirmed, mark the host test blocked or incomplete until restored or handed off to a named owner. Do not record personal phone numbers, personal operator names, chat/contact handles, tokens, private account names, or reviewer credentials in shared artifacts.
|
|
162
|
+
- Treat appid, dev-tool login, plugin authorization, service-port availability, and host identity/configuration as part of the runtime verification surface, not as background noise. A generated preview QR or a backend login success does not prove the mini-program runtime path until the correct host/app identity and permissions are exercised in the tool or on device.
|
|
163
|
+
- Verify route entry, share/deep-link scene params, auth state, storage restore, network error, permission denial, and primary recovery path for affected flows.
|
|
164
|
+
- For detail pages and deep-link/share/QR entry points, test missing or stale route params, missing local storage/cache payloads, expired auth, and direct cold entry. These states must resolve to an explicit empty/error/recovery state or safe redirect; a permanent loading spinner or blank screen under cold entry or missing-param entry is a blocking defect that must be fixed or explicitly marked `blocked` with a real owner, resolution path, and target follow-up point before the flow can be called complete. For stale storage/cache, include at least one real-device or emulator state test with a prior-version or manually seeded cache payload. Developer-tool-only stale-cache evidence is fallback evidence and must be labeled as a `device-state gap`; a flow with an open `device-state gap` is `blocked` or `pre-runtime-test ready`, not complete.
|
|
165
|
+
- For payment, subscription, login, phone, camera/media, or write-finality changes, verify sandbox/mock plus one platform-specific happy path. If platform evidence is unavailable after remediation, stop at `pre-runtime-test ready` or `blocked`; do not complete the work by only recording the gap.
|
|
166
|
+
- For release work, verify app id/env, version, build output, platform review checklist, gray release/rollback path, analytics version tag, and owner handoff. For every **shipped** host platform, compile + developer-tool/real-device evidence is blocking — "recorded as unverified" is only acceptable for targets the release is not actually shipping. Mini-program rollback through host-platform re-review is slow; risky flows must therefore have a **server-side feature flag with safe default + tested kill-switch runbook** in place before submission. Capture the current official platform-policy doc URL + date for every review-sensitive area touched (payment, privacy, AI/generated content, minors, financial/medical/legal copy) — policy text changes faster than skill rules.
|
|
167
|
+
|
|
168
|
+
## Non-Negotiable Rules
|
|
169
|
+
|
|
170
|
+
- Do not treat a browser or H5-only preview as proof that a miniapp platform passes. For Taro, `taro build --type h5` passing is not evidence that `weapp`/`alipay`/`tt`/`swan` targets pass.
|
|
171
|
+
- Do not push large or high-frequency `setData` payloads across the logic↔render bridge. `setData` serializes its payload from the logic thread to the render thread on every call, so a multi-hundred-KB payload or a per-scroll-tick / per-keystroke call janks rendering, and the host drops an oversized call (WeChat documents a per-`setData` size limit on the order of 1 MB — confirm the exact current value in the platform docs). Send only the changed fields via data-path keys (e.g. `this.setData({'list[3].done': true})`), not the whole list; throttle/debounce high-frequency updates; and page or virtualize long lists rather than re-pushing the full array. (WeChat 小程序平台性能优化指南:`setData` 数据量与调用频率,以当前官方文档为准;Taro `setState` compiles to `setData`, so the same limit applies.)
|
|
172
|
+
- Do not call multi-platform miniapp work complete because one host platform compiled.
|
|
173
|
+
- Do not add direct platform API calls when the repo has wrappers or adapters.
|
|
174
|
+
- Do not import `react-dom` or use real browser-only APIs (DOM mutation, browser observers, RAF/layout APIs, browser globals) in Taro code that compiles to a mini-program target; isolate that code behind the H5 build target.
|
|
175
|
+
- Do not sprinkle `process.env.TARO_ENV` branches inside render code as a project convention; confine platform branching to adapter/wrapper modules or platform-specific files. (Taro permits inline branching; the guardrail is a maintainability rule, not a framework limitation.)
|
|
176
|
+
- Do not use `Taro.eventCenter` as the canonical owner of durable cross-page state; reserve it for navigation handoff and simple lifecycle events, and clean up listeners on `useDidHide` / `useUnload`.
|
|
177
|
+
- Do not ship a page without verifying route registration, entry scene/share params, tab vs. `navigateTo` vs. `switchTab` vs. `redirectTo` vs. `reLaunch` semantics, and page-stack depth budget. Routing defects are a leading cause of host-platform review rejection.
|
|
178
|
+
- Do not leave async work running across page hide/unload or route switch: every long-running operation lives under a per-page controller with cancel + lifecycle epoch + late-callback ignore. Callbacks arriving after the epoch advances are dropped.
|
|
179
|
+
- Do not let any money / quota / publishing / account-finality mutation rely on a client-side UI lock alone — server-enforced idempotency by business key is the primary defense. Persist pending state before invoking the action; reconcile against backend on cold start / page show / re-login before enabling a retry. Treat local `cancel` as non-final until backend confirms.
|
|
180
|
+
- Do not let logout / account-switch leave in-flight work alive: increment the auth epoch, abort pending requests / uploads / pollers, clear query caches and storage namespaces, and drop any callback whose epoch is stale.
|
|
181
|
+
- Do not store sensitive durable fields (phone, profile, tenant flag, identity proof, payment metadata) in raw mini-program storage by default. If durable storage is required by product, namespace by user + tenant + platform + app-version, bound by TTL, prefer encrypted or server-backed storage, and add a purge test that runs on logout/account-delete.
|
|
182
|
+
- Do not trust scene / share / QR / webview-bridge payloads: schema-parse, server-authorize against current identity, require backend-issued and TTL-bounded share tokens with replay protection, and gate webview bridge by HTTPS origin + path allowlist + per-message capability allowlist + nonce.
|
|
183
|
+
- Do not scatter backend enum/string literals through mini-program pages, scene/share/QR parsing, host bridge payload handling, storage, analytics, or tests. Centralize finite-value parsing, display labels, defaults, and unknown-value behavior at the API/client-domain boundary, and keep raw literals only in clearly named boundary conversion tests that cover every known external value plus unknown/default behavior. Migrate existing non-boundary test raw literals for that value in the same pull request or mark each remaining use with `finite-value-debt: <task-ref> <owner> <deadline> <reason>`, even when the current slice does not introduce a new mapper.
|
|
184
|
+
- Do not ship auth, payment, phone, location, camera, share, subscription, or generated-content flows without explicit denial/error/retry states.
|
|
185
|
+
- Do not ship a host platform without compile + developer-tool/real-device evidence for that platform — "recorded as unverified" is only acceptable for non-shipped targets.
|
|
186
|
+
- Do not claim a mini-program runtime fix is complete when developer-tool or real-device smoke did not run. Build output, unit tests, source-regex checks, and independent code review can make the branch `pre-runtime-test ready`; they cannot make host-runtime behavior complete.
|
|
187
|
+
- Do not submit a risky flow for platform review without a server-side feature flag (safe default + kill-switch runbook); platform-review rollback is too slow to be the only lever. The flag does not stop client-only effects (permission prompts triggered at startup, SDK auto-collection on load, host-platform config already submitted) — the flow's **client-side code path itself must no-op when the flag is off**, the SDK must not load until the flag is on, and any host-config change submitted at review time must be reviewed for "what if we need to disable this without a new submission" before approval.
|
|
188
|
+
- Do not ship review-sensitive surfaces (payment, privacy disclosure, AI/generated content, minors, financial/medical/legal copy, account deletion, SDK data collection) without naming the current platform-policy doc URL + date you read.
|
|
189
|
+
- Do not claim platform review or real-device readiness without current evidence.
|
|
190
|
+
- Do not put private app ids, secrets, tokens, reviewer accounts, or internal product names into this skill or shared references.
|
|
191
|
+
|
|
192
|
+
## Reference Loading
|
|
193
|
+
|
|
194
|
+
- For source provenance, current extraction boundary, and keep/merge/discard decisions, read `references/source-evidence-map.md` when auditing or re-extracting this skill.
|
|
195
|
+
- For platform-specific capability and config checks, read `references/platform-capabilities.md`.
|
|
196
|
+
- For product/page acceptance and UI state checklist, read `references/product-page-checklist.md`.
|
|
197
|
+
- For API, auth, storage, analytics, and high-risk finality contracts, read `references/contracts-and-state.md`.
|
|
198
|
+
- For QA, developer-tool, real-device, review submission, release, and rollback checks, read `references/qa-release.md`.
|
|
199
|
+
- For framework choice (Taro vs native vs uni-app vs Remax/kbone vs per-platform split) and decision factors, read `references/framework-choice.md`.
|
|
200
|
+
- For cross-stack alignment scope (what must align across web + app + mini-program beyond theme/logo — auth copy, error vocabulary, payment confirmation, privacy disclosure, share payload schema, deep-link routes), read `references/cross-stack-alignment.md`.
|
|
201
|
+
- For incorporating online best practices (canonical Taro / WeChat / Alipay / Douyin examples, top-tier mini-programs as UX idiom library, vetting weak vs strong online sources) without overclaiming what observation can prove, read `references/online-practice-uptake.md`.
|
|
202
|
+
- For cross-stack brand alignment (web desktop + H5 + native app + mini-program sharing one brand), read `../product-ui-ux-design/references/multi-stack-strategy.md` and `../product-ui-ux-design/references/multi-project-token-consistency.md`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Contracts And State
|
|
2
|
+
|
|
3
|
+
Use this reference when miniapp work touches API integration, auth, storage, analytics, or finality.
|
|
4
|
+
|
|
5
|
+
## API Contracts
|
|
6
|
+
|
|
7
|
+
- Define request params, response envelope, error codes, retryability, idempotency, and trace/request id behavior.
|
|
8
|
+
- Map backend errors to user-facing copy and recovery controls; do not expose raw transport errors.
|
|
9
|
+
- Preserve cancellation semantics for route changes, repeated taps, pull-to-refresh, and background/foreground transitions.
|
|
10
|
+
- For long-running operations, define polling, refresh, timeout, and final-state reconciliation.
|
|
11
|
+
|
|
12
|
+
## Auth And Identity
|
|
13
|
+
|
|
14
|
+
- Separate platform login code, app session token, bound account, phone/profile authorization, and backend identity.
|
|
15
|
+
- Centralize auth in one state machine. Token refresh runs as **single-flight** — concurrent expired-token responses share one in-progress `Taro.login` + code-exchange, never two parallel exchanges where the slower one overwrites the newer session.
|
|
16
|
+
- Maintain a **session epoch** that is the tuple `(session-incarnation-uuid, user-id, tenant-id, bound-account-id, permission-scope-hash)`, not a bare monotonic counter. App restart generates a new session-incarnation-uuid so old persisted state cannot validate against a reused counter. Increment / regenerate the epoch on login, logout, account switch, **and on any silent token refresh that returns a different subject / tenant / bound-account / permission scope** — silent refresh is not always same-user, and old callbacks that wrote "under the same counter" can otherwise leak across identities. Every request, upload, poller, host-capability call captures the full epoch tuple at start; callbacks whose tuple does not match drop their write.
|
|
17
|
+
- Model expired session, failed silent login, user-declined authorization, account switch, logout, and account deletion.
|
|
18
|
+
- On logout / account deletion / account switch, the sequence must hold even when each step has implementation subtleties:
|
|
19
|
+
0. **Before any purge, confirm external-finality pending operations are server-ledgered**: every pending external-finality row (payment via host gateway, third-party upload, etc.) must already exist on the backend under the old `(principal, tenant, business-key, idempotency-key)` with a discoverable support id. Purge deletes only the local mirror, never the source of truth — next login (whether same user or different) reconciles external finality from the server, not from local pending rows. If a host-finality operation is still in-flight when logout is invoked, surface a warning ("a payment/upload is still in progress; logout will keep it running on the server — you can recover it from the receipts page") and let the user confirm; do not silently strand the operation.
|
|
20
|
+
1. **Capture the old identity + prefix set from the pre-advance auth context** (read `user-id`, `tenant-id`, `bound-account`, the storage manifest's prefixes for this identity, in-flight operation list) — once epoch advances, the old subject may not be reconstructible from in-memory state.
|
|
21
|
+
2. **Publish the epoch advance and a new-session activation barrier in one atomic step** — new login attempts queue behind the barrier until purge completes.
|
|
22
|
+
3. Cancel in-flight requests / uploads / pollers / host-capability callbacks captured in step 1.
|
|
23
|
+
4. Purge the captured namespace prefixes AND any declared **legacy global / unscoped sensitive keys** (keys written by older app versions before user+tenant namespacing existed — declared in the storage manifest as `legacy-global` so the cleanup is explicit, not silent).
|
|
24
|
+
5. Clear in-memory state, webview state, query cache, and stale route assumptions.
|
|
25
|
+
6. Release the activation barrier; new sessions may now activate.
|
|
26
|
+
|
|
27
|
+
A new login that starts before purge finishes can delete or repopulate the wrong user's data; the activation barrier is what enforces "purge first, then welcome the next user".
|
|
28
|
+
- Avoid collecting profile, phone, location, or media permission before the user action that needs it.
|
|
29
|
+
|
|
30
|
+
## Storage
|
|
31
|
+
|
|
32
|
+
- Use repo-local storage wrappers when available.
|
|
33
|
+
- Default-deny durable storage of sensitive fields (phone, profile, identity proof, payment metadata, tenant/role flags, location, raw tokens). If product explicitly requires durability, the field passes through a checklist: namespaced by the **full identity scope needed for restoration** — minimum `user + tenant + bound-account + platform + app-version`, plus `permission-scope-hash` for fields whose validity depends on the user's current permissions, bounded TTL, encrypted at rest or server-backed, and covered by a purge test that runs on logout / account-delete / account-switch.
|
|
34
|
+
- **Canonicalize identity sentinels**: for single-tenant deployments use `tenant=deployment:<deployment-id>`, never raw `null` / omitted; for products without a bound-account concept use `bound-account=user:<user-id>` so the namespace key is well-defined. Never let `null` / `undefined` / missing become a valid identity component — different "no value" representations collide into the same namespace and cross-leak between users on shared-device or family-account flows.
|
|
35
|
+
- Maintain a **storage manifest** that lists every namespace prefix the app uses (including historical app-version prefixes from upgrades) AND any **declared `legacy-global` keys** — unscoped sensitive keys written by older app versions before user+tenant namespacing existed. Purge / migration on logout / account-delete / account-switch consults the manifest and clears **all** historical prefixes for the user PLUS the `legacy-global` set. Old-app-version sensitive keys and pre-namespacing global keys must not survive an identity change; the manifest is the audited registry of "what could possibly hold sensitive state".
|
|
36
|
+
- Define key owner, namespace, TTL, migration, invalidation, and cleanup for every key.
|
|
37
|
+
- Mini-program storage is **device-scoped**, not user-scoped. On shared devices the next user inherits whatever the prior user left behind unless the namespace and purge discipline above is enforced.
|
|
38
|
+
- Validate restored state against the full session epoch tuple (incarnation + user + tenant + bound-account + permission-scope), current route params, host platform, and app version. Stale restored state must be discarded, not silently applied.
|
|
39
|
+
|
|
40
|
+
## Analytics
|
|
41
|
+
|
|
42
|
+
Track enough to debug and evaluate product behavior:
|
|
43
|
+
|
|
44
|
+
- Page exposure and unload.
|
|
45
|
+
- Entry scene/source, route params class, campaign or share source where allowed.
|
|
46
|
+
- Click/submit, validation failure, permission denial, retry, cancel, success, and final failure.
|
|
47
|
+
- API duration, error class, and request id in redacted form.
|
|
48
|
+
- Release version, platform, host version, and feature flag dimensions.
|
|
49
|
+
- **Error / crash reporting field set** (whether the project uses platform-native error reporting, Aegis / Sentry / Bugly equivalent, or a custom backend pipeline): each report MUST carry release version, host platform + host-client version, scene value, route + route params (sanitized), request id, sanitized error class (no PII / token / raw payload), session-incarnation, and the same identity-tuple fields used for tracing. Without these, an error report is unjoinable to back-end logs. SDK auto-capture (page crash, network failure, JS error) is subject to the privacy disclosure rules in `platform-capabilities.md` Review Policy Awareness — auto-capture without inventory declaration is a review-rejection risk. Field whitelisting at the reporter, not field-redaction-in-pipeline, is the safer default for PII.
|
|
50
|
+
|
|
51
|
+
## High-Risk Finality
|
|
52
|
+
|
|
53
|
+
Use this checklist for payment, quota, order, publishing, generated content, account, permission, or irreversible writes:
|
|
54
|
+
|
|
55
|
+
- **Server-enforced idempotency** by client-generated **idempotency key**, generated and persisted on the client **before any backend mutation call** (before order-create, before submit, before pay-invoke). The backend stores `{principal-user-id, tenant-id, action-class, business-key, idempotency-key, request-payload-fingerprint}` immutably and **rejects a second call whose principal / tenant / action / payload-fingerprint does not match the first call's record under the same key** — a bare client-generated key replayed across users, tenants, actions, or with a different payload must not collide into the first call's effect. Even if the server processed the create but the client never saw the response, the next launch finds the persisted key and reconciles by key, not by order id.
|
|
56
|
+
- UI duplicate-submit lock and visible pending state — **secondary** only. A UI lock that disappears on refresh, route switch, app kill, or second-device attempt is not a safety property; the server idempotency above is.
|
|
57
|
+
- **Persist pending state before the action**: the pending row carries `{idempotency-key, business-key, action-class, timestamp, session-epoch-tuple}` and is written *before* calling `Taro.requestPayment` / `Taro.uploadFile` / submit. If the app is killed at any point, the next launch sees the pending row.
|
|
58
|
+
- **Cold-start / page-show / re-login reconciliation has a bounded timeout and a 'state uncertain' recovery path**. On every entry point that could create a new high-risk action, look up pending state, reconcile against the backend (final / still-pending / canceled), with a bounded timeout (e.g. 5–10 s). On timeout or backend outage, do NOT deadlock the user: surface "state uncertain", expose support id + idempotency key, and offer recovery. **Recovery scope depends on whether the action is server-owned or externally final**: server-owned reversible actions (draft submit, server-side queue work) MAY use a server-authorized abandon path (server marks the key abandoned, new attempt allowed). External finality actions (payment via host pay gateway, third-party uploads, anything where an external provider can still report success after our timeout) **must NOT abandon until the external provider's ledger is reconciled** — abandon-then-retry would let the old provider callback succeed in parallel with a new attempt. For these, the recovery path is "wait + retry reconcile" or "open support case", not "abandon and try again". Without bounded recovery, one corrupt pending row blocks the user; without the abandon-scope rule, abandon causes double-finality bugs.
|
|
59
|
+
- **Cancel is not final.** Local cancel (`requestPayment` fail/cancel, user backs out, network error) does not mean the backend operation didn't succeed. Show "checking final state" until backend reconciliation confirms. Async callbacks routinely flip a locally-canceled payment to success.
|
|
60
|
+
- Callback/reconciliation path for payment or async work, with order/request id matched on both sides.
|
|
61
|
+
- Support-visible order/request id surfaced to the user; without it, support cannot disambiguate "I paid but app says canceled".
|
|
62
|
+
- Safe retry and user explanation for uncertain final state — never present "succeeded" or "failed" when reconciliation has not run.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Cross-Stack Alignment
|
|
2
|
+
|
|
3
|
+
Use this reference when the mini-program is one of several client stacks (web desktop, H5, native app, mini-program) sharing one product/brand. It enumerates the **scope** of what must align across stacks — beyond color tokens and the logo — so the mini-program implementation can call out misalignment instead of silently diverging.
|
|
4
|
+
|
|
5
|
+
This reference owns the **enumeration of alignment surfaces** the mini-program must check. The actual design rules (token system, voice/tone, brand assets) are owned by `product-ui-ux-design/references/multi-stack-strategy.md` and `multi-project-token-consistency.md`. This file maps what mini-program-side implementation has to verify against those design sources.
|
|
6
|
+
|
|
7
|
+
## Alignment surfaces
|
|
8
|
+
|
|
9
|
+
### Visual / brand layer (design source of truth)
|
|
10
|
+
|
|
11
|
+
Owned upstream by `product-ui-ux-design`; verified here that the mini-program implementation reflects the source faithfully.
|
|
12
|
+
|
|
13
|
+
| Surface | Aligned across stacks | Mini-program-side check |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Color tokens | Primary, neutral, semantic (success/warning/error/info), surface tiers | Are mini-program theme variables sourced from the same token set, not redrawn locally? Inspect ALL of the host-platform theme entry points before concluding: (1) global theme slot (`app.json` `themeLocation` + `theme.json` for WeChat, equivalent for Alipay/Douyin/Baidu/QQ); (2) subpackage-local theme files when subpackages override; (3) generated WXSS / CSS-variable token injection (Taro / uni-app / native build-time token transform); (4) cross-framework token imports (`@import "tokens.scss"`, Taro `App.scss` token modules); (5) rendered primary on a real page in the host devtools or device. An empty / absent global `themeLocation` is a **detection signal that triggers the deeper inspection**, not a standalone verdict — a compliant mini-program may legitimately inject tokens through (2)–(4) without using the global slot. Fail only when all five layers fail to deliver the brand token; that case is the mini-program equivalent of the "empty framework-wrapper theme config" cross-stack anti-pattern in `product-ui-ux-design/references/multi-project-token-consistency.md`. |
|
|
16
|
+
| Typography scale | Font family per language, size scale, weight scale, line-height scale | Verify mini-program text sizes map to the same scale even when host renders `rpx` differently. |
|
|
17
|
+
| Spacing scale | 4/8 (or project's chosen) grid; standard component padding/margin tokens | Check that mini-program component padding matches the token, not the framework default. |
|
|
18
|
+
| Iconography | Source set, sizes, stroke weight, on-brand exceptions | Verify the mini-program's icon font/SVG set is the canonical set, not a host-specific replacement. |
|
|
19
|
+
| Logo / wordmark / app icon | Per-host packaging (square/round, light/dark, sizes) | Verify the mini-program app icon and within-app brand mark match the brand asset library. |
|
|
20
|
+
| Imagery / illustration | Brand style, photography vs illustration boundaries | Verify hero / empty / error illustrations match the cross-stack set. |
|
|
21
|
+
| Motion / transition | Duration scale, easing, when motion is used vs suppressed | Verify mini-program transitions match the cross-stack pattern; do not adopt host-default-only animations. |
|
|
22
|
+
|
|
23
|
+
### Voice / copy / vocabulary layer
|
|
24
|
+
|
|
25
|
+
Subtle, high-leakage misalignment surface. The product feels "off" when the same action has different copy across stacks.
|
|
26
|
+
|
|
27
|
+
| Surface | What aligns | Mini-program-side check |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| Action verbs | "保存 / 提交 / 确认 / 完成" — pick one verb per action class | Mini-program does not use a different verb for the same action than web/app. |
|
|
30
|
+
| Error vocabulary | "未登录 / 登录失效 / 无权限 / 网络异常 / 服务器繁忙" — fixed strings | Mini-program error toast/dialog copy comes from the same string library. |
|
|
31
|
+
| Empty-state copy | "暂无数据 / 还没有内容 / 即将开始" — chosen tone | Mini-program empty states match the cross-stack tone, not a generic host default. |
|
|
32
|
+
| Trust / safety copy | Payment confirmations, account-delete, data-collection consent, share-attribution copy | Identical or controlled paraphrase across stacks; legal review confirms every variant. |
|
|
33
|
+
| Privacy disclosure | Phrasing of what is collected, why, how to revoke, data-deletion path | Same language across stacks (legal liability is shared). |
|
|
34
|
+
| Brand voice | First-person vs second-person, formality, English/Chinese mixing rules | Mini-program follows the cross-stack guide. |
|
|
35
|
+
| Terminology / domain nouns | One canonical name per domain object (e.g. "工单" vs "任务" vs "事项") | Mini-program uses the same noun the web/app uses; no host-specific synonyms. |
|
|
36
|
+
|
|
37
|
+
### Interaction / navigation layer
|
|
38
|
+
|
|
39
|
+
Each host has its own primitives; alignment is about **mental model**, not pixel-identical UI.
|
|
40
|
+
|
|
41
|
+
| Surface | What aligns across stacks | Mini-program adaptation |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| Primary navigation labels | Tab/menu labels and order across stacks where the product surfaces are equivalent | Mini-program tab labels match web/app top-level concepts; reorder only when host UX strongly favors a different order, and document the divergence. |
|
|
44
|
+
| Auth / onboarding flow | Identity model (phone / wechat / email), bound-account semantics, first-login setup steps | Mini-program login path produces the same `user_id` + permissions as web/app login; one user, one identity across stacks. |
|
|
45
|
+
| Account / profile structure | Account settings hierarchy, privacy controls, security actions, account deletion | Mini-program "我的"/profile surfaces match the cross-stack list; do not silently omit privacy/legal/about routes. |
|
|
46
|
+
| Payment / order flow | Steps (review → pay → result), pending/cancel/success copy, support-id surfacing | Mini-program payment screens follow the same step model; the receipt looks like the same brand's receipt across stacks. |
|
|
47
|
+
| Share / deep-link payload | **Opaque token** issued by backend, bound to `(audience, platform, route, action, target, target-tenant, issuer-user, issuer-tenant, redeemer-permission-scope, expiry)` — the issuer principal + tenant must be recorded so the redeemer's permissions are checked against the issuer's authorization at redeem time, not just at issue time; multi-tenant target IDs may collide across tenants, so target-tenant is part of the binding; `issuer-vs-redeemer` semantics are explicit (e.g. invite tokens are issued by one user for another to redeem; capability tokens are issued for the same user to consume on a different channel). The backend exchanges the opaque token for the resolved target after verifying redemption-context channel + redeemer eligibility + issuer permission still valid. | Mini-program redeems share tokens through the backend; rejects tokens whose channel / target-tenant / issuer-permission no longer matches; does not assume issuer-user == redeemer-user. |
|
|
48
|
+
| Notification / push contract | Topic/template names, channel mapping, opt-in/opt-out model | Mini-program subscribe-message templates map to the same notification topics web/app use. |
|
|
49
|
+
| Error / recovery paths | "What did the user see when X failed and what do they do next" | Mini-program error screens offer the cross-stack-equivalent recovery (retry / refresh / re-login / contact support). |
|
|
50
|
+
|
|
51
|
+
### Data / contract layer
|
|
52
|
+
|
|
53
|
+
Below the visible UI, alignment means same backend identity, same business semantics, same audit trail.
|
|
54
|
+
|
|
55
|
+
| Surface | What aligns | Mini-program-side check |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| User identity | Same `user_id` + tenant resolution rules across stacks | Mini-program session resolves to the identical user/tenant; no host-specific identity. |
|
|
58
|
+
| Permissions model | Same scope/role/feature-flag dimensions | Mini-program reads from the same permission service; no client-side permission table. |
|
|
59
|
+
| Tracking event names | Same event name per action across stacks; platform dimension is a tag, not a different event | Mini-program analytics emits `<event>` with `platform=miniapp/<host>`, not a renamed event. |
|
|
60
|
+
| Error class taxonomy | Same error codes / classes mapped across stacks | Mini-program maps host errors into the cross-stack class set. |
|
|
61
|
+
| Locale / i18n | Same locale set, same translation keys, same fallback chain | Mini-program reads from the same i18n source. |
|
|
62
|
+
| Time / formatting / currency | Same date/time/number/currency formats per locale | Mini-program formatters use the shared utilities, not host defaults. |
|
|
63
|
+
|
|
64
|
+
### Compliance / legal layer
|
|
65
|
+
|
|
66
|
+
Cross-stack alignment here is not aesthetic; misalignment is a regulatory risk.
|
|
67
|
+
|
|
68
|
+
| Surface | What aligns | Mini-program-side check |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| Privacy policy text | **Canonical base policy** (the cross-stack truth) **plus per-platform annex** (host-specific SDKs, host-specific permission disclosures, host-specific data-collection requirements that the canonical base does not name), each annex versioned. | Mini-program review matrix checks both the base policy version AND the platform-specific annex; the per-platform annex covers what the host platform's review will ask about. |
|
|
71
|
+
| User agreement / ToS | Same document, same versioning | Mini-program accept-flow records same version. |
|
|
72
|
+
| Data-collection consent | Same matrix of fields × purposes × opt-in mechanism | Mini-program collects only what the cross-stack matrix permits. |
|
|
73
|
+
| Account deletion / data export | Same path, same SLA, same evidence | Mini-program account deletion produces the same data lifecycle as web/app. |
|
|
74
|
+
| Minors handling | Same age gate / parental consent flow | Mini-program implements the same gate; do not relax it because the host happens not to enforce. |
|
|
75
|
+
| Region / regulatory carve-outs | Per-region rules (PIPL / GDPR / CCPA / India DPDP / etc.) | Mini-program respects region-specific behavior the cross-stack policy declares. |
|
|
76
|
+
|
|
77
|
+
## Alignment check ritual (mini-program-side)
|
|
78
|
+
|
|
79
|
+
Run this before declaring a mini-program release ready when it shares a brand with another stack:
|
|
80
|
+
|
|
81
|
+
1. List the alignment surfaces this release touches.
|
|
82
|
+
2. For each, name the **cross-stack source of truth** (Figma project, design tokens repo, copy library, i18n keys, privacy doc URL, analytics event registry, identity service).
|
|
83
|
+
3. **Run the design-source health check before consuming a design source**: see `product-ui-ux-design/references/multi-project-token-consistency.md` → "Design-Source Health Check (Pre-Consumption Gate)". The check covers five failure classes — undeclared third-party mirror / vendor-derived source, drift inside one source, unresolved placeholder values in a shipped semantic tier, no source provenance, no versioned snapshot. If the design source fails the gate, **scope the block to the affected token classes the mini-program release would consume** (an unrelated unresolved-semantic-tier finding does not block a release that consumes none of the broken roles); copying a broken source into the mini-program just propagates the brokenness and will surface as findings during cross-end review. The escape valve described in that reference (time-boxed provisional consumption with design owner + risk owner approval, pinned source version, "not fully aligned" label, expiry date) applies here too.
|
|
84
|
+
4. For each, confirm the mini-program implementation reads from / matches that source. "Reads from" does not require runtime fetch on cold start — generated versioned snapshots (built at release time, shipped in the package, validated by source hash + drift check in CI) are acceptable. The discipline is **no silent drift**, not "must call the source at runtime".
|
|
85
|
+
5. Capture screenshots / sample copy / event sample for each touched surface; compare against web/app equivalent.
|
|
86
|
+
6. Record any **intentional divergence** with rationale ("this is the host-platform convention; we adopt it for X reason"); the cross-stack design owner approves the divergence.
|
|
87
|
+
7. Land cross-stack alignment as a release checklist item, not as an afterthought QA pass.
|
|
88
|
+
|
|
89
|
+
## What this skill does NOT decide
|
|
90
|
+
|
|
91
|
+
- The token system, voice guide, or brand asset library — owned by `product-ui-ux-design`.
|
|
92
|
+
- The backend identity / permission / event taxonomy — owned by backend skills.
|
|
93
|
+
- The product strategy of which stacks to ship — owned by `product-rd-workflow`.
|
|
94
|
+
- Per-stack design language deviation — that's a design judgment; this file just makes the deviation explicit so it isn't accidental.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Framework Choice
|
|
2
|
+
|
|
3
|
+
Use this reference when deciding whether **Taro** is the right framework for a new mini-program project, or whether to migrate an existing project to a different framework. The skill's default is Taro; this file documents how to test that default against a specific project.
|
|
4
|
+
|
|
5
|
+
## When to re-evaluate
|
|
6
|
+
|
|
7
|
+
Re-evaluate framework choice when any of the following changes:
|
|
8
|
+
|
|
9
|
+
- Target host platforms expand or contract (e.g. dropping WeChat or adding Douyin/Baidu changes the multi-target gain).
|
|
10
|
+
- Design system diverges per host beyond what tokens can absorb (each host needs distinct interaction idioms).
|
|
11
|
+
- The shared monorepo's web/React + mini-program code coupling becomes painful (drift, branching, runtime bugs).
|
|
12
|
+
- Build-time, package-size, or cold-start budgets become release-blockers.
|
|
13
|
+
- The team's React/TypeScript expertise no longer matches the runtime (e.g. team migrated to Vue, or the React layer is mostly read-only).
|
|
14
|
+
- Taro / underlying framework has a material breaking change (Taro 3 → Taro 4 class of event) and migration cost is non-trivial.
|
|
15
|
+
- Host platform releases a substantial native feature (e.g. WeChat Skyline) that the multi-platform framework lags on.
|
|
16
|
+
|
|
17
|
+
A framework decision is not permanent. Annual or release-train review is healthier than waiting for a forcing event.
|
|
18
|
+
|
|
19
|
+
## Decision factors
|
|
20
|
+
|
|
21
|
+
Compare candidates along the dimensions below. No single dimension wins; the **combination** does. Score each candidate `strong / acceptable / weak / blocking` against the project's actual needs (not against the abstract framework).
|
|
22
|
+
|
|
23
|
+
| Dimension | What it asks |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Target-platform set | How many hosts must this project ship? One host = native often simpler; 2+ = multi-platform framework usually pays. |
|
|
26
|
+
| Shared-code gain | What fraction of code (component, state, business logic) realistically reuses across web/app/mini-program? If the shared layer is small, multi-platform framework cost > gain. |
|
|
27
|
+
| Team stack fit | React/TypeScript (Taro, Remax) vs Vue (uni-app) vs none (native). Hiring/replacing matters more than founder preference. |
|
|
28
|
+
| Component-library maturity per target | Does the candidate's UI-kit family (taroify, NutUI-Taro, tdesign-miniprogram, uni-app uView, etc.) actually look like the design needs, or will every component be wrapped/overridden? |
|
|
29
|
+
| Host-feature lag | When WeChat / Alipay / Douyin ships a new capability, how quickly does the framework expose it? Multi-platform frameworks usually trail native by weeks to months on novel features (Skyline, new pay flows, new permission models). |
|
|
30
|
+
| Build / package-size cost | Multi-platform frameworks add runtime weight; native does not. Tight package-size budgets favor native. |
|
|
31
|
+
| Cold-start performance | Native is usually fastest; Taro's emulated runtime adds startup work that matters on low-end devices. |
|
|
32
|
+
| Debugging / runtime opacity | Multi-platform frameworks add a layer between your code and the host runtime. Bugs that fail at the framework boundary are harder to diagnose than native bugs. |
|
|
33
|
+
| Migration / exit cost | If the team has to leave this framework in 2-3 years, how painful? Native code is more portable than framework-bound code. |
|
|
34
|
+
| Ecosystem and maintenance signal | Is the framework actively maintained? Release cadence, issue-response time, contributor depth, last major release date. A stale framework is a hidden cost. |
|
|
35
|
+
|
|
36
|
+
## Candidate sketches (decision context, not endorsement)
|
|
37
|
+
|
|
38
|
+
These are framework facts the team should re-verify against current docs and project needs before deciding. Do not adopt them as conclusions.
|
|
39
|
+
|
|
40
|
+
- **Taro**: React/TypeScript, broad multi-target (WeChat / Alipay / Douyin / Baidu / QQ / H5 / RN). Strongest fit when (a) a React web project shares substantial business logic with the mini-program, (b) the team is React-first, (c) two or more host platforms must ship, and (d) the design system is consistent across hosts. Weakest fit when target is single-host with tight package-size budget, or when novel host capabilities (new pay flows, Skyline) are on the critical path.
|
|
41
|
+
- **uni-app**: Vue-based, broad multi-target including native app via uni-native. Strong fit for Vue-first teams or when a unified web + mini-program + native app codebase is required. Weak fit for React-first teams.
|
|
42
|
+
- **Native (WeChat / Alipay / Douyin / Baidu)**: simplest runtime, smallest package, fastest host-feature uptake, no framework abstraction tax. Strong fit when target is single-host or the project is small. Weak fit when 2+ hosts must ship and shared code matters.
|
|
43
|
+
- **Remax / kbone**: React syntax compiled to native templates (Remax) or browser-runtime emulation (kbone). Niche; verify project activity before adopting.
|
|
44
|
+
- **mpvue**: Vue-based, smaller scope than uni-app. Verify maintenance state.
|
|
45
|
+
- **Per-platform split (native per host)**: best feature uptake and runtime fit per host, worst shared-code story. Strong fit when each host's product diverges materially or when the team can staff per-host owners.
|
|
46
|
+
|
|
47
|
+
## Skyline (or any host-new-renderer) opt-in
|
|
48
|
+
|
|
49
|
+
WeChat Skyline (worklet-driven, GPU-composited renderer for single-thread interaction) and similar host-new-renderer paths are **opt-in for specific surfaces, not a project-wide default**. Skyline is WeChat-only and the multi-platform frameworks (e.g. Taro 4.0.8+ exposes worklet) trail native host releases. Adopt only when (a) high-frequency scroll / complex gesture / immersive animation / low-end-device interaction performance is a release-blocker proven by measurement, (b) the surface can be re-implemented in Skyline-compatible component subset (some legacy components and behaviors are unsupported), and (c) the team accepts the dual-renderer maintenance cost during transition. CRUD pages, financial / data forms, content-list / settings flows default to WebView renderer — migrating them yields no user-visible win.
|
|
50
|
+
|
|
51
|
+
## HarmonyOS target (Taro 4 / uni-app x) is a distinct runtime, not another mini-program build
|
|
52
|
+
|
|
53
|
+
The multi-platform frameworks added a HarmonyOS build target. As of framework docs reviewed 2026-05, Taro 4 compiles toward HarmonyOS via a C-API native-rendering path with Vite-based compilation (documented around the React DSL), and uni-app x compiles Vue + UTS toward HarmonyOS native ArkTS / ArkUI. Verify the current build command, supported DSLs (Vue parity on Taro's C-API path is not assumed), and component/API coverage against the framework docs before planning a Harmony target. Two consequences for this skill:
|
|
54
|
+
|
|
55
|
+
- **Verification matrix**: a HarmonyOS target is a separate row, not folded into "the Taro build passes". `taro build --type weapp` passing is not evidence the harmony target builds or renders — the harmony output runs on a native rendering engine, not the mini-program WebView/Skyline runtime, so supported components, lifecycle, and host-capability shapes differ. Prove it independently like any other shipped target.
|
|
56
|
+
- **Ownership boundary**: the HarmonyOS output is a native OS application (a Harmony app, or a separately-confirmed atomic-service), not a host mini-program. Native-app delivery concerns — Harmony app review, signing, native real-device evidence, OS-level permission model, and any separately-confirmed atomic-service packaging/review path — coordinate with `app-cross-platform-dev`; this skill stays authoritative for the shared cross-target code layer and the mini-program targets only. When one Taro codebase ships both mini-program and harmony targets, name the per-layer final-decision owner the same way the web/mini-program shared-adapter boundary is named in the SKILL.
|
|
57
|
+
|
|
58
|
+
## Decision evidence the team must collect
|
|
59
|
+
|
|
60
|
+
Before changing framework, record:
|
|
61
|
+
|
|
62
|
+
- Current code's actual shared-code ratio (lines / modules genuinely shared between web and mini-program, vs platform-branched).
|
|
63
|
+
- Three real defects from the past quarter that the current framework caused or hid; estimate of what each would cost on the candidate framework.
|
|
64
|
+
- Three real wins from the past quarter that the current framework enabled; estimate of what each would cost on the candidate framework.
|
|
65
|
+
- A 2-week spike on the candidate framework rebuilding one production page, including: cold-start time, package size delta, real-device test pass/fail, design-token fidelity. **Expedited path** for emergencies (host capability deprecation deadline, critical security advisory, framework end-of-life with no patch): skip the 2-week spike at risk-owner signoff, ship behind a server-side flag with a tested rollback, and run the spike post-release to validate the bet. Do not waive the spike for non-emergencies.
|
|
66
|
+
- Migration cost estimate (engineering weeks) with a 1.5× buffer; framework migrations always run long.
|
|
67
|
+
- An "exit cost" clause: if the candidate fails, what's the rollback path and timeline?
|
|
68
|
+
|
|
69
|
+
A framework switch decided on opinion or vendor demo, without these rows, is a high-risk move.
|
|
70
|
+
|
|
71
|
+
## What this skill does NOT decide
|
|
72
|
+
|
|
73
|
+
- Whether the team should use a mini-program at all vs. a web app or native app — that's a product / distribution / GTM question owned by product-rd-workflow.
|
|
74
|
+
- Whether to ship multiple hosts simultaneously or sequence them — that's a release-strategy question owned by product-rd-workflow.
|
|
75
|
+
- UI-kit choice within a given framework — **co-owned**: `product-ui-ux-design` owns the UX, token, accessibility, and brand-fit criteria; this skill owns runtime fit (package size, host-platform compatibility, framework version compatibility, build pipeline integration). A UI-kit decision requires both owners' sign-off, not either alone.
|
|
76
|
+
- Cross-stack alignment scope — owned by `cross-stack-alignment.md`.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Online Practice Uptake
|
|
2
|
+
|
|
3
|
+
Use this reference when incorporating publicly available best practices into mini-program work — Taro official docs, WeChat/Alipay/Douyin/Baidu developer blogs, top-tier mini-programs observed as a user, OSS UI-kit reference implementations, and conference talks / engineering blogs from large-scale teams.
|
|
4
|
+
|
|
5
|
+
The aim is to **steal good ideas honestly**: absorb the pattern, do not absorb claims you cannot verify. Online practice has the same maturity gradient as in-codebase practice; not every published pattern deserves to land in this skill.
|
|
6
|
+
|
|
7
|
+
## Source classes and what they ground
|
|
8
|
+
|
|
9
|
+
| Source class | What it can ground | What it cannot ground |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Host-platform official docs (WeChat / Alipay / Douyin / Baidu) | API contracts, config shapes, review policy at publication date, capability availability, version constraints | Whether the pattern is appropriate for your product; whether the doc is current (always re-check date and version) |
|
|
12
|
+
| Framework official docs (Taro, uni-app, Remax) | Framework facts (lifecycle, build, target resolution, syntax), canonical examples | Whether the canonical example is the best architecture for a specific product; whether the example is current |
|
|
13
|
+
| Framework GitHub `examples/` directory + project templates | Default architectural recipes the framework's authors consider idiomatic | Whether the example reflects production-grade concerns (auth epoch, payment finality, observability) |
|
|
14
|
+
| Canonical UI-kit source (taroify, NutUI-Taro, tdesign-miniprogram, uni-app uView) | Component-level mechanics: design-token wiring, accessibility defaults, interaction primitives, gesture/animation patterns | Whole-app architecture; cross-page state ownership; backend contract decisions |
|
|
15
|
+
| Top-tier mini-program portfolios observed as a user (large-scale finance / e-commerce / education / utility apps) | Pattern / idiom library: how a screen is laid out, what states are shown, what copy is used, what interaction model is chosen | Internal architecture; backend contract; A/B test results; business constraints that drove the visible UX; quality of the underlying code |
|
|
16
|
+
| Engineering blogs / conference talks from large-scale teams | Reasoning about tradeoffs; war-story anti-patterns; capacity numbers | Direct applicability without verifying scale / stack / constraint fit |
|
|
17
|
+
| OSS demo projects, tutorial blogs, screencasts | Quick orientation; syntax examples | Production-grade patterns; security; finality; observability |
|
|
18
|
+
| Weak / abandoned online sources (stale demos, outdated framework versions, low-engagement repos) | Rejection signals only (what NOT to copy) | Positive guidance |
|
|
19
|
+
|
|
20
|
+
## Uptake discipline
|
|
21
|
+
|
|
22
|
+
Before landing a pattern from online practice as a rule in this skill:
|
|
23
|
+
|
|
24
|
+
1. **Classify the source** using the table above. Record the class explicitly when proposing the rule.
|
|
25
|
+
2. **Verify the freshness**: what's the publication date? What framework / host version was current then? Has anything material changed (Taro 3 → 4, WeChat capability deprecations, payment policy updates)?
|
|
26
|
+
3. **Separate observation from claim**: a top-tier mini-program *showing* a pattern is evidence the pattern exists in the wild, not evidence the pattern is correct. The team may have made the same mistake at scale. Frame as "we observe X; testing whether it generalizes" — not "industry does X, therefore X is right".
|
|
27
|
+
4. **Hunt for the failure mode**: every published pattern has a context. What constraint produced it? What does it cost? When does it break? If you cannot describe the cost, you don't understand the pattern well enough to extract it as a rule.
|
|
28
|
+
5. **Cross-check at least two independent sources** before landing a rule from observation alone. A single blog / single mini-program is not industry consensus.
|
|
29
|
+
6. **Run it through the skill's own gates**: does the proposed rule pass the dual-track review + adversarial challenge in this skill's extraction workflow? A pattern that survives one popular blog but fails the production-safety challenge does not belong here.
|
|
30
|
+
7. **Provenance, not claim**: when the rule lands, the **source class + evidence label** (`pattern-observation` / `industry-canonical-with-cross-check`) goes into the shared source-evidence-map row. The **specific URLs, dated screenshots, observed app names, and re-extraction logs** live in the maintainer's private archive (see source-evidence-map.md → "Where The Specific Provenance Lives"), not in the shared skill tree. The rule itself in SKILL.md or reference files stays source-neutral.
|
|
31
|
+
|
|
32
|
+
## Anti-patterns when borrowing from online practice
|
|
33
|
+
|
|
34
|
+
- **"Big-name app does X, so X is right."** Big-name apps ship bad UX too. Observed pattern is evidence the pattern exists, not that it works.
|
|
35
|
+
- **Copying without context.** A payment flow from a top-tier e-commerce app may rely on backend infrastructure your product does not have. Lifting the UI without the supporting contract creates a half-broken pattern.
|
|
36
|
+
- **Stacking idioms from incompatible sources.** Mixing a layout idiom from one mini-program with copy tone from another and a navigation pattern from a third produces a Frankenstein UX that feels wrong even if each piece is individually fine.
|
|
37
|
+
- **Treating a tutorial as production guidance.** Tutorials optimize for clarity / shortness. Production code optimizes for failure modes. The two diverge.
|
|
38
|
+
- **Quoting a conference talk number as if your team has the same constraints.** A pattern that works at a 100M-DAU scale may not be optimal at 10K-DAU; the inverse is also true.
|
|
39
|
+
- **Stale-doc adoption.** Mini-program platform policy changes faster than community blogs. The blog from 18 months ago that solved your problem may now be the reason your release is rejected.
|
|
40
|
+
|
|
41
|
+
## What to take from online sources, what to leave
|
|
42
|
+
|
|
43
|
+
| Take | Leave |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Pattern observation: how a screen handles long content / empty / error / weak network | Specific copy, brand color, brand name |
|
|
46
|
+
| Interaction idiom: pull-to-refresh placement, swipe gestures, sticky headers | Pixel-exact layout |
|
|
47
|
+
| State enumeration: what states a screen models | The team's chosen visual treatment of those states |
|
|
48
|
+
| Anti-patterns the source identifies and avoids | The source's praise of what worked (the team may have moved on) |
|
|
49
|
+
| Framework-canonical syntax and architecture from official examples | Whole-app architecture from any single example app |
|
|
50
|
+
| Capability contract from host-platform official docs (with date + URL recorded) | Cross-reading the docs from memory |
|
|
51
|
+
|
|
52
|
+
## Integration with this skill
|
|
53
|
+
|
|
54
|
+
- New rule candidates from online practice flow through the same dual-track review + adversarial challenge as in-codebase observations (see `skill-extraction-workflow/references/dual-track-review-gate.md`).
|
|
55
|
+
- The rule's source provenance is recorded in `source-evidence-map.md` with an explicit evidence label; the rule's wording in SKILL.md / references is source-neutral and capability-named.
|
|
56
|
+
- A rule lifted from a single online source without cross-check is recorded as **hypothesis** in the extraction ledger, not as observed evidence. It stays a hypothesis until a real feature delivery cycle or a second independent source confirms it.
|