NGINX Ingress Policy CRD Guide
nginx/kubernetes-ingress
Step-by-step checklist for adding a new Policy CRD type to the NGINX Ingress Controller, from the Go types and validation to config generation and templates.
Drives ArvanCloud's REST APIs for CDN, DNS, cloud servers, object storage and more, with helper scripts for calls, account inventory and certificates.
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-api --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/arvancloud-api .claude/skills/arvancloud-api && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .claude/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-apiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-api --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/arvancloud-api .agents/skills/arvancloud-api && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .agents/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-api --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/arvancloud-api .cursor/skills/arvancloud-api && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .cursor/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/erfnzdeh/arvancloud-agent-skill.git --path skills/arvancloud-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-api --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/arvancloud-api .gemini/skills/arvancloud-api && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .gemini/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-apiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/arvancloud-api .github/skills/arvancloud-api && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .github/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install erfnzdeh/arvancloud-agent-skill arvancloud-api --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/erfnzdeh/arvancloud-agent-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/arvancloud-api .opencode/skills/arvancloud-api && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "arvancloud-api" agent skill from https://github.com/erfnzdeh/arvancloud-agent-skill/tree/main/skills/arvancloud-api into .opencode/skills/arvancloud-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "arvancloud-api", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
arvancloud-apiDrives ArvanCloud's REST APIs for CDN, DNS, cloud servers, object storage and more, with helper scripts for calls, account inventory and certificates.
This unofficial, community-maintained reference lets an agent list, create, change or delete resources on ArvanCloud through its REST APIs. It covers CDN and DNS records, domains, cache purge, WAF and rate limits, Cloud Server in its three API generations, Object Storage, Edge Computing, Cloud Container, VOD, Live and Video Ads, and Let's Encrypt DNS-01 certificates through acme.sh with the `dns_arvan` plugin. Each product has its own base URL and spec, and Object Storage uses a second auth scheme.
Credentials are a machine-user API key sent in an `Authorization: Apikey` header. It is read from the Claude Code plugin settings or from an environment variable whose name is stored in a config file outside the skill, and the agent asks you when none is set instead of guessing. The scripts `arvan-api.sh` and `arvan-inventory.sh` make calls and take an account inventory, and reference files cover DNS and TLS, IaaS, object storage and the product list.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d42f177. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
curljqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
napi.arvancloud.irdocs.arvancloud.irstorage.arvanapis.irdejban.arvancloud.irarvancloud.irs3.ir-thr-at1.arvanstorage.irs3.ir-tbz-sh1.arvanstorage.irhot.ir-central1.arvanstorage.irecc.ir-central1.arvanapis.irFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CLAUDE_PLUGIN_OPTION_API_KEYARVAN_KEYRAW_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ArvanCloud API Operator loads about 3.9k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 193 tokens; SKILL.md has 1,667 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from erfnzdeh/arvancloud-agent-skill at commit d42f177, republished under its MIT licence (© erfnzdeh). 1,667 words, ~3,865 tokens.
.claude/skills/arvancloud-api/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Tested reference for driving ArvanCloud's REST APIs from the command line or an agent. Each product has its own base URL and spec, Cloud Server has three API generations, and Object Storage has a second auth scheme. This skill gets those details right so you don't guess.
Unofficial, community-maintained skill. Not affiliated with or endorsed by ArvanCloud. Hosts, paths and response shapes were checked against the published OpenAPI specs and read-only live calls on 2026-09-13. The live specs and API remain the source of truth.
Keep three things separate: the secret (API key) lives in an environment variable, per-user state (default region, cert-deploy hooks, notes) lives in a config file outside the skill, and anything the API can tell you (domains, servers, regions) is fetched live.
Every product except the Object Storage S3 API authenticates with a machine-user API key:
Authorization: Apikey <uuid>In Claude Code with this plugin installed, use the key from the plugin's settings. When the user has saved a key there (/plugin configure arvancloud-api@arvancloud-agent-skill), it arrives as $CLAUDE_PLUGIN_OPTION_API_KEY. If that is set, use it (CONFIRMED_VAR_NAME=CLAUDE_PLUGIN_OPTION_API_KEY) and skip the steps below; the bundled scripts pick it up on their own. If it is empty, suggest saving the key in the plugin's settings, since it is then kept in the system credential store, or fall back to an environment variable.
Everywhere else (Cursor, skills.sh, a manual clone), the key is in an environment variable, and ARVAN_KEY is only the default name. Don't assume that's what it's called. Resolve the real env var every session:
If ~/.config/arvan/config.json exists, read apiKeyEnv from it and check that the named
var is set (printenv "$(jq -r .apiKeyEnv ~/.config/arvan/config.json)" >/dev/null).
Otherwise, or if that var is empty, try $ARVAN_KEY.
If that is also unset, stop and ask the user which variable holds the key (or have them export one). A missing key is a question, not a guess.
Once confirmed, write the name back so future sessions don't ask:
tmp=$(mktemp) && jq --arg v "$CONFIRMED_VAR_NAME" '.apiKeyEnv = $v' ~/.config/arvan/config.json > "$tmp" && mv "$tmp" ~/.config/arvan/config.jsonThe var may hold a bare UUID or a copied apikey ... / Apikey ... value. The bundled scripts
normalize it; for raw curl do the same:
RAW_KEY="${!CONFIRMED_VAR_NAME}"
TOKEN="${RAW_KEY#apikey }"; TOKEN="${TOKEN#Apikey }"
curl -s -H "Authorization: Apikey $TOKEN" "https://napi.arvancloud.ir/cdn/4.0/domains?per_page=100"One key sees one account. Users often hold keys for several accounts. Before any write, run
GET https://dejban.arvancloud.ir/v1/me and name the account (data.account.name) in the
confirmation. Treat a 401 as a bad or revoked key and ask the user to check it. A 403 is covered in the errors table below.
Creating a key: panel, Settings, IAM, Machine users, Create machine user. The key is shown
once. Assign IAM access rules per product. Docs:
https://docs.arvancloud.ir/fa/developer-tools/api/api-key and
https://docs.arvancloud.ir/en/accounts/iam/machine-user. Revoke leaked keys in the same panel page
(panel.arvancloud.ir; the old npanel.arvancloud.ir host redirects there).
~/.config/arvan/config.jsonOn first use, create it from the placeholder template:
mkdir -p ~/.config/arvan
[ -f ~/.config/arvan/config.json ] || cp "${CLAUDE_SKILL_DIR}/assets/config.example.json" ~/.config/arvan/config.jsonSchema (see assets/config.example.json):
apiKeyEnv: name of the env var holding the key (confirmed with the user, see above).acmeTokenEnv: env var acme.sh's dns_arvan reads (default Arvan_Token).defaultRegion: v3 region host to use when unspecified (ir-central1, ir-northwest1, eu-west1).defaultAz: AZ code for v1/v2 paths and v3 create bodies (e.g. ir-thr-fr1).timeoutSeconds, maxRetries, backoffFactor: used by scripts/arvan-api.sh. It retries only
429, and for GET also 5xx and transient network errors (never DNS or TLS failures).s3AccessKeyEnv, s3SecretKeyEnv, s3Region, s3Endpoint: Object Storage S3 settings. S3 uses
separate credentials, not the machine-user key.deployHooks: domain -> { sshHost, certDirs[], reloadCmd } for acme.sh --install-cert.notes: domain -> freeform note for per-domain quirks.The secret never goes in this file, only the names of env vars. Update the config with the user's OK when you learn a durable fact; don't edit the skill.
Domains, servers, records, regions and flavors drift. Query them. A stale list is worse than none.
scripts/arvan-api.sh is a thin wrapper that resolves and normalizes the key, passes it to curl
through a private temp file (never argv or output), retries safely, and prints HTTP <code> plus
a hint for known errors on stderr with the body on stdout.
S="${CLAUDE_SKILL_DIR}/scripts/arvan-api.sh"
"$S" auth:/v1/me | jq '.data.account' # which account is this key?
"$S" "/cdn/4.0/domains?per_page=100" # any napi.arvancloud.ir path
"$S" v3:ir-central1/servers # https://ecc.ir-central1.arvanapis.ir/v3/servers
"$S" storage:/v1/reports/storage # https://storage.arvanapis.ir/v1/...
"$S" --dry-run -X POST -d '{"purge":"all"}' /cdn/4.0/domains/example.ir/caching/purge
"$S" --allow-write -X POST -d '{"purge":"all"}' /cdn/4.0/domains/example.ir/caching/purge # only after an explicit yesExit codes: 0 success (2xx), 1 HTTP or network error (redirects are reported, never followed), 2 usage, 3 key env var unset,
4 write refused (any method other than GET/HEAD needs --allow-write). The key is only ever sent over
https to *.arvancloud.ir and *.arvanapis.ir; --dry-run -d @file prints the file's contents. The scripts use the plugin's saved key when there is one. Set ARVAN_KEY_ENV=OTHER_VAR to use a
different account's key for one call.
scripts/arvan-inventory.sh prints a read-only snapshot of one account: identity, servers in
every region, backups, CDN domains (all pages), Object Storage usage and buckets, Edge Computing
and VOD counts. Use it when the user asks "what do I have on ArvanCloud?".
| Product | Live base URL | OpenAPI spec (https://www.arvancloud.ir/api-docs/...) | Live check |
|---|---|---|---|
| CDN / DNS / Security 4.0 | https://napi.arvancloud.ir/cdn/4.0 | cdn-4.0.yml | 200 |
| Cloud Server v3 (preferred) | https://ecc.{region}.arvanapis.ir/v3 | iaas-3.0.0.yaml | 200 |
| Cloud Server v1 (legacy, widest) | https://napi.arvancloud.ir/ecc/v1 | iaas-1.0.json | 200 |
| Cloud Server v2 (backups, volume list) | https://napi.arvancloud.ir/ecc/v2 | none (official CLI source) | 200 |
| Account identity | https://dejban.arvancloud.ir/v1/me | none (official CLI source) | 200 |
| Object Storage management | https://storage.arvanapis.ir/v1 (plain http redirects) | storage-1.0.0.yaml | 200 |
| Object Storage S3 | https://s3.ir-thr-at1.arvanstorage.ir, https://s3.ir-tbz-sh1.arvanstorage.ir, https://hot.ir-central1.arvanstorage.ir | described in storage-1.0.0.yaml | not tested (S3 keys) |
| Edge Computing | https://napi.arvancloud.ir/edge-computing/v1 | ec-1.0.yaml | 200 |
| Cloud Container (CaaS) | https://napi.arvancloud.ir/caas/v2/zones/{ir-thr-ba1 or ir-tbz-sh1} | paas-1.25.json | 428 without a namespace |
| VOD 2.0 | https://napi.arvancloud.ir/vod/2.0 | vod-2.0.json | 200 |
| Live Streaming 2.0 | https://napi.arvancloud.ir/live/2.0 | live-2.0.json | 404 until a Live domain exists |
| Video Ads 2.0 | https://napi.arvancloud.ir/vads/2.0 | vads-2.0.json | 200 (/channels) |
| AIaaS | none | aiaas-1.0.yaml returns an HTML page, not a spec | none |
Fetch specs directly; the ReDoc pages at arvancloud.ir/api/{product}/{version} often time out:
mkdir -p ~/Downloads/arvancloud-api-specs
for spec in cdn-4.0.yml iaas-3.0.0.yaml iaas-1.0.json ec-1.0.yaml storage-1.0.0.yaml \
paas-1.25.json vod-2.0.json live-2.0.json vads-2.0.json; do
curl -sL "https://www.arvancloud.ir/api-docs/$spec" -o "$HOME/Downloads/arvancloud-api-specs/$spec"
doneSize for scoping (paths / operations): CDN 156/238, IaaS v3 39/45, IaaS v1 114/136, Edge 18/25, Object Storage 34/58, CaaS 134/299, VOD 30/54, Live 29/36, Video Ads 15/29.
Human guides live on docs.arvancloud.ir, which sits behind Arvan CDN cookies (a bare
curl -L loops on 307). Seed cookies first:
COOKIES="$(mktemp)"
curl -s -A "Mozilla/5.0" -c "$COOKIES" "https://docs.arvancloud.ir/fa/developer-tools/api/api-usage" -o /dev/null
curl -sL -A "Mozilla/5.0" -b "$COOKIES" --max-redirs 5 "https://docs.arvancloud.ir/fa/developer-tools/api/api-usage"| v3 region host | AZ codes (v1/v2 paths, v3 availabilityZone) |
|---|---|
ir-central1 | ir-thr-ba1 (Bamdad), ir-thr-fr1 (Foroogh), ir-thr-si1 (Simin), Tehran |
ir-northwest1 | ir-tbz-sh1 (Shahriar), Tabriz |
eu-west1 | eu-west1-a (Goethe), Germany |
ir-southwest1 | ir-southwest1-a (Qeysar), Ahwaz. v3 host fails TLS; use v1/v2 |
v3 hosts take the region; v1/v2 paths take the AZ code. Each v3 host only lists its own
region's resources. Re-check with GET /v3/availability-zones or GET /ecc/v1/regions.
| Products | Auth |
|---|---|
| CDN, IaaS v1/v2/v3, Object Storage management, Edge, CaaS, VOD, Live, Video Ads, dejban | Authorization: Apikey <uuid>. The prefix is case-insensitive (the v3 docs write apikey). The v3 and CDN specs also accept Bearer <jwt> panel tokens. |
| Object Storage S3 API | AWS-style signatures with a separate access key and secret key from the panel, not the machine-user key. |
Edge GET /templates | no auth needed (live) |
| Status | Body | Meaning |
|---|---|---|
| 401 | {"message":"Unauthenticated."} (CDN, VOD), empty (IaaS v1), {"code":3 or 4,"message":"invalid credentials"} (IaaS v2), {"message":"Unauthorized"} (Edge), Unauthorized text (Live) | key missing, wrong or revoked |
| 403 | {"message":"Account requires info completion"} | account profile/KYC incomplete. Blocks IaaS; CDN, Storage and Edge still work. Route is valid. |
| 403 | {"message":"Upgrade plan"} | feature needs a higher plan (e.g. Object Storage replications and access points) |
| 403 | anything else | check the machine user's IAM access rules for that product |
| 409 | {"message":"bucket deletion is already in progress"} | Object Storage bucket is being deleted |
| 404 | {"message":"Domain not found."} on Live | create the Live product domain first (/live/2.0/domain) |
| 404 | HTML error page or {"message":"Not Found"} | wrong path (e.g. v3 /security-groups, v1 /details) |
| 405 | {"required_plan":3, ...} | CDN feature gated by plan (e.g. DNS export needs Professional) |
| 420 | none | IaaS quota reached |
| 428 | {"message":"no namespace is found"} | Cloud Container has no namespace in that zone |
| curl 60 | certificate mismatch on ecc.*.arvanapis.ir | v3 host built from an AZ code or unknown region |
references/dns-and-tls.md.references/iaas.md.references/object-storage.md.references/products.md.arvancloud-mcp and to earlier versions of this skill -> references/mcp-cross-check.md.needed_balance, storage usage) is listed in references/iaas.md.Before destructive or billable operations, show the target account (from /v1/me), the HTTP
method, URL and body (arvan-api.sh --dry-run), and ask for confirmation unless the user already
approved that exact action in this turn. This covers DNS create/update/delete, domain add/delete,
cache purge, CDN/WAF/rate-limit changes, server create/delete/actions, volume/network/floating-IP
changes, backups, Object Storage writes/deletes, certificate install hooks, SSH commands and
recurring jobs. arvan-api.sh enforces this by refusing non-GET methods without --allow-write.
For read-only requests use GET freely, keep output scoped, and never print keys.
ecc.{region}.arvanapis.ir with a region (ir-central1). AZ codes as
hostnames fail TLS, arvancloudapis.ir does not resolve, and *.arvanapis.ir has wildcard DNS
so resolving proves nothing./servers on one host does not mean the account has no servers.GET /security-groups is in the spec but 404s; use /firewalls. v3 has no SSH key, snapshot,
backup or quota paths; use v1 or v2./regions/{az}/quota; there is no /ecc/v1/details, no GET .../subnets
list and no GET .../ptr.value shapes differ by type: a/aaaa are arrays, aname uses location, srv uses
target, and mx is a single object. Send lowercase type.POST /domains/{domain}/caching/purge with {"purge":"all"}, not DELETE .../purge.status: active yet not published by Arvan's nameservers. Compare ns_keys with
current_ns and run dig SOA <domain> @8.8.8.8 before DNS-01.10.10.34.34/.35/.36, not empty responses. An empty
SOA/NS means a delegation problem, not censorship.https://storage.arvanapis.ir/v1/...; usage is /v1/reports/storage
(there is no /v1/stats/...).403 Account requires info completion is an account state, not a wrong route or a bad key.$ARVAN_KEY. Use $CLAUDE_PLUGIN_OPTION_API_KEY when the plugin provides it, otherwise resolve apiKeyEnv first.© erfnzdeh, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts, references, assets) in skills/arvancloud-api of erfnzdeh/arvancloud-agent-skill.
Open the folder on GitHubat commit d42f177
ArvanCloud API Operator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ArvanCloud API Operator this skillerfnzdeh/arvancloud-agent-skill | 135 | — | ~3.9k | Automated safety check: Pass | MIT | |
| NGINX Ingress Policy CRD Guidenginx/kubernetes-ingress | 5.1k | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Aliyun Swas Managecinience/alicloud-skills | 397 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Setup Cpu Proxy Serverdrawthingsai/draw-things-community | 579 | — | ~3.8k | Automated safety check: Pass | GPL-3.0 | |
| Monstermq Broker Configvogler75/monster-mq | 142 | — | ~2.2k | Automated safety check: Pass | GPL-3.0 | |
| Frontmcp Deploymentagentfront/frontmcp | 146 | — | ~9.2k | Automated safety check: Notes | Apache-2.0 |
nginx/kubernetes-ingress
Step-by-step checklist for adding a new Policy CRD type to the NGINX Ingress Controller, from the Go types and validation to config generation and templates.
cinience/alicloud-skills
A skill your agent uses when managing Alibaba Cloud Simple Application Server (SWAS OpenAPI 2020-06-01) resources end-to-end, including querying instances, starting/stopping/rebooting, executing…
drawthingsai/draw-things-community
Set up and verify a new Draw Things CPU proxy and Envoy server using the scripts in Scripts/ServerManagement/CPUScript.
vogler75/monster-mq
Guide for configuring, deploying, and operating the MonsterMQ broker.
agentfront/frontmcp
A skill your agent uses when deploying, building for production, packaging, or shipping a FrontMCP server.
bbartling/open-fdd
A skill your agent uses when installing, authenticating, linking, or re-pinning the Open-FDD Railway hub (central/mqtt/web) via the Railway CLI on bensbench.
Categories
Drives ArvanCloud's REST APIs for CDN, DNS, cloud servers, object storage and more, with helper scripts for calls, account inventory and certificates. This unofficial, community-maintained reference lets an agent list, create, change or delete resources on ArvanCloud through its REST APIs.sh with the `dns_arvan` plugin.
ArvanCloud API Operator fits situations like: listing or changing DNS records and CDN settings on ArvanCloud; taking an inventory of an ArvanCloud account or checking quota and usage; issuing a Let's Encrypt certificate with DNS-01 validation through ArvanCloud DNS; debugging an ArvanCloud API error.
Run `npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a claude-code`. Or copy the skill folder (skills/arvancloud-api in erfnzdeh/arvancloud-agent-skill) into .claude/skills/arvancloud-api in your project. Claude Code loads it when a task matches its description.
Run `npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a codex`. Or copy the skill folder (skills/arvancloud-api in erfnzdeh/arvancloud-agent-skill) into .agents/skills/arvancloud-api in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add erfnzdeh/arvancloud-agent-skill --skill arvancloud-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/arvancloud-api, .gemini/skills/arvancloud-api, .github/skills/arvancloud-api and .opencode/skills/arvancloud-api in your project.
Going by SKILL.md and its folder, ArvanCloud API Operator needs a shell for the scripts in its folder, the command-line tools its instructions call (curl and jq) and credentials named CLAUDE_PLUGIN_OPTION_API_KEY, ARVAN_KEY and RAW_KEY. Our summary lists: An ArvanCloud machine-user API key in plugin settings or an environment variable; `jq` for reading the config file; acme.sh for Let's Encrypt certificates.
SKILL.md names 9 domains. In commands or code: napi.arvancloud.ir, docs.arvancloud.ir, storage.arvanapis.ir, dejban.arvancloud.ir, arvancloud.ir, s3.ir-thr-at1.arvanstorage.ir, s3.ir-tbz-sh1.arvanstorage.ir, hot.ir-central1.arvanstorage.ir and ecc.ir-central1.arvanapis.ir; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
ArvanCloud API Operator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with ArvanCloud API Operator: NGINX Ingress Policy CRD Guide (nginx/kubernetes-ingress, 5.1k stars), Aliyun Swas Manage (cinience/alicloud-skills, 397 stars), Setup Cpu Proxy Server (drawthingsai/draw-things-community, 579 stars) and Monstermq Broker Config (vogler75/monster-mq, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
erfnzdeh (a GitHub user) maintains it in erfnzdeh/arvancloud-agent-skill, which has 135 GitHub stars. The repository was last updated on September 28, 2026.
Source: erfnzdeh/arvancloud-agent-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.