wordpress-setup
jezweb/claude-skills
Connect to WordPress sites via WP-CLI over SSH or REST API with verified access and saved config.
What is wordpress-setup?
Sets up and verifies working access to WordPress sites using either WP-CLI over SSH (preferred) or REST API with Application Passwords. Use this skill when connecting to a WordPress site for the first time, troubleshooting connection issues, or creating authenticated access for content management tasks.
- Check and install WP-CLI locally, including SSH extension for remote access
- Test SSH connections to WordPress installations and verify WP-CLI availability
- Create and configure Application Passwords for REST API authentication
- Verify full site access by checking site info, content, plugins, and themes
- Store connection credentials securely in wp-cli.yml or .dev.vars
- Generate wordpress.config.json for use by other WordPress-related skills
How to install wordpress-setup
npx skills add https://github.com/jezweb/claude-skills --skill wordpress-setup- SSH access to the WordPress server (for WP-CLI over SSH option) or WordPress admin credentials (for REST API option)
- HTTPS enabled on the WordPress site (required for Application Passwords)
- Local shell access to install WP-CLI if not already present
How to use wordpress-setup
- 1.Run the skill to check if WP-CLI is installed locally; if not, follow the provided installation steps
- 2.Choose connection method: WP-CLI over SSH (preferred) or REST API with Application Password
- 3.For SSH: provide server hostname, SSH username, and WordPress installation path; test with wp core version command
- 4.For REST API: navigate to WordPress admin profile, create an Application Password, and test with curl
- 5.Store credentials in wp-cli.yml (SSH) or .dev.vars (REST API) in your project root
- 6.Run verification commands to confirm access to site info, posts, plugins, and themes
- 7.Review the generated wordpress.config.json to confirm site details for other skills
Use cases
- Setting up initial access to a client's WordPress site hosted on shared hosting or VPS
- Troubleshooting SSH permission errors or WP-CLI path issues on remote servers
- Creating Application Passwords for REST API access when SSH is unavailable
- Verifying Elementor plugin availability before running Elementor editing tasks
- Storing reusable site configurations for multiple WordPress projects
- WordPress developers managing multiple client sites
- Agencies automating WordPress setup and content workflows
- Developers using Claude Code for WordPress site administration
- Users needing to troubleshoot WordPress connection and authentication issues
wordpress-setup FAQ
SSH with WP-CLI is preferred because it's faster, more reliable, and supports all WordPress operations. Use REST API only when SSH access is unavailable (e.g., shared hosting without SSH).
WP-CLI may not be in the remote server's PATH. Use the full path /usr/local/bin/wp or ask your hosting provider where WP-CLI is installed.
No, Application Passwords require HTTPS. If your site is HTTP-only, you'll need to enable HTTPS or use SSH access instead.
Store in .dev.vars (project-specific, add to .gitignore) or use a secrets manager like 1Password CLI or environment variables for cross-project access.
Check for 401/403 responses in curl tests. Contact your hosting provider or check the security plugin settings to whitelist the Application Password or REST API endpoint.
Full instructions (SKILL.md)
Source of truth, from jezweb/claude-skills.
name: wordpress-setup description: "Connect to a WordPress site via WP-CLI over SSH or the REST API. Check CLI, test SSH, set up auth, verify access, save config. Use whenever the user wants to connect to a WordPress site, set up WP-CLI access, create an Application Password, or troubleshoot WordPress connection / auth issues." compatibility: claude-code-only
WordPress Setup
Connect to a WordPress site and verify working access via WP-CLI or REST API. Produces a verified connection config ready for content management and Elementor editing.
Workflow
Step 1: Check WP-CLI
wp --version
If not installed, guide the user:
# macOS/Linux
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
Also ensure the SSH extension is available (needed for remote sites):
wp package install wp-cli/ssh-command
Step 2: Connect to the Site
Option A: WP-CLI over SSH (preferred)
wp --ssh=user@hostname/path/to/wordpress option get siteurl
Common patterns:
- Rocket.net:
wp --ssh=user@hostname/www/sitename/public option get siteurl - cPanel:
wp --ssh=user@hostname/public_html option get siteurl - Custom: Ask user for SSH user, host, and WordPress path
Test with a simple command first:
wp --ssh=user@host/path core version
Option B: REST API with Application Password
If SSH isn't available:
- Navigate to
https://example.com/wp-admin/profile.php(or use browser automation) - Scroll to "Application Passwords" section
- Enter a name (e.g. "Claude Code") and click "Add New Application Password"
- Copy the generated password (spaces are part of it but optional in auth)
Test the connection:
curl -s https://example.com/wp-json/wp/v2/posts?per_page=1 \
-u "username:xxxx xxxx xxxx xxxx xxxx xxxx" | jq '.[0].title'
Step 3: Store Credentials
For WP-CLI SSH — create a wp-cli.yml in the project root:
ssh:
sitename:
cmd: ssh -o StrictHostKeyChecking=no %pseudotty% user@hostname %cmd%
url: /path/to/wordpress
Then use: wp @sitename option get siteurl
For REST API — store in .dev.vars:
WP_SITE_URL=https://example.com
WP_USERNAME=admin
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx
Ensure .dev.vars is in .gitignore. For cross-project use, store in your preferred secrets manager (environment variable, 1Password CLI, etc.).
Step 4: Verify Full Access
Run a comprehensive check:
# Site info
wp @sitename option get siteurl
wp @sitename option get blogname
# Content access
wp @sitename post list --post_type=page --posts_per_page=5 --fields=ID,post_title,post_status
# Plugin status (check for Elementor)
wp @sitename plugin status elementor
# Theme info
wp @sitename theme status
Step 5: Save Site Config
Create wordpress.config.json for other skills to reference:
{
"site": "example.com",
"siteUrl": "https://example.com",
"accessMethod": "ssh",
"sshAlias": "sitename",
"wpPath": "/path/to/wordpress",
"hasElementor": true,
"elementorVersion": "3.x.x"
}
Critical Patterns
SSH Connection Issues
| Symptom | Fix |
|---|---|
Permission denied (publickey) | Check SSH key: ssh -v user@host |
wp: command not found via SSH | WP-CLI not in remote PATH — use full path: /usr/local/bin/wp |
Error: This does not appear to be a WordPress installation | Wrong path — check wp-path argument |
| Timeout on large operations | Add --ssh=user@host/path --allow-root or increase SSH timeout |
WP-CLI Aliases
Define aliases in ~/.wp-cli/config.yml for frequently-accessed sites:
@client1:
ssh: user@client1.example.com/www/public
@client2:
ssh: user@client2.rocketcdn.me/www/client2/public
Then: wp @client1 post list
REST API Gotchas
- Application passwords require HTTPS (won't work on HTTP)
- Some security plugins block REST API — check for 401/403 responses
- Caching plugins may serve stale REST responses — use
?_=${timestamp}cache buster - Custom post types need
show_in_rest: trueto appear in API
Reference Files
references/wp-cli-essentials.md— SSH alias patterns, common flags, and troubleshooting
Related skills
More from jezweb/claude-skills and the wider catalog.

zustand-state-management
Type-safe global state management for React with Zustand, persist middleware, and Next.js SSR support.

ai-image-generator
Generate professional images using Gemini or GPT APIs with model selection, prompting framework, and multi-turn editing.

app-docs
Generate complete user documentation for a web app with screenshots. Browses the app via browser automation, screenshots every screen, and produces a structured user guide with step-by-step instructions, annotated screenshots, workflow diagrams, and reference tables. Supports quick (key screens), standard (all pages), thorough (every state and flow), and exhaustive (publishable documentation suite). Triggers: 'document the app', 'user guide', 'app documentation', 'screenshot docs', 'generate user docs', 'help docs', 'how-to guide', 'write the docs'.

aussie-business-english
Australian business English writing style for professional communications — warm, direct, EN-AU spelling (colour, organise, centre). Use whenever the user is writing for an Australian audience: emails, chat messages, proposals, client communications, blog posts, web copy, or any business writing. Apply to drafting, editing, and tone-checking professional text.

drawio
Create and export draw.io diagrams as native .drawio files, PNG, SVG, PDF, or browser URLs.

python-backend
Production-ready Python backend patterns for FastAPI, SQLAlchemy, and Upstash integrations.