Writing Skills
writing-skills
效率与协作技能,来自 obra/superpowers,查看原文获取完整用途和操作说明。
cloudflare-dns【部署与运维】Use the flarectl command-line tool to manage Cloudflare DNS records, including listing, adding, updating, and deleting DNS records, as well as querying zone information. This skill must be triggered whenever a user mentions "Cloudflare DNS," "CF DNS," "add DNS record," "delete DNS record," "update DNS," "view DNS records," "cloudflare-dns," "flarectl…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
In the current environment (Alpine Linux arm64), the preinstalled version can be used directly. If it is not available, install it from the release:
if ! which flarectl > /dev/null 2>&1; then
wget -q https://github.com/wsvn53/flarectl/releases/download/flarectl-v0.1.0-alpine-arm64/flarectl-linux-arm64 \
-O /usr/local/bin/flarectl && chmod +x /usr/local/bin/flarectl
fi
flarectl supports two authentication methods. Prefer the API Token method:
Method 1: API Token (recommended)
export CF_API_TOKEN=<your_token>
Method 2: Global API Key
export CF_API_KEY=<your_key>
export CF_API_EMAIL=<your_email>
Optional:
export CF_ACCOUNT_ID=<account_id> # Specify when using multiple accounts
Check whether the environment variables are set:
[ -n "$CF_API_TOKEN" ] && echo "Token: set" || echo "Token: NOT SET"
[ -n "$CF_API_KEY" ] && echo "API Key: set" || echo "API Key: NOT SET"
If they are not set, tell the user which variable names are required and provide setup links:
flarectl zone list
Example output:
ID NAME PLAN STATUS
abc123... example.com Free active
# List all records for a domain
flarectl dns list --zone example.com
# Filter by type
flarectl dns list --zone example.com --type A
# Filter by name
flarectl dns list --zone example.com --name sub.example.com
# Output in JSON format (useful for parsing IDs)
flarectl --json dns list --zone example.com
# A record
flarectl dns create --zone example.com --type A --name sub.example.com --content 1.2.3.4 --ttl 1
# CNAME record (enable orange-cloud proxy)
flarectl dns create --zone example.com --type CNAME --name www.example.com --content example.com --proxy
# MX record
flarectl dns create --zone example.com --type MX --name example.com --content mail.example.com --priority 10
# TXT record
flarectl dns create --zone example.com --type TXT --name _dmarc.example.com --content "v=DMARC1; p=none"
# AAAA record (IPv6)
flarectl dns create --zone example.com --type AAAA --name ipv6.example.com --content "2001:db8::1"
Parameter descriptions:
--ttl 1: Automatic TTL (recommended); other values are in seconds (for example, --ttl 300)--proxy: Enable the Cloudflare orange-cloud proxy (supported only for A/AAAA/CNAME records)Updating requires the record id. Use dns list to get it first:
# Get the record ID
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json
for r in json.load(sys.stdin):
print(r['id'], r['type'], r['name'], r['content'])
"
# Update the content
flarectl dns update --zone example.com --id <record_id> --content 5.6.7.8
# Update and enable proxy
flarectl dns update --zone example.com --id <record_id> --content 5.6.7.8 --proxy
# Update if it exists; create it if it does not exist
flarectl dns create-or-update --zone example.com --type A --name sub.example.com --content 1.2.3.4
# Look up the ID first
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json
for r in json.load(sys.stdin):
print(r['id'], r['name'], r['type'])
"
# Delete
flarectl dns delete --zone example.com --id <record_id>
flarectl --json dns list --zone example.com --name sub.example.com | python3 -c "
import sys,json,subprocess
for r in json.load(sys.stdin):
subprocess.run(['flarectl','dns','delete','--zone','example.com','--id',r['id']])
print('Deleted:', r['id'], r['type'], r['content'])
"
CF_API_TOKEN or CF_API_KEY+CF_API_EMAIL is setflarectl zone list to list available domains for the user to choose fromflarectl dns list --zone <zone> to show the latest record status--proxy supports only A, AAAA, and CNAME record types--priorityflarectl --json must be placed before the subcommand.