Run aliyun version to verify if version >= 3.3.3. If not installed or outdated, follow the doc references/cli-installation-guide.md to install or update.
Ensure plugins up-to-date
[MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation.
[MUST] run aliyun plugin update to ensure that any existing plugins are always up-to-date.
AI-Mode Lifecycle
At the start of the Core Workflow (before any CLI invocation):
[MUST] Enable AI-Mode — AI-mode is required for Agent Skill execution.
[MUST] Disable AI-Mode at EVERY exit point — Before delivering the final response for ANY reason, always disable AI-mode first. This applies to ALL exit paths: workflow success, workflow failure, error/exception, user cancellation, session end, or any other scenario where no further CLI commands will be executed.
bash
aliyun configure ai-mode disable
Authentication
Pre-check: Alibaba Cloud Credentials Required
Security Rules:
NEVER read, echo, or print AK/SK values (e.g., echo $ALIBABA_CLOUD_ACCESS_KEY_ID is FORBIDDEN)
NEVER ask the user to input AK/SK directly in the conversation or command line
NEVER use aliyun configure set with literal credential values
ONLY use aliyun configure list to check credential status
bash
aliyun configure list
Check the output for a valid profile (AK, STS, or OAuth identity).
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors at any point during execution, follow this process:
Read references/ram-policies.md to get the full list of permissions required by this SKILL
Use ram-permission-diagnose skill to guide the user through requesting the necessary permissions
Pause and wait until the user confirms that the required permissions have been granted
Parameter Confirmation
IMPORTANT: Parameter Confirmation — Before executing any command or API call,
ALL user-customizable parameters (e.g., RegionId, instance names, CIDR blocks,
passwords, domain names, resource specifications, etc.) MUST be confirmed with the
user. Do NOT assume or use default values without explicit user approval.
Parameter
Required/Optional
Description
Default Value
workspace
Required
CMS workspace ID
—
dataset-name
Required (except ListDatasets)
Dataset name (4-63 chars)
—
region
Optional
Region ID
CLI profile region
schema
Required (CreateDataset)
Schema JSON object
—
description
Optional
Dataset description
—
query
Required (ExecuteQuery)
Query text
—
type
Auto-filled (ExecuteQuery)
Query type placeholder. Always SQL, do not ask user
SQL
max-results
Optional (ListDatasets)
Max results per page
—
next-token
Optional (ListDatasets)
Pagination token for next page
—
Naming Rules
Dataset names and schema field names must satisfy:
Length: 4-63 characters
Start with a lowercase letter
Only lowercase letters, digits, and underscores
No leading/trailing underscore, no consecutive underscores
Regex: ^[a-z](?!.*__)[a-z0-9_]{2,61}[a-z0-9]$
Invalid names must NOT be silently normalized. Ask the user for a valid replacement.
Core Workflow
[CRITICAL] Product Binding: All dataset operations in this skill use the cms product ONLY.
The correct command pattern is aliyun cms <action> --api-version 2024-03-30.
DO NOT use any other product for dataset operations — dataworks, adb, sls, maxcompute, opensearch, pai, dashvector, or any other service are WRONG for this scenario.
If a command fails, check parameters and permissions — do NOT switch to a different product.
All commands use --api-version 2024-03-30. Do not pass --endpoint by default. Use --region (not --region-id) when specifying a region.
0. Verify Workspace Exists
[MUST] Before executing any dataset operation, call get-workspace to verify the workspace exists. Do NOT skip this step or use ListDatasets to infer workspace existence.
Safety: Before creating, check whether the dataset already exists via ListDatasets. If the dataset already exists, inform the user and ask whether to proceed (the API will return an error for duplicates). Always call CreateDataset when the user requests creation — do not silently skip it.
Pass the schema JSON directly as a single-quoted string:
Safety: Read and show the current description before updating.
Limitation: UpdateDataset can only modify the description. Schema cannot be updated through this API. If the user needs to change the schema, they must delete and recreate the dataset.
bash
# Show current state
aliyun cms get-dataset --api-version 2024-03-30 \
--workspace <workspace> --dataset-name <dataset-name>
# Update after user confirms
aliyun cms update-dataset --api-version 2024-03-30 \
--workspace <workspace> \
--dataset-name <dataset-name> \
--description "<new-description>"
5. Delete Dataset
Safety: Read and show the dataset, then ask for explicit confirmation identifying workspace and dataset name before deleting.
--type is a required placeholder. Always pass SQL.
If the user provides a complete query, preserve it except for safe shell quoting.
Natural-language to query: When the user describes an analysis intent in natural language instead of providing a query, first call GetDataset to retrieve the actual schema and field names, then generate a query based on those field names. Never guess field names without inspecting the schema.
Present the full JSON response first, then summarize: progress, returned rows, affected rows, and elapsed time.
Always specify --api-version 2024-03-30 — the default CMS version (2019-01-01) does not support dataset operations.
Validate dataset names and field names against the naming regex before calling CreateDataset.
Use GetDataset to inspect schema before generating queries — use actual field names, not guesses.
Pass schema JSON directly as a single-quoted string to avoid shell quoting issues.
Always confirm write operations (Create, Update, Delete) with the user before execution.
Check dataset existence before creating to avoid duplicates.
Use --region (not --region-id) when specifying a region explicitly.
Do not pass --endpoint unless explicitly required; if needed, use cms.<region>.aliyuncs.com.
For ExecuteQuery, always pass --type SQL as a required placeholder.
Prefer inline JSON for --schema to avoid temporary file management.
Never switch products. If a cms command fails, debug parameters/permissions — do not try dataworks, adb, sls, maxcompute, or other products. The "workspace" in this skill is a CMS workspace, not a DataWorks/SLS/MaxCompute project.
Set explicit timeouts. Use --read-timeout 30 --connect-timeout 10 for metadata operations (list/get/create/update/delete). For ExecuteQuery use --read-timeout 120 --connect-timeout 10 as queries may take longer.