Skill: sdk-team/alibabacloud-cms-dataset (version 0.0.1)

--- name: alibabacloud-cms-dataset description: | Alicloud CMS Dataset lifecycle management and querying skill. Covers listing, inspecting, creating, updating, deleting datasets and executing dataset queries via the aliyun CLI (CMS API version 2024-03-30). Triggers: "CMS dataset", "数据集", "创建数据集", "查询数据集", "dataset 查询", "ExecuteQuery", "CreateDataset", "GetDataset", "ListDatasets", "UpdateDataset", "DeleteDataset". --- # CMS Dataset Lifecycle Management and Querying Manage CloudMonitor (CMS) dataset resources — list, inspect, create, update, delete datasets and execute dataset-level queries — using the `aliyun` CLI. **Architecture**: `CMS Workspace + Dataset (Schema + Fields) + ExecuteQuery` --- ## Installation ### Install Aliyun CLI Run `aliyun version` to verify if version >= `3.3.3`. If not installed or outdated, follow the doc [references/cli-installation-guide.md](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. > ```bash > aliyun configure ai-mode enable > aliyun configure ai-mode set-user-agent --user-agent [REDACTED_SECRET] > ``` > **[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). > > **If no valid profile exists, STOP here.** > 1. Obtain credentials from [Alibaba Cloud Console](https://ram.console.aliyun.com/manage/ak) > 2. Configure credentials **outside of this session** (via `aliyun configure` in terminal or environment variables in shell profile) > 3. Return and re-run after `aliyun configure list` shows a valid profile --- ## RAM Policy See [references/ram-policies.md](references/ram-policies.md) for the full permission list. Minimum required actions: `cms:ListDatasets`, `cms:GetDataset`, `cms:CreateDataset`, `cms:UpdateDataset`, `cms:DeleteDataset`, `cms:ExecuteQuery`. > **[MUST] Permission Failure Handling:** When any command or API call fails due to permission errors at any point during execution, follow this process: > 1. Read `references/ram-policies.md` to get the full list of permissions required by this SKILL > 2. Use `ram-permission-diagnose` skill to guide the user through requesting the necessary permissions > 3. 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. ```bash aliyun cms get-workspace --api-version 2024-03-30 \ --workspace <workspace> ``` If the workspace does not exist (returns error), create it via `put-workspace`: ```bash aliyun cms put-workspace --api-version 2024-03-30 \ --workspace-name <workspace> \ --sls-project <sls-project> ``` `--sls-project` is required. If the user does not specify one, use the same value as the workspace name. ### 1. List Datasets ```bash aliyun cms list-datasets --api-version 2024-03-30 \ --workspace <workspace> \ [--dataset-name <filter>] \ [--max-results <n>] \ [--next-token <token>] ``` ### 2. Get Dataset ```bash aliyun cms get-dataset --api-version 2024-03-30 \ --workspace <workspace> \ --dataset-name <dataset-name> ``` ### 3. Create Dataset **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: ```bash aliyun cms create-dataset --api-version 2024-03-30 \ --workspace <workspace> \ --dataset-name <dataset-name> \ --schema '{"message_text":{"type":"text","chn":true,"embedding":"text-embedding-v4"},"service_name":{"type":"text","chn":false}}' \ [--description "<description>"] ``` **Schema rules:** - The `--schema` value is the field definitions object directly (not wrapped in an API body). - Each top-level key is a field name. Each value has: `type`, optional `chn`, optional `embedding`, optional `jsonKeys`. - Only `type: "text"` fields may enable `embedding`. Reject embedding on non-text fields. - `jsonKeys` defines nested JSON key structures. Nested keys support `type` and `chn` only (no `embedding`): ```json { "event_data": { "type": "text", "chn": false, "jsonKeys": { "source": { "type": "text", "chn": false }, "message": { "type": "text", "chn": true } } } } ``` ### 4. Update Dataset **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. ```bash # Show dataset to confirm aliyun cms get-dataset --api-version 2024-03-30 \ --workspace <workspace> --dataset-name <dataset-name> # Delete after explicit confirmation aliyun cms delete-dataset --api-version 2024-03-30 \ --workspace <workspace> \ --dataset-name <dataset-name> ``` ### 6. Execute Query **Safety:** When possible, inspect the dataset schema first via GetDataset so field names come from the actual schema. ```bash aliyun cms execute-query --api-version 2024-03-30 \ --workspace <workspace> \ --dataset-name <dataset-name> \ --type SQL \ --query '<query>' ``` - `--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. --- ## Success Verification See [references/verification-method.md](references/verification-method.md) for step-by-step verification commands for each operation. --- ## Cleanup To remove a dataset created during this session: ```bash aliyun cms delete-dataset --api-version 2024-03-30 \ --workspace <workspace> \ --dataset-name <dataset-name> ``` --- ## Output Expectations - Show complete JSON first for any API response. - Then provide a short human-readable summary. - For write previews: include workspace, dataset name, region, description, and full schema. - For query results: include progress, row count, affected rows, and elapsed time. --- ## Command Tables See [references/related-commands.md](references/related-commands.md) for the full command reference. | Command | Description | | --- | --- | | `aliyun cms get-workspace` | Verify workspace exists | | `aliyun cms put-workspace` | Create or update a workspace | | `aliyun cms list-datasets` | List datasets in a workspace | | `aliyun cms get-dataset` | Get dataset details and schema | | `aliyun cms create-dataset` | Create a new dataset with schema | | `aliyun cms update-dataset` | Update dataset description | | `aliyun cms delete-dataset` | Delete a dataset | | `aliyun cms execute-query` | Execute a query against a dataset | --- ## Best Practices 1. Always specify `--api-version 2024-03-30` — the default CMS version (`2019-01-01`) does not support dataset operations. 2. Validate dataset names and field names against the naming regex before calling CreateDataset. 3. Use GetDataset to inspect schema before generating queries — use actual field names, not guesses. 4. Pass schema JSON directly as a single-quoted string to avoid shell quoting issues. 5. Always confirm write operations (Create, Update, Delete) with the user before execution. 6. Check dataset existence before creating to avoid duplicates. 7. Use `--region` (not `--region-id`) when specifying a region explicitly. 8. Do not pass `--endpoint` unless explicitly required; if needed, use `cms.<region>.aliyuncs.com`. 9. For ExecuteQuery, always pass `--type SQL` as a required placeholder. 10. Prefer inline JSON for `--schema` to avoid temporary file management. 11. **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. 12. **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. --- ## Reference Links | Reference | Description | | --- | --- | | [references/ram-policies.md](references/ram-policies.md) | RAM permission requirements | | [references/related-commands.md](references/related-commands.md) | Full CLI command reference | | [references/verification-method.md](references/verification-method.md) | Success verification steps | | [references/acceptance-criteria.md](references/acceptance-criteria.md) | Correct/incorrect pattern examples | | [references/cli-installation-guide.md](references/cli-installation-guide.md) | CLI installation guide |

path: references/acceptance-criteria.md
content: # Acceptance Criteria: alibabacloud-cms-dataset

**Scenario**: CMS Dataset Lifecycle Management and Querying
**Purpose**: Skill testing acceptance criteria

---

# Correct CLI Command Patterns

## 1. Product — `cms`

#### CORRECT
```bash
aliyun cms list-datasets --api-version 2024-03-30 ...
```

#### INCORRECT
```bash
aliyun CMS list-datasets ...        # Wrong case
aliyun cloudmonitor list-datasets ... # Wrong product name
```

## 2. API Version — `2024-03-30`

#### CORRECT
```bash
aliyun cms list-datasets --api-version 2024-03-30
```

#### INCORRECT
```bash
aliyun cms list-datasets                          # Missing api-version, defaults to 2019-01-01
aliyun cms list-datasets --api-version 2019-01-01 # Wrong version, dataset APIs not available
```

## 3. Commands — Plugin Mode (kebab-case)

#### CORRECT
```bash
aliyun cms list-datasets ...
aliyun cms get-dataset ...
aliyun cms create-dataset ...
aliyun cms update-dataset ...
aliyun cms delete-dataset ...
aliyun cms execute-query ...
```

#### INCORRECT
```bash
aliyun cms ListDatasets ...    # PascalCase API name, not plugin mode
aliyun cms listDatasets ...    # camelCase, not plugin mode
aliyun cms list_datasets ...   # snake_case, not kebab-case
```

## 4. Parameters — kebab-case naming

#### CORRECT
```bash
--workspace <value>
--dataset-name <value>
--max-results <value>
--next-token <value>
--api-version 2024-03-30
--description <value>
--schema <value>
--type SQL
--query '<value>'
--region cn-hangzhou
```

#### INCORRECT
```bash
--datasetName <value>    # camelCase, not kebab-case
--region-id cn-hangzhou  # Wrong: use --region for CMS dataset commands
--endpoint <value>       # Do not pass --endpoint by default
```

## 5. Schema Format

#### CORRECT — Schema value is the field definitions object
```json
{
  "message_text": {
    "type": "text",
    "chn": true
  },
  "service_name": {
    "type": "text",
    "chn": false
  }
}
```

#### INCORRECT — Schema wraps in API body structure
```json
{
  "datasetName": "app_logs",
  "schema": {
    "message_text": {
      "type": "text"
    }
  }
}
```

## 6. Schema Passing

#### CORRECT
```bash
aliyun cms create-dataset --api-version 2024-03-30 \
  --workspace <workspace> \
  --dataset-name <name> \
  --schema '{"message_text":{"type":"text","chn":true}}'
```

#### INCORRECT
```bash
# Unquoted JSON — shell parsing issues
aliyun cms create-dataset --schema {"field": {"type": "text"}}
```

## 7. Dataset Naming Rules

#### CORRECT
```
app_logs           # 4+ chars, lowercase, starts with letter
service_metric_01  # Digits allowed after first char
trace_id           # Single underscores allowed
```

#### INCORRECT
```
AppLogs      # Uppercase not allowed
app-logs     # Hyphens not allowed
app__logs    # Consecutive underscores not allowed
_app_logs    # Cannot start with underscore
app_logs_    # Cannot end with underscore
app          # Too short (< 4 chars)
```

**Regex**: `^[a-z](?!.*__)[a-z0-9_]{2,61}[a-z0-9]$`

## 8. ExecuteQuery — Type Parameter

#### CORRECT
```bash
aliyun cms execute-query --api-version 2024-03-30 \
  --workspace <workspace> --dataset-name <name> \
  --type SQL --query 'SELECT count(1) FROM "datasetname"'
```

#### INCORRECT
```bash
# Missing --type parameter
aliyun cms execute-query --api-version 2024-03-30 \
  --workspace <workspace> --dataset-name <name> \
  --query 'SELECT count(1) FROM "datasetname"'
```

## 9. Embedding Constraint

#### CORRECT — embedding only on text fields
```json
{
  "message_text": {
    "type": "text",
    "chn": true,
    "embedding": "text-embedding-v4"
  }
}
```

#### INCORRECT — embedding on non-text field
```json
{
  "count_field": {
    "type": "long",
    "embedding": "text-embedding-v4"
  }
}
```

## 10. jsonKeys Nested Structure

#### CORRECT — nested keys with type and chn only
```json
{
  "event_data": {
    "type": "text",
    "chn": false,
    "jsonKeys": {
      "source": {
        "type": "text",
        "chn": false
      },
      "message": {
        "type": "text",
        "chn": true
      }
    }
  }
}
```

#### INCORRECT — embedding inside jsonKeys (not supported)
```json
{
  "event_data": {
    "type": "text",
    "jsonKeys": {
      "source": {
        "type": "text",
        "embedding": "text-embedding-v4"
      }
    }
  }
}
```

## 11. Endpoint Usage

#### CORRECT
```bash
# No endpoint by default — let CLI resolve it
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace>

# Only when explicitly required
--endpoint cms.cn-hangzhou.aliyuncs.com
```

#### INCORRECT
```bash
# Wrong endpoint format
--endpoint metrics.cn-hangzhou.aliyuncs.com
```

## 12. Safety — Write Operation Confirmation

#### CORRECT
- Before CreateDataset: check if dataset already exists via ListDatasets
- Before UpdateDataset: show current and new description via GetDataset
- Before DeleteDataset: show dataset details and ask for explicit confirmation

#### INCORRECT
- Creating a dataset without checking for duplicates
- Deleting a dataset without user confirmation
- Updating description without showing the current value

## 13. Product Binding — ONLY use `cms`

#### CORRECT
```bash
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace>
aliyun cms create-dataset --api-version 2024-03-30 --workspace <workspace> ...
```

#### INCORRECT — using wrong products
```bash
aliyun dataworks CheckDatasetExistence ...   # Wrong product
aliyun adb DescribeTables ...                # Wrong product
aliyun sls POST /logstores ...               # Wrong product
aliyun maxcompute POST /projects/.../tables  # Wrong product
aliyun opensearch ...                        # Wrong product
```

CMS dataset operations belong to the `cms` product exclusively. The `workspace` parameter is a CMS workspace ID, not a DataWorks workspace, SLS project, or MaxCompute project. If a command fails, fix parameters or permissions — never switch to a different product.

## 14. Credential Handling

#### CORRECT
```bash
aliyun configure list   # Check credential status
```

#### INCORRECT
```bash
echo $ALIBABA_CLOUD_ACCESS_KEY_ID    # NEVER print AK/SK
aliyun configure set --access-key-id LTAI... --access-key-secret 8d...  # NEVER hardcode in agent
```


path: references/cli-installation-guide.md
content: # Aliyun CLI Installation & Configuration Guide

Complete guide for installing and configuring Aliyun CLI.

> **Aliyun CLI 3.3.3+**: Supports installing and using all published Alibaba Cloud product plugins. Make sure to upgrade to 3.3.3 or later for full plugin ecosystem coverage.

## Installation

### macOS

**Using Homebrew (Recommended)**
```bash
brew install aliyun-cli
# Upgrade to latest
brew upgrade aliyun-cli

# Verify version (>= 3.3.3)
aliyun version
```

**Using Binary**
```bash
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-macosx-latest-amd64.tgz

# Extract
tar -xzf aliyun-cli-macosx-latest-amd64.tgz

# Move to PATH
sudo mv aliyun /usr/local/bin/

# Verify
aliyun version
```

### Linux

**Debian/Ubuntu**
```bash
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz

# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/

# Verify
aliyun version
```

**CentOS/RHEL**
```bash
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz

# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/

# Verify
aliyun version
```

**ARM64 Architecture**
```bash
# Download ARM64 version
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz

# Extract and install
tar -xzf aliyun-cli-linux-latest-arm64.tgz
sudo mv aliyun /usr/local/bin/
```

### Windows

**Using Binary**
1. Download from: https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip
2. Extract the ZIP file
3. Add the directory to your PATH environment variable
4. Open new Command Prompt or PowerShell
5. Verify: `aliyun version`

**Using PowerShell**
```powershell
# Download
Invoke-WebRequest -Uri "https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip" -OutFile "aliyun-cli.zip"

# Extract
Expand-Archive -Path aliyun-cli.zip -DestinationPath C:\aliyun-cli

# Add to PATH (requires admin privileges)
$env:Path += ";C:\aliyun-cli"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)

# Verify
aliyun version
```

## Quick Setup

```bash
curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash
aliyun version
```

## Configuration

### Access Key Mode

```bash
aliyun configure set \
  --mode AK \
  --access-key-id <your-access-key-id> \
  --access-key-secret <your-access-key-secret> \
  --region cn-hangzhou
```

**Where to Get Access Keys**: https://ram.console.aliyun.com/manage/ak

### Environment Variables

```bash
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
export ALIBABA_CLOUD_REGION_ID=cn-hangzhou
```

### Managing Profiles

```bash
aliyun configure list                      # List all profiles
aliyun configure set --current projectA    # Switch default profile
aliyun ecs describe-instances --profile projectA  # Use specific profile
```

## References

- Official Documentation: https://help.aliyun.com/zh/cli/
- RAM Console: https://ram.console.aliyun.com/
- Access Key Management: https://ram.console.aliyun.com/manage/ak


path: references/ram-policies.md
content: # RAM Policies: alibabacloud-cms-dataset

Required RAM permissions for CMS Dataset operations (API version 2024-03-30).

## Permission List

| API | RAM Action | Description |
| --- | --- | --- |
| ListDatasets | `cms:ListDatasets` | List datasets in a workspace |
| GetDataset | `cms:GetDataset` | Get dataset details and schema |
| CreateDataset | `cms:CreateDataset` | Create a new dataset |
| UpdateDataset | `cms:UpdateDataset` | Update dataset description |
| DeleteDataset | `cms:DeleteDataset` | Delete a dataset |
| ExecuteQuery | `cms:ExecuteQuery` | Execute a query against a dataset |

## Minimum Policy Document

```json
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cms:ListDatasets",
        "cms:GetDataset",
        "cms:CreateDataset",
        "cms:UpdateDataset",
        "cms:DeleteDataset",
        "cms:ExecuteQuery"
      ],
      "Resource": "*"
    }
  ]
}
```

## Read-Only Policy

For users who only need to list, inspect, and query datasets:

```json
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cms:ListDatasets",
        "cms:GetDataset",
        "cms:ExecuteQuery"
      ],
      "Resource": "*"
    }
  ]
}
```

## Notes

- All actions are scoped to the CMS service (`cms:*`).
- Resource-level authorization is supported. Replace `"*"` with specific workspace ARNs to restrict scope.
- Attach the policy to the RAM user or role used by the `aliyun` CLI profile.


path: references/related-commands.md
content: # Related CLI Commands: alibabacloud-cms-dataset

All CMS Dataset CLI commands (API version 2024-03-30). All commands require `--api-version 2024-03-30`.

## Command Reference

| Command | Description | Key Parameters |
| --- | --- | --- |
| `aliyun cms get-workspace` | Verify workspace exists | `--workspace` |
| `aliyun cms put-workspace` | Create or update a workspace | `--workspace-name`, `--sls-project` (required), `--display-name`, `--description` |
| `aliyun cms list-datasets` | List datasets in a workspace | `--workspace`, `--dataset-name` (filter), `--max-results`, `--next-token` |
| `aliyun cms get-dataset` | Get dataset details and schema | `--workspace`, `--dataset-name` |
| `aliyun cms create-dataset` | Create a new dataset | `--workspace`, `--dataset-name`, `--schema`, `--description` |
| `aliyun cms update-dataset` | Update dataset description | `--workspace`, `--dataset-name`, `--description` |
| `aliyun cms delete-dataset` | Delete a dataset | `--workspace`, `--dataset-name` |
| `aliyun cms execute-query` | Execute a query against a dataset | `--workspace`, `--dataset-name`, `--type`, `--query` |

## Parameter Details

### Common Parameters

| Parameter | Description | Required |
| --- | --- | --- |
| `--api-version` | API version. Always use `2024-03-30` | Yes |
| `--workspace` | CMS workspace ID | Yes |
| `--region` | Region ID. Uses profile region if omitted | No |

### ListDatasets

| Parameter | Description | Required |
| --- | --- | --- |
| `--dataset-name` | Filter by dataset name | No |
| `--max-results` | Maximum number of results (integer) | No |
| `--next-token` | Pagination token | No |

### GetDataset / DeleteDataset

| Parameter | Description | Required |
| --- | --- | --- |
| `--dataset-name` | Dataset name | Yes |

### CreateDataset

| Parameter | Description | Required |
| --- | --- | --- |
| `--dataset-name` | Dataset name (4-63 chars, lowercase, no consecutive underscores) | Yes |
| `--schema` | Schema JSON object (single-quoted string) | Yes |
| `--description` | Dataset description | No |

### UpdateDataset

| Parameter | Description | Required |
| --- | --- | --- |
| `--dataset-name` | Dataset name | Yes |
| `--description` | New description | No |

### ExecuteQuery

| Parameter | Description | Required |
| --- | --- | --- |
| `--dataset-name` | Dataset name | Yes |
| `--type` | Query type. Always pass `SQL` | Yes |
| `--query` | Query text | Yes |

## Example Commands

```bash
# List all datasets
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace>

# Get dataset details
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>

# Create dataset
aliyun cms create-dataset --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --schema '{"field":{"type":"text","chn":true}}' --description "desc"

# Update description
aliyun cms update-dataset --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --description "new description"

# Delete dataset
aliyun cms delete-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>

# Execute query
aliyun cms execute-query --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --type SQL --query 'SELECT count(1) FROM "datasetname"'
```


path: references/verification-method.md
content: # Verification Method: alibabacloud-cms-dataset

Steps to verify each workflow action was successful.

## 1. List Datasets

**Command:**
```bash
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace>
```

**Success criteria:**
- HTTP 200 response
- Response contains `datasets` array
- Each entry has `datasetName`, `description`, and metadata

**Verification:**
- Check that `datasets` is present and is an array (may be empty for new workspaces)

## 2. Get Dataset

**Command:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```

**Success criteria:**
- HTTP 200 response
- Response contains `datasetName`, `schema`, and `description`
- `schema` contains the expected field definitions

**Verification:**
- Confirm `datasetName` matches the requested name
- Confirm `schema` field keys match expected fields

## 3. Create Dataset

**Pre-check:**
```bash
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Verify dataset does NOT already exist

**Command:**
```bash
aliyun cms create-dataset --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --schema '{"field":{"type":"text","chn":true}}'
```

**Success criteria:**
- HTTP 200 response with no error

**Post-verification:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Confirm the dataset exists and schema matches what was submitted

## 4. Update Dataset

**Pre-check:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Record current description

**Command:**
```bash
aliyun cms update-dataset --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --description "new description"
```

**Post-verification:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Confirm description has been updated to the new value

## 5. Delete Dataset

**Pre-check:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Confirm the dataset exists and show details to user for confirmation

**Command:**
```bash
aliyun cms delete-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```

**Post-verification:**
```bash
aliyun cms list-datasets --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Confirm the dataset no longer appears in the list

## 6. Execute Query

**Pre-check:**
```bash
aliyun cms get-dataset --api-version 2024-03-30 --workspace <workspace> --dataset-name <name>
```
- Confirm the dataset exists and inspect schema for valid field names

**Command:**
```bash
aliyun cms execute-query --api-version 2024-03-30 --workspace <workspace> \
  --dataset-name <name> --type SQL --query '<query>'
```

**Success criteria:**
- HTTP 200 response
- Response contains `requestId`, `meta`, and `data`
- `meta.progress` indicates query completion status

**Verification:**
- Check `meta.affectedRows` and `meta.count` for expected row counts
- Check `meta.elapsedMillisecond` for reasonable execution time
- Verify `data` contains the expected result structure


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)