GitOps workflow for managing WordPress/Enfold websites through LLM assistants like Claude.
Create, update, and deploy WordPress pages, posts, portfolio items, and theme settings directly from your AI coding assistant—with full version control and automatic deployment via GitHub Actions.
The easiest way to use enfold-llm is with the vibing-enfold template:
- Click "Use this template" on vibing-enfold
- Clone with
git clone --recurse-submodules - Open in Claude Code and run
/wp-setup
The template includes all required scripts, workflows, and the WordPress plugin.
If you have an existing repository, add the plugin as a submodule:
git submodule add https://github.com/tuvens/enfold-llm.git .claude/plugins/enfold-llmThen open Claude Code and run /wp-setup to initialize the project.
For detailed instructions, see docs/INSTALLATION.md.
This project enables a complete content management workflow where:
- You describe what you want to your LLM assistant
- The assistant creates/edits content files in your Git repository
- GitHub Actions automatically deploys changes to WordPress
- Everything is version controlled with full audit trail
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ LLM Assistant │────▶│ Git Commit │────▶│ GitHub Actions │────▶│ WordPress │
│ (Claude, etc) │ │ & Push │ │ (Auto-deploy) │ │ (REST API) │
└─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
- Content Management: Create and update pages, posts, portfolio items, and custom layouts
- Theme Settings: Manage brand colors, fonts, and styling via simple JSON design tokens
- Automatic Deployment: Push to Git, changes appear on your site automatically
- Staging Support: Test on staging before deploying to production
- Enfold Shortcodes: Full support for Enfold's Advanced Layout Builder
- LLM-Optimized: Slash commands and context files designed for AI assistants
- Claude Code (Anthropic) - Primary development and testing
- Claude.ai Projects - With MCP GitHub integration
- GitHub Copilot Workspace
- Cursor
- Windsurf
- Other LLM coding assistants with Git capabilities
Note: This project was built and tested specifically with Claude. The underlying scripts and GitHub Actions workflow should work with any Git-capable tool, but the slash commands (
/wp-create-page, etc.) and context files are optimized for Claude Code. Contributions to support other LLMs are welcome!
This project requires Enfold theme by Kriesi. The workflow uses Enfold's Advanced Layout Builder shortcodes.
Required for:
- Hosting your content repository
- Running GitHub Actions for automatic deployment
- Storing credentials securely as GitHub Secrets
Any GitHub plan works, including free accounts.
Application Passwords provide secure API access without exposing your main login credentials.
- Log into your WordPress admin dashboard
- Navigate to Users → Profile
- Scroll to the Application Passwords section
- Enter a name:
GitHub Actions Deploy - Click Add New Application Password
⚠️ Copy the password immediately — it's only shown once!
The password format looks like: xxxx xxxx xxxx xxxx xxxx xxxx
Troubleshooting: If you don't see the Application Passwords section:
- Ensure your site uses HTTPS (required)
- Check that you're running WordPress 5.6 or later
- Verify no security plugin is blocking the feature
- Some managed hosts disable this—contact your host if needed
The Enfold REST API Meta Support plugin must be installed on your WordPress site.
🚧 Coming Soon: The plugin will be available at wordpress.org/plugins/enfold-rest-meta
- Download the
wordpress/enfold-rest-meta/folder from this repository - Upload to your site's
wp-content/plugins/directory - Activate in WordPress Admin → Plugins
Option A: Use the vibing-enfold template (Recommended)
- Go to github.com/tuvens/vibing-enfold
- Click "Use this template" → "Create a new repository"
- Clone your new repo:
git clone --recurse-submodules https://github.com/YOUR-USERNAME/YOUR-REPO.git
Option B: Add to existing repo as submodule
git submodule add https://github.com/tuvens/enfold-llm.git .claude/plugins/enfold-llm
git submodule update --init --recursiveIn your repository: Settings → Secrets and variables → Actions → Secrets
| Secret Name | Value |
|---|---|
USERNAME |
Your WordPress admin username |
APP_PASSWORD |
The Application Password (spaces removed) |
In your repository: Settings → Secrets and variables → Actions → Variables
| Variable Name | Value | Required |
|---|---|---|
PRODUCTION_URL |
https://yoursite.com |
Yes |
STAGING_URL |
https://staging.yoursite.com |
Optional |
Edit .claude-wp.json in your repository root:
{
"site": {
"name": "Your Site Name",
"production_url": "https://yoursite.com",
"staging_url": "https://staging.yoursite.com"
},
"wordpress": {
"username": "",
"application_password": ""
},
"paths": {
"content": "content/",
"meta": "meta/",
"theme": "theme/"
}
}Note: The wordpress section is for local development scripts only. Never commit credentials.
See Prerequisites above.
Push a small change to trigger GitHub Actions and verify everything works:
echo "Test" >> content/pages/.gitkeep
git add .
git commit -m "Test deployment workflow"
git push origin stagingCheck Actions tab in GitHub to see the workflow run.
> Create a new About page with a hero section and team member grid
Claude will:
1. Create content/pages/about.txt with Enfold shortcodes
2. Commit and push to staging branch
3. GitHub Actions deploys to your staging site
| Command | Description |
|---|---|
/wp-create-page |
Create a new WordPress page |
/wp-update-page <slug> |
Update an existing page |
/wp-pull-page <slug> |
Pull page from WordPress into Git |
/wp-setup |
Initialize GitOps in a new repository |
/wp-status |
Check deployment health and configuration |
/wp-theme |
Manage design tokens and theme settings |
| Branch | Deploys To | Use For |
|---|---|---|
staging |
Staging site | Testing changes |
main |
Production site | Live content |
Always test on staging first!
your-site/
├── .github/workflows/
│ └── deploy.yml # GitHub Actions workflow
├── content/
│ ├── pages/*.txt # Page content (Enfold shortcodes)
│ ├── posts/*.txt # Blog posts
│ ├── portfolio/*.txt # Portfolio items
│ └── layouts/*.txt # Custom layouts
├── meta/ # ⚠️ Auto-generated, don't edit!
│ └── pages/*.json # WordPress IDs and metadata
├── theme/
│ └── design-tokens.json # Brand colors, fonts, assets
├── scripts/ # Deployment scripts
├── claude/ # LLM documentation and context
└── .claude-wp.json # Site configuration
These rules prevent common issues:
⚠️ Never manually create or edit meta files
Meta files inmeta/are auto-generated by GitHub Actions after WordPress creates a resource.
⚠️ Always test on staging first
Push tostagingbranch, verify on your staging site, then merge tomain.
⚠️ Content must be Enfold shortcodes, not HTML
Files should contain[av_section]...[/av_section], not<div class="av-section">.
⚠️ New pages require YAML frontmatter
Includetitle,slug, andstatusin frontmatter for new pages.
| Document | Description |
|---|---|
| commands/wp-create-page.md | Creating new pages |
| commands/wp-update-page.md | Updating existing pages |
| commands/wp-pull-page.md | Pulling pages from WordPress |
| context/enfold-shortcodes.md | Enfold shortcode reference |
| context/theme-customization.md | Design tokens guide |
| context/workflow-rules.md | Critical workflow rules |
The enfold-rest-meta plugin provides three capabilities:
Enables API access for portfolio, avia_layout_builder, and alb_custom_layout.
Exposes _aviaLayoutBuilderCleanData and _aviaLayoutBuilder_active to the REST API.
Import/export Enfold theme settings for GitOps-based theme management.
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/wp-json/wp/v2/pages |
GET/POST | Required | Pages |
/wp-json/wp/v2/posts |
GET/POST | Required | Posts |
/wp-json/wp/v2/portfolio |
GET/POST | Required | Portfolio items |
/wp-json/wp/v2/alb_custom_layout |
GET/POST | Required | Custom layouts |
/wp-json/enfold-gitops/v1/settings |
GET/POST | Admin | Theme settings |
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Areas where help is appreciated:
- Testing with other LLMs (Copilot, Cursor, etc.)
- Additional Enfold shortcode documentation
- Translations
- Bug fixes and error handling improvements
This project is licensed under the GNU General Public License v2.0 or later (GPL-2.0-or-later).
This license was chosen for WordPress compatibility—WordPress itself is GPL licensed, and plugins/themes that integrate with WordPress typically use GPL as well.
You are free to:
- Use this project commercially or non-commercially
- Modify and distribute your changes
- Fork and create derivative works
See LICENSE for the full license text.
- Created by Your Site
- Built for Claude by Anthropic
- Designed for Enfold Theme by Kriesi
- Bug Reports: GitHub Issues
- Questions: GitHub Discussions
- Security Issues: See SECURITY.md
This project is not affiliated with or endorsed by Anthropic, Kriesi, or WordPress. Enfold is a trademark of Kriesi.