fswp-api-developer

Habilidade de domínio para trabalho com a REST API do WordPress e a Abilities API no Full-Stack WP Developer. Abrange registro de rotas com esquemas, validação e sanitização de argumentos, callbacks de permissão, classes controladoras, exposição de tipos de post e meta, autenticação (nonce de cookie, senhas de aplicativo), paginação e erros, e registro de habilidades com esquemas de entrada e saída e anotações de segurança. Utilize para qualquer endpoint personalizado ou capacidade legível por máquina em um plugin ou tema.

O que é fswp-api-developer?

Esta habilidade define as regras e práticas recomendadas para construir endpoints REST seguros, eficientes e detectáveis no WordPress, além de registrar habilidades na Abilities API para consumo por agentes de IA. Ela cobre desde o registro de rotas com `register_rest_route`, validação rigorosa de argumentos (tipo, obrigatoriedade, enum, sanitização), callbacks de permissão obrigatórios baseados em capabilities reais (e não apenas login), até a estruturação de respostas com `rest_ensure_response()` e tratamento de erros com `WP_Error`. A habilidade também orienta sobre exposição de tipos de post personalizados e taxonomias via REST, registro de meta com schemas, paginação segura (limitando `per_page`), autenticação (nonce para JS interno, senhas de aplicativo para servidores externos), e boas práticas de cache e desempenho. Para a Abilities API, a habilidade instrui sobre como registrar categorias e habilidades com schemas JSON de entrada e saída, callbacks de permissão e anotações de segurança (read-only ou destructive), garantindo que apenas capacidades legíveis por máquina e seguras sejam expostas. A habilidade é aplicada em contextos de desenvolvimento de plugins e temas que utilizam a REST API do WordPress, seja para comunicação cliente-servidor comum ou para integrações com agentes e ferramentas de IA.

Funciona com~Claude Code~Codex CLI~Cursor
Part ofMobile
npx skills add https://github.com/syncwin/fswp-developer/tree/main/skills/fswp-api-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

Desenvolvedor de API FSWP

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).

Referência oficial: Manual da REST API (fswp-developer/references/official-docs.md). As regras de segurança em fswp-security-engineer se aplicam a toda rota.

Registrar uma rota

function vp_register_routes() {
	register_rest_route( 'vendor-prefix/v1', '/items/(?P<id>\d+)', array(
		'methods'             => WP_REST_Server::READABLE,
		'callback'            => 'vp_get_item',
		'permission_callback' => function ( WP_REST_Request $r ) {
			return current_user_can( 'edit_post', (int) $r['id'] );
		},
		'args'                => array(
			'id' => array( 'type' => 'integer', 'required' => true, 'sanitize_callback' => 'absint' ),
		),
	) );
}
add_action( 'rest_api_init', 'vp_register_routes' );

Regras

  • Namespace e versão: vendor-prefix/v1. Nunca registre no namespace wp/v2 do core.
  • permission_callback é obrigatório. Retorne uma verificação de capability, não apenas o status de login. Use __return_true apenas para dados genuinamente públicos, com um comentário explicando o motivo. Verifique acesso ao nível do objeto (edit_post, propriedade) sempre que um ID estiver na requisição.
  • Declare args com type, required, enum, minimum/maximum, validate_callback e sanitize_callback. A requisição não é confiável mesmo após a validação; use valores de $request->get_param() com seus tipos.
  • Retorne dados com rest_ensure_response(); erros como new WP_Error( 'vp_code', __( 'Mensagem', 'text-domain' ), array( 'status' => 404 ) ). Use códigos de status precisos (400 inválido, 401 não autenticado, 403 proibido, 404 ausente, 409 conflito, 413 muito grande).
  • Esquema: implemente get_item_schema() (ou callback schema) para que clientes e o índice possam descrever o recurso; modele as respostas com prepare_item_for_response().
  • Coleções: suporte page/per_page com um limite máximo, defina X-WP-Total e X-WP-TotalPages, e nunca retorne listas ilimitadas.
  • Nunca retorne segredos, hashes de senha, opções brutas ou dados privados de outros usuários.
  • Controladores: para mais de duas rotas, estenda WP_REST_Controller (register_routes, get_items, get_item, create_item, verificações de permissão por método) e registre a classe uma vez.
  • Exponha objetos do core: tipos de post personalizados e taxonomias com 'show_in_rest' => true (e rest_base); meta com register_meta()/register_post_meta() e 'show_in_rest' => true além de um esquema e um auth_callback.
  • Cache e desempenho: manipuladores GET leves; armazene resultados caros em cache (fswp-performance-engineer); evite consultas em loops.

Autenticação

ClienteMétodo
JavaScript no mesmo site (admin, blocos, front-end)Autenticação por cookie com o cabeçalho X-WP-Nonce (wp_create_nonce( 'wp_rest' ), ou wp_localize_script / @wordpress/api-fetch que o adiciona)
Servidor ou aplicativo externoSenhas de aplicativo via HTTPS, ou um plugin OAuth verificado
Leitura públicaSem autenticação, apenas quando os dados são públicos

Nonces não substituem verificações de capability. CORS: não abra Access-Control-Allow-Origin: * em rotas autenticadas.

Lado do cliente

Use @wordpress/api-fetch em blocos e telas administrativas. Trate erros por code e message, não analisando texto.

API de Habilidades (Abilities API)

Uma API do Core para registrar capacidades discretas e legíveis por máquina (nome, esquema de entrada, esquema de saída, verificação de permissão, callback de execução) que ferramentas e agentes de IA podem descobrir e chamar. É recente: confirme a versão mínima do WordPress e os nomes exatos das funções na documentação do desenvolvedor antes de usá-la (pesquise "Abilities API"). Use-a apenas quando o PRD precisar de funções chamáveis por agentes; REST simples é adequado para chamadas comuns cliente-servidor.

Ao registrar uma habilidade:

  • Registre a categoria primeiro, depois a habilidade, nos hooks documentados.
  • Forneça JSON Schemas para entrada e saída, e um permission_callback que verifique uma capability real.
  • Defina as anotações de segurança honestamente: habilidades somente leitura não devem escrever, habilidades destrutivas devem ser sinalizadas. Um callback que escreve enquanto anotado como somente leitura é um defeito, e fswp-reviewer o trata como tal.
  • Exponha via REST apenas o que deve ser chamável remotamente.

Procedimentos de auditoria e verificação: references/abilities.md.

Para propor quais endpoints existentes devem se tornar habilidades, liste cada rota com seu método, verificação de permissão atual, efeitos colaterais e uma anotação sugerida; não registre nada até que seja aprovado.

Individual skills in this repo

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

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-block-developer

Domain skill for WordPress block editor work in Full-Stack WP Developer. Covers building custom Gutenberg blocks (block.json, static and dynamic rendering, attributes, supports, InnerBlocks, variations, deprecations, block bindings), block patterns, and the Interactivity API (data-wp directives, stores, server-side state), with the @wordpress/scripts build workflow. Use for any custom block, pattern, or front-end interactivity in a plugin or theme.

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