OmniRoute Backup and Sync CLI
diegosouzapw/OmniRoute
Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.
Comprehensive Gandi domain registrar integration for domain and DNS management.
$ npx skills add LeoYeAI/openclaw-master-skills --skill gandi -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills gandi --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/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/gandi-skill .claude/skills/gandi && 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 "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .claude/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skillType 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 LeoYeAI/openclaw-master-skills --skill gandi -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills gandi --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/gandi-skill .agents/skills/gandi && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .agents/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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 LeoYeAI/openclaw-master-skills --skill gandi -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills gandi --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/gandi-skill .cursor/skills/gandi && 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 "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .cursor/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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/LeoYeAI/openclaw-master-skills.git --path skills/gandi-skill--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 LeoYeAI/openclaw-master-skills --skill gandi -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills gandi --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/gandi-skill .gemini/skills/gandi && 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 "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .gemini/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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 LeoYeAI/openclaw-master-skills gandiInstalls 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 LeoYeAI/openclaw-master-skills --skill gandi -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/gandi-skill .github/skills/gandi && 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 "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .github/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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 LeoYeAI/openclaw-master-skills --skill gandi -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills gandi --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/gandi-skill .opencode/skills/gandi && 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 "gandi" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/gandi-skill into .opencode/skills/gandi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gandi", 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.
gandiComprehensive Gandi domain registrar integration for domain and DNS management.
Gandi is an agent skill from LeoYeAI/openclaw-master-skills. Comprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.
Its SKILL.md is about 6.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 50 other files, including scripts and reference files (for example `CHANGELOG.md`, `SCRIPTS.md` and `_meta.json`).
It sits in DevOps & Cloud, covering Backup and disaster recovery. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. 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 7 files in scripts/ (JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
nodenpmFrom 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:
api.gandi.netadmin.sandbox.gandi.netapi.sandbox.gandi.netAlso links to:
github.comadmin.gandi.netnodejs.orghelp.gandi.netFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GANDI_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Gandi loads about 6.7k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 128 tokens; SKILL.md has 1,737 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 LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,737 words, ~6,737 tokens.
.claude/skills/gandi/SKILL.md (or your agent's skills folder). This skill also uses 47 other files; get the full folder from GitHub.Comprehensive Gandi domain registrar integration for Moltbot.
Status: ✅ Phase 2 Complete - DNS modification & snapshots functional
This skill can perform DESTRUCTIVE operations on your Gandi account:
Before running ANY script:
create-snapshot.js)Destructive scripts (⚠️ modify or delete data):
add-dns-record.js, delete-dns-record.js, update-dns-bulk.jsadd-email-forward.js, update-email-forward.js, delete-email-forward.jsrestore-snapshot.js (replaces current DNS)Read-only scripts (✅ safe, no modifications):
list-domains.js, list-dns.js, list-snapshots.jslist-email-forwards.js, check-domain.js, check-ssl.js📖 For complete script documentation: See SCRIPTS.md for detailed information about:
⚠️ Security Recommendation: Use the minimum required scopes for your use case.
Click "Create a token"
Select your organization
Choose scopes:
Read-Only (Recommended for viewing only):
Write Access (Required for modifications - use with caution):
Copy the token (you won't see it again!)
Security Best Practices:
Scripts check for credentials in priority order:
GANDI_API_TOKEN environment variable (checked first)~/.config/gandi/api_token file (fallback if env var not set)Choose the method that fits your workflow:
# Set environment variable (replace YOUR_PAT with actual token)
export GANDI_API_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN"
# Add to shell profile for persistence (~/.bashrc, ~/.zshrc, etc.)
echo 'export GANDI_API_TOKEN="YOUR_PERSONAL_ACCESS_TOKEN"' >> ~/.bashrcBenefits:
# Create config directory
mkdir -p ~/.config/gandi
# Store your token (replace YOUR_PAT with actual token)
echo "YOUR_PERSONAL_ACCESS_TOKEN" > ~/.config/gandi/api_token
# Secure the file (owner read-only)
chmod 600 ~/.config/gandi/api_tokenBenefits:
Required: Node.js >= 18.0.0
cd gandi-skill/scripts
# Install npm dependencies
npm install
# Verify installation
npm list --depth=0Expected packages:
Troubleshooting:
node or npm not found: Install Node.js from nodejs.orgsudo - fix npm permissions or use nvmnode_modules/ and package-lock.json, then npm install againcd gandi-skill/scripts
node test-auth.jsExpected output:
✅ Authentication successful!
Your organizations:
1. Personal Account (uuid-here)
Type: individual
🎉 You're ready to use the Gandi skill!If you plan to register domains, save your contact information once for reuse:
cd gandi-skill/scripts
node setup-contact.jsThe script will prompt for:
Contact information is saved to:
~/.config/gandi/contact.jsonPrivacy Options:
RETAIN (default): Keep contact saved for future registrations
delete-contact.jsPURGE: Auto-delete contact after each registration
Managing saved contact:
# View current contact
node view-contact.js
# Update contact info or privacy preference
node setup-contact.js
# Delete saved contact manually
node delete-contact.js
# Delete without confirmation
node delete-contact.js --forceOne-time purge override:
# Register and delete contact (even if preference is "retain")
node register-domain.js example.com --purge-contactnode list-domains.jsOutput shows:
node list-dns.js example.comOutput shows:
Once configured, you can use natural language:
"List my Gandi domains"
"Show DNS records for example.com"
"When does example.com expire?"
"Is auto-renewal enabled for example.com?"
Check if a specific domain is available for registration:
node check-domain.js example.comFeatures:
Example Output:
🔍 Checking availability for: example.com
Domain: example.com
✅ Status: AVAILABLE
💰 Pricing:
1 year: 12.00 EUR (+ 2.40 tax)
2 years: 24.00 EUR (+ 4.80 tax)
📋 Supported Features:
• create
• dnssec
• livedns
🌐 TLD Information:
Extension: comFind available alternatives with TLD variations and name modifications:
# Check all configured TLDs + variations
node suggest-domains.js example
# Check specific TLDs only
node suggest-domains.js example --tlds com,net,io
# Skip name variations (only check TLDs)
node suggest-domains.js example --no-variations
# Output as JSON
node suggest-domains.js example --jsonName Variation Patterns:
example → ex-ample)example → exmpl)example → get-example, my-example)example → example-app, example-hub)example → example2, example3)Example Output:
🔍 Checking availability for: example
📊 Checking 13 TLDs and generating variations...
═══════════════════════════════════════════════════════
📋 EXACT MATCHES (Different TLDs)
═══════════════════════════════════════════════════════
✅ Available:
example.net 12.00 EUR
example.io 39.00 EUR
example.dev 15.00 EUR
❌ Unavailable:
example.com (unavailable)
example.org (unavailable)
═══════════════════════════════════════════════════════
🎨 NAME VARIATIONS
═══════════════════════════════════════════════════════
Hyphenated:
✅ ex-ample.com 12.00 EUR
Prefix:
✅ get-example.com 12.00 EUR
✅ my-example.com 12.00 EUR
Suffix:
✅ example-app.com 12.00 EUR
✅ example-io.com 12.00 EUR
═══════════════════════════════════════════════════════
📊 SUMMARY: 8 available domains found
═══════════════════════════════════════════════════════Domain checker configuration is stored in gandi-skill/config/domain-checker-defaults.json.
Structure:
{
"tlds": {
"mode": "extend",
"defaults": ["com", "net", "org", "info", "io", "dev", "app", "ai", "tech"],
"custom": []
},
"variations": {
"enabled": true,
"patterns": ["hyphenated", "abbreviated", "prefix", "suffix", "numbers"],
"prefixes": ["get", "my", "the", "try"],
"suffixes": ["app", "hub", "io", "ly", "ai", "hq"],
"maxNumbers": 3
},
"rateLimit": {
"maxConcurrent": 3,
"delayMs": 200,
"maxRequestsPerMinute": 100
},
"limits": {
"maxTlds": 5,
"maxVariations": 10
}
}Rate Limiting & Limits:
These limits ensure good API citizenship and prevent overwhelming Gandi's API.
TLD Modes:
"extend": Use defaults + custom TLDs (merged list)"replace": Use only custom TLDs (ignore defaults)Gateway Console Integration:
When Gateway Console support is added (#3), configuration will be available at:
skills:
entries:
gandi:
config:
domainChecker:
tlds:
mode: extend
defaults: [...]
custom: [...]
variations:
enabled: true
patterns: [...]See docs/gateway-config-design.md for complete configuration architecture.
Create or update individual DNS records:
# Add an A record for root domain
node add-dns-record.js example.com @ A 192.168.1.1
# Add www subdomain pointing to root
node add-dns-record.js example.com www CNAME @
# Add MX record for email
node add-dns-record.js example.com @ MX "10 mail.example.com."
# Add TXT record for SPF
node add-dns-record.js example.com @ TXT "v=spf1 include:_spf.google.com ~all"
# Add with custom TTL (5 minutes)
node add-dns-record.js example.com api A 192.168.1.10 300Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR
Remove specific DNS records:
# Delete old A record
node delete-dns-record.js example.com old A
# Delete with confirmation prompt
node delete-dns-record.js example.com test CNAME
# Delete without confirmation
node delete-dns-record.js example.com old A --forceReplace all DNS records at once:
# From JSON file
node update-dns-bulk.js example.com new-records.json
# From stdin
cat records.json | node update-dns-bulk.js example.com
# Skip automatic snapshot
node update-dns-bulk.js example.com records.json --no-snapshot
# Skip confirmation
node update-dns-bulk.js example.com records.json --forceJSON format:
[
{
"rrset_name": "@",
"rrset_type": "A",
"rrset_ttl": 10800,
"rrset_values": ["192.168.1.1"]
},
{
"rrset_name": "www",
"rrset_type": "CNAME",
"rrset_ttl": 10800,
"rrset_values": ["@"]
},
{
"rrset_name": "@",
"rrset_type": "MX",
"rrset_ttl": 10800,
"rrset_values": ["10 mail.example.com.", "20 mail2.example.com."]
}
]Create safety backups before making changes:
# Create a snapshot
node create-snapshot.js example.com "Before migration"
# List all snapshots
node list-snapshots.js example.com
# Restore from a snapshot
node restore-snapshot.js example.com abc123-def456-ghi789
# Restore without confirmation
node restore-snapshot.js example.com abc123-def456-ghi789 --forceAutomatic snapshots:
--no-snapshot)# Root domain
node add-dns-record.js example.com @ A 192.168.1.1
# WWW subdomain
node add-dns-record.js example.com www CNAME @# MX records
node add-dns-record.js example.com @ MX "1 ASPMX.L.GOOGLE.COM."
node add-dns-record.js example.com @ MX "5 ALT1.ASPMX.L.GOOGLE.COM."
node add-dns-record.js example.com @ MX "5 ALT2.ASPMX.L.GOOGLE.COM."
# SPF record
node add-dns-record.js example.com @ TXT "v=spf1 include:_spf.google.com ~all"To redirect one domain to another:
# Point root domain to same server
node add-dns-record.js old-domain.com @ A 192.168.1.1
# Point www to same CNAME
node add-dns-record.js old-domain.com www CNAME @Then configure HTTP 301 redirect at the server level.
# API subdomain
node add-dns-record.js example.com api A 192.168.1.10
# Staging subdomain
node add-dns-record.js example.com staging A 192.168.1.20
# Wildcard subdomain
node add-dns-record.js example.com "*" A 192.168.1.100See all email forwards configured for a domain:
node list-email-forwards.js example.comForward emails to one or more destinations:
# Simple forward
node add-email-forward.js example.com hello you@personal.com
# Forward to multiple destinations
node add-email-forward.js example.com support team1@example.com team2@example.com
# Catch-all forward (forwards all unmatched emails)
node add-email-forward.js example.com @ catchall@example.comChange the destination(s) for an existing forward:
# Update single destination
node update-email-forward.js example.com hello newemail@personal.com
# Update to multiple destinations
node update-email-forward.js example.com support new1@example.com new2@example.comNote: This replaces all existing destinations with the new ones.
Remove email forwards:
# Delete with confirmation prompt
node delete-email-forward.js example.com old
# Delete without confirmation
node delete-email-forward.js example.com old --force
# Delete catch-all forward
node delete-email-forward.js example.com @ --force# Forward contact@ to your personal email
node add-email-forward.js example.com contact you@gmail.com
# Forward sales@ to team
node add-email-forward.js example.com sales team@example.com# Forward all email from old domain to new domain
# Preserves the local part (username before @)
# First, list existing forwards on old domain
node list-email-forwards.js old-domain.com
# Then create matching forwards on new domain
node add-email-forward.js old-domain.com contact contact@new-domain.com
node add-email-forward.js old-domain.com support support@new-domain.com
# Or use catch-all to forward everything
node add-email-forward.js old-domain.com @ admin@new-domain.com# Forward to entire team
node add-email-forward.js example.com team alice@example.com bob@example.com charlie@example.com
# Update team members
node update-email-forward.js example.com team alice@example.com dave@example.com# Forward all unmatched emails to one address
node add-email-forward.js example.com @ catchall@example.com
# Forward all unmatched emails to multiple addresses
node add-email-forward.js example.com @ admin1@example.com admin2@example.comNote: Catch-all forwards only apply to email addresses that don't have specific forwards configured.
# 1. Set up MX records (if not already done)
node add-dns-record.js example.com @ MX "10 spool.mail.gandi.net."
node add-dns-record.js example.com @ MX "50 fb.mail.gandi.net."
# 2. Create specific forwards
node add-email-forward.js example.com hello you@personal.com
node add-email-forward.js example.com support team@example.com
node add-email-forward.js example.com sales sales-team@example.com
# 3. Set up catch-all for everything else
node add-email-forward.js example.com @ admin@example.com
# 4. List all forwards to verify
node list-email-forwards.js example.comAll scripts are in gandi-skill/scripts/:
| Script | Purpose |
|---|---|
test-auth.js | Verify authentication works |
setup-contact.js | Save contact info for domain registration (run once) |
view-contact.js | View saved contact information |
delete-contact.js | Delete saved contact (with optional --force) |
| Script | Purpose |
|---|---|
list-domains.js | Show all domains in account |
list-dns.js <domain> | Show DNS records for domain |
check-domain.js <domain> | Check single domain availability + pricing |
suggest-domains.js <name> | Smart domain suggestions with variations |
check-ssl.js | Check SSL certificate status for all domains |
| Script | Purpose |
|---|---|
add-dns-record.js <domain> <name> <type> <value> [ttl] | Add or update a DNS record |
delete-dns-record.js <domain> <name> <type> [--force] | Delete a DNS record |
update-dns-bulk.js <domain> <records.json> [--no-snapshot] [--force] | Bulk update all DNS records |
list-snapshots.js <domain> | List DNS zone snapshots |
create-snapshot.js <domain> [name] | Create a DNS zone snapshot |
restore-snapshot.js <domain> <snapshot-id> [--force] | Restore DNS zone from snapshot |
| Script | Purpose |
|---|---|
list-email-forwards.js <domain> | List all email forwards for a domain |
add-email-forward.js <domain> <mailbox> <destination> [dest2...] | Create email forward (use @ for catch-all) |
update-email-forward.js <domain> <mailbox> <destination> [dest2...] | Update email forward destinations |
delete-email-forward.js <domain> <mailbox> [--force] | Delete email forward |
| Script | Purpose |
|---|---|
gandi-api.js | Core API client (importable) |
~/.config/gandi/api_token (API authentication)~/.config/gandi/contact.json (domain registration info, optional)https://api.gandi.net (production)To use Gandi's sandbox environment:
# Create sandbox token at: https://admin.sandbox.gandi.net
echo "YOUR_SANDBOX_TOKEN" > ~/.config/gandi/api_token
echo "https://api.sandbox.gandi.net" > ~/.config/gandi/api_url# Verify file exists
ls -la ~/.config/gandi/api_token
# Should show: -rw------- (600 permissions)If you get "not using Gandi LiveDNS" error:
Gandi allows 1000 requests/minute. If exceeded:
The skill provides importable functions:
import {
testAuth,
listDomains,
getDomain,
listDnsRecords,
getDnsRecord,
checkAvailability
} from './gandi-api.js';
// Test authentication
const auth = await testAuth();
// List domains
const domains = await listDomains();
// Get domain info
const domain = await getDomain('example.com');
// List DNS records
const records = await listDnsRecords('example.com');
// Get specific DNS record
const record = await getDnsRecord('example.com', '@', 'A');
// Check availability
const available = await checkAvailability(['example.com', 'example.net']);✅ DO:
~/.config/gandi/api_token❌ DON'T:
Phase 1 (current):
Phase 2+ (future):
gandi-skill/
├── SKILL.md # This file
├── references/ # API documentation
│ ├── api-overview.md
│ ├── authentication.md
│ ├── domains.md
│ ├── livedns.md
│ └── setup.md
└── scripts/ # Helper utilities
├── package.json
├── gandi-api.js # Core API client
├── test-auth.js # Test authentication
├── list-domains.js # List domains
└── list-dns.js # List DNS recordsPhase 1: Read Operations (✅ Current)
Phase 2: DNS Modifications
Phase 3: Domain Management
Phase 4: Multi-Organization (#1)
Phase 5: Advanced Features
See Contributing Guide in the main README.
MIT License - See LICENSE
© LeoYeAI, 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 47 other files (scripts, references) in skills/gandi-skill of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Gandi 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 |
|---|---|---|---|---|---|---|
| Gandi this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~6.7k | Automated safety check: Pass | MIT | |
| OmniRoute Backup and Sync CLIdiegosouzapw/OmniRoute | 74k | — | ~948 | Automated safety check: Pass | MIT | |
| Pymobiledevice3 Device Operatordoronz88/pymobiledevice3 | 2.9k | — | ~1.8k | Automated safety check: Notes | GPL-3.0 | |
| Myclaw BackupLeoYeAI/openclaw-backup | 659 | — | ~1.8k | Automated safety check: Pass | MIT | |
| OmniRoute Database Backupsdiegosouzapw/OmniRoute | 74k | — | ~395 | Automated safety check: Pass | MIT | |
| Tempsgotempsh/temps | 828 | — | ~2k | Automated safety check: Pass | Apache-2.0 |
diegosouzapw/OmniRoute
Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.
doronz88/pymobiledevice3
Operate iOS and iPadOS devices with pymobiledevice3, from a local checkout or straight from PyPI via uvx on a fresh workstation.
LeoYeAI/openclaw-backup
Backup and restore all OpenClaw configuration, agent memory, skills, and workspace data.
diegosouzapw/OmniRoute
Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies.
gotempsh/temps
Manage, deploy, operate, and instrument applications with Temps.
OnlyTerp/hermes-optimization-guide
Set up encrypted off-machine Hermes backups. An agent skill from OnlyTerp/hermes-optimization-guide.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Categories
Comprehensive Gandi domain registrar integration for domain and DNS management. Gandi is an agent skill from LeoYeAI/openclaw-master-skills. Comprehensive Gandi domain registrar integration for domain and DNS management.
Gandi fits situations like: tasks that involve Backup and disaster recovery.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill gandi -a claude-code`. Or copy the skill folder (skills/gandi-skill in LeoYeAI/openclaw-master-skills) into .claude/skills/gandi in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill gandi -a codex`. Or copy the skill folder (skills/gandi-skill in LeoYeAI/openclaw-master-skills) into .agents/skills/gandi 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 LeoYeAI/openclaw-master-skills --skill gandi -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gandi, .gemini/skills/gandi, .github/skills/gandi and .opencode/skills/gandi in your project.
Going by SKILL.md and its folder, Gandi needs JavaScript for the scripts in its folder, the command-line tools its instructions call (node and npm) and credentials named GANDI_API_TOKEN. Our summary lists: Node.js; A credential in GANDI_API_TOKEN; A credential in YOUR_PERSONAL_ACCESS_TOKEN.
SKILL.md names 7 domains. In commands or code: api.gandi.net, admin.sandbox.gandi.net and api.sandbox.gandi.net; the agent is likely to contact these when it follows the instructions. As links in the text: github.com, admin.gandi.net, nodejs.org and help.gandi.net. 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.
Gandi is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.7k tokens (SKILL.md is roughly 27k 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 8.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Gandi: OmniRoute Backup and Sync CLI (diegosouzapw/OmniRoute, 74k stars), Pymobiledevice3 Device Operator (doronz88/pymobiledevice3, 2.9k stars), Myclaw Backup (LeoYeAI/openclaw-backup, 659 stars) and OmniRoute Database Backups (diegosouzapw/OmniRoute, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,160 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.