When to use this skill
Use this skill for CloudBase Run backend service development when you need:
- Long connection capabilities: WebSocket / SSE / server push
- Long-running or persistent processes: tasks that are not suitable for cloud functions, background jobs
- Custom runtime environments/system dependencies: custom images, specific system libraries
- Multi-language/arbitrary frameworks: Java, Go, PHP, .NET, Python, Node.js, etc.
- Stable external services with elastic scaling: pay-as-you-go, can scale down to 0
- Private/internal network access: VPC/PRIVATE access, mini-program
callContainer internal direct connection
- AI agent development: develop personalized AI applications based on Function mode CloudRun
Do NOT use for:
- Simple cloud functions (use cloud function development instead)
- Frontend-only applications
- Database schema design (use data-model-creation skill)
How to use this skill (for a coding agent)
Choose the right mode
- Function mode: Fastest to get started, built-in HTTP/WebSocket/SSE, fixed port 3000, local running supported
- Container mode: Any language and runtime, requires Dockerfile, local running not supported by tools
Follow mandatory requirements
- Must listen on
PORT environment variable (real port in container)
- Stateless service: write data externally (DB/storage/cache)
- No background persistent threads/processes outside requests
- Minimize dependencies, slim images; reduce cold start and deployment time
- Resource constraints:
Mem = 2 × CPU (e.g., 0.25 vCPU → 0.5 GB)
- Access control: Only enable public network for Web scenarios; mini-programs prioritize internal direct connection, recommend closing public network
Use tools correctly
- Read operations:
queryCloudRun (list, detail, templates)
- Write operations:
manageCloudRun (init, download, run, deploy, delete, createAgent)
- Always use absolute paths for
targetPath
- Use
force: true for delete operations
Follow the workflow
- Initialize project → Check/generate Dockerfile (for container mode) → Local run (function mode only) → Configure access → Deploy → Verify
CloudBase Run AI Development Rules
A concise guide for AI assistants and engineering collaboration, providing "when to use, how to use" rules and tool workflows.
1. When to use CloudBase Run (Use Cases)
- Need long connection capabilities: WebSocket / SSE / server push
- Need long-running or persistent processes: tasks that are not suitable for cloud functions, background jobs
- Need custom runtime environments/system dependencies: custom images, specific system libraries
- Use multi-language/arbitrary frameworks: Java, Go, PHP, .NET, Python, Node.js, etc.
- Need stable external services with elastic scaling: pay-as-you-go, can scale down to 0
- Need private/internal network access: VPC/PRIVATE access, mini-program
callContainer internal direct connection
- Need to develop AI agents: develop personalized AI applications based on Function mode CloudRun
2. Mode Selection (Quick Comparison)
- Function mode: Fastest to get started, built-in HTTP/WebSocket/SSE, fixed port 3000; local running supported by tools
- Container mode: Any language and runtime, requires Dockerfile; local running not supported by tools
Mode Comparison Checklist
| Dimension |
Function Mode |
Container Mode |
| Language/Framework |
Node.js (via @cloudbase/functions-framework) |
Any language/runtime (Java/Go/PHP/.NET/Python/Node.js, etc.) |
| Runtime |
Function framework loads functions (Runtime) |
Docker image starts process |
| Port |
Fixed 3000 |
Application listens on PORT (injected by platform during deployment) |
| Dockerfile |
Not required |
Required (and must pass local build) |
| Local Running |
Supported (built-in tools) |
Not supported (recommend using Docker for debugging) |
| Typical Scenarios |
WebSocket/SSE/streaming responses, forms/files, low latency, multiple functions per instance, shared memory |
Arbitrary system dependencies/languages, migrating existing containerized applications |
3. Development Requirements (Must Meet)
- Must listen on
PORT environment variable (real port in container)
- Stateless service: write data externally (DB/storage/cache)
- No background persistent threads/processes outside requests
- Minimize dependencies, slim images; reduce cold start and deployment time
- Resource constraints:
Mem = 2 × CPU (e.g., 0.25 vCPU → 0.5 GB)
- Access control: Only enable public network for Web scenarios; mini-programs prioritize internal direct connection, recommend closing public network
4. Tools (Plain Language & Read/Write Separation)
- Read operations (
queryCloudRun):
list: What services do I have? Can filter by name/type
detail: Current configuration, version, access address of a service
templates: Ready-to-use starter templates
- Write operations (
manageCloudRun):
init: Create local project (optional template)
download: Pull existing service code to local
run: Run locally (Function mode only, supports normal function and Agent mode)
deploy: Deploy local code to CloudRun
delete: Delete service (requires explicit confirmation)
createAgent: Create AI agent (based on Function mode CloudRun)
- Important parameters (remember these):
targetPath: Local directory (must be absolute path)
serverConfig: Deployment parameters (CPU/Mem/instance count/access type/environment variables, etc.)
runOptions: Local running port and temporary environment variables (Function mode), supports runMode: 'normal' | 'agent'
agentConfig: Agent configuration (agentName, botTag, description, template)
- Delete must include
force: true, otherwise it won't execute
5. Core Workflow (Understand Steps First, Then Examples)
Choose mode
- Need multi-language/existing container/Docker: choose "Container mode"
- Need long connection/streaming/low latency/multiple functions coexisting: prioritize "Function mode"
Initialize local project
- General: Use template
init (both Function mode and Container mode can start from templates)
- Container mode must "check or generate Dockerfile":
- Node.js minimal example:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node","server.js"]
- Python minimal example:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install -r requirements.txt --no-cache-dir
COPY . .
ENV PORT=3000
EXPOSE 3000
CMD ["python","app.py"]
Local running (Function mode only)
- Automatically use
npm run dev/start or entry file via run
Configure access
- Set
OpenAccessTypes (WEB/VPC/PRIVATE) as needed; configure security domain and authentication for Web scenarios
Deploy
- Specify CPU/Mem/instance count/environment variables, etc. during
deploy
Verify
- Use
detail to confirm access address and configuration meet expectations
Example Tool Calls
- View templates/services
{ "name": "queryCloudRun", "arguments": { "action": "templates" } }
{ "name": "queryCloudRun", "arguments": { "action": "detail", "detailServerName": "my-svc" } }
- Initialize project
{ "name": "manageCloudRun", "arguments": { "action": "init", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "template": "helloworld" } }
- Download code (optional)
{ "name": "manageCloudRun", "arguments": { "action": "download", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc" } }
- Local running (Function mode only)
{ "name": "manageCloudRun", "arguments": { "action": "run", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "runOptions": { "port": 3000 } } }
- Deploy
{ "name": "manageCloudRun", "arguments": { "action": "deploy", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "serverConfig": { "OpenAccessTypes": ["WEB"], "Cpu": 0.5, "Mem": 1, "MinNum": 0, "MaxNum": 5 } } }
- Create AI agent (optional)
{ "name": "manageCloudRun", "arguments": { "action": "createAgent", "serverName": "my-agent", "targetPath": "/abs/ws/agents", "agentConfig": { "agentName": "MyAgent", "botTag": "demo", "description": "My agent", "template": "blank" } } }
- Run agent (optional)
{ "name": "manageCloudRun", "arguments": { "action": "run", "serverName": "my-agent", "targetPath": "/abs/ws/agents/my-agent", "runOptions": { "port": 3000, "runMode": "agent" } } }
6. Best Practices (Strongly Recommended)
- Prioritize PRIVATE/VPC or mini-program internal
callContainer, reduce public network exposure
- Web must use CloudBase Web SDK authentication; mini-programs authenticated by platform
- Secrets via environment variables; separate configuration for multiple environments (dev/stg/prod)
- Use
queryCloudRun.detail to verify configuration and accessibility before and after deployment
- Image layers reusable, small volume; monitor startup latency and memory usage
- Agent development: Use
@cloudbase/aiagent-framework, supports SSE streaming responses, BotId format is ibot-{name}-{tag}
7. Quick Troubleshooting
- Access failure: Check OpenAccessTypes/domain/port, whether instance scaled down to 0
- Deployment failure: Verify Dockerfile/build logs/image volume and CPU/Mem ratio
- Local running failure: Only Function mode supported; requires
package.json dev/start or entry index.js|app.js|server.js
- Performance jitter: Reduce dependencies and initialization; appropriately increase MinNum; optimize cold start
- Agent running failure: Check
@cloudbase/aiagent-framework dependency, BotId format, SSE response format
8. Function Mode CloudRun (Function Mode) Key Points (Concise)
- Definition: CloudRun + function framework (
@cloudbase/functions-framework) + function code, making container service development as simple as writing cloud functions
- When to choose: Need WebSocket/SSE/file upload/streaming responses; need long tasks or connect to DB/message queue; need multiple functions per instance and shared memory, low latency and better logs/debugging
- Agent mode: Develop AI agents based on Function mode CloudRun, use
@cloudbase/aiagent-framework, supports SSE streaming responses and personalized AI applications
- Tool support: Local running only supports Function mode (
manageCloudRun → run); deploy using manageCloudRun → deploy; query using queryCloudRun
- Migration tips: Different from cloud function call chain/runtime, migration requires minor modifications (including client calling methods)
- Portability: Based on function framework, can run locally/host/Docker, non-CloudRun requires self-managed build and deployment
9. Service Invocation Methods (Concise Examples)
HTTP Direct Access (when WEB public network enabled)
curl -L "https://<your-service-domain>"
WeChat Mini Program (internal direct connection, recommend closing public network)
// app.js (ensure wx.cloud.init() is called)
const res = await wx.cloud.callContainer({
config: { env: "<envId>" },
path: "/",
method: "GET",
header: { "X-WX-SERVICE": "<serviceName>" }
});
Web (JS SDK, need to configure security domain and authentication)
import cloudbase from "@cloudbase/js-sdk";
const app = cloudbase.init({ env: "<envId>" }); // Collect user's phone number into variable `phoneNum` by providing a input UI
const auth = app.auth();
// Send SMS code
const verificationInfo = await auth.getVerification({
phone_number: `+86 ${phoneNum}`,
});
// Collect user's phone number into variable `verificationCode` by providing a input UI
// Sign in
await auth.signInWithSms({
verificationInfo,
verificationCode,
phoneNum,
});
const res = await app.callContainer({
name: "<serviceName>", method: "POST", path: "/api",
header: { "Content-Type": "application/json" },
data: { key: "value" }
});
// Web JS SDK initialization MUST be synchronous:
// - Always use top-level import cloudbase from "@cloudbase/js-sdk";
// - Do NOT use dynamic imports like import("@cloudbase/js-sdk") or async wrappers such as initCloudBase() with internal initPromise
Node.js (server-side/cloud function internal call)
import tcb from "@cloudbase/node-sdk";
const app = tcb.init({});
const res = await app.callContainer({
name: "<serviceName>", method: "GET", path: "/health",
timeout: 5000
});
Recommendations
- Mini Program/Server side prioritize internal network (VPC/PRIVATE) calls, reduce exposure surface
- Web scenarios need to enable WEB, public domain and security domain, and use SDK authentication
1---2name: cloudrun-development-23description: CloudBase Run backend development rules (Function mode/Container mode). Use this skill when deploying backend services that require long connections, multi-language support, custom environments, or AI agent development.4---5
6## When to use this skill
7
8Use this skill for **CloudBase Run backend service development** when you need:
9
10- Long connection capabilities: WebSocket / SSE / server push
11- Long-running or persistent processes: tasks that are not suitable for cloud functions, background jobs
12- Custom runtime environments/system dependencies: custom images, specific system libraries
13- Multi-language/arbitrary frameworks: Java, Go, PHP, .NET, Python, Node.js, etc.
14- Stable external services with elastic scaling: pay-as-you-go, can scale down to 0
15- Private/internal network access: VPC/PRIVATE access, mini-program `callContainer` internal direct connection
16- AI agent development: develop personalized AI applications based on Function mode CloudRun
17
18**Do NOT use for:**
19- Simple cloud functions (use cloud function development instead)
20- Frontend-only applications
21- Database schema design (use data-model-creation skill)
22
23---
24
25## How to use this skill (for a coding agent)
26
271. **Choose the right mode**
28 - **Function mode**: Fastest to get started, built-in HTTP/WebSocket/SSE, fixed port 3000, local running supported
29 - **Container mode**: Any language and runtime, requires Dockerfile, local running not supported by tools
30
312. **Follow mandatory requirements**
32 - Must listen on `PORT` environment variable (real port in container)
33 - Stateless service: write data externally (DB/storage/cache)
34 - No background persistent threads/processes outside requests
35 - Minimize dependencies, slim images; reduce cold start and deployment time
36 - Resource constraints: `Mem = 2 × CPU` (e.g., 0.25 vCPU → 0.5 GB)
37 - Access control: Only enable public network for Web scenarios; mini-programs prioritize internal direct connection, recommend closing public network
38
393. **Use tools correctly**
40 - **Read operations**: `queryCloudRun` (list, detail, templates)
41 - **Write operations**: `manageCloudRun` (init, download, run, deploy, delete, createAgent)
42 - Always use absolute paths for `targetPath`
43 - Use `force: true` for delete operations
44
454. **Follow the workflow**
46 - Initialize project → Check/generate Dockerfile (for container mode) → Local run (function mode only) → Configure access → Deploy → Verify
47
48---
49
50# CloudBase Run AI Development Rules
51
52A concise guide for AI assistants and engineering collaboration, providing "when to use, how to use" rules and tool workflows.
53
54## 1. When to use CloudBase Run (Use Cases)
55
56- Need long connection capabilities: WebSocket / SSE / server push
57- Need long-running or persistent processes: tasks that are not suitable for cloud functions, background jobs
58- Need custom runtime environments/system dependencies: custom images, specific system libraries
59- Use multi-language/arbitrary frameworks: Java, Go, PHP, .NET, Python, Node.js, etc.
60- Need stable external services with elastic scaling: pay-as-you-go, can scale down to 0
61- Need private/internal network access: VPC/PRIVATE access, mini-program `callContainer` internal direct connection
62- Need to develop AI agents: develop personalized AI applications based on Function mode CloudRun
63
64## 2. Mode Selection (Quick Comparison)
65
66- **Function mode**: Fastest to get started, built-in HTTP/WebSocket/SSE, fixed port 3000; local running supported by tools
67- **Container mode**: Any language and runtime, requires Dockerfile; local running not supported by tools
68
69### Mode Comparison Checklist
70
71| Dimension | Function Mode | Container Mode |
72| --- | --- | --- |
73| Language/Framework | Node.js (via `@cloudbase/functions-framework`) | Any language/runtime (Java/Go/PHP/.NET/Python/Node.js, etc.) |
74| Runtime | Function framework loads functions (Runtime) | Docker image starts process |
75| Port | Fixed 3000 | Application listens on `PORT` (injected by platform during deployment) |
76| Dockerfile | Not required | Required (and must pass local build) |
77| Local Running | Supported (built-in tools) | Not supported (recommend using Docker for debugging) |
78| Typical Scenarios | WebSocket/SSE/streaming responses, forms/files, low latency, multiple functions per instance, shared memory | Arbitrary system dependencies/languages, migrating existing containerized applications |
79
80## 3. Development Requirements (Must Meet)
81
82- Must listen on `PORT` environment variable (real port in container)
83- Stateless service: write data externally (DB/storage/cache)
84- No background persistent threads/processes outside requests
85- Minimize dependencies, slim images; reduce cold start and deployment time
86- Resource constraints: `Mem = 2 × CPU` (e.g., 0.25 vCPU → 0.5 GB)
87- Access control: Only enable public network for Web scenarios; mini-programs prioritize internal direct connection, recommend closing public network
88
89## 4. Tools (Plain Language & Read/Write Separation)
90
91- **Read operations** (`queryCloudRun`):
92 - `list`: What services do I have? Can filter by name/type
93 - `detail`: Current configuration, version, access address of a service
94 - `templates`: Ready-to-use starter templates
95- **Write operations** (`manageCloudRun`):
96 - `init`: Create local project (optional template)
97 - `download`: Pull existing service code to local
98 - `run`: Run locally (Function mode only, supports normal function and Agent mode)
99 - `deploy`: Deploy local code to CloudRun
100 - `delete`: Delete service (requires explicit confirmation)
101 - `createAgent`: Create AI agent (based on Function mode CloudRun)
102- **Important parameters** (remember these):
103 - `targetPath`: Local directory (must be absolute path)
104 - `serverConfig`: Deployment parameters (CPU/Mem/instance count/access type/environment variables, etc.)
105 - `runOptions`: Local running port and temporary environment variables (Function mode), supports `runMode: 'normal' | 'agent'`
106 - `agentConfig`: Agent configuration (agentName, botTag, description, template)
107 - Delete must include `force: true`, otherwise it won't execute
108
109## 5. Core Workflow (Understand Steps First, Then Examples)
110
1111) **Choose mode**
112 - Need multi-language/existing container/Docker: choose "Container mode"
113 - Need long connection/streaming/low latency/multiple functions coexisting: prioritize "Function mode"
114
1152) **Initialize local project**
116 - General: Use template `init` (both Function mode and Container mode can start from templates)
117 - Container mode must "check or generate Dockerfile":
118 - Node.js minimal example:
119 ```dockerfile
120 FROM node:18-alpine
121 WORKDIR /app
122 COPY package*.json ./
123 RUN npm ci --omit=dev
124 COPY . .
125 ENV NODE_ENV=production
126 EXPOSE 3000
127 CMD ["node","server.js"]
128 ```
129 - Python minimal example:
130 ```dockerfile
131 FROM python:3.11-slim
132 WORKDIR /app
133 COPY requirements.txt ./
134 RUN pip install -r requirements.txt --no-cache-dir
135 COPY . .
136 ENV PORT=3000
137 EXPOSE 3000
138 CMD ["python","app.py"]
139 ```
140
1413) **Local running** (Function mode only)
142 - Automatically use `npm run dev/start` or entry file via `run`
143
1444) **Configure access**
145 - Set `OpenAccessTypes` (WEB/VPC/PRIVATE) as needed; configure security domain and authentication for Web scenarios
146
1475) **Deploy**
148 - Specify CPU/Mem/instance count/environment variables, etc. during `deploy`
149
1506) **Verify**
151 - Use `detail` to confirm access address and configuration meet expectations
152
153### Example Tool Calls
154
1551) **View templates/services**
156```json
157{ "name": "queryCloudRun", "arguments": { "action": "templates" } }
158```
159```json
160{ "name": "queryCloudRun", "arguments": { "action": "detail", "detailServerName": "my-svc" } }
161```
162
1632) **Initialize project**
164```json
165{ "name": "manageCloudRun", "arguments": { "action": "init", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "template": "helloworld" } }
166```
167
1683) **Download code** (optional)
169```json
170{ "name": "manageCloudRun", "arguments": { "action": "download", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc" } }
171```
172
1734) **Local running** (Function mode only)
174```json
175{ "name": "manageCloudRun", "arguments": { "action": "run", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "runOptions": { "port": 3000 } } }
176```
177
1785) **Deploy**
179```json
180{ "name": "manageCloudRun", "arguments": { "action": "deploy", "serverName": "my-svc", "targetPath": "/abs/ws/my-svc", "serverConfig": { "OpenAccessTypes": ["WEB"], "Cpu": 0.5, "Mem": 1, "MinNum": 0, "MaxNum": 5 } } }
181```
182
1836) **Create AI agent** (optional)
184```json
185{ "name": "manageCloudRun", "arguments": { "action": "createAgent", "serverName": "my-agent", "targetPath": "/abs/ws/agents", "agentConfig": { "agentName": "MyAgent", "botTag": "demo", "description": "My agent", "template": "blank" } } }
186```
187
1887) **Run agent** (optional)
189```json
190{ "name": "manageCloudRun", "arguments": { "action": "run", "serverName": "my-agent", "targetPath": "/abs/ws/agents/my-agent", "runOptions": { "port": 3000, "runMode": "agent" } } }
191```
192
193## 6. Best Practices (Strongly Recommended)
194
195- Prioritize PRIVATE/VPC or mini-program internal `callContainer`, reduce public network exposure
196- Web must use CloudBase Web SDK authentication; mini-programs authenticated by platform
197- Secrets via environment variables; separate configuration for multiple environments (dev/stg/prod)
198- Use `queryCloudRun.detail` to verify configuration and accessibility before and after deployment
199- Image layers reusable, small volume; monitor startup latency and memory usage
200- Agent development: Use `@cloudbase/aiagent-framework`, supports SSE streaming responses, BotId format is `ibot-{name}-{tag}`
201
202## 7. Quick Troubleshooting
203
204- **Access failure**: Check OpenAccessTypes/domain/port, whether instance scaled down to 0
205- **Deployment failure**: Verify Dockerfile/build logs/image volume and CPU/Mem ratio
206- **Local running failure**: Only Function mode supported; requires `package.json` `dev`/`start` or entry `index.js|app.js|server.js`
207- **Performance jitter**: Reduce dependencies and initialization; appropriately increase MinNum; optimize cold start
208- **Agent running failure**: Check `@cloudbase/aiagent-framework` dependency, BotId format, SSE response format
209
210## 8. Function Mode CloudRun (Function Mode) Key Points (Concise)
211
212- **Definition**: CloudRun + function framework (`@cloudbase/functions-framework`) + function code, making container service development as simple as writing cloud functions
213- **When to choose**: Need WebSocket/SSE/file upload/streaming responses; need long tasks or connect to DB/message queue; need multiple functions per instance and shared memory, low latency and better logs/debugging
214- **Agent mode**: Develop AI agents based on Function mode CloudRun, use `@cloudbase/aiagent-framework`, supports SSE streaming responses and personalized AI applications
215- **Tool support**: Local running only supports Function mode (`manageCloudRun` → `run`); deploy using `manageCloudRun` → `deploy`; query using `queryCloudRun`
216- **Migration tips**: Different from cloud function call chain/runtime, migration requires minor modifications (including client calling methods)
217- **Portability**: Based on function framework, can run locally/host/Docker, non-CloudRun requires self-managed build and deployment
218
219## 9. Service Invocation Methods (Concise Examples)
220
221### HTTP Direct Access (when WEB public network enabled)
222```bash
223curl -L "https://<your-service-domain>"
224```
225
226### WeChat Mini Program (internal direct connection, recommend closing public network)
227```js
228// app.js (ensure wx.cloud.init() is called)
229const res = await wx.cloud.callContainer({
230 config: { env: "<envId>" },
231 path: "/",
232 method: "GET",
233 header: { "X-WX-SERVICE": "<serviceName>" }
234});
235```
236
237### Web (JS SDK, need to configure security domain and authentication)
238```js
239import cloudbase from "@cloudbase/js-sdk";
240
241const app = cloudbase.init({ env: "<envId>" }); // Collect user's phone number into variable `phoneNum` by providing a input UI
242
243const auth = app.auth();
244
245// Send SMS code
246const verificationInfo = await auth.getVerification({
247 phone_number: `+86 ${phoneNum}`,
248});
249
250// Collect user's phone number into variable `verificationCode` by providing a input UI
251
252// Sign in
253await auth.signInWithSms({
254 verificationInfo,
255 verificationCode,
256 phoneNum,
257});
258
259const res = await app.callContainer({
260 name: "<serviceName>", method: "POST", path: "/api",
261 header: { "Content-Type": "application/json" },
262 data: { key: "value" }
263});
264```
265
266// Web JS SDK initialization MUST be synchronous:
267// - Always use top-level `import cloudbase from "@cloudbase/js-sdk";`
268// - Do NOT use dynamic imports like `import("@cloudbase/js-sdk")` or async wrappers such as `initCloudBase()` with internal `initPromise`
269
270### Node.js (server-side/cloud function internal call)
271```js
272import tcb from "@cloudbase/node-sdk";
273const app = tcb.init({});
274const res = await app.callContainer({
275 name: "<serviceName>", method: "GET", path: "/health",
276 timeout: 5000
277});
278```
279
280### Recommendations
281- Mini Program/Server side prioritize internal network (VPC/PRIVATE) calls, reduce exposure surface
282- Web scenarios need to enable WEB, public domain and security domain, and use SDK authentication