fswp-block-developer

Habilidade de domínio para trabalho com o editor de blocos do WordPress no Full-Stack WP Developer. Abrange a criação de blocos Gutenberg personalizados, padrões de bloco e a API de Interatividade.

O que é fswp-block-developer?

Esta habilidade é projetada para desenvolvedores Full-Stack WordPress que precisam criar blocos Gutenberg personalizados, padrões de bloco ou implementar interatividade no front-end usando a API de Interatividade. Ela fornece diretrizes abrangentes sobre a anatomia de um bloco (block.json, edit.js, save.js, render.php), decisões sobre quando usar blocos estáticos vs dinâmicos, regras para renderização segura e tratamento de atributos, e o fluxo de trabalho de construção com @wordpress/scripts. A habilidade também aborda a API de Interatividade, permitindo a criação de comportamentos reativos em markup renderizado pelo servidor sem a necessidade de um framework JavaScript separado. É útil para qualquer cenário onde os blocos principais e padrões existentes não sejam suficientes, garantindo que o desenvolvimento siga as melhores práticas do WordPress, padrões de codificação, acessibilidade e segurança.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/syncwin/fswp-developer/tree/main/skills/fswp-block-developer

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

FSWP Block Developer

Fundamental (sempre aplicado): fswp-developer/references/lean-coding.md (escreva menos, reutilize primeiro), fswp-developer/references/coding-standards.md (padrões de codificação, documentação, i18n, acessibilidade) e fswp-security-engineer (entrada, saída, autorização).

Use blocos principais primeiro; escreva um bloco personalizado somente quando os blocos principais e padrões não puderem expressar o requisito. Referências oficiais: links do Manual do Editor de Blocos em fswp-developer/references/official-docs.md. Verifique a versão mínima do WordPress para cada API em relação à versão mínima declarada do projeto.

Anatomia

blocks/meu-bloco/
  block.json      nome, título, categoria, atributos, suportes, render, editorScript, viewScriptModule, estilo
  edit.js         interface do editor (usa useBlockProps)
  save.js         marcação estática, ou omita para blocos dinâmicos
  render.php      renderização no servidor para blocos dinâmicos
  view.js         comportamento no front-end (módulo)
  style.scss / editor.scss

Registre a partir dos metadados: register_block_type( __DIR__ . '/build/meu-bloco' ) em init (use uma função nomeada para o callback init). Defina "apiVersion": 3 (atual desde WordPress 6.3) e adicione "$schema": "https://schemas.wp.org/trunk/block.json". Referência campo por campo, verificada em relação ao Manual do Editor de Blocos: references/block-json.md.

Decisões

PerguntaEscolha
A saída depende apenas de atributos salvosBloco Estático (save.js)
A saída depende de dados ao vivo, deve mudar sem salvar novamente ou contém lógicaBloco Dinâmico (render.php); save retorna null ou apenas InnerBlocks
Conteúdo aninhadoInnerBlocks com allowedBlocks e template
Vincular um atributo a dados (meta de post, fonte personalizada)API de Bindings de Bloco (register_block_bindings_source) onde a versão mínima do WordPress permite
Predefinições alternativas de um bloco existenteVariações ou estilos de bloco, não um novo bloco
Layout reutilizávelUm padrão, não um bloco

Regras

  • Atributos: dê a cada atributo um type e default; obtenha-os da marcação ou comentários consistentemente; valide em render.php.
  • Use supports (cor, espaçamento, tipografia, alinhamento, âncora) em vez de escrever controles.
  • A marcação do editor deve usar useBlockProps(); PHP dinâmico usa get_block_wrapper_attributes().
  • render.php (render no block.json, WordPress 6.1+) recebe $attributes, $content e $block (um WP_Block). Ele carrega uma vez por instância de bloco na página, portanto, nunca declare funções ou classes dentro dele; chame código compartilhado de outro arquivo.
  • Scripts vs módulos: viewScript é para scripts clássicos (e qualquer coisa que dependa de scripts do WordPress); viewScriptModule (6.5+) é para módulos de script, como a API de Interatividade. Eles não são intercambiáveis, portanto, não misture dependências entre os dois.
  • Escape tudo em render.php (fswp-security-engineer); atributos são entrada do usuário.
  • Alterar a marcação salva de um bloco estático já enviado quebra o conteúdo existente. Adicione uma entrada deprecated com o save antigo, atributos e uma função migrate, depois altere o bloco.
  • Traduza strings (__() com o domínio de texto) em JS e PHP; wp_set_script_translations ou textdomain no block.json.
  • Carregue scripts de front-end apenas onde o bloco renderiza (viewScriptModule/script no block.json fazem isso).

Padrões

Mais detalhes sobre padrões, variações, hooks de bloco e bindings: references/patterns-variations.md. Profundidade da API de Interatividade (renderização no servidor, ações assíncronas, data-wp-each, observadores, desempenho): references/interactivity.md.

Registre em PHP com register_block_pattern() (e register_block_pattern_category()), ou como arquivos no diretório patterns/ de um tema. Padrões usam predefinições e texto traduzido; sem imagens remotas; dê a eles um título claro, categorias e palavras-chave.

API de Interatividade

Marcação renderizada no servidor mais comportamento reativo pequeno, sem necessidade de framework.

  • Habilite com "supports": { "interactivity": true } e "viewScriptModule": "file:./view.js".
  • Diretivas de marcação: data-wp-interactive="namespace", data-wp-context='{"open":false}', data-wp-on--click="actions.toggle", data-wp-bind--hidden="!context.open", data-wp-class--is-open="context.open", data-wp-text="state.label".
  • Store em view.js: import { store, getContext } from '@wordpress/interactivity'; store( 'namespace', { state: {...}, actions: { toggle() { const c = getContext(); c.open = ! c.open; } } } );
  • Semeie estado do servidor com wp_interactivity_state( 'namespace', array(...) ) para que a primeira pintura seja correta e não haja flash. Mantenha o estado serializável.
  • Namespace tudo para evitar colisões; nunca coloque segredos no estado ou contexto (ambos são impressos na página).
  • Para acessibilidade, associe aria-expanded e o gerenciamento de foco ao estado, e teste o uso do teclado.

Construir e testar

npx @wordpress/create-block para um ponto de partida; @wordpress/scripts para build, start, lint-js, lint-style, test-unit-js. Envie os arquivos compilados juntamente com src/, package.json e o arquivo de bloqueio (regra de diretório para código compilado). Teste no editor (inserir, editar, salvar, recarregar, alternar para visualização de código) e no front-end. Passe para fswp-qa-engineer.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

fswp-api-developer

Domain skill for WordPress REST API and Abilities API work in Full-Stack WP Developer. Covers registering routes with schemas, argument validation and sanitization, permission callbacks, controller classes, exposing post types and meta, authentication (cookie nonce, application passwords), pagination and errors, and registering abilities with input and output schemas and safety annotations. Use for any custom endpoint or machine-readable capability in a plugin or theme.

fswp-architect

Planning stage of Full-Stack WP Developer. Classifies the work (new plugin, new theme, update to an existing plugin or theme, add-on for another product, or WordPress Core patch), triages existing code with a bundled detection script, asks one round of essential questions, does competitive research, and produces one reviewable PRD or change brief with a single approval gate. Also covers Migration mode and multi-session handoff docs. Invoked by fswp-developer before any code is written; consult directly for PRD, change-brief, or handoff-doc questions.

fswp-core-contributor

WordPress Core contribution stage of Full-Stack WP Developer. Guides a contributor through finding or filing a Trac ticket, setting up the wordpress-develop checkout and test environment, writing a patch or GitHub pull request that follows Core coding standards, inline documentation, backward compatibility and tests, and preparing the ticket comment; also routes block-editor changes to the Gutenberg repository and security reports to the private process. Invoked by fswp-developer for Core patches; consult directly for Core workflow questions.

fswp-devops-engineer

Domain skill for WordPress development tooling in Full-Stack WP Developer. Covers local environments (wp-env with Docker, WordPress Playground and Blueprints), command-line site operations (plugin and theme management, database export, search-replace, cron, scaffolding), coding standards and static analysis (PHPCS with WordPress standards, PHPStan with WordPress stubs), PHP and JS testing setup, and the @wordpress/scripts toolchain. Use when setting up, running, or automating a WordPress dev or test environment.

fswp-maintainer

Change stage for existing WordPress code in Full-Stack WP Developer. Updates, fixes, refactors, and upgrades existing plugins and themes without breaking them, and builds add-ons for products you do not own (WooCommerce extensions, page-builder elements, extensions of other plugins) using hooks instead of edits to third-party files. Covers reading before changing, parity lists, deprecation, host compatibility, upgrade paths, and patch delivery. Invoked by fswp-developer after an approved change brief; consult directly for safe-change or add-on questions.

fswp-qa-engineer

Verification stage of Full-Stack WP Developer. Runs the mechanical gate for plugins and themes (house-rule scripts, PHP lint, PHPCS with WordPress standards, PHP compatibility, PHPStan with WordPress stubs), the manual checklist, PRD or change-brief scenario tests, and the pre-release check. Reports PASS, FAIL, or NOT RUN and never implies a skipped check passed. Invoked by fswp-developer after a build and again before delivery; consult directly to audit any plugin or theme folder.

fswp-reviewer

Independent review stage of Full-Stack WP Developer. Reviews a finished WordPress plugin, theme, add-on, or Core patch through a security lens (WordPress-specific vulnerabilities, REST and AJAX authorization with an API risk map, AI-generated-code risks), a quality lens (error handling, data and upgrade safety, performance, i18n, accessibility, comment accuracy, test gaps, class and type design, scope), and an optional lean lens for trimming over-engineering, reporting only high-confidence findings in a fixed format. Invoked by fswp-developer after the verify gate, normally through the fswp-code-reviewer agent; consult directly to review or optimize any WordPress code.

fswp-theme-developer

Theme build stage of Full-Stack WP Developer. Builds custom WordPress themes - block themes (theme.json, templates, template parts, patterns, style variations), classic themes (template hierarchy, functions.php, theme supports), hybrids, and child themes - with accessibility, escaping, and directory readiness built in, plus a scaffold script. Invoked by fswp-developer after an approved PRD for a new theme; consult directly for a specific theme pattern. For changes to an existing theme use fswp-maintainer.

syncwin/fswp-plugin-developer

Plugin build stage of Full-Stack WP Developer. House standards and code templates for real WordPress plugins (not shortcode snippets) - folder anatomy, activation/uninstall lifecycle, custom post types and tables, admin UI tiers, front-end output on the Atomic Framework, REST and cron, i18n, distribution, and the Tier 3 React admin stack - plus a scaffold script. Also the base structure for add-ons. Invoked by fswp-developer after an approved PRD; consult directly for a specific plugin build pattern.

Habilidades Relacionadas