This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
WP Ability Toolkit is a WordPress plugin development toolkit with integrated AI agent testing. It's a pnpm monorepo containing:
- WordPress Plugin (
packages/wp-ability-toolkit) - WordPress plugin with PHP backend and React frontend for testing WordPress Abilities with AI agents - AI SDK Bridge (
packages/agenttic-ai-sdk-bridge) - TypeScript package connecting WordPress REST API to Agenttic UI - Claude Code Marketplace Skills (
claude-code-plugins/) - Skills for WordPress development (Ability scaffolding, plugin scaffolding, wp-env management)
- Backend: WordPress PHP (namespaced classes in
WP_Ability_Toolkit\) - Frontend: React + TypeScript using
@wordpress/elementand@automattic/agenttic-ui - Build:
@wordpress/scriptsfor plugin, TypeScript compiler for bridge - Dev Environment:
@wordpress/env(Docker-based WordPress on port 8888) - Dependencies: WordPress Abilities API via Composer, pnpm workspace for npm packages
# Install all dependencies (run from root)
pnpm install
# Install PHP dependencies (WordPress Abilities API)
cd packages/wp-ability-toolkit
composer install# Start WordPress environment (http://localhost:8888/wp-admin)
# Login: admin / password
pnpm env:start
# Start development mode (webpack watch for hot-reloading)
pnpm start
# Build all packages for production
pnpm build
# Build individual packages
pnpm build:bridge # Build agenttic-ai-sdk-bridge only
pnpm build:plugin # Build wp-ability-toolkit only# Run linting
pnpm lint
# Type checking
pnpm type-check
# PHPUnit tests (from plugin directory)
cd packages/wp-ability-toolkit
vendor/bin/phpunit# Stop WordPress environment
pnpm env:stop
# Clean WordPress environment (removes all data)
pnpm env:cleanMain Plugin File: packages/wp-ability-toolkit/wp-ability-toolkit.php
- Loads Composer autoloader for WordPress Abilities API
- Sets up autoloader for namespaced classes (
WP_Ability_Toolkit\) - Initializes plugin via
Plugin::get_instance()
Class Structure (packages/wp-ability-toolkit/includes/):
class-plugin.php- Main singleton, orchestrates initializationclass-settings.php- Manages plugin settings (provider, API key, model)class-rest-api.php- REST endpoints (/chat,/settings)class-anthropic-client.php- Anthropic API integration with streamingclass-openai-client.php- OpenAI API integration with streamingclass-ability-tools-manager.php- Manages WordPress Abilities as AI toolsclass-prompt.php- System prompt generation with context
Naming Convention: Class files use class- prefix with lowercase-hyphenated names. Classes use underscores (Ability_Tools_Manager), file is class-ability-tools-manager.php.
Bridge Package (packages/agenttic-ai-sdk-bridge/src/):
index.ts- Main exportsuseWordPressChat.ts- React hook for WordPress chat integrationstreamAdapter.ts- Server-Sent Events parsingtypes.ts- TypeScript interfaces
Plugin Frontend (packages/wp-ability-toolkit/src/):
chat-widget/- Admin chat widget (React, appears in bottom-right)admin/- Settings page React componentsabilities/- Client-side WordPress Abilities (TypeScript)
The plugin demonstrates the WordPress Abilities API:
- Server-side abilities: Registered in
class-plugin.php::register_test_abilities() - Client-side abilities: TypeScript files in
src/abilities/, bundled via webpack - Categories: Registered via
abilities_api_categories_inithook - Hook for custom abilities:
wp_ability_toolkit_register_abilities(testing only)
Important: This hook is for testing/debugging. Production abilities should be in separate plugins.
POST /wp-json/wp-ability-toolkit/v1/chat
- Handles streaming chat via Server-Sent Events
- Accepts
messages,clientContext,clientAbilities - Returns SSE stream:
data: {"delta": "text"}ordata: {"done": true} - Integrates with Anthropic/OpenAI and WordPress Abilities as tools
GET/POST /wp-json/wp-ability-toolkit/v1/settings
- Manages plugin configuration (requires
manage_options) - Provider (openai/anthropic), model, encrypted API key
.wp-env.json mounts the plugin from packages/wp-ability-toolkit:
- Main site: http://localhost:8888 (admin/password)
- Test site: http://localhost:8889
- WP_DEBUG enabled in development
pnpm-workspace.yaml defines packages in packages/*:
- Workspace protocol (
workspace:*) links bridge to plugin - Commands with
-rflag run in all packages - Filter commands with
--filter <package-name>
Loaded via Composer from wordpress/abilities-api:dev-release/0.3. The plugin:
- Registers Abilities API assets via
WP_Abilities_Assets_Init - Converts registered abilities into AI tools (via
Ability_Tools_Manager) - Provides both server-side (PHP) and client-side (TypeScript) ability examples
Plugin: Uses @wordpress/scripts which configures webpack for multiple entry points:
src/chat-widget/index.tsx→build/chat-widget/index.jssrc/admin/settings.tsx→build/admin/settings.js- TypeScript abilities are bundled into the main widget
Bridge: Standalone TypeScript compilation to dist/
- Composer First: Run
composer installin plugin directory before building - Hot Reload:
pnpm startwatches files; refresh browser to see changes - API Keys: Stored encrypted in WordPress options (
wp_ability_toolkit_api_key) - Abilities Bundling: Client abilities in
src/abilities/are webpack entry points - Error Handling: REST API includes detailed error mapping (auth, rate limits)
- PHPCS:
.phpcs.xml.distconfigured for WordPress coding standards
Available for WordPress development workflows:
wordpress-ability-api- Scaffold and validate WordPress Abilitieswordpress-plugin-scaffold- WP-CLI plugin scaffoldingwp-env- Environment management (start/stop/WP-CLI commands)
Install via: /plugin marketplace add emdashcodes/wp-ability-toolkit
Use conventional commit format with lowercase type prefixes:
feat,fix,docs,style,refactor,test,chore,perf,ci,build,revert,add,update,remove- Keep messages under 75 characters
- Single-line messages only