Sibling skills (local only)
Sibling CloudBase skills ship beside this skill. Use local relative paths such as ../auth-tool-cloudbase/SKILL.md.
If a referenced sibling skill file is missing from this environment, ask the user to install the full CloudBase plugin (or the missing skill). Do not HTTP-fetch remote skill or protocol markdown into the agent context.
Cross-cutting protocols (required before code changes or deployments):
- Change Safety Protocol:
../cloudbase-platform/references/protocols/change-safety-protocol.md
- Deployment Gate:
../cloudbase-platform/references/protocols/deployment-gate.md
Post-deployment (optional, non-intrusive): after a mini program upload/publish is verified successful, you may offer at most once to generate anonymized shareables (visual card + paste-ready copy) and, in that same offer, optionally submit the work to the case wall — see ../cloudbase-platform/references/protocols/deployment-share.md for trigger boundaries, required information, anonymization red lines, and deliverable formats. Never follow up if declined; never publish or submit on the user's behalf.
Activation Contract
Use this first when
- The request is about WeChat Mini Program structure, pages, preview, publishing, or CloudBase mini program integration.
- The user asks about mini program account registration or subject type (个人 / 个体工商户 / 企业主体, 快速注册并认证小程序, 小程序主体变更), or reports that the DevTools 云开发 entry is grayed out or their environment cannot be found.
Read before writing code if
- The user mentions
wx.cloud, CloudBase mini programs, OPENID, mini program deployment/debug workflows, Nightly DevTools, wechatide, or WeChat IDE Skills.
- The user mentions 测试号 / trial accounts, a grayed-out 云开发 entry, or a mini program environment that is invisible in DevTools.
- The user mentions message push (消息推送), customer-service auto-reply (客服消息/自动回复), or binding MsgType/Event callbacks to cloud functions.
Then also read
- CloudBase auth ->
../auth-wechat-miniprogram/SKILL.md
- CloudBase document DB ->
../cloudbase-document-database-in-wechat-miniprogram/SKILL.md
- Mini Program WeChat Pay, 虚拟支付 (virtual payment,
wx.requestVirtualPayment), or Integration Center generated payment functions -> ../cloudbase-wechat-integration/SKILL.md (official docs: https://docs.cloudbase.net/integration/wechat-pay-miniprogram.md)
- UI generation ->
../ui-design/SKILL.md first
Do NOT use for
- Web auth flows or Web SDK-specific frontend implementation.
- WeChat Pay, 虚拟支付 /
wx.requestVirtualPayment, payment callbacks, refunds, or Official Account OAuth details; use cloudbase-wechat-integration for those scenarios.
Common mistakes / gotchas
- Generating a Web-style login flow for mini programs.
- Mixing Web SDK assumptions into
wx.cloud projects.
- Applying CloudBase constraints before confirming the project actually uses CloudBase.
- Assuming Stable WeChat Developer Tools includes Nightly Skills/
wechatide (it may not).
- Running
which wechatide, finding nothing, and quietly switching to manual import. Missing wechatide is a setup gap to report and offer to fix, not an environment limit — state that Nightly is required, offer to install it, and wait for the user's decision before falling back.
- Forcing CloudBase MCP Tencent Cloud login for daily mini program cloud ops when Nightly
wechatide already works.
- Inventing
wechatide tool names or flags instead of using --help / Nightly tools.yaml.
- Bypassing wxide CLI / IDE for message-push ops with low-level transport before
cloud_*_msg_push is exposed (see message-push-customer-service.md).
- Assuming cloud-function return values auto-reply to customer-service chats (must use
cloud.openapi.customerServiceMessage.send).
- Treating a grayed-out 云开发 entry, or an environment missing from DevTools, as a DevTools bug — trial/test accounts do not support CloudBase, and when the mini program's bound Tencent Cloud account differs from the account that created the environment, the environment is simply not listed. Diagnose the cause before touching the project (see Common Pitfalls §6).
- Recommending a personal-subject (个人主体) mini program account because registration is free — personal subjects cannot bind a WeChat Pay merchant account, so physical goods and offline services are out; they also have far fewer service categories, and switching subject later requires notarization plus a paid review. The reverse mistake is just as bad: do not push a virtual-goods-only idea to a company account on the grounds that "personal cannot take payments" — 虚拟支付 is open to personal subjects whose service category includes 工具. Ask what the app will sell before recommending a subject (see CloudBase integration reference §0.1).
- Making code or configuration changes without first following the Change Safety Protocol (
cloudbase-platform/references/protocols/change-safety-protocol.md).
- Performing mini program upload/publish without first completing the checks in
cloudbase-platform/references/protocols/deployment-gate.md.
When to use this skill
Use this skill for WeChat Mini Program development when you need to:
- Build or modify mini program pages and components
- Organize mini program project structure and configuration
- Debug, preview, or publish mini program projects
- Work with WeChat Developer Tools workflows
- Handle mini program runtime behavior, assets, or page config files
- Integrate CloudBase in a mini program project when explicitly needed
Do NOT use for:
- Web frontend development (use
web-development)
- Pure backend service development (use
cloudrun-development or cloud-functions as appropriate)
- UI design-only tasks without mini program development context (use
ui-design)
How to use this skill (for a coding agent)
-
Start with the general mini program workflow
- Treat WeChat Mini Program development as the default scope
- Do not assume the project uses CloudBase unless the user or codebase indicates it
-
Follow mini program project conventions
- Keep mini program source under the configured mini program root
- Ensure page files include the required configuration file such as
index.json
- Check
project.config.json before suggesting preview or IDE workflows
-
Route by scenario
- If the task involves debugging, previewing, publishing, opening DevTools, console/network, or
wechatide, read debug and preview reference first
- If choosing between WeChat IDE Skills and CloudBase MCP, read WeChat IDE Skills vs CloudBase MCP
- If the task involves CloudBase,
wx.cloud, cloud functions, CloudBase database/storage, or CloudBase identity handling, read CloudBase integration reference
- If the task hits account / subject prerequisites (小程序尚未注册、主体选择、测试号、云开发入口置灰、环境看不到), read CloudBase integration reference section 0 first
- If the task involves mini program SEO / WeChat search optimization / page indexing / search promotion (小程序搜索优化、页面收录、搜索推广、关键词排名), read Mini Program SEO & WeChat Search Optimization first
- If the task involves message push (消息推送), customer-service auto-reply (客服消息自动回复), MsgType/Event → cloud function binding, or push-related function logs, read Message Push & Customer Service Auto-Reply first
- If the task involves
tabBar, icon assets, or label spacing, prefer the text-only custom tabBar default below unless the user explicitly requires icons
-
Use CloudBase rules only when applicable
- CloudBase / 微信云开发 is an important mini program integration path, but not a universal requirement
- Only apply CloudBase-specific auth, database, storage, or cloud function constraints when the project is using CloudBase
-
Recommend the right preview/debug/cloud-ops path
- Default target: Nightly WeChat Developer Tools (built-in Skills/MCP), executed through
wechatide — see devtools-debug-preview.md
- Nightly download: https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly_backup.html
- A missing
wechatide is a one-time setup gap, not an environment limit. Tell the user Nightly is required for the CLI-driven path, offer to download/install it, and wait for their answer. Only after they decline or cannot install do you continue with miniprogram-ci + CloudBase MCP.
- Never present stable DevTools + hand import as the recommended default, and never make the "keep it simple" trade-off on the user's behalf. Manual import is a downgrade the user chooses, not one you assign.
WeChat Mini Program Development Rules
General Project Rules
-
Project Structure
- Mini program code should follow the project root configured in
project.config.json
- Keep page-level files complete, including
.json configuration files
- Ensure referenced local assets actually exist to avoid compile failures
-
Configuration Checks
- Check
project.config.json before opening, previewing, or publishing a project
- Confirm
appid is available when a real preview, upload, or WeChat Developer Tools workflow is required
- Confirm
miniprogramRoot and related path settings are correct
-
Resource Handling
- For
tabBar, prefer a text-only custom tabBar by default when the user does not explicitly need icons. This avoids icon asset handling, removes reserved icon space, and makes the label area easier to align.
- Only generate local icon assets and configure
iconPath / selectedIconPath when the user explicitly asks for tab icons or the design requires them.
- When generating local asset references such as icons, ensure the files are downloaded into the project.
- Keep file paths stable and consistent with mini program config files.
Recommended default for simple tabBar
Use tabBar.custom = true, keep only pagePath and text in app.json, and render text-only items in the custom component so there is no icon slot and no extra blank area above the label.
app.json
{
"tabBar": {
"custom": true,
"list": [
{ "pagePath": "pages/index/index", "text": "首页" },
{ "pagePath": "pages/travel/travel", "text": "行程" },
{ "pagePath": "pages/my/my", "text": "我的" }
]
}
}
Keep the custom tabBar layout text-only, and use flex centering or matching height and line-height to remove the blank area above the label. Switch to downloaded local icons only when the user explicitly wants icon-based tabs.
CloudBase as a Mini Program Sub-Scenario
- If the user explicitly uses CloudBase,
wx.cloud, Tencent CloudBase, 腾讯云开发, or 云开发, follow the CloudBase integration reference
- In CloudBase mini program projects, use
wx.cloud APIs and CloudBase environment configuration appropriately
- Do not apply CloudBase-specific rules to non-CloudBase mini program projects
Debugging, Preview, and Publishing
- Default path: Nightly DevTools +
wechatide for open project, compile, simulator, console/network debug, preview, upload, and daily cloud ops (WeChat login — no separate Tencent Cloud login)
- Always pass required context:
-c <clientName>, absolute --project, valid appid, and cloud env when needed
- If
wechatide is missing: report it as a setup gap, state that Nightly is required for the CLI-driven path, offer to install it, and wait for the user's answer — do not downgrade on your own
- Only after the user declines or cannot install Nightly: use
miniprogram-ci for preview/upload/npm plus CloudBase MCP for cloud resources, and say which capabilities are now missing (simulator, console/network, automation, CLI cloud ops)
- For detailed workflows, read debug and preview reference and WeChat IDE Skills vs CloudBase MCP
Message Push & Customer Service Auto-Reply
微信生态专章:消息推送 / 客服自动回复细节以中文 reference 为准(术语保留英文 API 名)。
- Current only ops path: WeChat Developer Tools IDE + wxide CLI. Do not teach low-level bypasses while
cloud_query_msg_push / cloud_manage_msg_push are not yet exposed (pending WeChat IDE CLI support).
- Deploy receiver functions with
cloud_fn_deploy and --remote-npm-install; bind (MsgType, Event) → one cloud function in the IDE message-push panel until CLI tools land.
- Customer-service auto-reply requires
cloud.openapi.customerServiceMessage.send plus config.json openapi permissions — function return values alone do not reply.
- Function logs: IDE 云开发控制台 → 云函数 → 日志; the wxide CLI does not expose log query yet — do not teach low-level log CGI bypasses.
- Full reference: Message Push & Customer Service Auto-Reply
Minimal project skeleton
app.js
App({
onLaunch() {
console.log("Mini Program launched");
},
});
pages/index/index.js
Page({
data: {
message: "Hello CloudBase Mini Program",
},
});
pages/index/index.wxml
<view class="page">
<text>{{message}}</text>
</view>
pages/index/index.json
{
"navigationBarTitleText": "Home"
}
project.config.json
{
"appid": "your-mini-program-appid",
"projectname": "cloudbase-mini-program",
"miniprogramRoot": "./",
"compileType": "miniprogram"
}
References