Divine

Everything is a file. So any agent can build it.

Divine keeps your whole site in theme files: pages, blocks, templates, and assets. Agents build by editing those files locally, the way they already work, and Divine wraps each task in its own copy with Check and review before anything ships.

The agent works in your files directly.

A worktree is a real theme directory on disk, so the agent reads, edits, searches, and diffs it with the tools it already uses. Whatever it does stays in the copy, and the live theme only moves when you merge.

# The agent works in the files rg 'Download Divine' pages blocks → pages/divine/home/index.php → blocks/elements/download-button/index.php sed -n '1,80p' pages/divine/home/index.php → readable page source divine-check pages/divine/home/index.php → no findings
# Only the worktree can change git status --short → M pages/divine/home/index.php → changes live in the worktree only # the live theme is never written here → it updates only when you merge

Why files beat a giant builder API.

A builder API can grow forever; files and git do not. Agents already know how to read, edit, and diff files, so Divine just gives them a safe, real copy of your theme to work in.

Tools it already has

The agent reuses search, read, edit, and diff instead of learning a new API for every WordPress operation.

Plain files and folders

Pages, blocks, templates, and assets are real files the agent can open, search, and change.

Validation is part of the loop

Check fires after every worktree write. Bad contract code never reaches review.

The whole builder is files.

Divine does not hide the website inside builder state. Pages, blocks, templates, assets, and styles stay in the theme, which means an agent can work from Divine, GitHub issues, code review comments, or any bug tracker that points at files and diffs.

# Theme source stays readable pages/divine/home/index.php blocks/elements/download-button/index.php divine.json assets/divine/images/divine-screenshot.png functions.php → pages, blocks, config, assets, and glue code
# External context maps to files GitHub issue: update the hero CTA → pages/divine/home/index.php → blocks/elements/download-button/index.php Bug report: dependency card copy is unclear → blocks/elements/dependency-card/index.php Review comment: config naming → divine.json

Works with every cloud or git-based agent.

GitHub Copilot
Cursor
Graphite
CodeRabbit
OpenHands
Greptile

One pass over the files, not a call per step.

A builder API would split a multi-step task into a tool call per step. Files do not: the agent reads, filters, counts, and sorts across the whole theme in a single pass, the way it already works.

# Top changed PHP files by size git diff main --name-only \ | rg '\.php$' \ | xargs wc -l \ | sort -rn \ | head -5 260 pages/divine/home/index.php 145 pages/divine/agent-loop/index.php 106 pages/divine/workspace/index.php 89 pages/divine/how-it-works/index.php 67 pages/divine/wordpress-native/index.php
# Posts grouped by status wp post list --post_status=any \ --format=csv --fields=post_status \ | tail -n +2 \ | sort \ | uniq -c 3 draft 47 publish 2 pending
# Block names, alphabetized find blocks -name block.json \ | xargs jq -r '.name' \ | sort -u divine-homepage/agent-card divine-homepage/card divine-homepage/code-sample divine-homepage/dependency-card divine-homepage/faq-item divine-homepage/window

Safety comes from the gate, not a leash.

The agent works in an isolated copy of the theme, and only the changes you review and merge ever reach the live site. However the work happens in the worktree, the live theme stays protected until you approve the diff.

An isolated copy

The agent works in its own theme directory, separate from the live theme and from other tasks.

Live theme stays read-only

Nothing the agent does in the worktree touches the active theme until you choose to merge.

Worktree-aware git

Git state is tied to the active worktree, so diffs and reviews stay scoped to the task.

Plain, searchable files

Pages, blocks, templates, and code sit on disk as normal files, so the agent searches them with the tools it already runs.

Validation included

Check runs on every write. Syntax, naming, and theme-contract rules, in pure PHP.

Review boundary

The work still becomes a human-readable diff before anything reaches the live theme.

Every write runs through Check.

Agents run divine-check locally and get findings in milliseconds, no WordPress needed. It enforces the theme contract: namespaced functions, no raw database writes, no eval, no register_post_type, Divine block aliases. A failing rule stops the work before anyone reviews it.

divine-check .
local, no WordPress

Divine alias tags used

blocks/card/index.php

Functions are prefixed

drift_render_hero()

eval() is not allowed

blocks/pricing/render.php:42

No raw $wpdb writes

blocks/list/view.php

1 error blocked from merge until it is fixed

Built on PHP-native infrastructure.

Two focused packages do the heavy lifting, both pure PHP and available on Composer. Blockstudio renders theme files as blocks, and Pitmaster runs git worktrees without ever calling the git binary.

The loop stays simple.

The agent finds a file, edits it, and Check validates the change. You see the result in the preview, read the diff, and merge when it is right. Same loop for a hero tweak or a full rebuild.

Inspect find the file
Edit in the worktree
Check every write
Preview see it live
Review read the diff
Merge to the live theme

Give agents your files, safely.

Real tools, an isolated worktree, and your review before anything ships.