install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/linode-cli" ~/.claude/skills/majiayu000-claude-skill-registry-linode-cli && rm -rf "$T"
manifest:
skills/data/linode-cli/SKILL.mdsource content
Linode CLI Skill
The official command-line interface for Linode/Akamai cloud infrastructure. Provides easy access to Linode API endpoints directly from the terminal for managing compute instances, Kubernetes clusters, volumes, networking, DNS, and more.
When to Use This Skill
This skill should be triggered when:
- Managing Linode compute instances (creating, listing, updating, deleting Linodes)
- Working with Linode Kubernetes Engine (LKE) clusters and node pools
- Configuring DNS domains and records through Linode's DNS Manager
- Managing Block Storage volumes and volume attachments
- Setting up NodeBalancers and networking infrastructure
- Automating Linode operations in scripts or CI/CD pipelines
- Learning Linode CLI commands and API interactions
- Debugging Linode CLI issues or authentication problems
- Formatting CLI output (JSON, tables, custom fields)
Key Concepts
CLI Architecture
- Auto-generated from OpenAPI: The CLI is automatically generated from Linode's OpenAPI specification, providing direct access to all API endpoints
- Python-based: Built with Python 3.10+, installed via pip
- Command structure:
linode-cli <resource> <action> [options] - Authentication: Uses API tokens stored in configuration or environment variables
Core Resources
- linodes: Compute instances (virtual machines)
- lke: Linode Kubernetes Engine clusters
- domains: DNS domain management
- volumes: Block Storage volumes
- nodebalancers: Load balancers
- regions: Available data center locations
- images: OS images and custom images
Output Formatting
- Default: Organized tables with key information
- --json: Raw JSON output for scripting
- --pretty: Formatted JSON with indentation
- --format: Custom field selection
- --all: Show all available fields
Quick Reference
Installation and Setup
# Install via pip pip3 install linode-cli # First-time configuration (interactive) linode-cli configure # Set API token via environment export LINODE_CLI_TOKEN=your_api_token_here
Getting Help
# View all available commands linode-cli --help # View help for specific resource linode-cli linodes --help # View help for specific action linode-cli linodes create --help # List all available regions linode-cli regions list # List all available images linode-cli images list
Listing Resources
# List all Linodes on your account linode-cli linodes list # List domains linode-cli domains list # List volumes linode-cli volumes list # List Kubernetes clusters linode-cli lke clusters-list # Format output with custom fields linode-cli linodes list --format "id,label,status,region" # Output as JSON linode-cli linodes list --json # Output all available fields linode-cli linodes list --all
Creating Compute Instances
# Create a basic Linode (uses defaults from config) linode-cli linodes create \ --type g6-standard-2 \ --region us-east \ --image linode/debian11 \ --label my-server \ --root_pass "SecurePassword123!" # Create with specific configuration linode-cli linodes create \ --type g6-standard-4 \ --region us-central \ --image linode/ubuntu22.04 \ --label production-web \ --root_pass "MySecurePass!" \ --group webservers # Create with authorized SSH keys linode-cli linodes create \ --type g6-standard-2 \ --region us-west \ --image linode/debian11 \ --label secure-server \ --root_pass "Password123!" \ --authorized_keys "ssh-rsa AAAAB3Nz..."
Managing Kubernetes (LKE)
# Create a Kubernetes cluster with multiple node pools linode-cli lke cluster-create \ --label my-k8s-cluster \ --region us-central \ --k8s_version 1.28 \ --node_pools.type g6-standard-4 --node_pools.count 3 \ --node_pools.type g6-standard-8 --node_pools.count 2 \ --tags production # List all clusters linode-cli lke clusters-list # Update cluster configuration linode-cli lke cluster-update $CLUSTER_ID \ --label renamed-cluster \ --tags production \ --tags monitoring \ --tags backup # Update node pool size linode-cli lke pool-update $CLUSTER_ID $POOL_ID \ --count 5 # Delete a cluster linode-cli lke cluster-delete $CLUSTER_ID
DNS Management
# Create a domain linode-cli domains create \ --type master \ --domain example.com \ --soa_email admin@example.com # List domains linode-cli domains list # Create DNS record linode-cli domains records-create $DOMAIN_ID \ --type A \ --name www \ --target 192.0.2.1 # Delete a domain linode-cli domains delete $DOMAIN_ID
Volume Management
# Create a Block Storage volume linode-cli volumes create \ --label my-volume \ --size 100 \ --region us-east # List volumes linode-cli volumes list # Attach volume to Linode linode-cli volumes attach $VOLUME_ID \ --linode_id $LINODE_ID # Detach volume linode-cli volumes detach $VOLUME_ID
Advanced Usage
# Filtering output with jq (requires jq installed) linode-cli linodes list --json | jq '.[] | select(.status=="running")' # Using variables in scripts LINODE_ID=$(linode-cli linodes list --json | jq -r '.[0].id') echo "First Linode ID: $LINODE_ID" # Bulk operations example for region in us-east us-west eu-central; do linode-cli linodes create \ --type g6-nanode-1 \ --region $region \ --image linode/alpine3.18 \ --label "test-$region" \ --root_pass "TempPassword123!" done
Reference Files
This skill includes comprehensive documentation in
references/:
- other.md - Links to official Linode CLI Wiki on GitHub with additional documentation, guides, and community resources
Use
view to read specific reference files when detailed information is needed.
Working with This Skill
For Beginners
- Start with installation: Run
and configure withpip3 install linode-clilinode-cli configure - Learn the basics: Use
flag extensively to discover available commands--help - Practice listing: Start with simple list commands like
linode-cli linodes list - Test in safe mode: Use small, inexpensive instance types (g6-nanode-1) for testing
- Read the output: Default table output is designed to be human-readable
For Intermediate Users
- Master output formatting: Learn
,--json
, and--format
flags for scripting--all - Automate common tasks: Create bash scripts for repetitive operations
- Combine with jq: Use jq for powerful JSON filtering and processing
- Manage multiple resources: Create infrastructure as code with shell scripts
- Use environment variables: Set
for non-interactive automationLINODE_CLI_TOKEN
For Advanced Users
- CI/CD integration: Incorporate linode-cli into deployment pipelines
- Infrastructure automation: Build complete infrastructure provisioning scripts
- API exploration: Use the CLI to understand Linode's API structure
- Custom tooling: Wrap linode-cli in your own management tools
- OpenAPI access: Contribute to the OpenAPI spec for new features
Navigation Tips
- Discover resources: Use
to see all available resource typeslinode-cli --help - Action discovery: Each resource has different actions (list, create, update, delete, etc.)
- Parameter help: Use
on any action to see required and optional parameters--help - JSON inspection: Use
to see all available fields for any resource--json - Region planning: Run
before creating resourceslinode-cli regions list
Common Patterns
Authentication Setup
# Method 1: Interactive configuration linode-cli configure # Method 2: Environment variable export LINODE_CLI_TOKEN=your_token_here # Method 3: Config file (~/.config/linode-cli) [DEFAULT] token = your_token_here region = us-east type = g6-standard-2 image = linode/ubuntu22.04
Instance Lifecycle
# Create → Boot (automatic) → Use → Power off → Delete linode-cli linodes create --label test --type g6-nanode-1 --region us-east --image linode/alpine3.18 --root_pass "Test123!" # Get ID from output or list LINODE_ID=$(linode-cli linodes list --json | jq -r '.[] | select(.label=="test") | .id') # Shutdown linode-cli linodes shutdown $LINODE_ID # Delete linode-cli linodes delete $LINODE_ID
Scripting Pattern
#!/bin/bash set -e # Exit on error # Configuration REGION="us-central" TYPE="g6-standard-2" IMAGE="linode/debian11" # Create instance echo "Creating Linode..." RESULT=$(linode-cli linodes create \ --type "$TYPE" \ --region "$REGION" \ --image "$IMAGE" \ --label "auto-server-$(date +%s)" \ --root_pass "$(openssl rand -base64 32)" \ --json) # Extract ID LINODE_ID=$(echo "$RESULT" | jq -r '.[0].id') echo "Created Linode ID: $LINODE_ID" # Wait for running status while true; do STATUS=$(linode-cli linodes view $LINODE_ID --json | jq -r '.[0].status') echo "Status: $STATUS" [[ "$STATUS" == "running" ]] && break sleep 5 done echo "Linode is ready!"
Resources
Official Documentation
- GitHub Repository: https://github.com/linode/linode-cli
- Akamai TechDocs: https://techdocs.akamai.com/cloud-computing/docs/cli
- API Documentation: https://www.linode.com/docs/api/
- Getting Started Guide: https://techdocs.akamai.com/cloud-computing/docs/getting-started-with-the-linode-cli
Key Features
- Auto-completion: Bash completion available for command discovery
- OpenAPI-driven: Always up-to-date with latest API features
- Cross-platform: Works on Linux, macOS, and Windows (via WSL)
- Scriptable: Perfect for automation and infrastructure as code
- Comprehensive: Access to all Linode API endpoints
Community
- Contributors: 49 active contributors
- License: BSD-3-Clause
- Language: Python (98.8%)
- Installation: PyPI package (pip installable)
Tips and Best Practices
Security
- Protect tokens: Never commit API tokens to version control
- Use environment variables: Store tokens in
files (git-ignored).env - Rotate regularly: Generate new tokens periodically
- Limit permissions: Use scoped tokens with minimal required permissions
- Strong passwords: Always use strong root passwords for instances
Cost Management
- Start small: Use nanode instances (g6-nanode-1) for testing
- Delete unused: Remove test instances to avoid unnecessary charges
- Monitor usage: Regularly check your account for active resources
- Use tags: Organize resources with tags for easier management
Debugging
- Verbose output: Add
flag for detailed error information--debug - JSON inspection: Use
to see full API responses--json --pretty - Check status: Use
commands to inspect resource detailsview - API reference: Consult the API docs for endpoint specifics
Troubleshooting
Authentication Issues
# Verify token is set echo $LINODE_CLI_TOKEN # Test authentication linode-cli account view # Reconfigure CLI linode-cli configure
Common Errors
- 401 Unauthorized: Invalid or expired API token
- 404 Not Found: Resource ID doesn't exist or wrong region
- 422 Unprocessable: Missing required parameters or validation error
- 429 Rate Limited: Too many requests, implement backoff
Getting Help
# Check CLI version linode-cli --version # View debug information linode-cli linodes list --debug # Check configuration cat ~/.config/linode-cli
Notes
- This skill was generated from official Linode CLI documentation
- The CLI is automatically generated from Linode's OpenAPI specification
- All commands and examples are based on the official Linode API v4
- Command syntax and available options may change with API updates
- Always refer to
for the most current command documentation--help
Updating
To stay current with Linode CLI:
# Update via pip pip3 install --upgrade linode-cli # Check for new features linode-cli --help # Review changelog pip3 show linode-cli
The CLI is regularly updated to reflect changes in the Linode API. Check the GitHub repository for release notes and breaking changes.