skills/pressable/SKILL.md
Manage Pressable WordPress hosting via API. Use when creating/cloning sites, managing backups, purging cache, updating PHP versions, managing plugins, checking site status, or any Pressable hosting operations.
npx skillsauth add shaunandrews/agent-skills pressableInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Manage WordPress sites on Pressable managed hosting.
This skill covers:
📚 Pressable API Setup Guide
Create a credentials file (keep outside of git repos):
mkdir -p ~/.credentials
chmod 700 ~/.credentials
// ~/.credentials/pressable.json
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}
chmod 600 ~/.credentials/pressable.json
Agent configuration: Reference as {baseDir}/../../.credentials/pressable.json (relative to workspace).
SSH keys allow passwordless access to all your Pressable sites.
# Generate a dedicated key
ssh-keygen -t ed25519 -f ~/.credentials/pressable-ssh/id_ed25519 -C "pressable-agent"
# Secure permissions
chmod 700 ~/.credentials/pressable-ssh
chmod 600 ~/.credentials/pressable-ssh/id_ed25519
Add the public key to Pressable:
~/.credentials/pressable-ssh/id_ed25519.pubSupported key types:
ssh-ed25519 (256 bit) — recommendedecdsa-sha2-nistp256 (256 bit)ssh-rsa (2048–16384 bit)📚 Pressable SSH Key Setup
# Load credentials
CREDS=$(cat ~/.credentials/pressable.json)
CLIENT_ID=$(echo $CREDS | jq -r '.client_id')
CLIENT_SECRET=$(echo $CREDS | jq -r '.client_secret')
# Get access token (valid 1 hour)
TOKEN=$(curl -s --location 'https://my.pressable.com/auth/token' \
--form "grant_type=\"client_credentials\"" \
--form "client_id=\"$CLIENT_ID\"" \
--form "client_secret=\"$CLIENT_SECRET\"" | jq -r '.access_token')
# Use in requests
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites"
Note: Tokens expire after 1 hour. Refresh before expiry for long-running operations.
# List all sites
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites" | jq '.data'
# Get site details
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}"
# Create site
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites" \
-d '{"name":"my-new-site","datacenter_code":"DFW"}'
# Clone site
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/clone" \
-d '{"name":"cloned-site"}'
# Delete site
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}"
# Update PHP version (8.2, 8.3, 8.4, 8.5)
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}" \
-d '{"php_version":"8.3"}'
| Code | Location | |------|----------| | AMS | Amsterdam | | BUR | Burbank | | DCA | Washington DC | | DFW | Dallas |
# Get cache status
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}/edge-cache"
# Toggle cache on/off
curl -s -X PUT -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}/edge-cache"
# Purge cache
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}/edge-cache"
# Enable defensive mode (DDoS protection)
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/edge-cache/defensive-mode" \
-d '{"duration":"1-hour"}'
# List backups
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}/ondemand-backups"
# Create backup (type: "fs" for filesystem, "db" for database)
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/ondemand-backups" \
-d '{"backup_type":"db"}'
# Download backup
curl -s -H "Authorization: Bearer $TOKEN" \
"https://my.pressable.com/v1/sites/{site_id}/ondemand-backups/{backup_id}/download"
# Delete backup
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
"https://my.pressable.com/v1/sites/{site_id}/ondemand-backups/{backup_id}"
Limits: 3 filesystem + 3 database backups max. Auto-deleted after 7–30 days.
# List plugins
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/sites/{id}/plugins"
# Install & activate (from WordPress.org or URL)
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/plugins" \
-d '{"plugins":[{"path":"jetpack"},{"path":"akismet","version":"5.1"}]}'
# Update plugins
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/plugins" \
-d '{"plugins":[{"path":"jetpack"}]}'
# Activate / Deactivate
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/plugins/activate" \
-d '{"plugins":[{"path":"jetpack"}]}'
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/plugins/deactivate" \
-d '{"plugins":[{"path":"jetpack"}]}'
# Delete
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/plugins" \
-d '{"plugins":[{"path":"jetpack"}]}'
Note: Plugin operations are async. Use webhooks for completion status.
# List zones
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/zones"
# Get zone records
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/zones/{zone_id}/records"
# Create record
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/zones/{zone_id}/records" \
-d '{"type":"A","name":"www","value":"192.0.2.1","ttl":3600}'
# Delete record
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
"https://my.pressable.com/v1/zones/{zone_id}/records/{record_id}"
# Get account info
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/account"
# Activity logs
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/account/logs/activity" \
-d '{"page":1,"per_page":20}'
# List collaborators
curl -s -H "Authorization: Bearer $TOKEN" "https://my.pressable.com/v1/collaborators"
# Add collaborator to sites
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/collaborators/batch_create" \
-d '{"email":"[email protected]","siteIds":[123,456],"roles":["wp_access","sftp_access"]}'
Each Pressable site has unique SSH credentials. To connect:
ssh.pressable.com)# Connect with password
ssh {ssh-username}@ssh.pressable.com
# Connect with SSH key (after adding to account)
ssh -i ~/.credentials/pressable-ssh/id_ed25519 {ssh-username}@ssh.pressable.com
SSH Config (optional): For easier access, add to ~/.ssh/config:
Host pressable-mysite
HostName ssh.pressable.com
User id959e223a7c76e64
IdentityFile ~/.credentials/pressable-ssh/id_ed25519
IdentitiesOnly yes
Then connect with: ssh pressable-mysite
📚 Pressable SSH Guide
WP-CLI is pre-installed. After connecting via SSH:
# List plugins
wp plugin list
# Deactivate a problem plugin
wp plugin deactivate plugin-name
# Activate a theme
wp theme activate theme-name
# View PHP errors
wp php-errors
# Skip themes/plugins (for broken sites)
wp --skip-plugins --skip-themes plugin deactivate plugin-name
📚 Pressable WP-CLI Guide
Run WP-CLI commands without SSH:
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
"https://my.pressable.com/v1/sites/{id}/ssh/command" \
-d '{"command":["plugin list --format=json"]}'
Note: Don't include wp prefix — it's added automatically. Use webhooks for async responses.
nohup)Deploy changes automatically when you push to GitHub.
Prepare your repo:
your-repo/
└── wp-content/
├── themes/
├── plugins/
└── mu-plugins/
Connect to Pressable:
Select branch:
main)wp-content/📚 Pressable Git Deploy Guide
wp-content/{themes,plugins,mu-plugins}/~/.credentials/ with 600 permissionsWhen the agent uses this skill:
| Task | Method |
|------|--------|
| List sites | GET /v1/sites |
| Purge cache | DELETE /v1/sites/{id}/edge-cache |
| Create backup | POST /v1/sites/{id}/ondemand-backups |
| Run WP-CLI | POST /v1/sites/{id}/ssh/command or SSH |
| Deploy from Git | Push to connected branch |
API Base: https://my.pressable.com
SSH Host: ssh.pressable.com
Docs: my.pressable.com/documentation/api/v1
development
Build accurate WordPress/Gutenberg UI mockups using pre-extracted design tokens, icons, and components. Use when prototyping WordPress admin interfaces or Site Editor concepts.
data-ai
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
development
Set up a new project with standard structure, git, README, CLAUDE.md, and dev server config. Use when starting a new project or bootstrapping a workspace for a new initiative.
development
Browse the web invisibly using a headless Chromium in Docker. Take screenshots, extract content, and generate PDFs without interrupting the user's screen.