Claude-skills wordpress-setup
install
source · Clone the upstream repo
git clone https://github.com/jezweb/claude-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jezweb/claude-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/wordpress/skills/wordpress-setup" ~/.claude/skills/jezweb-claude-skills-wordpress-setup && rm -rf "$T"
manifest:
plugins/wordpress/skills/wordpress-setup/SKILL.mdsource content
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
(or use browser automation)https://example.com/wp-admin/profile.php - 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 |
|---|---|
| Check SSH key: |
via SSH | WP-CLI not in remote PATH — use full path: |
| Wrong path — check argument |
| Timeout on large operations | Add 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
cache buster?_=${timestamp} - Custom post types need
to appear in APIshow_in_rest: true
Reference Files
— SSH alias patterns, common flags, and troubleshootingreferences/wp-cli-essentials.md