ararai1991

Wp Plugin Skill — Security skill for Claude Code

Security community

Build WordPress plugins with AI that don't ship vulnerabilities.

How to install Wp Plugin Skill

This entry records only its repository, not the path inside it, so there is no exact command to give. Open ararai1991/wp-plugin-skill and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Wp Plugin Skill does

Build WordPress plugins with AI that don't ship vulnerabilities. A Claude skill covering all 18 Plugin Handbook chapters plus the security model behind nearly every plugin CVE — with a 79-check security and correctness scanner.

Alternatives in Security

  • Cve MCP Server — Production-grade MCP server giving Claude 27 security intelligence tools across 21 APIs — CVE lookup, EPSS sco 1.2k ★
  • Engage.Threatmodel — Materialize, lint, and drift-check the engagement threat model 348 ★
  • Security Audit — Audit de securite complet d'une web app (OWASP Top 10, CWE/CVE, headers, auth, paywall, infra) 80 ★

README

wp-plugin-skill

**Build WordPress plugins with AI that don't ship vulnerabilities.**

A skill that teaches Claude the full [WordPress Plugin Handbook](https://developer.wordpress.org/plugins/) — all 18 chapters — plus the security model behind nearly every plugin CVE.

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![WordPress](https://img.shields.io/badge/WordPress-Plugin%20Handbook-21759B?logo=wordpress&logoColor=white)](https://developer.wordpress.org/plugins/) [![Claude Code](https://img.shields.io/badge/Claude-Code-D97757)](https://claude.com/claude-code) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#contributing)

[Install](#install) · [What changes](#what-changes) · [Coverage](#coverage) · [Scanner](#the-scanner) · [FAQ](#faq)


The problem

Ask any AI to "add an AJAX handler that saves settings" and you will usually get this:

add_action( 'wp_ajax_save_settings', 'save_settings' );
add_action( 'wp_ajax_nopriv_save_settings', 'save_settings' );

function save_settings() {
    update_option( $_POST['name'], $_POST['value'] );
    echo $_POST['message'];
    wp_die();
}

It works. It also hands **any visitor on the internet** full control of the site — set `default_role` to `administrator`, enable registration, sign up, done. Plus reflected XSS and an unprefixed function name that will collide with the next plugin.

Every one of those is a real, catalogued vulnerability class that appears in WordPress plugin CVEs every week.

What changes

With the skill loaded, the same request produces:

add_action( 'wp_ajax_myplugin_save_settings', 'myplugin_save_settings' );
// No nopriv variant — this is not a public action.

function myplugin_save_settings() {
    if ( ! current_user_can( 'manage_options' ) ) {              // Gate 2: authorization
        wp_send_json_error( array( 'message' => __( 'Forbidden', 'my-plugin' ) ), 403 );
    }
    che