
Alicloud Platform Aliyun Cli
- 278 installs
- 396 repo stars
- Updated July 18, 2026
- cinience/alicloud-skills
alicloud-platform-aliyun-cli is a cloud operations skill that runs the official Alibaba Cloud (Aliyun) CLI from agents to authenticate, list resources, and automate cross-product tasks.
About
alicloud-platform-aliyun-cli is a Cloud & Infrastructure skill from cinience/alicloud-skills that wraps the official Alibaba Cloud CLI for agent-driven operations. Developers use it to authenticate sessions, enumerate cloud resources, and execute service-specific aliyun commands during implementation or incident response. The skill enables coding agents to automate cross-product Alibaba Cloud workflows—provisioning checks, resource listing, and scripted administration—without hand-typing CLI flags. Reach for alicloud-platform-aliyun-cli when building or operating workloads on Aliyun and you want agents to run verified CLI patterns instead of improvising API calls. It fits teams standardized on the aliyun binary for ECS, OSS, RDS, and other Alibaba services.
- Aliyun CLI install and auth setup
- Profile and region configuration
- Cross-service command patterns
- Scriptable resource operations
- Agent-friendly cloud automation
Alicloud Platform Aliyun Cli by the numbers
- 278 all-time installs (skills.sh)
- Ranked #179 of 550 CLI & Terminal skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-platform-aliyun-cliAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 278 |
|---|---|
| repo stars | ★ 396 |
| Last updated | July 18, 2026 |
| Repository | cinience/alicloud-skills ↗ |
How do agents run Alibaba Cloud CLI commands?
Operate the official Alibaba Cloud (Aliyun) CLI from agents to authenticate, list resources, run service commands, and automate cross-product cloud tasks during implementation.
Who is it for?
Developers operating Alibaba Cloud workloads who want agents to run official aliyun CLI commands safely.
Skip if: AWS, GCP, or Azure-only stacks with no Alibaba Cloud resources to manage.
When should I use this skill?
An agent needs to authenticate to Alibaba Cloud and execute aliyun CLI resource or service commands during implementation.
What you get
Authenticated CLI sessions, resource listings, and executed Alibaba Cloud service commands.
- Executed CLI commands
- Resource listings
Files
Category: tool
Alibaba Cloud Generic CLI (aliyun) Skill
Validation
mkdir -p output/alicloud-platform-aliyun-cli
python skills/platform/cli/alicloud-platform-aliyun-cli/scripts/ensure_aliyun_cli.py --help > output/alicloud-platform-aliyun-cli/validate-help.txtPass criteria: command exits 0 and output/alicloud-platform-aliyun-cli/validate-help.txt is generated.
Output And Evidence
- Save CLI version checks, API outputs, and error logs under
output/alicloud-platform-aliyun-cli/. - For each mutating action, keep request parameters and result summaries.
Goals
- Use official
aliyunCLI to execute Alibaba Cloud OpenAPI operations. - Provide a standard flow for install, configuration, API discovery, execution, and troubleshooting.
Quick Flow
1. Run the version guard script first (check first, then decide whether to upgrade). 2. If not installed or check interval reached, the script downloads and installs the latest official package. 3. Configure credentials and default region (recommend default profile). 4. Use aliyun <product> --help / aliyun <product> <ApiName> --help to confirm parameters. 5. Run read-only queries first, then mutating operations.
Version Guard (Practical)
Prefer the bundled script to avoid unnecessary downloads on every run:
python skills/platform/cli/alicloud-platform-aliyun-cli/scripts/ensure_aliyun_cli.pyDefault behavior:
- Check interval: 24 hours (configurable via environment variable).
- Within interval and version is sufficient: skip download.
- Exceeded interval / not installed / below minimum version: auto-download and install latest official package.
Optional controls (environment variables):
ALIYUN_CLI_CHECK_INTERVAL_HOURS=24:check interval.ALIYUN_CLI_FORCE_UPDATE=1:force update (ignore interval).ALIYUN_CLI_MIN_VERSION=3.2.9:minimum acceptable version.ALIYUN_CLI_INSTALL_DIR=~/.local/bin:installation directory.
Manual parameter examples:
python skills/platform/cli/alicloud-platform-aliyun-cli/scripts/ensure_aliyun_cli.py \
--interval-hours 24 \
--min-version 3.2.9Install (Linux example)
curl -fsSL https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz -o /tmp/aliyun-cli.tgz
mkdir -p ~/.local/bin
tar -xzf /tmp/aliyun-cli.tgz -C /tmp
mv /tmp/aliyun ~/.local/bin/aliyun
chmod +x ~/.local/bin/aliyun
~/.local/bin/aliyun versionConfigure Credentials
aliyun configure set \
--profile default \
--mode AK \
--access-key-id <AK> \
--access-key-secret <SK> \
--region cn-hangzhouView configured profiles:
aliyun configure listCommand structure
- Generic form:
aliyun <product> <ApiName> --Param1 value1 --Param2 value2 - REST form:
aliyun <product> [GET|POST|PUT|DELETE] <PathPattern> --body '...json...'
API Discovery and Parameter Validation
aliyun help
aliyun ecs --help
aliyun ecs DescribeRegions --helpCommon Read-Only Examples
# ECS: list regions
aliyun ecs DescribeRegions
# ECS: list instances by region
aliyun ecs DescribeInstances --RegionId cn-hangzhou
# SLS: list projects by endpoint
aliyun sls ListProject --endpoint cn-hangzhou.log.aliyuncs.com --size 100Common Issues
InvalidAccessKeyId.NotFound/SignatureDoesNotMatch:check AK/SK and profile.MissingRegionId:add--regionor configure default region in profile.- for SLS endpoint errors, explicitly pass
--endpoint <region>.log.aliyuncs.com.
Execution Recommendations
- Run
ensure_aliyun_cli.pybefore starting tasks. - If resource scope is unclear, query first then mutate.
- Before delete/overwrite operations, output the target resource list first.
- For batch operations, validate one item in a small scope first.
References
- Official source list:
references/sources.md
Prerequisites
- Configure least-privilege Alibaba Cloud credentials before execution.
- Prefer environment variables:
ALICLOUD_ACCESS_KEY_ID,ALICLOUD_ACCESS_KEY_SECRET, optionalALICLOUD_REGION_ID. - If region is unclear, ask the user before running mutating operations.
Workflow
1) Confirm user intent, region, identifiers, and whether the operation is read-only or mutating. 2) Run one minimal read-only query first to verify connectivity and permissions. 3) Execute the target operation with explicit parameters and bounded scope. 4) Verify results and save output/evidence files.
interface:
display_name: "Alibaba Cloud Platform Aliyun Cli"
short_description: "Generic aliyun CLI operations"
default_prompt: "Use $alicloud-platform-aliyun-cli to complete this platform/cli task on Alibaba Cloud."
Sources
- Alibaba Cloud CLI documentation hub (official):
- https://help.aliyun.com/zh/cli
- Install Alibaba Cloud CLI on Linux (official):
- https://help.aliyun.com/zh/cli/install-cli-on-linux
- Configure credentials for Alibaba Cloud CLI (official):
- https://help.aliyun.com/zh/cli/configure-credentials
- Alibaba Cloud OpenAPI Explorer and metadata (official):
- https://api.aliyun.com
#!/usr/bin/env python3
import argparse
import json
import os
import re
import shutil
import stat
import subprocess
import tarfile
import tempfile
import time
import urllib.request
from pathlib import Path
DOWNLOAD_URL = "https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz"
def parse_bool(v: str | None, default: bool = False) -> bool:
if v is None:
return default
return v.strip().lower() in {"1", "true", "yes", "y", "on"}
def parse_version(text: str) -> tuple[int, ...]:
m = re.search(r"(\d+\.\d+\.\d+)", text)
if not m:
return tuple()
return tuple(int(x) for x in m.group(1).split("."))
def version_string(v: tuple[int, ...]) -> str:
if not v:
return "unknown"
return ".".join(str(x) for x in v)
def run_version(binary: Path) -> tuple[tuple[int, ...], str]:
try:
out = subprocess.check_output([str(binary), "version"], text=True, stderr=subprocess.STDOUT)
except Exception:
return tuple(), ""
return parse_version(out), out.strip()
def load_state(path: Path) -> dict:
if not path.exists():
return {}
try:
return json.loads(path.read_text(encoding="utf-8"))
except Exception:
return {}
def save_state(path: Path, state: dict) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(json.dumps(state, ensure_ascii=False, indent=2), encoding="utf-8")
def install_latest(target: Path) -> None:
target.parent.mkdir(parents=True, exist_ok=True)
with tempfile.TemporaryDirectory(prefix="aliyun-cli-update-") as td:
td_path = Path(td)
tgz_path = td_path / "aliyun-cli.tgz"
with urllib.request.urlopen(DOWNLOAD_URL, timeout=30) as resp: # nosec B310
tgz_path.write_bytes(resp.read())
with tarfile.open(tgz_path, "r:gz") as tf:
member = None
for m in tf.getmembers():
if Path(m.name).name == "aliyun":
member = m
break
if member is None:
raise RuntimeError("aliyun binary not found in archive")
tf.extract(member, path=td_path)
extracted = td_path / member.name
if not extracted.exists():
raise RuntimeError("extracted aliyun binary missing")
shutil.copy2(extracted, target)
mode = target.stat().st_mode
target.chmod(mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(description="Ensure aliyun CLI is installed and periodically updated")
p.add_argument("--interval-hours", type=float, default=None, help="check interval in hours (default from env or 24)")
p.add_argument("--min-version", default=None, help="minimum acceptable version, e.g. 3.2.9")
p.add_argument("--install-dir", default=None, help="install directory (default: ~/.local/bin)")
p.add_argument("--binary-path", default=None, help="explicit aliyun binary path")
p.add_argument("--state-file", default=None, help="state file path")
p.add_argument("--force", action="store_true", help="force update now")
return p
def main() -> int:
args = build_parser().parse_args()
interval_hours = args.interval_hours
if interval_hours is None:
interval_hours = float(os.getenv("ALIYUN_CLI_CHECK_INTERVAL_HOURS", "24"))
force = args.force or parse_bool(os.getenv("ALIYUN_CLI_FORCE_UPDATE"))
min_version_str = args.min_version or os.getenv("ALIYUN_CLI_MIN_VERSION", "").strip()
min_version = parse_version(min_version_str) if min_version_str else tuple()
install_dir = Path(args.install_dir or os.getenv("ALIYUN_CLI_INSTALL_DIR", str(Path.home() / ".local/bin"))).expanduser()
default_state = Path.home() / ".cache/alicloud-platform-aliyun-cli/state.json"
state_file = Path(args.state_file).expanduser() if args.state_file else default_state
if args.binary_path:
target = Path(args.binary_path).expanduser()
else:
in_path = shutil.which("aliyun")
if in_path and os.access(in_path, os.W_OK):
target = Path(in_path)
else:
target = install_dir / "aliyun"
state = load_state(state_file)
now = int(time.time())
last_check = int(state.get("last_check_epoch", 0) or 0)
due_by_interval = last_check <= 0 or (now - last_check) >= int(interval_hours * 3600)
exists = target.exists()
current_version, raw_version = run_version(target) if exists else (tuple(), "")
below_min = bool(min_version and (not current_version or current_version < min_version))
should_update = force or (not exists) or due_by_interval or below_min
print(f"[aliyun-cli] target={target}")
print(f"[aliyun-cli] current_version={version_string(current_version)}")
if min_version:
print(f"[aliyun-cli] min_version={version_string(min_version)}")
print(f"[aliyun-cli] last_check_epoch={last_check} interval_hours={interval_hours}")
updated = False
if should_update:
print("[aliyun-cli] updating from official latest package...")
install_latest(target)
updated = True
current_version, raw_version = run_version(target)
print(f"[aliyun-cli] updated_version={version_string(current_version)}")
else:
print("[aliyun-cli] skip update (within interval and version acceptable)")
state.update(
{
"last_check_epoch": now,
"binary_path": str(target),
"version": version_string(current_version),
"updated": updated,
"raw_version": raw_version,
}
)
save_state(state_file, state)
print(f"[aliyun-cli] state_file={state_file}")
if min_version and current_version and current_version < min_version:
print("[aliyun-cli] error: installed version is lower than required minimum")
return 2
if not current_version:
print("[aliyun-cli] error: unable to detect aliyun version after ensure")
return 3
return 0
if __name__ == "__main__":
raise SystemExit(main())
Related skills
FAQ
What CLI does alicloud-platform-aliyun-cli use?
alicloud-platform-aliyun-cli uses the official Alibaba Cloud CLI (aliyun) to authenticate, list resources, and run service commands. Agents follow skill-guided patterns instead of improvising raw API calls.
When should developers use alicloud-platform-aliyun-cli?
alicloud-platform-aliyun-cli fits Alibaba Cloud implementation and operations tasks—resource discovery, scripted administration, and cross-product automation. Use it when workloads run on Aliyun and the team standardizes on the official CLI.