All skills
wordpress avatar

/wp-block-themes

@20324d2 official
by wordpresswordpress/agent-skills2.2k stars
327

Use when developing WordPress block themes: theme.json (global settings/styles), templates and template parts, patterns, style variations, and Site Editor troubleshooting (style hierarchy, overrides, caching).

Use this Skill: https://skilld.dev/gh/wordpress/agent-skills/wp-block-themes

This session only. Nothing lands on disk.

referencestheme-json.md

≈873 tokens on demand. Your agent reads this file only when SKILL.md points to it.

theme.json guidance

Use this file when changing global settings/styles or per-block styling.

High-level structure

Common top-level keys:

  • version
  • settings (what the UI exposes / allows)
  • styles (default appearance)
  • customTemplates and templateParts (optional, to describe templates and parts)

Upstream references:

Practical guardrails

  • Prefer presets when you want editor-visible controls (colors, font sizes, spacing).
  • Prefer styles when you want consistent defaults without requiring user choice.
  • Be careful with specificity: user global styles override theme defaults.

WordPress 6.9 additions

Form element styling:

  • Style text inputs and selects via styles.elements.textInput and styles.elements.select.
  • textInput targets <textarea> and <input> elements whose type is one of: email, number, password, search, text, tel, url.
  • There is no input, checkbox, radio, or label element key.
  • Supports border, color, outline, shadow, and spacing properties.
  • Note: Focus state styling is not yet available in 6.9.

Border radius presets:

  • Define presets in settings.border.radiusSizes for visual selection in the border radius control.
  • Users can still enter custom values.
{
  "settings": {
    "border": {
      "radiusSizes": [
        { "name": "Small", "slug": "small", "size": "4px" },
        { "name": "Medium", "slug": "medium", "size": "8px" },
        { "name": "Large", "slug": "large", "size": "16px" }
      ]
    }
  }
}

Button pseudo-classes:

  • Style Button block hover and focus states directly in theme.json.
  • No longer requires custom CSS for simple button state styling.

References:

Slug normalisation gotcha

Slug normaliser trap (silent failure). WordPress inserts hyphens inside preset/custom slugs before emitting CSS vars: slug 3xl becomes --wp--preset--font-size--3-xl; slug cardShadow becomes --wp--custom--card-shadow. A handwritten reference to the un-normalised form (e.g. var(--wp--preset--font-size--3xl)) resolves to nothing and silently falls back to the second var() argument.

Before assembling the variable name, WP_Theme_JSON passes each preset/custom slug through _wp_to_kebab_case(), which splits it into word tokens — at digit/letter boundaries, camelCase transitions, and non-alphanumeric characters — lowercases them, and joins with -. Reference the emitted form, not the slug you typed.

Grep pattern to catch un-normalised references in CSS/SCSS/PHP/JS:

var\(\s*--wp--(?:preset|custom)--[a-z-]+--\d+[a-z]

This matches a digit immediately followed by a letter inside the variable name (3xl, 2xs, 4x-large) — every emitted form keeps the hyphen (3-xl, 2-xs, 4-x-large) and is correctly not flagged.

Source: SKILL.md on GitHub

1 warning17d5 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    The skill provides comprehensive guidance and a local analysis tool for developing WordPress block themes. It operates safely within the local repository, performing file discovery and referencing official documentation.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer7mo

    8/8 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 20324d2. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 days ago.

Activeupdated 3 months ago
Other metadata
compatibility
Targets WordPress 7.0+ (PHP 7.4.0+). Filesystem-based agent with bash + node. Some workflows require WP-CLI.
  • wordpress
  • block-themes
  • theme-json
  • site-editor
  • templates
  • patterns
  • php
  • bash

README badge

README badge for wordpress/agent-skills/wp-block-themes

Edits WordPress block theme files (theme.json, templates, template parts, patterns, style variations) and debugs why styles don't apply in the Site Editor or frontend. Targets WordPress 6.9+ and assumes a filesystem-based workflow with WP-CLI integration.

Generated from the current SKILL.md.

What WordPress versions does this skill support?
WordPress 6.9+ with PHP 7.2.24+. The skill is version-aware because theme.json schema and features vary across WordPress core versions.
Does this skill work with classic themes?
No. This skill targets block themes only. It handles theme.json, templates, template parts, patterns, and style variations — all block theme constructs.
What happens if user customizations override my theme.json changes?
User customizations take precedence in the style hierarchy. The skill includes debugging guidance to detect and distinguish between theme defaults and stored user overrides.
Can I use this skill to create a block theme from scratch?
Yes. The skill includes a scaffold reference and recommends starting from a known-good template rather than guessing file layout.
Does this skill require WP-CLI?
Not always, but some workflows do. The skill is filesystem-based and uses bash and Node, with WP-CLI required for certain tasks.

Generated from the current SKILL.md. These answers refresh after source changes.