Skip to content
Back to skills

Alibabacloud Cli Guidance

DSecurity

Guide for Alibaba Cloud CLI (aliyun) command syntax, plugin system, parameter naming, and best practices. Use this skill to generate correct CLI commands, understand plugin vs built-in command differences, structured parameter syntax, output filtering, pagination, and error troubleshooting. This skill is a CLI knowledge reference — when MCP tools (AlibabaCloud___CallCLI, etc.) are available, always prefer MCP tools for execution rather than running aliyun commands locally in the shell.

  • 23 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
devopsshellbashdebuggingapici/cdsecurity

Works with

  • terminal
  • cli
  • api
  • mcp

Security analysis

D42/100
  • criticalPipes output to a shell interpreter
  • mediumUses curl or wget to download content
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro scans all 5 files and shows the line behind each finding

Scanned September 19, 2026

npx -y skills add aliyun/alibabacloud-agent-toolkit --skill alibabacloud-cli-guidance --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alibabacloud Cli Guidance?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Alibabacloud Cli Guidance
[![Security: D — Skills Directory](https://www.skillsdirectory.com/api/skills/aliyun-alibabacloud-cli-guidance/badge)](https://www.skillsdirectory.com/skills/aliyun-alibabacloud-cli-guidance)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: alibabacloud-cli-guidance
description: >
  Guide for Alibaba Cloud CLI (aliyun) command syntax, plugin system, parameter naming,
  and best practices. Use this skill to generate correct CLI commands, understand plugin
  vs built-in command differences, structured parameter syntax, output filtering, pagination,
  and error troubleshooting. This skill is a CLI knowledge reference — when MCP tools
  (AlibabaCloud___CallCLI, etc.) are available, always prefer MCP tools for execution
  rather than running aliyun commands locally in the shell.
triggers: >
  aliyun CLI, 阿里云CLI, CLI命令, CLI command, aliyun命令, 命令行工具,
  CLI插件, plugin install, CLI安装, CLI配置, CLI报错, CLI error,
  InvalidAccessKeyId, SignatureDoesNotMatch, Throttling, biz-region-id,
  kebab-case, plugin command, CLI语法, command syntax, aliyun plugin,
  生成CLI命令, generate CLI command, CLI参数, CLI parameter
license: Apache-2.0
metadata:
  domain: aliyun-cli
  owner: sdk-team
  contact: sdk-team@alibabacloud.com
allowed-tools: "mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___CallCLI,mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___SearchApis,mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___GetApiDefinition,mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___GenerateCLICommand,mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___ListApis,mcp__plugin_alibabacloud-core_alibabacloud-core__AlibabaCloud___ListProducts"
---

# Aliyun CLI Expert

Guide for managing Alibaba Cloud resources using the `aliyun` command-line tool.

## MCP Tools vs Local CLI Execution

**IMPORTANT**: This skill provides CLI command knowledge and syntax guidance. It does
NOT mean you should always run `aliyun` commands locally in the shell.

**Execution priority:**

1. **MCP tools (highest priority)** — When `AlibabaCloud___CallCLI` and other MCP tools
   are available, **always use them** for API execution. MCP tools handle authentication,
   cross-account access (`x_assume_account_id`), and output filtering (`x_output_jmespath_filter`)
   without requiring local CLI installation or configuration.

2. **Local CLI (fallback)** — Only use local `aliyun` commands in the Bash tool when:
   - MCP tools are not available or not configured
   - The operation requires local file system access (e.g., `aliyun oss cp`, `aliyun ossutil sync`)
   - The user explicitly asks for a local CLI command to copy/paste or use in scripts
   - The user needs to install/configure the CLI itself

**Use this skill's knowledge for:**

- Understanding correct command syntax when calling `AlibabaCloud___CallCLI`
- Generating CLI commands via `AlibabaCloud___GenerateCLICommand`
- Knowing the difference between plugin-style and built-in-style commands
- Understanding parameter naming conventions (especially `--biz-` prefixes)
- Troubleshooting CLI errors returned by MCP or local execution
- Guiding users who want to run commands locally in their own terminals

**Pivot to `alibabacloud-find-skills` when:** the user's request reads as a
solution pattern (batch ops, audits, rotations, scheduled cleanup, runbooks)
or targets a product not covered by any in-plugin skill — a packaged official
skill usually beats hand-rolled CLI sequences. See `mcp-core-best-practices`
→ Skill Discovery for the full trigger list.

## Agent Execution: AI-mode and User-Agent

**Only applicable when running aliyun commands locally** (not via MCP tools).

**Skill identifier**: `AlibabaCloud-Agent-Skills/alibabacloud-cli-guidance`

Use **exactly one** way to attach this skill to requests. **Do not combine** AI-mode
(`configure ai-mode` + `set-user-agent`) with `ALIBABA_CLOUD_USER_AGENT` or a per-command
env prefix for the **same** skill token — the CLI stacks those sources, and
**User-Agent / attribution will duplicate** (bad for telemetry).

| Path | When to use | Start | End / cleanup |
| ---- | ----------- | ----- | ------------- |
| **A — AI-mode (preferred for agents)** | Agent session, many `aliyun` calls | `aliyun configure ai-mode enable` then `aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-cli-guidance"` | **[MUST]** `aliyun configure ai-mode disable` before the final response on **every** exit (success, failure, error, cancel, session end). **Do not** `export ALIBABA_CLOUD_USER_AGENT` to the same value while AI-mode is on. |
| **B — Environment or one-shot** | One-off commands, scripts without `configure`, or no AI-mode | `export ALIBABA_CLOUD_USER_AGENT=AlibabaCloud-Agent-Skills/alibabacloud-cli-guidance` for the session, **or** prefix each API call: `ALIBABA_CLOUD_USER_AGENT=AlibabaCloud-Agent-Skills/alibabacloud-cli-guidance aliyun ...` | If you used **`export`**, run `unset ALIBABA_CLOUD_USER_AGENT` when done so other skills are not mis-attributed. Inline prefix needs no unset. **Do not** enable AI-mode on path B for the same skill string. |

**Pre-check: Aliyun CLI >= 3.3.3 required** — Run `aliyun version`. If too low:
`curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash` or see `references/installation-guide.md`.

**Pre-check: Aliyun CLI plugin update required** — [MUST] `aliyun configure set --auto-plugin-install true`;
[MUST] `aliyun plugin update`.

### CLI Version Milestones

| From version | What you gain |
| ------------- | -------------- |
| **>= 3.3.3** | Baseline for product plugins and flows in this skill. |
| **>= 3.3.5** | **`aliyun upgrade`** — update the CLI from the binary itself. |
| **>= 3.3.8** | **`aliyun plugin show --name <plugin>`** — details for an installed plugin. |

## Instructions

### 1. Install and Configure the CLI

If the user hasn't installed or configured the CLI, guide them through setup.
See `./references/installation-guide.md` for full details. Quick path:

```bash
# Install or update (macOS / Linux — one command)
/bin/bash -c "$(curl -fsSL --connect-timeout 10 --max-time 120 https://aliyuncli.alicdn.com/setup.sh)"
```

After the CLI is at **3.3.5 or newer**, routine self-updates can use **`aliyun upgrade`**.

#### OAuth (browser login)

When a **browser can be opened** on the same machine, **prefer OAuth** over storing
AccessKey pairs. Requires CLI **3.0.299** or later. **Not** suitable for headless environments.

```bash
aliyun configure --profile <your-profile-name> --mode OAuth
```

#### Environment variables (headless / CI/CD)

```bash
export ALIBABA_CLOUD_ACCESS_KEY_ID=<key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<key-secret>
export ALIBABA_CLOUD_REGION_ID=cn-hangzhou
# Temporary credentials (StsToken) — add:
# export ALIBABA_CLOUD_SECURITY_TOKEN=<sts-token>

# Verify
aliyun version      # Should be >= 3.3.3
aliyun ecs describe-regions   # Tests authentication
```

#### Authentication modes

| Mode | When to use | Environment variables |
| ---- | ----------- | --------------------- |
| **AK** | Development, long-lived credentials | `ALIBABA_CLOUD_ACCESS_KEY_ID`, `ALIBABA_CLOUD_ACCESS_KEY_SECRET`, `ALIBABA_CLOUD_REGION_ID` |
| **StsToken** | CI/CD, temporary credentials | Same as AK, plus `ALIBABA_CLOUD_SECURITY_TOKEN` |
| **RamRoleArn** | After AssumeRole or cross-account session | Same variables as **StsToken** |

### 2. Consult `--help` Before Constructing Any Command

Built-in commands have inconsistent parameter naming across APIs. Running `--help` first
is the authoritative source:

```bash
aliyun <product> --help                # Discover available subcommands
aliyun <product> <subcommand> --help   # Get exact parameter names, types, structure
```

When a plugin is installed, `aliyun <product> --help` shows plugin help. To view legacy
built-in help instead:

```bash
ALIBABA_CLOUD_ORIGINAL_PRODUCT_HELP=true aliyun ecs --help
```

### 3. Ensure Service Plugins Are Available

Each Alibaba Cloud product has a CLI plugin. Plugins provide consistent kebab-case
commands with comprehensive help:

```bash
aliyun plugin install --names ecs     # Install (short name, case-insensitive)
aliyun plugin install --names ECS VPC RDS   # Multiple at once
aliyun plugin list                    # Installed plugins
aliyun plugin list-remote             # All available plugins
aliyun plugin search <keyword>        # Search by keyword
aliyun plugin show --name ecs         # >= 3.3.8 — details for one installed plugin
```

### 4. Prefer Plugin Commands Over Built-in Commands

The CLI has two command styles, and the **subcommand casing** determines which system handles it:

- **All-lowercase subcommand** -> routed to plugin (CLI Native style)
- **Contains uppercase** -> routed to built-in (OpenAPI style)

```bash
# Plugin (preferred): consistent kebab-case
aliyun ecs describe-instances --biz-region-id cn-hangzhou

# Built-in (fallback): PascalCase subcommand, inconsistent params
aliyun ecs DescribeInstances --RegionId cn-hangzhou
```

**Note for MCP tools**: `AlibabaCloud___CallCLI` uses OpenAPI-style (PascalCase) commands.
The plugin-style commands are for local CLI execution. When generating commands for MCP
execution, use PascalCase subcommands (e.g., `aliyun ecs DescribeInstances`).

| Aspect | Plugin (CLI Native) | Built-in (OpenAPI) |
| ------ | ------------------- | ------------------ |
| Subcommand | `describe-instances` | `DescribeInstances` |
| Parameters | kebab-case (consistent) | Mixed (inconsistent) |
| ROA Body | Expanded to individual params | Single `--body` JSON |
| Header params | Visible in help, usable directly | Hidden, manual `--header` only |
| Help | Comprehensive with structure | Basic |

### 5. Understand Global vs Business Parameter Naming

The CLI plugin system reserves certain global parameters:

- `--region-id` / `--region` — controls which **API endpoint** the request is sent to.
- Other globals: `--profile`, `--api-version`, `--output`, etc.

Many APIs also define their own `RegionId` parameter. The plugin resolves this with:

1. **`--biz-` prefix (default)**: API's `RegionId` becomes `--biz-region-id`
2. **`--<product>-` prefix (fallback)**: if `--biz-region-id` is already taken

Always check `--help` for the actual parameter name.

### 6. Use Structured Parameter Syntax

Plugins support structured input that the framework serializes automatically:

```bash
--instance-id i-abc123                                  # single value
--security-group-ids sg-001 sg-002 sg-003               # space-separated list
--tag Key=env Value=prod --tag Key=app Value=web        # repeatable key-value
--data-disk '{"DiskName":"d1","Size":100}'              # complex structure (JSON)
```

### 7. OSS Uses Custom Commands

Unlike other products, OSS has a hand-written implementation with custom command syntax.
API-style commands like `PutBucket` do not exist for OSS:

```bash
aliyun oss --help        # Basic operations (cp, ls, mb, rm, etc.)
aliyun ossutil --help    # Advanced utilities (sync, stat, etc.)
```

**Note**: OSS file operations (`cp`, `sync`, etc.) require local file system access.
These cannot be run via MCP tools — use the Bash tool directly.

### 8. Filter and Format Output

```bash
# JMESPath filter
aliyun ecs describe-instances \
  --biz-region-id cn-hangzhou \
  --cli-query "Instances.Instance[?Status=='Running'].{ID:InstanceId,Name:InstanceName}"

# Output formats
aliyun ecs describe-instances --biz-region-id cn-hangzhou --output table
aliyun ecs describe-instances --biz-region-id cn-hangzhou --output cols=InstanceId,InstanceName,Status rows="Instances.Instance[]"
```

**Note for MCP tools**: Use `x_output_jmespath_filter` parameter instead of `--cli-query`.

### 9. Pagination

```bash
aliyun ecs describe-instances \
  --biz-region-id cn-hangzhou \
  --page-number 1 \
  --page-size 50

# Auto-paginate all pages
aliyun ecs describe-instances \
  --biz-region-id cn-hangzhou \
  --pager path='Instances.Instance[]' PageNumber=PageNumber PageSize=PageSize
```

### 10. Wait for Resource State

```bash
aliyun vpc describe-vpc-attribute \
  --biz-region-id cn-shanghai \
  --vpc-id <your-vpc-id> \
  --waiter expr='Status' to='Available'
```

### 11. Debugging

- `--log-level debug` — detailed request/response logs
- `--cli-dry-run` — validate command without executing
- `ALIBABA_CLOUD_CLI_LOG_CONFIG=debug` — environment variable for global debug

For **403**, **Forbidden**, **NoPermission**, see `./references/ram-policies.md`.

### 12. Multi-Version API Support

Some products ship multiple API versions:

```bash
aliyun <product> list-api-versions
aliyun ess describe-scaling-groups --api-version 2022-02-22 --biz-region-id cn-hangzhou
```

Set default version via environment variable:

```bash
export ALIBABA_CLOUD_ESS_API_VERSION=2022-02-22
```

## Global Flags Reference

| Flag | Purpose |
| ---- | ------- |
| `--region <region>` | API endpoint region (global, not business region) |
| `--profile <name>` | Use a named credential profile |
| `--api-version <ver>` | Override API version for this command |
| `--output json\|table\|cols=...` | Response format |
| `--cli-query <jmespath>` | JMESPath filter on response |
| `--log-level debug` | Verbose request/response logging |
| `--cli-dry-run` | Validate without executing |
| `--endpoint <url>` | Override service endpoint |
| `--retry <n>` | Retry count for failed requests |
| `--quiet` | Suppress output |
| `--pager` | Auto-merge all pages for pageable APIs |

## References

- `./references/installation-guide.md` — Installation, configuration modes, credential setup
- `./references/command-syntax.md` — Complete command syntax guide
- `./references/global-flags.md` — Global flags reference
- `./references/ram-policies.md` — On-demand RAM, least privilege, common permission errors

Files in this skill

  • SKILL.md13.4 KB
  • references/command-syntax.md2.6 KB
  • references/global-flags.md2.6 KB
  • references/installation-guide.md11.6 KB
  • references/ram-policies.md3.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.