You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(skills): guide alias→EnvId resolution & align Web SDK quick-start examples
Squashed 7 retry commits from attribution pipeline (issue_mnovxo2g_pc6qna)
into a single rebased-on-latest-main change. Drops the .claude mirror
diffs (autogenerated from source) and restores a section that was
accidentally removed from config/codebuddy-plugin/rules/cloudbase_rules.md
during an earlier retry.
Covers two related skill gaps surfaced by evaluation runs:
1. Environment ID alias handling — before writing env into SDK init,
auth.set_env, console URLs, or generated config, resolve aliases /
nicknames / shorthands to the canonical full EnvId via
envQuery(action='list', alias=..., aliasExact=true). Touches
cloudbase-rules.mdc, guideline/cloudbase, skills/SKILL.md,
auth-tool, auth-web, cloudbase-platform, web-development,
cloudbase-integrated prompt, skills-repo-template, and the
codebuddy-plugin rules. Regression test added for the three
canonical surfaces.
2. Web SDK quick-start accuracy — replace placeholder envIds with
'your-full-env-id', prefer npm installation over CDN for bundler
apps, fix the phone signUp example so it uses auth.signUp({ phone })
instead of signInWithOtp, and align the email→phone register-form
example with the phone signup flow.
Validated: evaluation 2026-04-21T04-58-14-d747be on
atomic-js-cloudbase-chain-env-destroy-and-verify lifted score from
0.401 (main) to 0.833 with this branch; the agent now correctly calls
envQuery(action='list') to resolve the alias before DestroyEnv.
- When writing MCP or tool results to a local file with a generic file-writing tool, pass text rather than raw objects. For JSON files, serialize first with `JSON.stringify(result, null, 2)` and write that string.
30
-
- If the file-writing tool says a parameter such as `content` expected a string but received an object, do not retry with the same raw object. Serialize the object first, then retry once with the serialized text, and make sure the retried call actually passes the serialized string rather than the original object.
31
29
- UI request -> read `rules/ui-design/rule.md` first and output the design specification before code.
32
30
- Native App / Flutter / React Native request -> route to `{http-api}`, not Web SDK rules.
33
31
- Cloud Function request -> route to `{cloud-functions}`, not `cloudrun-development`, unless the task explicitly needs container service behavior.
@@ -375,6 +373,8 @@ For example, many interfaces require a confirm parameter, which is a boolean typ
375
373
376
374
### Environment ID Auto-Configuration Rules
377
375
- When generating project configuration files (such as `cloudbaserc.json`, `project.config.json`, etc.), automatically use the environment ID queried by `envQuery`
376
+
- If the conversation only provides an environment alias, nickname, or shorthand, first resolve it with `envQuery(action=list, alias=..., aliasExact=true)` and use the returned full `EnvId`
377
+
- Do not pass alias-like short forms directly into `auth.set_env`, SDK init, console links, or generated config files; if the alias is ambiguous or missing, stop and ask the user to confirm
378
378
- In code examples involving environment ID, automatically fill in current environment ID, no need for manual user replacement
379
379
- In deployment and preview related operations, prioritize using already queried environment information
Copy file name to clipboardExpand all lines: config/source/guideline/cloudbase/SKILL.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,8 +36,6 @@ If a skill points to its own `references/...` files, keep following those relati
36
36
37
37
- If the same implementation path fails 2-3 times, stop retrying and reroute. Re-check the selected platform skill, runtime, auth domain, permission model, and SDK boundary before editing more code.
38
38
- Always specify `EnvId` explicitly in code, configuration, and command examples when initializing CloudBase clients or manager operations. Do not rely on the current CLI-selected environment, implicit defaults, or copied local state.
39
-
- When saving MCP or tool results to a local file with a generic file-writing tool, pass text, not raw objects. For JSON output files, serialize first with `JSON.stringify(result, null, 2)` and write that string as the file content.
40
-
- If the file-writing tool reports that a field such as `content` expected a string but received an object, do not retry with the same raw object. Serialize the object first, then retry once with the serialized text, and make sure the retried call actually passes the serialized string rather than the original object.
41
39
- Keep scenario-specific pitfall lists in the matching child skills instead of expanding this entry file.
42
40
43
41
### High-priority routing
@@ -133,6 +131,7 @@ When your IDE does not support native MCP, use **mcporter** as the CLI to config
133
131
134
132
- **When managing or deploying CloudBase, you MUST use MCP and MUST understand tool details first.** Before calling any CloudBase tool, run `npx mcporter describe cloudbase --all-parameters` (or `ToolSearch` in IDE) to inspect available tools and their parameters.
135
133
- You **do not need to hard-code Secret ID / Secret Key / Env ID** in the config. CloudBase MCP supports device-code based login via the `auth` tool, so credentials can be obtained interactively instead of being stored in config.
134
+
- When the environment identifier in the conversation is an alias, nickname, or other short form, **do not pass it directly** to `auth.set_env`, SDK init, console URLs, or generated config files. First resolve it to the canonical full `EnvId` with `envQuery(action=list, alias=..., aliasExact=true)`. If multiple environments match or no exact alias exists, stop and clarify with the user.
136
135
137
136
### Quick Start (mcporter CLI)
138
137
- `npx mcporter list`— list configured servers
@@ -146,8 +145,10 @@ When your IDE does not support native MCP, use **mcporter** as the CLI to config
Copy file name to clipboardExpand all lines: config/source/skills/SKILL.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,8 +39,7 @@ alwaysApply: true
39
39
40
40
- If the same path fails 2-3 times, stop retrying and reroute. Check platform skill, auth domain, runtime, and permission model before editing more code.
41
41
- Always specify `EnvId` explicitly in code, configuration, and command examples when initializing CloudBase clients or manager operations. Do not rely on the current CLI-selected environment or implicit defaults.
42
-
- When saving MCP or tool results to a local file with a generic file-writing tool, pass text, not raw objects. For JSON output files, serialize first with `JSON.stringify(result, null, 2)` and write that string as the file content.
43
-
- If the file-writing tool reports that a field such as `content` expected a string but received an object, do not retry with the same raw object. Serialize the object first, then retry once with the serialized text, and make sure the retried call actually passes the serialized string rather than the original object.
42
+
- If the conversation only provides an environment alias, nickname, or other shorthand, resolve it with `envQuery(action=list, alias=..., aliasExact=true)` and use the returned canonical full `EnvId` before calling `auth.set_env`, generating console links, or writing config/code. If the alias is ambiguous or missing, stop and ask the user to confirm.
Copy file name to clipboardExpand all lines: config/source/skills/auth-tool/SKILL.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,7 +94,7 @@ Recommended MCP request:
94
94
```json
95
95
{
96
96
"success": true,
97
-
"envId": "env-xxx",
97
+
"envId": "your-full-env-id",
98
98
"loginMethods": {
99
99
"usernamePassword": true,
100
100
"email": true,
@@ -135,6 +135,7 @@ Parameter mapping for downstream Web auth code:
135
135
-`UserNameLogin` also enables the broader password-login surface exposed by `auth.signInWithPassword({ username|email|phone, password })`
136
136
-`SmsVerificationConfig.Type = "apis"` requires both `Name` and `Method`
137
137
-`EnvId` is always the CloudBase environment ID, not the publishable key
138
+
- If the conversation only contains an environment alias, nickname, or other shorthand, resolve it to the canonical full `EnvId` first before generating auth config, SDK init examples, or console links
138
139
139
140
Internal behavior of `manageAppAuth(action="patchLoginStrategy")`:
Use the same CDN address as `web-development`. Prefer npm installation in modern bundler projects, and use the CDN form for static HTML, no-build demos, or low-friction examples.
63
+
Use npm installation for modern Web projects. In React, Vue, Vite, and other bundler-based apps, install and import `@cloudbase/js-sdk` from the project dependencies instead of using a CDN script.
65
64
66
65
## Prerequisites
67
66
@@ -71,6 +70,7 @@ Use the same CDN address as `web-development`. Prefer npm installation in modern
71
70
### Parameter map
72
71
73
72
- For username-style identifiers, the required precondition is `loginMethods.usernamePassword === true` from `queryAppAuth(action="getLoginConfig")`. If it is false, enable it with `manageAppAuth(action="patchLoginStrategy", patch={ usernamePassword: true })` before wiring frontend auth code.
73
+
- If the conversation only provides an environment alias, nickname, or other shorthand, resolve it with `envQuery(action="list", alias=..., aliasExact=true)` first and use the returned canonical full `EnvId` for SDK init, console links, and generated config. Do not pass alias-like short forms directly into `cloudbase.init({ env })`.
74
74
- Treat CloudBase Web Auth as **Supabase-like**, not “every `supabase-js` auth example is valid unchanged”
75
75
- When `queryAppAuth` / `manageAppAuth` returns `sdkStyle: "supabase-like"` and `sdkHints`, follow those method and parameter hints first
76
76
-`auth.signInWithOtp({ phone })` and `auth.signUp({ phone })` use the phone number in a `phone` field, not `phone_number`
@@ -85,10 +85,11 @@ Use the same CDN address as `web-development`. Prefer npm installation in modern
85
85
## Quick Start
86
86
87
87
```js
88
+
// npm install @cloudbase/js-sdk
88
89
importcloudbasefrom'@cloudbase/js-sdk'
89
90
90
91
constapp=cloudbase.init({
91
-
env:`env`, // CloudBase environment ID
92
+
env:'your-full-env-id', //Canonical full CloudBase environment ID resolved from envQuery or the console, not an alias or shorthand
accessKey:'publishable key', // required, get from auth-tool-cloudbase
94
95
auth: { detectSessionInUrl:true }, // required
@@ -105,8 +106,9 @@ If the current task has not retrieved a real Publishable Key, omit `accessKey` i
105
106
106
107
**1. Phone OTP (Recommended)**
107
108
- Automatically use `auth-tool-cloudbase` to turn on `SMS Login` through `manageAppAuth`
109
+
- For phone registration, send the phone number to `auth.signUp({ phone, ... })` first, then call the returned `verifyOtp({ token })`. Do not swap the order.
Copy file name to clipboardExpand all lines: config/source/skills/cloudbase-platform/SKILL.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -112,8 +112,10 @@ Use this skill for **CloudBase platform knowledge** when you need to:
112
112
1.**SDK Initialization**:
113
113
- CloudBase SDK initialization requires environment ID
114
114
- Can query environment ID via `envQuery` tool
115
+
- If the user only provides an environment alias, nickname, or other short form, resolve it with `envQuery(action="list", alias=..., aliasExact=true)` first and use the returned full `EnvId`
116
+
- Do not pass alias-like short forms directly into SDK init, `auth.set_env`, console URLs, or generated config files
-**Replace Variables**: Always replace `${envId}` with the actual environment ID queried via `envQuery` tool
310
+
-**Alias Handling**: If the conversation only contains an alias or shorthand, first resolve it with `envQuery(action="list", alias=..., aliasExact=true)` and use the returned `EnvId`; if the alias is ambiguous or missing, ask the user to confirm before generating links
308
311
-**Resource-Specific URLs**: For specific resources (collections, functions, models), replace resource name variables with actual values
309
312
-**Usage**: After creating/deploying resources, provide these console links to users for management operations
Copy file name to clipboardExpand all lines: config/source/skills/web-development/SKILL.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -117,6 +117,7 @@ Use this section only when the Web project needs CloudBase platform features.
117
117
- Use the CDN only for static HTML pages, quick demos, embedded snippets, or README examples
118
118
- Only use documented CloudBase Web SDK APIs; do not invent methods or options
119
119
- Keep a shared `app` or `auth` instance instead of re-initializing on every call
120
+
- If the user only provides an environment alias, nickname, or other shorthand, resolve it to the canonical full `EnvId` before writing SDK init code, console links, or config files. Do not pass alias-like short forms directly into `cloudbase.init({ env })`.
120
121
121
122
### Authentication boundary
122
123
@@ -134,10 +135,11 @@ Use this section only when the Web project needs CloudBase platform features.
134
135
### CloudBase quick start
135
136
136
137
```js
138
+
// npm install @cloudbase/js-sdk
137
139
importcloudbasefrom"@cloudbase/js-sdk";
138
140
139
141
constapp=cloudbase.init({
140
-
env:"xxxx-yyy",
142
+
env:"your-full-env-id", // Canonical full CloudBase environment ID resolved from envQuery or the console
Copy file name to clipboardExpand all lines: scripts/prompts/cloudbase-integrated.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,8 +12,9 @@ When user's application fits the above scenarios, suggest confirming the tech st
12
12
-**DO NOT start coding without reading the relevant rules** - Ensures correct implementation and avoids mistakes
13
13
14
14
### 1. Environment Check (MANDATORY - First Step)
15
-
-**Always call `envQuery` tool first** with `action=info` to get environment ID
16
-
- Auto-use queried envId in code/config, no manual input needed
15
+
- Confirm the target environment before coding or deploying
16
+
- If the conversation only gives an environment alias, nickname, or other shorthand, resolve it with `envQuery(action=list, alias=..., aliasExact=true)` and use the returned canonical full `EnvId`
17
+
- Do not pass alias-like short forms directly into SDK init, `auth.set_env`, console URLs, or generated config files. If the alias is ambiguous or missing, stop and clarify with the user
17
18
18
19
### 2. Template Download (MANDATORY for New Projects)
19
20
-**MUST call `downloadTemplate` FIRST** when starting new projects - Do NOT manually create files
0 commit comments