From wp-agent-skills
Create or update a named WordPress block pattern — a reusable, animated, responsive page section that becomes part of the site's design vocabulary. Use when building a new section type (hero, gallery, timeline, contact, etc.), updating an existing pattern, or when the user describes a visual section they want on their site. Produces production-grade markup using the site's design tokens and GSAP data-anim attributes.
npx claudepluginhub antonysilverhand/wp-agent-skills --plugin wp-agent-skillsThis skill is limited to using the following tools:
Create or update a named block pattern. Patterns are the site's design vocabulary —
Acquire memory dumps from live systems/VMs and analyze with Volatility 3 for processes, networks, DLLs, injections in incident response or malware hunts.
Provides x86-64/ARM disassembly patterns, calling conventions, control flow recognition for static analysis of executables and compiled binaries.
Identifies anti-debugging checks like IsDebuggerPresent, NtQueryInformationProcess in Windows binaries; suggests bypasses via patches/hooks/scripts for malware analysis, CTFs, authorized RE.
Create or update a named block pattern. Patterns are the site's design vocabulary — reusable sections assembled into pages.
Before building a new pattern, run
/frontend-designto lock in the aesthetic direction. For GSAP animation guidance, see companion-skills.md.
| Slug | Purpose |
|---|---|
hero-cinematic | Full-viewport hero with parallax text |
about-split | Two-column text + image (reversible) |
timeline-scroll | Vertical milestone timeline |
gallery-masonry | Animated masonry photo grid |
quote-feature | Large pull-quote with decorative accent |
contact-minimal | Clean contact form + social links |
nav-sticky | Transparent → frosted glass nav on scroll |
For detailed visual specs on each pattern, read references/pattern-guide.md.
When creating multiple patterns in one session, use subagents in parallel:
For a single pattern, no subagents needed.
If the slug is in the vocabulary above: use its defined purpose. If it's new: ask what the section is for and what mood (dramatic / gentle / informative / playful).
Fetch theme.json from the theme. Only use CSS token variables — never hardcode colors or fonts:
var(--wp--preset--color--accent)
var(--wp--preset--font-family--display)
var(--wp--preset--spacing--8)
Every pattern must:
data-anim on all key visual elements (see CLAUDE.md for full list)<?php
/**
* Pattern: <Pattern Name>
* Description: <description>
* Categories: lavon-patterns
* Slug: lavon/<pattern-slug>
*/
?>
<!-- wp:group {"className":"pattern-<slug>","layout":{"type":"constrained"}} -->
<div class="wp-block-group pattern-<slug>">
<!-- blocks here -->
</div>
<!-- /wp:group -->
Register in functions.php (add to the existing block pattern section):
register_block_pattern('lavon/<slug>', [
'title' => '<Pattern Name>',
'categories' => ['lavon-patterns'],
'content' => file_get_contents(__DIR__ . '/patterns/<slug>.php'),
]);
# Pattern appears in REST API
curl "$WP_SITE_URL/wp-json/wp/v2/block-patterns/patterns" | grep '"lavon/<slug>"'
register_block_pattern must run after init, not at the top level of functions.php. Wrap it in add_action('init', function() { ... }); if it's not already.lavon/<slug>), not bare strings. Bare slugs will be accepted silently but break in the editor.file_get_contents on a PHP file returns the raw PHP/HTML, not executed output. This is correct — the block editor parses the HTML, not PHP. Don't use include or require.data-anim attributes must be on the wrapper <div>, not the inner block <!-- wp: --> comment. The comment is stripped; only the rendered HTML gets the attribute.wp:group or wp:html block, not directly on a wp:heading.Pattern slug, data-anim attributes used, first 20 lines of markup.
Suggest the next pattern to create.