Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when managing Alibaba Cloud Simple Application Server (SWAS OpenAPI 2020-06-01) resources end-to-end, including querying instances, starting/stopping/rebooting, executing commands (cloud assistant), managing disks/snapshots/images, firewall rules/templates, key pairs, tags, monitoring, and lightweight database operations.
.claude/skills/ethanyoq-aliyun-swas-manage/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 100% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 112% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 124% | 0% |
Category: service
Use SWAS-OPEN OpenAPI to manage full SAS resources: instances, disks, snapshots, images, key pairs, firewall, Cloud Assistant, monitoring, tags, and lightweight databases.
ALIBABACLOUD_REGION_ID can be used as default region; if unset choose the most reasonable region, ask user if unclear.1) Python SDK (preferred) 2) OpenAPI Explorer 3) Other SDKs
Virtual environment is recommended (avoid PEP 668 system install restrictions).
bashpython3 -m venv .venv . .venv/bin/activate python -m pip install alibabacloud_swas_open20200601 alibabacloud_tea_openapi alibabacloud_credentials
pythonimport os from alibabacloud_swas_open20200601.client import Client as SwasClient from alibabacloud_swas_open20200601 import models as swas_models from alibabacloud_tea_openapi import models as open_api_models def create_client(region_id: str) -> SwasClient: config = open_api_models.Config( region_id=region_id, endpoint=f"swas.{region_id}.aliyuncs.com", ) ak = ( os.getenv("ALIBABACLOUD_ACCESS_KEY_ID") or os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") or os.getenv("ALICLOUD_ACCESS_KEY_ID") ) sk = ( os.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET") or os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET") or os.getenv("ALICLOUD_ACCESS_KEY_SECRET") ) if ak and sk: config.access_key_id = ak config.access_key_secret = sk return SwasClient(config) def list_regions(): client = create_client("cn-hangzhou") resp = client.list_regions(swas_models.ListRegionsRequest()) return [r.region_id for r in resp.body.regions] def list_instances(region_id: str): client = create_client(region_id) resp = client.list_instances(swas_models.ListInstancesRequest(region_id=region_id)) return resp.body.instances def main(): for region_id in list_regions(): for inst in list_instances(region_id): ip = getattr(inst, "public_ip_address", None) or getattr(inst, "inner_ip_address", None) spec = getattr(inst, "plan_name", None) or getattr(inst, "plan_id", None) print(inst.instance_id, ip or "-", spec or "-", region_id) if __name__ == "__main__": main()
scripts/list_instances_all_regions.pyscripts/summary_instances_by_plan.pyscripts/summary_instances_by_status.pyscripts/fix_ssh_access.pyscripts/get_ssh_port.pyaliyun CLI may not expose swas-open as product name; prefer Python SDK.If CLI is mandatory, generate request examples in OpenAPI Explorer first, then migrate to CLI.
1) Confirm resource type and region (instance/disk/snapshot/image/firewall/command/database/tag). 2) Identify API group and operation in references/api_overview.md. 3) Choose invocation method (Python SDK / OpenAPI Explorer / other SDK). 4) After mutations, verify state/results with query APIs.
ListInstances、StartInstance(s)、StopInstance(s)、RebootInstance(s) RunCommand or CreateCommand + InvokeCommand; use DescribeInvocations/DescribeInvocationResult ListFirewallRules/CreateFirewallRule(s)/ModifyFirewallRule/EnableFirewallRule/DisableFirewallRule CreateSnapshot、ResetDisk、CreateCustomImage etc. InstallCloudAssistant).DescribeInvocations or DescribeInvocationResult to fetch status and outputs.See references/command-assistant.md for details.
If you need to save results or responses, write to: output/compute-swas-open/
bashmkdir -p output/aliyun-swas-manage for f in skills/compute/swas/aliyun-swas-manage/scripts/*.py; do python3 -m py_compile "$f" done echo "py_compile_ok" > output/aliyun-swas-manage/validate.txt
Pass criteria: command exits 0 and output/aliyun-swas-manage/validate.txt is generated.
output/aliyun-swas-manage/.ALIBABACLOUD_ACCESS_KEY_ID, ALIBABACLOUD_ACCESS_KEY_SECRET, optional ALIBABACLOUD_REGION_ID.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.
references/api_overview.mdreferences/endpoints.mdreferences/command-assistant.mdreferences/sources.md| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | pass→pass | 7,717 | 6,102 | -21% | 1 | 1 | 0% | 1,361 | 2,962 | +118% | 0 | 0 | — |
case-01 | fail→fail | 15,388 | 6,894 | -55% | 1 | 1 | 0% | 3,298 | 2,027 | -39% | 0 | 0 | — |
case-02 | fail→fail | 10,721 | 22,669 | +111% | 1 | 1 | 0% | 1,954 | 6,060 | +210% | 0 | 0 | — |
case-03 | pass→pass | 7,757 | 4,941 | -36% | 1 | 1 | 0% | 1,630 | 2,622 | +61% | 0 | 0 | — |
case-04 | fail→pass | 5,901 | 3,041 | -48% | 1 | 1 | 0% | 1,121 | 2,239 | +100% | 0 | 0 | — |
case-05 | fail→pass | 11,843 | 4,817 | -59% | 1 | 1 | 0% | 2,092 | 2,608 | +25% | 0 | 0 | — |
case-06 | pass→pass | 7,264 | 2,509 | -65% | 1 | 1 | 0% | 1,407 | 2,170 | +54% | 0 | 0 | — |
case-07 | pass→pass | 9,576 | 6,446 | -33% | 1 | 1 | 0% | 2,037 | 3,102 | +52% | 0 | 0 | — |
case-09 | pass→pass | 3,648 | 5,486 | +50% | 1 | 1 | 0% | 651 | 2,904 | +346% | 0 | 0 | — |
case-10 | fail→pass | 8,076 | 3,730 | -54% | 1 | 1 | 0% | 1,496 | 2,291 | +53% | 0 | 0 | — |
case-11 | pass→pass | 7,948 | 5,120 | -36% | 1 | 1 | 0% | 1,242 | 2,600 | +109% | 0 | 0 | — |
case-12 | pass→pass | 11,897 | 3,310 | -72% | 1 | 1 | 0% | 1,970 | 2,345 | +19% | 0 | 0 | — |
case-13 | pass→pass | 5,765 | 8,100 | +41% | 1 | 1 | 0% | 1,013 | 3,289 | +225% | 0 | 0 | — |
case-14 | pass→pass | 4,791 | 4,316 | -10% | 1 | 1 | 0% | 772 | 2,570 | +233% | 0 | 0 | — |
case-15 | fail→pass | 6,791 | 4,518 | -33% | 1 | 1 | 0% | 1,248 | 2,649 | +112% | 0 | 0 | — |
case-16 | pass→pass | 4,653 | 4,160 | -11% | 1 | 1 | 0% | 850 | 2,562 | +201% | 0 | 0 | — |
case-17 | pass→pass | 8,263 | 9,422 | +14% | 1 | 1 | 0% | 1,542 | 3,451 | +124% | 0 | 0 | — |
case-18 | pass→pass | 3,723 | 4,919 | +32% | 1 | 1 | 0% | 680 | 2,706 | +298% | 0 | 0 | — |
case-19 | fail→pass | 8,256 | 6,442 | -22% | 1 | 1 | 0% | 1,339 | 3,003 | +124% | 0 | 0 | — |
case-20 | fail→pass | 24,486 | 7,355 | -70% | 1 | 1 | 0% | 1,013 | 3,325 | +228% | 0 | 0 | — |
case-21 | pass→pass | 10,744 | 9,109 | -15% | 1 | 1 | 0% | 2,365 | 3,691 | +56% | 0 | 0 | — |
case-22 | pass→pass | 6,270 | 5,691 | -9% | 1 | 1 | 0% | 1,240 | 2,851 | +130% | 0 | 0 | — |
case-23 | pass→pass | 11,895 | 9,440 | -21% | 1 | 1 | 0% | 2,424 | 3,623 | +49% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 21 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +26 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.